匠人手札

 

初始IP协议

一、引言

发送一段TCP数据大致需要经过:用户封装 –> TCP封装 –> IP封装 –>帧封装

 

 

Note:用户封装没啥好说的,都是客户自己决定的,在一些简单的应用情况下,这个步骤可以省去。

 

本篇重点讲述IP封装。

 

二、IP协议解析

一般的IP首部长度为20个字节,除非含有选项字段

 

 

第一行字段如下:

版本(4bit):目前版本协议好是4,所以IP有时也称为IPv4

 

首部长度(4bit):记录首部占用一个整型(32bit)的个数。所以,一般IP头(没有选项)

的这个字段指是5

 

服务类型(8bit):包括一个3bit的优先权字字段(现在已被忽略),4bit的TOS子字段和1bit未用位但必须置0。4bit的TOS分别代表:最小时延、最大吞吐量、最高可靠性和最小费用。

 

总长度(16bit):总长度字段是指整个IP数据报的长度,以字节为单位。

 

第二行字段如下:

标识(16bit):对于发送端发送的每份IP数据报来说,其标识字都包含一个唯一的值。该值

在数据报分片时被复制到每个片中。

标志(3BIT):    标志字段用其中的一个比特来标识“更多的片”。除了最后一片外,其他每个

组成数据报的片都要把该比特置1。

标志字段中有一个比特作“不分片”位。如果这一个比特置1,IP将不对数据报

进行分片。

片偏移(13Bit):片移字段指的是该片偏移原始数据报开始除的位置。

 

第三行字段如下:

生存时间(8bit):生存时间字段设置了数据报可以经过的最多路由器数。它指定了数据报的

生存时间。TTL的初始值由源主机设置(通常为32或64),一旦经过一个路由器,指就减一。当该值为0时,数据报就被丢弃,并且发送ICMP报文通知源主机。

协议(8bit):协议字段用来表示具体的封装协议。1:ICMP  2:IGMP  6:TCP   17:UDP

 

首部校验和(16bit):首部校验和字段是根据IP首部计算的检验和码。

 

第四行字段如下:

源IP地址(32bit):32bit IP源地址

 

第五行字段如下:

目的IP地址(32bit):32bit IP目的地址

 

第六行字段如下:(任选)

最后一个字段是任选项,是数据报中的一个可变长的信息。目前这些选项定义如下:

         安全和处理限制

记录路径

时间戳

宽松的源站选路

严格的源站选路

 

posted on 2018-05-14 10:23  当往事已成往事  阅读(459)  评论(0编辑  收藏  举报

导航