TCP/IP协议学习之IP协议首部格式

来源:互联网 发布:青岛科技大学网络 编辑:程序博客网 时间:2024/05/29 03:20

注:本文系学习《TCP/IP协议卷一》一书的学习笔记,为了描述精准,部分句子使用书中原文,或稍有不同但含义一样,这些句子会加粗标志。


IP协议是TCP/IP协议族中最核心的协议,所有TCP,UDP,ICMP,IGMP等协议的数据都以IP数据报格式传输。

IP协议是一种不可靠,无连接的的协议,任何可靠性需求都需要上层协议(如TCP协议)控制。


IP协议首部格式:


图片来自书中。


如图中标识,最高位在左边(0bit)最低位在右边(31bit),传输顺序为0~7bit,8~15bit,16~23bit,24~31bit,这种传输顺序称之为网络字节序。

按照顺序首部各字段详细描述:

4位版本:IP协议的版本号,当前Internet大部分都使用第四个版本,即IPv4。常用的还包括IPv6。

4位首部长度:IP数据报首部的长度,通常IP首部都是20个字节。注意,首部长度是用4bit表示的,单位是32bit,4字节,故一般20字节的IP数据报首部中此处的值是5,5×4=32bytes。也可以知道,IP首部最长为15×4=60bytes。

8位服务类型(TOS):现在大多数的TCP/IP实现都不支持TOS特性。

16位总长度:整个IP数据报的总长度,单位是字节,可知IP数据报最长为2^16=65535,但大部分网络的链路层MTU(最大传输单元)没有这么大,一些上层协议或主机也不会接受这么大的,故超长IP数据报在传输时会被分片。

16位标志:标识字段唯一地标识主机发送的每一份数据报。通常每发送一份报文它的值就会加 1。

3位标志:待学习。

13位片位移:待学习。

8位生存时间:TTL(Time To Live),IP数据报最多经过多路由器,每经过一个路由TTL的值就会减一,以防止没用的数据报在网络中一直存在。当TTL的值为0时,数据报就会被路由丢弃,且路由会发送一个ICMP报文通知源主机。

8位协议:根据此字段决定该数据报由上层那个协议使用,这个过程被称之为分用。

16位首部校验和:校验数据报首部在传输过程中是否出错,若计算结果与预期不符,则丢弃该数据报,但不生成差错报文,由上层发现并决定是否重传。

32位源IP地址:字面意思。

32位目的IP地址:字面意思。

选项:可选信息,可以记录路径,时间戳等,其长度必须是32bit的整数倍,若不足则用0填充(因为4位首部长度的单位就是32bit)。此选项很少使用,因为不是所有主机和路由都支持。


通过wireshark实际抓包截图,可对照学习:



0 0