一 IP协议的主要功能
#1 寻址和路由
#2 传递服务
#3 数据报分片和重组
二 IP协议的特点
2.1无连接
在发送数据包之前,不会和对方建立会话。即不关心对方时候可以接收到这个数据。
2.2不可靠
指的是IP协议不能保证IP数据可以准确达到接收端,他只承诺尽最大努力交付。一旦检测到数据发送失败,就会通知上层协议,不是自己尝试重传。
三 IP协议数据报格式
发送格式:
IP数据报的格式主要分为两部分:一部分叫做首部;一部分叫做数据。
3.1 版本(version)
版本: 占用4位,指的是IP协议的版本,目前IP协议版本号为4,0100即IPv4。在传输的时候,版本一定要对应,如果发送端是IPv4协议,但是接收端使用的是IPv6,如果没有特殊的协议转换机制,那么这个数据报就会被丢弃。
3.2 首部长度(header length)
首部长度: 占用4位,即最大允许(1111)15个单位,一个单位表示4个字节,即最多允许(15 * 4)60字节。也就是意味着IP协议首部长度最多允许60字节。
我们知道首部分为固定部分和可变部分,固定部分长度是((0101=5)*4 )20字节,那么可变部分最多也就允许(60-20)=40字节
3.3 服务类型(ToS)或者服务质量(Qos)
服务类型: 8位表示,用来获得更好的服务。
D: Delay,如果该位是1,表示低延迟
T:Troughput, 如果该位是1,表示要求吞吐量高
R: Reliability,如果该位是1,表示要求传输可靠
C: Cost,如果该位是1,表示成本最低
3.4 总长度(total length)
总长度: 16位表示,即允许2个字节表示,即最多允许65535字节
总长度 = 首部长度+数据长度
我们知道首部最多允许60字节,所以数据部分最多允许(65535-60)=65475字节
3.5 标识(identification)
占用16位,是一个计数器,用来产生数据报的标识。同一数据报的分片使用同一个标识。
如果当数据较大的时候,不能一次性传输到目的地,需要将数据包分片运输,然后在目的地在组合数据报,但是我们怎么知道将哪些片进行组合呢才是原来的数据报呢,所以只要标识相同,我们就可以根据这个标识来组合数据报。
3.6 标志(flags)
占用3位。是对数据报分段传输的描述或者说明。
D: 表示 Don’t fragment, 1 表示分片;0表示不分片
M: 表示More fragment: 是否还有更多的分片,1表示有;0表示没有
3.7 片偏移(fragment offset)
片偏移: 占用13位,片在原分组中相对位置。
如果数据报不需要分片的时候,可以不用设置这个字段;这个字段是当分组需要分片的时候,在组装的时候我们可以知道这个分片在原分组中的相对位置。
3.8 生存时间(TTL)
生存时间: 为了限制数据报在网络中生存时间(比如路由环路的问题),其最初单位是秒,现在都改成了跳数作为TTL单位,数据每经过一个路由器则TTL值减1。
3.9 协议(protocol)
上层协议: 比如TCP(6), UDP(17),IMCP等等
3.10 首部校验和(header checksum)
3.11 源IP地址
发送端的IP地址,占用32位
3.12 目标IP地址
目的地的IP地址,占用32位
四 分片和MTU
4.1 MTU
每一种物理网络都会规定链路层数据帧的最大长度,称为链路层MTU(Maximum Transmission Unit).
4.2分片
IP协议在传输数据包时,若IP数据报加上数据帧头部后长度大于MTU,则将数据报文分为若干分片进行传输,并在目标系统中进行重组
如果数据报太大,路由器或者交换机等网络设备无法处理这么大数据,就会将数据报分成多个片传输,然后在目标机器在将分段重组
分片后形式: