网络-IP协议详解

本文详细介绍了IP协议,包括其来源、功能。阐述了IPv4地址分类、特殊IP地址及子网掩码。讲解了IP报文头部各字段含义,分析了IP分片原因及不同传输层协议的分片情况,还介绍了IP路由选择流程、ARP协议原理、ICMP协议,以及数据链路层工作特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

IP协议来源

Internet上连接的所有计算机,我们称其为主机,为了实现各主机间的通信,每台主机都必须有一个唯一的网络地址。这样才不会在传输资料时出现混乱。
Internet是由无数台计算机互相连接而成的。我们要确认网络上每一台计算机,靠的就是能唯一标识该计算机的网络地址,这个地址就是IP(Internet Protocol)地址,即用Internet协议语言表示的地址。

IP协议的功能
  • 寻址和路由(根据对方的IP地址,寻找最佳路径传输信息);
  • 传递服务:
  • 不可靠(IP协议只是尽自己最大努力去传输数据包),可靠性由上层协议提供(TCP协议)
  • 无连接(事先不建立会话),不维护任何关于后续数据报的信息。
  • 数据包的分片和重组。
IP地址分类:以IPv4举例。
IP地址的区别:
类别网段区分
A0-127二进制首位0
B128-191二进制首位10
C192-223二进制首位110
D224-239二进制首位1110
E240-255二进制首位1111
  • A类地址: 一个A类地址是由一个字节的网络地址和三个字节的主机地址组成。网络地址最高位必须是0
  • B类地址: 一个B类地址是由两个字节的网络地址和两个字节的主机地址组成。网络地址最高位必须是10
  • C类地址: 一个C类地址是由三个字节的网络地址和一个字节的主机地址组成。网络最高位必须是110
  • D类地址: 不区分网络地址和主机地址,D类地址是一种组播地址,D类地址第一个字节以1110 开始。目前D类地址被用在多点广播中,多点广播地址用来一次寻址一组 计算机,它标识共享同一协议的一组计算机。
  • E类地址: 不区分网络地址和主机地址,E类地址是保留地址。E类地址的第一个字节以1111 开始。
特殊IP地址
  • 0.0.0.0
    严格来说,其已经不是一个真正意义上的IP地址了。它表示这样一个集合:所有不清楚的主机和目的网络 。这里不清楚是指本机路由表没有特定条目指明如何到达。如果你在网络设置中设置了缺省网关,那么Windows系统会自动产生一个目的地址为0.0.0.0的缺省路由。
  • 广播地址(255.255.255.255)
    限制广播地址。对本机来说,这个地址指本网段内(同一广播域)的所有主机。也就是说,如果一个主机发出广播,那么不经过路由转发的主机都会收到,此地址的信息是不能被路由转发的。
  • 环回地址(127.0.0.1)
    本机地址,主要用于测试。寻址这样一个地址,是不能把它发送到网络接口的。除非出错,否则在传输介质上永远不应该出现目的地址为127.0.0.1的数据包。 如果我们需要跟本机进行通信,要么使用网络分配的IP地址,要么使用127.0.0.1的环回地址。
  • 165.254.x.x
    如果你的主机使用DHCP(动态主机配置协议,用于局域网环境,主要作用是集中管理和分配IP地址,是Client动态的获得IP地址)功能,那么当你的DHCP服务器发生故障,或者响应时间太长而超出系统规定的时间,那么windows系统会为你分配这样一个地址。
  • 组播地址
    组播地址,从224.0.0.0-239.255.255.254都是这样的地址,224.0.0.1特指所有主机,224.0.0.2特指所有路由器。这样的地址多用于一些特定的程序以及多媒体程序。如果主机开启了IPDP(Internet路由发现协议,使用组播功能)功能,那么主机路由表中应该由这样一条路由。
子网掩码

