IP协议详解

目录

1.IP协议简介

2.IP首部介绍

3.IP分片原理

4.IP校验和原理

4.1 发送方IP校验和计算

4.2 接收方IP校验和验证

4.3 举个栗子

5.TTL介绍


1.IP协议简介

IP(Internet Protocol)协议是互联网上最基本的协议之一,它主要负责实现数据包的传输和路由选择。

IP协议主要特点包括:

  • 无连接:IP协议在传输数据时,不需要在发送方与接收方之间建立一个持久的连接,每个数据包都是独立的、没有关联的。
  • 不可靠:IP协议不保证数据包的可靠传输,它只是尽可能地将数据包传输到目的地。如果出现网络拥塞或其他问题,数据包可能会丢失或延迟。
  • 分组交换:IP协议将数据分成若干个数据包进行传输,每个数据包都有自己的目的地址和源地址,路由器会根据这些地址将数据包转发到下一个网络节点,直到最终到达目的地。

IP协议主要功能包括:

  • 分配IP地址:IP协议为每个连接到互联网上的设备分配一个唯一的IP地址,它用于标识设备的位置。
  • 路由选择:IP协议根据路由表选择最佳的路径将数据包传输到目的地。
  • 分组传输:IP协议将数据分成若干个数据包进行传输,每个数据包都有自己的目的地址和源地址。
  • 分片和重组:IP协议可以将大的数据包进行分片,传输到接收方后再进行重组。

2.IP首部介绍

IP头部固定信息的长度为20字节,IP头部选项(Options)为可选字段,用于传递一些特殊的控制信息,如时间戳或安全选项等。

IP协议详解_第1张图片

 图 1 IP首部

IP头部固定信息包括以下字段:

版本(Version):4位,表示IPv4协议的版本号,IPv4协议的版本号为4。

头部长度(Header Length):4位,指示该IPv4头部信息的长度,单位为4字节,因此它的最小值为20字节。

服务类型(Type of Service):8位,用于指示该数据包的服务类型,包括优先级、延迟和吞吐量等信息。

总长度(Total Length):16位,指示整个IPv4数据包的长度,单位为字节,包括头部和数据部分。

标识(Identification):16位,由发送方生成并用于标识数据包的唯一性,当一个IP数据包分片后,IP分片使用同一个标识,目的端根据IP标识进行数据包重组。

标志(Flags):3位,用于指示数据包是否分片和是否是最后一片数据包,三位分别为:

Reserved bit 保留位,Don`t fragment(DF)禁止分片,More fragments(MF)更多分片。

DF为0指示IP数据包为分片包。MF为1指示IP数据包不是最后一个分片,为0指示为最后一个分片包。

片偏移(Fragment Offset):13位,指示该数据包的偏移量,用于将分片的数据包重新组装成原始数据包,片偏移为该IP分片在整个IP包的位置(单位为字节),具体数值为数据包偏移的字节数除以8。

生存时间(Time to Live):8位,表示数据包在互联网上可以经过的最大路由器数量,用于避免数据包在互联网上循环传输。

协议(Protocol):8位,指示该数据包所使用的上层协议,如TCP、UDP或ICMP等。

首部校验和(Header Checksum):16位,用于检查IPv4头部信息的完整性和正确性。

源地址(Source Address):32位,表示发送方的IP地址。

目标地址(Destination Address):32位,表示接收方的IP地址。

3.IP分片原理

IP分片是将一个大的IP数据包分成多个较小的数据包进行传输的过程。

IP分片的原理是在发送端将原始IP数据包分割成多个较小的数据包,每个数据包都有自己的IP头部,并且这些数据包都有相同的标识符。在接收端,当所有的分片都到达后,它们会被重新组合成原始的IP数据包。

什么是MTU?

MTU(Maximum Transmission Unit)指的是最大传输单元,是指在网络通信中,能够传输的最大数据包大小。它是网络通信中的一个重要参数,取决于所使用的网络协议以及网络设备的硬件能力。

在网络通信中,数据传输需要将数据分成若干个数据包进行传输。而每个数据包的大小就受到MTU的限制,如果数据包的大小超过MTU,就需要对数据进行分割并且进行多次传输。这样会增加网络通信的延迟和数据传输的复杂度,降低网络性能。

MTU的大小一般由网络设备的硬件能力决定,比如说网卡、交换机、路由器等。不同的网络协议也有不同的MTU大小限制,常见的有以太网的MTU为1500字节,PPP协议的MTU为1492字节等。

 图 2 MTU和IP分片

4000字节的IP数据包如何通过MTU为1500链路?

4000字节IP数据包如果想通过MTU为1500的链路 需要将IP数据包切片为3个分片,如下图:

IP协议详解_第2张图片

  图 3 IP分片原理

三个分片具有相同的标识。

片1:DF为0,MF为1,表示是分片包且不是最后一个分片包。offset为0表示该分片在整个IP数据包的偏移字节数为0。

片2:DF为0,MF为1,表示是分片包且不是最后一个分片包。offset为185表示该分片在整个IP数据包的偏移字节数为185*8=1480。

片1:DF为0,MF为0,表示是分片包且为最后一个分片包。offset为370表示该分片在整个IP数据包的偏移字节数为370*8=2960。

4.IP校验和原理

4.1 发送方IP校验和计算

  • IP首部校验和清零。
  • 校验数据(IP首部)以16bit为单位进行累加求和,校验数据需为偶数字节,奇数字节末尾填充0变为偶数字节。
  • 如果累加和超过16bit,产生了进位,需将高16bit和低16bit累加求和。
  • 循环步骤3,直至未产生进位为止。
  • 累加和取反得到校验和。

4.2 接收方IP校验和验证

  • 接收方接收IP数据报文。
  • 校验数据(IP首部)以16bit为单位进行累加求和,校验数据需为偶数字节,奇数字节末尾填充0变为偶数字节。
  • 如果累加和超过16bit,产生了进位,需将高16bit和低16bit累加求和。
  • 循环步骤3,直至未产生进位为止。
  • 累加和和校验和相加得到0xffff,校验成功,否则失败。

4.3 举个栗子

发送方:

如下图待校验的数据如下图,图中数据为测试数据,方便演示。

IP协议详解_第3张图片

图 4 发送方待校验数据

a.发送方先清零IP校验和。

b.计算累加和。

 0x1122+0x3344+0x5566+0x7788+0x99aa+0x0000+0xbbbb+0xcccc+0xdddd+0xeeee

注意如果产生进位需要计算进位累加和。

c.取反得到校验和0xffaa。

d.填入IP首部校验和字段,并发送给对端。

IP协议详解_第4张图片

图 5 发送方完成校验数据

接收方: 

a.接收方接收到IP数据包后,进行累加和校验0x1122+0x3344+0x5566+0x7788+0x99aa+0xffaa+0xbbbb+0xcccc+0xdddd+0xeeee=0xffff

注意如果产生进位需要计算进位累加和。

b.校验结果为0xffff,数据正确接收。

5.TTL介绍

IP TTL是指IP数据包中的TTL字段,TTL代表Time To Live,即生存时间。在IP数据包传输过程中,每经过一个路由器,TTL值就会减1,一旦TTL值减为0,该数据包就会被丢弃。

TTL的作用是防止数据包在网络中无限循环,保证数据包能够正常传输并最终到达目的地。

图 6 TTL原理 

你可能感兴趣的:(计算机网络基础,tcp/ip,网络,linux,网络协议,c语言)