当前位置: 首页 > news >正文

计算机网络网络层笔记

互联网提供的两种服务

1.虚电路服务

2.数据报服务

需要记住的是现在只用第二种也就是数据报服务

网际协议IP
 

物理层的中断系统:转发器(hub)

链路层的中断系统:交换机

网络层的中断系统:路由器

网络层以上:网关

 

如上图所示,网关是用来访问其他的网段的一个接口,网关的地址一般都是网段地址的第一个地址

ip协议的介绍 

ip协议是TCP/IP协议中的的最最主要的协议之一,当然还有其他的四个协议

ARP:

RARP(现在基本已经弃用)

ICMP:一般是用来报告网络中的故障的

IGMP:
都是下面的IPv4协议栈的



IP地址

层次化IP地址
 

简单来说就是将ip地址划分为网络段主机段,这样当其他的网段向本网段发送地址的时候就不用知道具体的每个主机的IP地址,只需要将数据帧发送到相应的网络段就行了



下面的这张图片是子网掩码的重要部分

下面的是CIDR,就是将IP地址划分为网络段和主机地址段


所以从上面的图片中可以清晰的看到

0-126的是A类地址,这里不用127的原因是127表示的环回地址,用来表示自己127.0.0.1

128-192的是B类地址,196.25.0.28表示当没有人分配地址的时候计算机自己给自己分配地址

192-255的是C类地址
还有一些私网地址

子网掩码是用来对比是否在同一个网段的重要部分,通过子网掩码就可以划分不同的网段

简单的例题

题目是将左边的框框拖到右边来得到相应的网段,关于主机的那两个都很简单,只要做计算就行,

但是主要是看路由器的那两个,注意两个路由器之间是点到点连接的,所以知道/30就行,也就是4个子网(两个不可用,两个给路由用),所以就可以轻易看出169的那个是可行的


超网


这里的例子指的是,如果在一个网段内规定的是C类网络,但是一个网段中有400台主机,那么这个时候就需要给网关设置连个地址,来进行A和B之间的数据传输,但是因为本身就有交换机的存在所以本来就可以通过交换机来交换数据,而不用网关,而超网就解决了这样的一个问题

就是将这个子网掩码向前移动一位

IP地址和MAC地址


首先思考一个问题,就是既然MAC地址是全球都不一样的,那么是不是就可以通过直接用MAC地址来实现数据传播呢
显然不行,因为如果直接用MAC地址传播必须要用广播,这样不仅大大降低了效率,而且不安全,所以要用IP地址
 

下面的这个是A到B传输的过程,IP地址只是标记了最终的目标,而MAC地址决定了下一跳给谁


ARP协议

ARP的主要作用就是将IP地址解析成为MAC地址

就是当我的主机需要发消息的时候,就必须发送一个广播来确定对应IP地址的MAC地址,然后ARP就会将这个地址记下来,方便以后的访问

那么既然有广播就会有网络安全问题,别人可以利用广播的这个漏洞实现抓包


ARP欺骗应用


当主机们想要发送消息到路由的时候,由于ARP协议开始都要广播来确定路由器的MAC地址,所以这个时候骗子主机又可以欺骗这个主机来告诉主机骗子主机的MAC地址就是路由的地址,这样就可以让所有的主机都经过骗子主机,这样不仅仅可以截获信息,还能限制流量

还有一系列的由ARP导致的问题

逆向ARP(RARP)

逆向ARP就是将MAC地址解析成IP地址
 

IP数据报
 

注意IP数据报的首部长度是固定的20字节 

生存时间:TTL,当TTL变成0了就会自动消失

网络畅通的条件

        数据路由  路由器在不同的网段转发数据包

        网络畅通的条件 能去能回

        沿途的路由必须知道目标网络的下一跳给哪个接口,回来的时候也一样,必须都相互知道
 

静态路由

必须管理员手动设置路由器的查询表才能通


动态路由RIP(最早)

周期性广播:每隔30秒告诉邻居自己的信息,并且只留最短的路径信息

以跳数为单位:计算经过了几个路由器,这种设置的坏处就是没有考虑贷带宽
配置Rip的时候只看是哪一类地址,RIP协议不会管你的什么子网划分,它自动给你分配好了根据你的网络类型

路由例子


其中路由能够知道直接相连的地址,所以

(pc0)>>ping 172.16.0.1

但是

(pc0)>>ping 172.16.0.2

不通
因为路由器2和PC0不是直连的,所以不知道怎么走,这个时候就要手动添加路由表得到走的方向