子网掩码又叫网络掩码,它是一种用来指明IP地址的哪些是主机所在的子网,以及哪些位标识的是主机的位掩码。子网掩码不能单独存在,它必须结合IP地址一起使用。子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分。

IP报文头部

在这里插入图片描述

  • 版本号:4个bit,用来标识IP版本号。这个4位字段的值设置为二进制的0100表示IPv4,设置为0110表示IPv6。目前使用的IP协议版本号是4。

  • 首部长度:4个bit。标识包括选项在内的IP头部字段的长度。

  • 服务类型:8个bit。服务类型字段被划分成两个子字段:3bit的优先级字段和4bit TOS字段,最后一位置为0。4bit的TOS分别代表:最小时延,最大吞吐量,最高可靠性和最小花费。4bit中只能将其中一个bit位置1。如果4个bit均为0,则代表一般服务。

  • 总长度:16个bit。接收者用IP数据报总长度减去IP报头长度就可以确定数据包数据有效负荷的大小。IP数据报最长可达65535字节。

  • 标识:16个bit。唯一的标识主机发送的每一份数据报。接收方根据分片中的标识字段是否相同来判断这些分片是否是同一个数据报的分片,从而进行分片的重组。通常每发送一份报文它的值就会加1。

  • 标志:3个bit。用于标识数据报是否分片。第1位没有使用,第2位是不分段(DF)位。当DF位被设置为1时,表示路由器不能对数据包进行分段处理。如果数据包由于不能分段而未能被转发,那么路由器将丢弃该数据包并向源发送ICMP不可达。第3位是分段(MF)位。当路由器对数据包进行分段时,除了最后一个分段的MF位被设置为0外,其他的分段的MF位均设置为1,以便接收者直到收到MF位为0的分片为止。

  • 片偏移:13个bit。在接收方进行数据报重组时用来标识分片的顺序。用于指明分段起始点相对于报头起始点的偏移量。由于分段到达时可能错序,所以位偏移字段可以使接收者按照正确的顺序重组数据包。当数据包的长度超过它所要去的那个数据链路的MTU时,路由器要将它分片。数据包中的数据将被分成小片,每一片被封装在独立的数据包中。接收端使用标识符,分段偏移以及标记域的MF位来进行重组。

  • 生存时间:8个bit。TTL域防止丢失的数据包在无休止的传播。该域包含一个8位整数,此数由产生数据包的主机设定。TTL值设置了数据报可以经过的最多的路由器数。TTL的初始值由源主机设置(通常为32或64),每经过一个处理它的路由器,TTL值减1。如果一台路由器将TTL减至0,它将丢弃该数据包并发送一个ICMP超时消息给数据包的源地址。

  • 协议:8个bit。用来标识是哪个协议向IP传送数据。ICMP为1,IGMP为2,TCP为6,UDP为17,GRE为47,ESP为50。

  • 首部检验和:根据IP首部计算的校验和码。

  • 源地址:IP报文发送端的IP地址

  • 目的地址:IP报文接收端的IP地址

  • 选项:是数据报中的一个可变长的可选信息。选项字段以32bit为界,不足时插入值为0的填充字节。保证IP首部始终是32bit的整数倍。

IP分片偏移:
分片原因:

以太网的MTU(最大传输单元)是1500。如果IP层有数据包的长度超过了MTU,那么IP层就要对数据包进行分片操作,是每一片的长度都小于或等于MTU。我们假设要传输一个UDP数据包,以太网的MTU为1500字节,一般IP首部20字节,UDP首部为8字节,数据的净荷部分预留是1500-20-8=1472字节。如果数据部分大于1472,就会出现分片。

不同传输层协议的分片
TCP

