常见的各种协议
2025年2月28日大约 6 分钟
18字节
- 当LLC-PDU中携带的是数据的时候,那么左侧的2字节表示的就是长度;当然,以太帧可以携带其他协议,当LLC-PDU中是协议的时候,2字节就代表了类型。
- CRC为校验码。CRC实际上是生成FCS的算法
- 以太网帧最小为64字节,数据区取左侧46字节;最长为1518字节。
- 接口收到以太MAC帧时,接口自动校验后四个字节,传入设备时会自动去掉,所以抓不到
- 以太网V2和802.3标准MAC帧
- 下面的最大长度1536,超过Length无法表示
IP协议
20字节
IP报文字段 | 具体作用 |
---|---|
版本 | ip报文中,版本占了4位,用来表示该协议采用的是那一个版本的ip,相同版本的ip才能进行通信。一般此处的值为4,表示ipv4 |
首部长度(头长度)可变部分为变数 | 该字段用四位表示,表示整个ip包头的长度,其中数的单位是4字节!!!!。即二进制数0000-1111(十进制数0-15),其中一个最小长度为0字节,最大长度为60字节。一般来说此处的值为0101,表示头长度为20字节。有可选部分的话就会变成24个字节 |
区分服务 (Tos服务字段) | 该字段用8位表示。该字段一般情况下不使用。 |
总长度 | 该字段表示整个ip报文的长度,单位是1字节。能表示的最大字节为2^16-1=65535字节。不过由于链路层的MTU限制。超过1480字节后就会被分片(以太帧MTU为1500的情况下,除去20字节的包头) |
标识(具备唯一性) | 该字段是ip软件实现的时候自动产生的,该字段的目的不是为了接受方的按序接受而设置的,而是在ip分片以后,用来标识同一片分片的。方便ip分片的重组。 |
标志 | 该字段是与ip分片有关的。其中有三位,但只有两位是有效的,分别为MF,DF。MF标识后面是否还有分片,为1时,表示后面还有分片。DF标识是否能分片,为0表示可以分片。 |
片偏移 | 该字段是与ip分片后,相应的ip片在总的ip片的位置。该字段的单位是8字节 (下面有举例说明) |
生存时间(TTL) | ip分片每经过一个路由器该值减一,它的出现是为了防止路由环路,浪费带宽的问题。比如,该ip在R1 路由器发送到R2路由器。R2路由器又发给R1路由器。防止这种循环。window系统默认为128. |
协议 | 该值标识上层的协议。占8位,255种。其中1,标识ICMP、2标识IGMP、6标识TCP、17标识UDP、89标识OSPF。 |
校验和(首部校验和) | 该值是对整个数据包的包头进行的校验。占16位。由于重复建设,IPV6没有了校验 |
源地址和目的地址 | 标识发送ip片的源和目的ip,32位 |
可选部分 | 一般一些特殊的要求会加在这个部分。 |
- IP进行分片时,会把来自于上层的数据包切成MTU格式,然后去除掉原本的首部,这就是标记上层协议的原因
切片的时候,在首部需要标记片偏移,这样才便于重组。
TCP
最少20个字节,首部长度以4个字节为单位,如果不足四个字节,在后面填充部分填充
TCP字段 | 功能 |
---|---|
源端口号 | 表示发送端端口号,字段长度16位 |
目标端口号 | 表示接收端端口号,字段长度16位 |
序号(发出) | 序列号是指发送数据的位置。每发送一次数据,就累加一次该数据字节数的大小。字段长度32位,建立连接后,发送的序列号是发送数据段的第一个字节的序号 |
确认号(接收) | 是指期望下一次应该收到的数据的序列号。发送端接收到这个确认应答号以后就可以认为在这个序号以前的数据都已经被正常接收了。字长32位 |
首部长度 | 指出TCP报文首部含选项时的长度,没有选项时为5,字长4位,和IP协议首部一样 |
保留 | 该字段主要为以后扩展使用。一般设置为0. |
URG | 为1时,表示包中有需要紧急处理的数据。 |
ACK | 为为1时,确认应答的字段变为有效。TCP规定除了在最初建立连接时候的SYN包之外该位必须设置为1 |
PSH | 该位为1时,表示需要将收到的数据立刻上传给上层应用协议。PSH为0时,则不需要立即传,而是先进行缓存。 |
RST | 该位为1时,表示TCP连接出现异常,必须强制断开连接。 |
SYN | 用于建立连接。SYN为1时表示希望建立连接,并在其序列号的字段进行序列号初始值的设定。 |
FIN | 该位为1时,表示今后都不会再有数据发送,希望断开连接。当通信结束希望断开连接时,通信双方的主机之间就可以相互交换FIN位置为1的TCP段。(每个主机又对对方的FIN包进行确认应答以后就可以断开连接了。不过主机收到FIN设置为1的TCP段以后不必马上回复一个FIN包,而是可以等到缓冲区中的所有数据都因已成功发送而被自动删除之后再发。) |
窗口 | 用来让对方设置发送窗口的依据(告诉对方自己能接受多少数据),2字节 |
检验和 | 检验和字段检验的范围包括首部和数据这两个部分。在计算检验和是,要在TCP报文段的前面加上12字节的伪首部,这个伪首部,不包括标识符字段 |
紧急指针 | 指出在本报文段紧急数据共多少个字节(紧急数据放在本报文段数据最前面),指针前是紧急的,之后不紧急 |
选项2:最大报文长度MSS。----表示数据内容的大小,
选项3:窗口扩大。----默认的窗口大小为64kb,如果传输和处理的效率很高,那么可以之多移位3个字节的大小
选项5:SACK,选择确认。-----原本的TCP协议在发送时是累计确认的,于是在流水线发送数据时,如果只有一部分没有收到会造成这部分及以后得所有数据重新发送
如上图,选择确认可以确认某一范围的数据已经收到,从而节省网络资源选项8:时间戳。----