计算机的网关就是默认路由

就是当计算机不知道你的数据要发送到哪里的时候就会直接发送给网关

计算机上面最好只设置一个网关,不然会因为负载均衡导致一系列的有规律的丢包现象

负载均衡


配置路由表让Router3出去的时候经过Router1到Router2
配置Router2的路由表让到Router3的路由表经过Router4
就可以实现负载均衡

最长前缀匹配

        

ICMP协议

作用:探测网络有没有故障



询问报文:就是数据报发出去的时候用到的

差错报告报文:就是返回信息的时候得到的消息
|
|--------------改变路由(重定向):
如果PC1设置的网关是Router2,那么要发送给Router1的话就只能通过Router2发送,这样就会导致重复发送,那么重定向就会自动选择最优路径

结构


 

OSPF协议

和RIP都是动态路由协议

相比于RIP,OSPF不是仅仅传递给邻居,而是传递给全部配置了OSPF配置的路由

度量值:带宽   而RIP是跳数

支持多区域

试探式计算,用迪杰斯特拉算法

触发式更新,就是没有事情的时候不更细,当路由器坏掉的时候或者更新的时候自己会更新
那如果由的路由故障了怎么办呢,就是通过hello来互相确认建在

三个表

邻居表 hello

链路状态表

计算路由表

    仅仅支持二级结构,不支持三级结构



外部网关BGP协议


是不同区域之间的最段路径的选择


VPN的功能

有一些保留的私网地址有:

10.----

172.6-172.31

192.168(我们学校用的)


VPN的原理就是如图所示
当我们访问RAS(图中)RAS服务器的时候,服务器会分配给我们一个私网地址,10.0.0.8

接着,加入我们要访问私网内部的地址,肯定要表明本身的IP地址和目的的IP地址

但是对于私网地址我们是不可能可以访问到的,所以我们要对数据进行封装,让本身的数据发送到RAS服务器,让服务器转发我们的数据报

当服务器接受到数据的时候,就将外面一层的IP地址数据去除

这就是为什么我们每次使用校园网的时候都要登录,就是要接入到这个服务器,不然所有人都可以直接连接了

我们平时使用的VPN翻墙也是这个原理,就是在外网搭建了一个服务器,然后我们通过这个服务器来向国外发送和接受数据,所以我们就能够访问外网
VPN中的全局设置就是让我们的所有的流量都经过刚刚VPN连接的服务器,这就是为什么我们连接开着VPN还能访问国内的网站的原因

最后还需要记住的是:使用VPN拨号时候相当于将自己的计算机搬到了那个服务器所在的内部地址



上图是隧道技术,可以让两个部门的服务器相通(应该可以这样解释吧),然后这个样就可以在本地直接访问别的部门的电脑

NAT和 PAT技术


访问的方式是:10.21的地址在经过服务器的时候变成111
然后将数据包的源地址改成111,发送给198,198发送回来的时候就直接将目标地址改成111,然后服务器再将111修改成私网的地址10.21,这样就可以有效传输地址了
 

新的问题

服务器是通过端口来返回数据的,现在有一个问题就是如果两台计算机发出去的端口都是一样的话,那么服务器应该发给哪台计算机呢
 

这里服务器的解决方法就是将端口号也进行一个打包,可能用一个哈希之类的,比如两个1234分别封装成4000和4001,这样就可以实现同一端口的访问那么这个配置端口地址转化的技术就叫PAT

端口号所属的层级:

  1. 端口号属于传输层(Transport Layer)
  • 在OSI七层模型中是第4层
  • 在TCP/IP四层模型中也是第4层
  • 主要的传输层协议是TCP和UDP

端口号的作用:

  1. 进程识别
  • 用于区分同一台计算机上的不同网络应用程序
  • 实现数据包准确投递到指定的应用程序
  • 允许一台计算机同时运行多个网络应用
  1. 端口号范围
  • 总范围:0-65535(16位数字)
  • 知名端口:0-1023(需要管理员权限)
    • HTTP:80
    • HTTPS:443
    • FTP:21
    • SSH:22
    • DNS:53
  • 注册端口:1024-49151
  • 动态端口:49152-65535

举个生活中的例子: 想象一栋大楼(计算机):

  • 大楼的地址就像IP地址
  • 房间号就像端口号
  • 不同的租户(应用程序)住在不同的房间(端口)
  • 快递员(数据包)需要同时知道大楼地址(IP)和房间号(端口)才能准确送达