对于TCP来说要尽量避免分片,因为当在Ip层进行了分片后,如果其中某片丢失,则需要对整个数据包进行重传。因为IP层本身是没有超时重传机制的,当一个TCP报文段丢失后,TCP在超时阶段重发整个TCP报文段,该报文段对应一份ip数据报,没有办法只重传数据报中的一个数据片段。
TCP协议是可以避免分片的,避免的机制是首先,TCP在建立连接时会进行三次握手,而在三次握手中,客户端和服务端通常会协商一个值。那就是MSS(最长报文大小),用来表示能接收的最大长度的报文段。MSS=MTU-TCP首部-IP首部。MTU值可以通过查询链路层得知。
当两端确认好MSS进行通信,TCP往IP层传输数据时,如果TCP缓冲区的大小大于MSS,那么TCP就会将其中的数据进行分组传输,这样就避免了在IP层进行分片。

UDP

对于UDP而言,由于UDP是不需要保证可靠性的,没有超时和重传机制,这使得UDP很容易导致分片。
UDP协议分片会根据IP报文段中的标识字段,标志字段,片偏移字段来解决。
对于每份IP数据报来说,其16位标识字段都包含一个唯一值。在数据报被分片时,这个值同时被复制到每个片中。用来识别分片的数据是否为同一个数据报文。

在IP首部中,我们看到有一个占了3位的标志字段,其中第1位是R作为保留字段未用;第2位分段是DF用来表示一个数据报是否允许在IP层被分片,DF=0时允许分片,DF=1时不允许分片;而第3位是MF更多分片字段,则是当数据报被分片时,让接收端知道在什么时候完成所有的分片组装,除了最后一片外,其他每个组成数据报的片都要把该比特置1。

而如果将其中的分段标志比特位置1,表示不允许IP层对数据报进行分片。例如当路由器收到一份需要分片的数据报,而在IP首部又设置了不分片(DF)的标志比特,路由器会丢弃数据报并发送一个ICMP差错报文(“需要进行分片但设置了不分片比特”)。

IP首部的13位片偏移字段表示IP分片再整个数据段中的位置,第一个数据报分片的偏移量置为0,而后续的分片偏移量则是根据网络的MTU大小设置,且必须为8的整数倍

分片字段:

在这里插入图片描述
以上图中我们看到把一个报文长度为3800字节的报文分片为三个。他们每一个分片都会含有一个标识(IP地址 + 标识),到达目的地要对其所有的分片进行重新组装;

片偏移计算过程;首部分大体的内容是一样,因为都属于同一个数据报文!

IP报文重组:

IP报文分片后进行重组,只能在目标主机进行重组。
IP报文段分片重组时,采用了一组重组定时器,片重组控制主要根据首部中的标识,标志,偏移字段来进行重组。

  • 分片重组策略如下:

  • 第一个分片的偏移值时0

  • 将第一个分片携带的数据长度除以8,结果就是第二个分片的偏移值

  • 将第一个和第二个分片携带数据的总长度除以8,结果就是第三个分片的偏移值

  • 继续以上过程。直到之后分片的MF标志位为0

IP路由选择流程:

在这里插入图片描述

ARP(地址解析)协议工作原理

在这里插入图片描述

ICMP协议(网络控制报文协议)

将IP数据包不能传送的错误信息传送给主机。

查询报文:
  • ping查询:主机是否可达,通过计算时间间隔和传输多少个包的数量。
  • 子网掩码。
  • 时间戳:获得当前时间。
几个常识:
  • 互联网地址:也就是IP地址,一般为网络号+子网号+主机号。
  • DNS(域名解析协议/域名系统):就是一个数据库,可以将主机名转换成IP地址。
  • RFC: TCP/IP 协议的标准文档。
  • 端口号:一个逻辑号码。IP包所带有的标记。一个应用程序对应一个端口号。
  • Socket:应用编程接口。
数据链路层工作特性:
  • 为IP模块发送和接收IP数据报。
  • 为ARP模块发送ARP请求和接收ARP应答(ARP:地址解析协议,将IP地址转换成MAC地址)
  • 为RARP模块发送PARP请求和接收PARP应答(PARP:逆地址解析协议,将MAC地址转化成IP地址)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值