网络层协议及IP编址
一、网络层协议
网络层也称为IP层。网络层协议包括IP协议、ICMP协议、IPX协议等
二、IP 协议作用:
1、为网络层设备提供逻辑地址;2、负责数据包的寻址和转发
版本: IPV4 IPV6
三、数据封装
应用数据经过每一层处理后才能通过网络传输到目的端,每一层上都使用该层的协议数据单元(PDU)彼此交换信息。不同层的PDU包含不同的信息,PDU在不同的层被赋予了不同的名字。
上层数据(应用层)在传输层添加TCP报头后得到的PDU称为数据段;
传递到网络层,网络层添加IP报头得到的PDU 称为数据包;
传递到数据链路层,封装数据链路层报头和尾部得到的PDU称为数据帧;
最后,帧转化为比特流,通过网络介质传输。
四、IPV4报文格式
1、Version:4bit,4:表示PIV4;6:表示IPV6
2、Header Length:4bit,IPV4首部长度,如果不带Option字段,则为20字节,最长为60字节
3、Type of Service: 8 bit,只有在使用区分服务时,这个字段才起作用
4、Total Length: 16 bit,整个IP数据包的长度,首部和数据之和的长度
5、ldentification: 16 bit,分片重组时会用到该字段;IPv4软件在存储器中维持一个计数器,每产生一个数据报,计数器就加1,并将此值赋给标识字段。
6、Flags: 3 bit,目前只有两位有意义。最低位为1表示后面“还有分片”的数据报,为0表示这已经是最后一个数据片;中间二位为1表示不能分片,为0才允许分片。
6、Fragment Offset: 12 bit,分片重组时会用到该字段。较长的分组在分片后,该片在原分组中的相对位置。
7、OTime to Live: 8 bit,表示数据报在网络中的寿命,英文缩写是TTL(Time ToLive)功能是“跳数限制”。
8、Protocol: 8 bit,下一层协议。指出此数据包携带的数据使用何种协议,以便目的主机的IP层将数据部分上交给哪个进程处理
常见值:
1: ICMP, Internet Control Message;
2: IGMP, Internet Group Management;
6: TCP , Transmission Control Protocol;
17: UDP, User Datagram Protocol
9、Header Checksum: 16 bit,数据报每经过一个路由器,路由器都要重新计算一下首部检验和,若首部未发生变化,则此结果必为0,于是就保留这个数据报。这个字段只检验数据报的首部,但不包括数据部分。
10、Source IP Address: 32 bit,发送方IPV4地址。
11、Destination IP Address: 32 bit,接收方IPV4地址
12、Options:0-40bit ,长度可变,选项字段。用来支持排错、测量以及安全等措施。选项字段一直都是以32比特作为界限,在必要的时候插入值为0的填充字节。
13、DATA:可变,数据部分,用来填充报文。
五、数据包分片
1、将报文分割成多个片段的过程叫分片
2、网络中转发的IP报文的长度可以不同,当报文长度超过了数据链路所支持的最大长度,则报文需要被分割成若干个小的片段才能在链路上传输
3、ldentification: 16 bit,标识位,发送主机赋予的标识,分片重组时会用到该字段
Flags:3bit,标志位,有3位:保留字段、不分段位和更多段位
保留字段:0,保留不使用
不分段位:1,表示不能分片;0,表示能分片
更多段位:1,表示后面还有分片;0,表示最后一个数据片
Fragment Offset: 12 bit,片偏移,分片重组时会用到。指出较长的分组在分片后,该片在原分组中的相对位置,与更多段位结合,帮助接收方组合分段的报文。
六、生存时间,破环
1、TTL字段设置了数据包可以经过的路由器数目。
2、一旦经过一个路由器,TTL值就会减1,当该字段值为0时,数据包将被丢弃。
3、报文在网段间转发时,如果网络设备上的路由规划不合理,就可能会出现环路,导致报文在网络中无限循环,无法到达目的端。环路发生后,所有发往这个目的地的报文都会被循环转发,随着这种报文逐渐增多,网络将会发生拥塞。为避免环路导致的网络拥塞,IP报文头中包含一个生存时间TTL ( Time To Live)字段报文每经过一台三层设备,TTL值减1。初始TTL值由源端设备设置。当报文中的TTL降为0时,报文会被丢弃。同时,丢弃报文的设备会根据报文头中的源IP地址向源端发送ICMP错误消息。(注意: 网络设备也可被配置为不向源端发送ICMP错误消息。)
七、IP地址
1、IP地址在网络中用于标识一个节点
2、IP地址用于IP报文在网络中的寻址
3、注:使用IP地址的接口,通常是路由器和计算机的接口
4、一个IPV4地址有32bit,4个字节组成;地址范围:0.0.0.0~255.255.255.255
5、IP 地址由网络号+主机号+网络掩码组成
网络号/网络部分:用来标识一个网络,对于网络号相同的设备,无论实际所处的物理位置如何,他们都是处在同一个网络中。
主机号/主机部分:用来区分一个网络中的不同主机
网络掩码/子网掩码:一般与IP 地址结合使用,值为1比特对应IP地址的网络为;值为0比特对应IP地址中的主机位。即网络掩码中1的个数就是IP地址的网络号的位数,0的个数就是IP地址的主机号的位数。
八、IP地址寻址
1、网络寻址:二层网络寻址:可直接通过IP地址,找到对应的主机接口。
三层网络寻址: 利用网关转发来自不同网段之间的数据包。
2、网关:报文转发过程中,首先需要确定转发路径以及通往目的网段的接口。如果目的主机与源主机不在同一网段,报文需要先转发到网关,然后通过网关将报文转发到目的网段网关是指接收并处理本地网段主机发送的报文并转发到目的网段的设备。为实现此功能,网关必须知道目的网段的路由。网关设备上连接本地网段的接口地址即为该网段的网关地址。
九、IP地址分类
A类:(1.0.0.0-126.0.0.0)(默认子网掩码:255.0.0.0或 0xFF000000)第一个字节为网络号,后三个字节为主机号。该类IP地址的首位固定为“0”,所以地址的网络号取值于1~126之间。一般用于大型网络。
B类:(128.0.0.0-191.255.0.0)(默认子网掩码:255.255.0.0或0xFFFF0000)前两个字节为网络号,后两个字节为主机号。该类IP地址的首两位固定为“10”,所以地址的网络号取值于128~191之间。一般用于中等规模网络。
C类:(192.0.0.0-223.255.255.0)(子网掩码:255.255.255.0或 0xFFFFFF00)前三个字节为网络号,最后一个字节为主机号。该类IP地址的首三位固定为“110”,所以地址的网络号取值于192~223之间。一般用于小型网络。
D类:是组播地址。该类IP地址的首四位固定为“1110”,所以地址的网络号取值于224~239之间。一般用于多路广播用户,能实现一对多传递消息。
E类:是保留地址。该类IP地址的首四位固定为“1111”,所以地址的网络号取值于240~255之间。
私网地址:
A类地址:10.0.0.0~10.255.255.255
B类地址:172.16.0.0~172.31.255.255
C类地址:192.168.0.0~192.168.255.255
十、IP地址类型
1、网络地址:用于标识一个网络,通常把一个网络号所定义的网络范围称为网段。主机号的每个二进制位全为0。
2、广播地址:用于向该网络中的所有主机发送数据的特殊地址。主机号的每个二进制位全为1。
3、注:网络地址和广播地址不能直接被节点或网络设备所使用。
4、一个网段可用地址数量计算
一个网段的主机位为n位,则IP地址数为: 2”,可用IP地址数为: 2"-2(减去网络地址和广播地址)。
十一、IP地址计算
1、网络地址: 将IP地址的主机位全设为0,所得结果是该IP地址所在网络的网络地址。
2、广播地址: 将IP地址的主机位全设为1,所得结果是该IP地址所在网络的广播地址。
3、IP地址数: 2”,n为主机位位数。
4、可用IP地址数: 2-2,n为主机位位数
十二、私网地址
1、为了解决IP地址短缺的问题,提出了私有地址的概念。私有地址是指内部网络或主机地址这些地址只能用于某个内部网络,不能用于公共网络。
公网IP地址:连接到Internet的网络设备必须具有由ICANN分配的公网IP地址
私网IP地址:私网P地址的使用使得网络可以得到更为自由地扩展,因为同一个私网IP地址是可以在不同的私有网络中重复使用的。
2、私有网络连接到Internet:私有网络由于使用了私网IP地址,是不允许连接到Internet的。后来在实际需求的驱动下,许多私有网络也希望能够连接到Internet上,从而实现私网与Internet之间的通信,以及通过Internet实现私网与私网之间的通信。私网与Internet的与联必须使用网络地址转换(NAT)技术实现。
3、注:NAT (Network Address Translation),网络地址转换,其基本作用是实现私网IP地址与公网IP地址之间的转换。
IANA (Internet Assigned Numbers Authority),因特网地址分配组织
十三、特殊的IP地址
有限广播地址:255.255.255.255 可以作为目的地址,发往该网段的所有主机;路由器收到该地址发送的报文后,会停止对该报文的转发。
任意地址:0.0.0.0 任何网络的网络地址;这个网络上这个主机接口
环回地址:127.0.0.0/8 测试设备自身的软件系统
本地链路地址:169.254.0.0/24 如果一个网络设备获取IP地址的方式被设置成了自动获取方式,但是该设备在网络上又没有找到可用的DHCP服务器,那么该设备就会使用169.254.0.0/16网段的某个地址来进行临时通信。
十四、IPV4 vs IPV6
十五、子网划分
1、“有类编址”的地址划分过于死板,划分的颗粒度太大,会有大量的主机号不能被充分利用,从而造成了大量的IP地址资源浪费。因此可以利用子网划分来减少地址浪费,即VLSM (Variable Length Subnet Mask),可变长子网掩码。将一个大的有类网络,划分成若千个小的子网,使得IP地址的使用更为科学。
2、如何进行子网划分:向主机借位
向主机借位,形成子网,借n位,就会有2的n次方个子网;例如:借2位,就会划分出4个子网。
3、计算子网网络地址:将划分后剩余的主机位全为0,计算出网络地址
将划分后剩余的主机位全为1,计算出广播地址
十六、ICMP协议(网络层和传输层之间)
1、ICMP:控制消息协议,是IP协议的辅助协议
ICMP就是一个差错报告机制,其工作机理是当数据包处理过程出现差错时,ICMP向数据包的源端设备报告这个差错,它既不会纠正这个差错,也不会通知中间的网络设备。因为ICMP报文被封装在IP数据包内部,作为IP数据包的数据部分通过互联网传递。IP数据包中的字段包含源端和最终的目的端,并没有记录报文在网络传递中的全部路径(除非IP数据包中设置了路由记录选项)。因此当设备检测到差错时,它无法通知中间的网络设备,只能向源端发送差错报告。
源端在收到差错报告后,它虽然不能判断差错是由中间哪个网络设备所引起的,但是却可以根据ICMP报文确定发生错误的类型,并确定如何才能更好地重发传递失败的数据包。
2、ICMP作用:ICMP协议用来在网络设备间传递各种差错和控制信息,对于收集各种网络信息、诊断和排除各种网络故障等方面起着至关重要的作用。
3、ICMP消息:ICMP消息封装在IP报文中,IP报文头部Protocol值为1时标识ICMP协议。
4、字段分析:Type字段表示ICMP消息的类型;Code字段表示ICMP消息类型细分的子类型;Checksum字段表示ICMP报文的校验和
不同的Type和Code值表示不同的ICMP报文类型,对应了数据包处理过程中可能出现的不同错误情况,不同类型的ICMP报文又分为差错报文和查询报文两种。
5、ICMP重定向
ICMP重定向报文是ICMP控制报文中的一种。在特定的情况下,当路由器检测到一台机器使用非最优路由的时候,它会向该主机发送一个ICMP重定向报文,请求主机改变路由。
6、ICMP差错检测
ICMP Echo消息常用于诊断源和目的地之间的网络连通性,同时还可以提供其他信息,如报文往返时间等。
ICMP的一个典型应用是Ping。Ping是检测网络连通性的常用工具,同时也能够收集其他相关信息。用户可以在Ping命令中指定不同参数,如ICMP报文长度、发送的ICMP报文个数等待回复响应的超时时间等,设备根据配置的参数来构造并发送ICMP报文,进行Ping测试
7、ICMP错误报告
ICMP定义了各种错误消息,用于诊断网络连接性问题;根据这些错误消息,源设备可以判断出数据传输失败的原因。如:当网络设备无法访问目标网络时,会自动发送ICMP目的不可达报文到发送端设备。
ICMP的另一个典型应用是Tracert。Tracert基于报文头中的TTL值来逐跳跟踪报文的转发路径。为了跟踪到达某特定目的地址的路径,源端首先将报文的TTL值设置为1。该报文到达第一个节点后,TTL超时,于是该节点向源端发送TTL超时消息,消息中携带时间戳。然后源端将报文的TTL值设置为2,报文到达第二个节点后超时,该节点同样返回TTL超时消息以此类推,直到报文到达目的地。这样,源端根据返回的报文中的信息可以跟踪到报文经过的每一个节点,并根据时间戳信息计算往返时间。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具