数据封装过程中的端口号:

应用层: HTTP数据 传输层: [源端口|目标端口|TCP头部|HTTP数据] 网络层: [IP头部|[源端口|目标端口|TCP头部|HTTP数据]] 数据链路层:[MAC头部|[IP头部|[源端口|目标端口|TCP头部|HTTP数据]]|MAC尾部]

常见应用示例:

  1. 网页浏览
  • 浏览器发起请求时会随机分配一个源端口(如54321)
  • 访问网站使用目标端口80(HTTP)或443(HTTPS)
  1. 在线游戏
  • 游戏客户端使用特定的端口与服务器通信
  • 服务器通过端口号区分不同的玩家连接
  1. 远程控制
  • SSH服务使用22端口
  • 远程桌面协议(RDP)使用3389端口

使用端口的注意事项:

  1. 安全性
  • 防火墙可以基于端口号控制访问
  • 未使用的端口应该关闭以减少攻击面
  • 重要服务建议修改默认端口
  1. 端口冲突
  • 同一个端口同一时间只能被一个程序使用
  • 启动程序时可能遇到端口被占用的错误
  • 需要更改配置或终止占用进程
  1. NAT穿透
  • 在使用NAT时,可能需要进行端口映射
  • 某些P2P应用可能需要特殊的穿透技术

NAT端口映射

 

NAT映射技术是将服务器的端口映射到服务器内的计算机的端口,这样就可以通过访问公网地址,来访问私网地址 

 

相关文章:

计算机网络网络层笔记

互联网提供的两种服务 1.虚电路服务 2.数据报服务 需要记住的是现在只用第二种也就是数据报服务 网际协议IP 物理层的中断系统:转发器(hub) 链路层的中断系统:交换机 网络层的中断系统:路由器 网络层以上:网关 如上图所示,网关是用来访问其他的网段的一个接口,网关的地…...

长亭那个检测能力超强的 WAF,出免费版啦

告诉你们一个震撼人心的消息,那个检测能力超强的 WAF——长亭雷池,他推出免费社区版啦,体验地址见文末。 八年前我刚从学校毕业,在腾讯做安全研究,看到宇森在 BlackHat 上演讲的议题 《永别了,SQL 注入》 …...

rabbitMQ RabbitTemplate 发送消息

消息发送确认机制 消息发送确认机制:消息由producer发送后,确认其是否到达broker,又是否被exchange转发至对应queue的机制 该机制分为两部分:producer---broker,exchange---queue 前者的实现依靠ConfirmCallback机制…...

本系列是《10万字208道Java经典面试题总结(附答案)》的2024修订版。

公众号 后端学习指南 本系列是《10万字208道Java经典面试题总结(附答案)》的2024修订版。 1、说说跨平台性 我们希望编写好的代码和程序,最好可以在任意平台和环境下运行,而不需要根据不同的平台,编写不同的代码。 比如,我编写的一个博客管理系统,我希望它可以在windo…...

C语言文件基础概念的理解(一)

文件基础概念 为什么有文件? 我们写的程序的数据是存储在电脑的内存中,如果程序退出,内存回收,数据就丢失 了,等再次运⾏程序,是看不到上次程序的数据的,如果要将数据进⾏持久化的保存&#xf…...

C++ lambda 匿名函数

看了明仕强老师的课程&#xff0c;C匿名函数也可以很简单 下面请看示例代码&#xff1a; /* lambda表达式学习&#xff0c;测试主函数 */#include <iostream>using namespace std;int main() {printf("Lambda test Demo:\n");//值捕获,值捕获的时候不能修…...

基于python的简单web服务器示例

安装flask flask 简介&#xff1a;是一个用Python编写的Web应用程序框架。 它由 Armin Ronacher 开发&#xff0c;他领导一个名为Pocco的国际Python爱好者团队。 Flask基于Werkzeug WSGI工具包和Jinja2模板引擎。两者都是Pocco项目 新建项目 创建好的效果 pip list 检索 安装…...

02- 模块化编程-006 ADC0808数码显示对比

1、ADC0808 芯片介绍 ADC0808是一款集成的CMOS设备&#xff0c;包含8位模拟至数字转换器、8通道多路复用器和与微处理器兼容的控制逻辑。8位A/D转换器采用逐次逼近作为转换技术。转换器特点包括高阻抗斩波稳定比较器、256R电压分压器、模拟开关树和逐次逼近寄存器。8通道多路复…...

又发现了Mac妙控鼠标的新使用方法

