一、IP协议

一、网络数据封装的过程

1. 以太网数据帧的物理特性是其长度必须在 46--1500字节之间
2. 以太网的帧首部也有一个16bit的帧类型域(IP, ARP, RARP)
3. IP在首部中存入一个长度为8bit的数值,称作协议域(ICMP,IGMP,TCP,UDP,ESP,GRE)
4. TCP和UDP都用一个16bit的端口号来表示不同的应用程序(FTP,TELNET,HTTP)

二、IP协议

1. IP是TCP/IP协议族中最为核心的协议。所有的TCP、UDP、ICMP、IGMP等数据都是以IP数据报格式传输
2. IP提供不可靠,无连接的数据报传送服务。
3. 不可靠的意思是它不能保证IP数据报能成功地到达目得地。IP仅提供最好的传输服务。如果发生某种错误时,如果某个路由器暂时用完了缓冲区,IP有一个简单的错误处理算法:丢弃该数据报,然后发送ICMP消息给信源端。任何要求的可靠性必须由上层来提供(如TCP)。
4. 无连接这个术语的意思是IP并不维护任何关于后续数据报的状态信息。每个数据报的处理是相互独立的。IP数据报可以不按发送的顺序接收。如果一信源向相同的信宿发送两个连续的数据报(先是A,然后是B),每个数据报都是独立的进行路由选择,可能选择不同的路径,因此B可能在A之前先到达。

三、网络数据封装格式

RSSP1协议(UDP)发送100个字节的0xaa,在网络上抓包数据如下:

3.1 以太网首部

 

以太网首部战14个字节,其中
  前面6个字节 dc-49-c9-15-07-95是目的mac地址,
  中间6个字节 4c-cc-6a-51-f2-9b是源mac地址
  后面2个字节 08-00 类型,代表后面的数据是什么协议的类型,如 0800 代表IPv4协议,后面的数据是IPv4数据内容, 如果是0806 代表的是ARP请求/应答

说明: wireshark抓包会进行自身的过滤,这个抓包会自动将以太网尾部的4个字节也不显示出来。

3.2 IP首部

IP首部占据20个字节,具体结构如下:
抓包数据分析如下

 

 

3.2.1 版本号+首部长度(Version + IHL:Internet Header Length)

 

版本号 + 首部长度 共占用1个字节。

45: 代表版本和首都长度,即45: 0100 0101 :前面4位是0100,也就是4,代表version是4,也即是IPv4, 后面0101是5,代表首部长度展5个单位,每个单位是32位也即是4个字节,所以一共是20个字节,即首部长度是20个字节。这个数值最大是1111,即15个单位,代表15*4=60个字节,所以首部长度最大是60个字节,即可变部分最大长度是40字节

3.2.2 服务类型(TOS:Type Of Service)

 

服务类型(TOS)共占用1个字节

服务类型(TOS)字段包括一个 3 bit的优先权子字段(现在已被忽略),4 bit的TOS子字段和1 bit未用位但必须是0。
4 bit的TOS分别代表: 最小实验、最大吞吐量、最高可靠性和最小费用。4 bit中只能置其中1 bit。如果所有 4bit均为0,那么就意味着是一般服务。

 

3.2.3 总长度(Total Length)

 

总长度共占用2个字节。包含IP头部和后面的数据总长度,最大长度是 ff ff 即 65535,代表一包数据最大65535字节,然后按照最大字节1500进行分包后发送

00 96的值是 150 == 164 - 14(以太网首部) == 20(IP首部)+ 8(可变部分)+ 122(RSSP1数据部分)

3.2.4 标识(ID:Identification)

 

 

 

标识共占2个字节

这个标识相当于是这个包的PID,用于分片重组,标识字段唯一地标识主机发送的每一份数据报,通常每发送一份报文,它的值都会增加。同一个分片的标识值相同,不同分片的标识值不同。通常,每发送一个IP包,它的值也逐渐递增。此外,即使ID相同,如果目标地址、源地址或协议不同的话,也会被认为是不同的分片。

3.2.5 标志 + 片偏移(Flags + FO:Fragment Offset)

 

标志 + 片偏移 共占2个字节, 其中前面3 bit是标志,后面13bit是片偏移

由13比特构成,用来标识被分片的每一个分段相对于原始数据的位置。第一个分片对应的值为0.由于FO域占13位,因此最多可以表示8192(=2^13)个相对位置。单位为8字节。因此最大可表示原始数据8x8192=65536字节的位置。

由3比特构成,表示包被分片的相关信息。每一位的具体含义如下:

比特含义
0 未使用。现在必须是0
1 指示是否进行分片(don't fragment)0-可以分片1-不能分片
2 包被分片的情况下,表示是否为最后一个包(more fragment)0-最后一个分片的包1-分片中段的包

3.2.6 生存时间(TTL:Time To Live)

 

生存时间共占1个字节

它最初的意思是以秒为单位记录当前包在网络上应该生存的期限。然而,在实际中它是指可以中转多少个路由器的意思。每经过一个路由器,TTL会减少1,直到变成0则丢弃该包

3.2.7 协议(Protocol)

 

 协议共占1个字节

分配编号简称协议
1 ICMP Internet Control Message
2 IGMP Internet Group Management
4 IP IP in IP(encapsulation)
6 TCP Transmission Control
17 UDP User Datagram
41 IPv6 IPv6

3.2.8 首部校验和(Header Checksum)

 

首部校验和共占2个字节

也叫IP首部校验和。该字段只校验数据报的首部,不校验数据部分。它主要用来确保IP数据报不被破坏。校验和的计算过程,首先要将该校验和的所有位置设置为0,然后以16比特为单位划分IP首部,并用1补数计算所有16位字的和。最后将所得到这个和1补数赋给首部校验和字段。

3.2.9 源地址(Source Address)

 

 源地址共占4个字节,表示发送端IP地址

3.2.10 目标地址(Destination Address)

 

 目标地址共占4个字节,表示接收端IP地址

3.2.11 可选字段(Options)

长度可变,通常只在进行实验或诊断时使用。该字段包含如下几点信息:
  a、安全级别
  b、源路径
  c、路径记录
  d、时间戳

3.2.12 填充(Padding)

也称作填补物。在有可选项的情况下,首部长度可能不是32比特的整数倍。为此,通过向字段填充 0,调整为32比特的整数倍。

3.2.13 数据(Data)

 

 存入数据。将IP上层协议的首部也作为数据进行处理。该图片数据部分的的前面8个字节 ea 60 ea 60 00 82 18 b2 代表的UDP首部

 四、IP分片

https://www.cnblogs.com/wangyong123/articles/17015203.html#_label3

 

posted on 2022-12-26 19:36  软饭攻城狮  阅读(414)  评论(0编辑  收藏  举报

导航