我一直是不爱用妙控鼠标的&#xff0c;因为用起来怪怪的&#xff0c;但是今天发现BettreAndBetter支持妙控鼠标的修改&#xff0c;于是就找出了闲置了许久的妙控鼠标试了一下 优化后的妙控鼠标使用起来就没有任何不适应的地方了&#xff0c;三指按下模拟中键&#xff0c;而且还…...

Webserver(4.6)poll和epoll

目录 pollclient.cpoll.c epollepoll.cclient.c epoll的两种工作模式水平触发边沿触发 poll poll是对select的一个改进 select的缺点在于每次都需要将fd集合从用户态拷贝到内核态&#xff0c;开销很大。每次调用select都需要在内核遍历传递进来的所有fd&#xff0c;这个开销也…...

LVGL 与 QT

LVGL 与 QT LVGL 适用于嵌入式、资源受限设备&#xff0c;尤其是在需要高效图形渲染和小型显示屏的场景下非常合适。它具有轻量级、模块化的特点&#xff0c;适用于内存和计算能力有限的硬件。 Qt 是一个功能强大的跨平台框架&#xff0c;适合开发桌面应用以及较为复杂的嵌入式…...

如何选择最适合的项目管理软件?2024年大厂首选7款工具盘点

选择最适合的项目管理软件对于提升团队效率、优化工作流程至关重要。2024年&#xff0c;各大厂在项目管理上逐渐趋向于使用更加智能化、集成化和协作性的工具。以下是如何选择最适合的项目管理软件&#xff0c;并对2024年大厂首选工具进行盘点。 选择适合的项目管理软件的关键…...

【数据结构】选择排序——选择排序 和 堆排序

选择排序 和 堆排序 一、选择排序选择排序的思路及其代码选择排序的弊端 二、堆排序三、速度对比同时排10000个数同时排100000个数同时拍500000个数堆排 1 亿个数 一、选择排序 选择排序的思路及其代码 选择排序思路很简单 就是经过将数组遍历选择最小值 将最小值位置的数与数…...

P11229 [CSP-J 2024] 小木棍

[CSP-J 2024] 小木棍 题目描述 小 S 喜欢收集小木棍。在收集了 n n n 根长度相等的小木棍之后&#xff0c;他闲来无事&#xff0c;便用它们拼起了数字。用小木棍拼每种数字的方法如下图所示。 现在小 S 希望拼出一个正整数&#xff0c;满足如下条件&#xff1a; 拼出这个数…...

【学习笔记】SAP ABAP——OPEN SQL(一)【SELECT语句】

SELECT语句简介 SELECT <lines> <columns> FROM <db> WHERE <condition>其中代表查询的件数&#xff0c;代表查询的字段名 SELECT SINGLE SELECT SINGLE <cols> FROM <db> WHERE <condition>该语句用于从数据库表中查询单条数据 …...

SQL注入(1)

1.数字型注入 例如PHP代码 “ Select username from users where id”.&#xff04;&#xff3f;GET&#xff3b;id&#xff3d; 可以注意到&#xff0c;用户的输入ID字段没有任何过滤的&#xff0c;被直接拼接在了SQL查询语句中&#xff0c;由于ID没有被引号包裹&#xff…...

在AI时代,如何解决人的工作岗位被AI替代的问题?

在AI时代&#xff0c;工作岗位被AI替代的问题确实是一个重要的社会课题。随着技术的不断进步&#xff0c;许多传统的工作变得自动化&#xff0c;这带来了效率的提升&#xff0c;但也引发了就业方面的挑战。要应对这一问题&#xff0c;我们可以从以下几方面入手&#xff1a; 促进…...

Linux命令--paste

简介 paste命令用于合并文件行 参数说明 -d: 自定义间隔符&#xff0c;默认为tab -s&#xff1a;串行处理&#xff0c;非并行 示例 将两个文件&#xff0c;按照行合并 demo1.conf内容如下&#xff1a; name domain ip area user password roledemo2.conf内容如下 test t…...

数据结构模拟题[九]

数据结构试卷&#xff08;九&#xff09; 一、选择题 (30 分) 1&#xff0e;下列程序段的时间复杂度为&#xff08; &#xff09;。 for(i0 &#xff1b; i<m &#xff1b; i) for(j0 &#xff1b; j<t &#xff1b; j) c[i][j]0 &#xff1b; for(i0 &#xff1b; i…...

2024年10月国产数据库大事记-墨天轮

本文为墨天轮社区整理的2024年10月国产数据库大事件和重要产品发布消息。 目录 2024年10月国产数据库大事记 TOP102024年10月国产数据库大事记&#xff08;时间线&#xff09;产品/版本发布代表厂商大事记信创数据库上市公司2024年Q3财报 达梦数据&#xff1a;2024年前三季度…...

Andon 业务流程业务开发陷阱----从真实用户与管理者视角逻辑差异

Q : Andon 问题识别归类(就是问题的3层细化)&#xff0c;是在事中&#xff0c;还是在事后? A : 不存在事中就细化归类&#xff0c;有悖于生产问题解决流程。 从操作员的角度来看&#xff0c;他们在事中可能只能识别出存在质量问题&#xff0c;但无法进行具体的质量问题编号…...

Python闭包|你应该知道的常见用例(上)

引言 在 Python 编程语言中&#xff0c;闭包通常指的是一个嵌套函数&#xff0c;即在一个函数内部定义的另一个函数。这个嵌套的函数能够访问并保留其外部函数作用域中的变量。这种结构就构成了一个闭包。 闭包在函数式编程语言中非常普遍。在 Python 中&#xff0c;闭包特别有…...

printf影响单片机中断速度

printf是我们常用的调试程序的手段&#xff0c;在第一版程序中&#xff0c;经常会使用printf来验证程序是否工作正确。这样的调试手段应该在正式版的程序发布前注释掉或者删除。而且不当地使用printf也会带来某些功能性问题&#xff0c;例如&#xff0c;在某项目中&#xff0c;…...

JavaScript 23种经典设计模式简介

23种JavaScript经典设计模式 JavaScript经典设计模式 通过之前的学习&#xff0c;我们知道设计模式是一种解决代码组织、代码复用和代码可维护性等问题的技术方法。它通过将代码以特定的方式组织起来&#xff0c;使代码结构更加清晰、可读性更高、易于维护和扩展。为了在开发…...

位运算相关算法

一、异或运算介绍 1、性质介绍 异或运算&#xff08;XOR&#xff0c;Exclusive OR&#xff09;是一种位运算符。对于两个位进行异或操作&#xff0c;当且仅当这两个位不同时&#xff0c;结果为 1&#xff1b;如果相同&#xff0c;则结果为 0。 A B A^B00001 1 101110 任何数…...

解决:无法在此设备上激活Windows因为无法连接到你的组织的激活服务器

问题&#xff1a; 桌面右下角会出现这个东西&#x1f447; 在设置里查看激活状态就会看到&#x1f447; 解决方法 &#xff1a; 1.打开CMD 搜索CMD&#xff0c;然后以管理员身份运行 2.设置 KMS服务器 1&#xff09;命令行输入&#xff1a; slmgr /skms kms.03k.org 然后…...

【Spring】——SpringBoot项目创建

阿华代码&#xff0c;不是逆风&#xff0c;就是我疯 你们的点赞收藏是我前进最大的动力&#xff01;&#xff01; 希望本文内容能够帮助到你&#xff01;&#xff01; 目录 引入 一&#xff1a;介绍 二&#xff1a;Spring Boot项目创建 0&#xff1a;项目目录 1&#xff1a…...

聊一聊:ChatGPT搜索引擎会取代谷歌和百度吗?

当地时间 10 月 31 日&#xff0c;OpenAI 正式推出了 ChatGPT 搜索功能&#xff0c;能实时、快速获取附带相关网页来源链接的答案。这一重大升级标志着其正式向谷歌的搜索引擎霸主地位发起挑战。 本周五我们聊一聊&#xff1a; 欢迎在评论区畅所欲言&#xff0c;分享你的观点~ …...

分布式中常见的问题及其解决办法

分布式中常见的问题及其解决办法 一、多个微服务要操作同一个存储在redis中的变量&#xff0c;如何确保这个变量的正确性 答&#xff1a; 在多个微服务操作同一个存储在Redis中的变量时&#xff0c;可以采取以下措施来确保变量的正确性&#xff1a; 1、使用Redis的事务&…...

HTML 基础标签——多媒体标签<img>、<object> 与 <embed>

文章目录 1. `<img>` 标签主要属性示例注意事项2. `<object>` 标签概述主要属性示例注意事项3. `<embed>` 标签概述主要属性示例注意事项小结在现代网页设计中,多媒体内容的使用变得越来越重要,因为它能够有效增强用户体验、吸引注意力并传达信息。HTML 提…...