以太网协议帧格式(一)


->返回总目录<-


目录

一、MAC帧

1.1 无VLAN标识MAC帧

1.2 VLAN标识的MAC帧

二、ARP

三、IP

四、ICMP

五、UDP

六、TCP


浅谈常用的网络协议帧格式

一、MAC帧

1.1 无VLAN标识MAC帧

Ethernet II 类型以太网帧最小长度为64字节(6+6+2+46+4),最大长度为1518字节(6+6+2+1500+4)。

(1)目标MAC地址:目的MAC地址,IPV4为6字节,该字段确定帧的接收者

(2)源MAC地址:源MAC地址,IPV4为6字节,该字段标识帧的发送者

(3)类型:协议类型。用来标识数据字段内的高层协议。常用类型如下:

  • 0x0800:IP报文
  • 0x0806:ARP报文
  • 0x8100:携带VLAN标识的MAC帧,用于区分MAC帧是否携带VLAN标识

(4)数据:数据字段,最小长度必须为46字节。

(5)FCS:CRC校验,用来检查帧内的数据错误,不能纠错。

1.2 VLAN标识的MAC帧

4字节的VLAN TAG 包含以下参数:

  • 2个字节的标签协议标识:0x8100
  • 2个字节的标签控制信息:
    • 用户优先级:3 位,取值范围0~7,值越大优先级越大。
    • CFI规范格式标识符:1位,0代表帧VLAN正确,1代表VLAN错误
    • VID:12位,标识VALN ID,也就是VLAN号

二、ARP

由于以太网环境中使用的是MAC地址,而不是IP地址,而ARP协议就是用来实现IP地址与MAC地址的转换的协议。

ARP报文封装在MAC帧的数据字段中。

(1)硬件类型:2字节,用来定义运行ARP的网络类型;以太网的类型未0x0001。

(2)协议类型:2字节,用来定义使用的类型,对于IPv4协议类型为0x0800。

(3)硬件长度:1字节,标识硬件地址长度,对于以太网的值为6。

(4)协议长度:1字节,标识软件逻辑地址长度,对于IPv4的值为4。

(5)操作码:2字节,用来定义报文的类型。已定义的分租类型有两种:ARP请求为0x01,ARP响应为0x02。

(6)源硬件地址:可变字段,发送方的硬件地址,以太网中该字段长度为6字节。

(7)源逻辑地址:可变字段,发送方的逻辑地址,IPv4中该字段长度为4字节。

(8)目的硬件地址:可变字段,接收方的硬件地址,以太网中该字段长度为6字节。

(9)目的逻辑地址:可变字段,接收方的逻辑地址,IPv4中该字段长度为4字节。

三、IP

(1)版本:IP协议的版本,0x0100(IPv4),0x0110(IPv6)

(2)首部长度:IP报头的长度。固定部分的长度(20字节)和可变部分的长度之和,最大长度为15个4字节,即15*4=60字节,去掉固定长度20字节,可变长度最大为40字节

(3)服务类型:长度为1字节

(4)总长度:IP报文的总长度,含报文头部以及数据部分

(5)ID号:标识主机发送的报文唯一ID,当IP报文长度超过传输网络的MTU时必须要分片处理,该字段用于区分收到的分片是否属于同一报文以及报文重组

(6)标志:共3位,R、DF、MF三位,目前只有后两者有效;DF=1表示不分片,DF=0表示分片;MF=1表示后续还有分片包,MF=0表示该分片是最后一片

(7)分片偏移:该分片在原先数据报文中相对首位的偏移位,片偏移以8个字节为偏移单位,即每个分片的长度一定是8字节的整数倍

(8)生存时间:IP报文所允许通过的路由器的最大数量

(9)协议号:指出IP报文携带的数据使用的是那种协议,1 ICMP;6 TCP;17 UDP

(10)首部校验和:计算IP头部的校验和,检查IP报头的完整性。

(11)发送方IP地址:标识IP数据报的源端设备

(12)接收方IP地址:标识IP数据报的目的地址

(13)可选字段:0-40字节,一些可选项,主要用于测试,不足32bit则用0补充。

(14)IP数据:IP层MTU为1480字节,这是在MAC层MTU1500基础上去掉固定头部长度20字节得到的

四、ICMP

(1)类型:ICMP消息类型大约有10多种,常用的类型有,8 = Echo Request(ping请求),0 = Echo Reply(ping应答),13 = 时间戳请求,14 = 时间戳应答;3 = 目标不可达

(2)代码:ICMP消息类型下得进一步细分,用于进一步分析错误的原因,代码值不同对应错误也不同

(3)校验和:对包括ICMP报文数据部分在内的整个ICMP数据报的校验和,以检验报文在传输过程中是否出现了差错

五、UDP

UDP报文是面向无连接的传输层协议,确定了该协议的特性:效率高,速度快。

(1)源端口号:表示数据发送方的应用层程序

(2)目的端口号:表示数据接收方的应用层程序

(3)长度:2字节,表示UDP报文的总长度

(4)UDP校验:校验和,长度2字节

(5)数据:UDP的MTU为1472字节

六、TCP

TCP报文时面向连接的传输层协议,使用了序列号和确认号,以及三次握手、四次挥手以及重传机制,实现可靠的传输。

(1)源端口号:表示数据发送方的应用层程序

(2)目的端口号:表示数据接收方的应用层程序

(3)序列号SEQ:TCP链接中传输的数据流中每个字节都编上一个序号。序号字段的值指的是本报文段所发送的数据的第一个字节的序号。

(4)确认号ACK:是期望收到对方的下一个报文段的数据的第1个字节的序号,即上次已成功接收到的数据字节序号加1。只有ACK标识为1,此字段有效。

(5)首部长度:数据偏移,即首部长度,指出TCP报文段的数据起始处距离TCP报文段的起始处有多远,以32比特(4字节)为计算单位。最多有60字节的首部,若无选项字段,正常为20字节。

(6)保留:保留,占 6位,必须为0

(7)控制位:

  • URG:表示紧急指针字段有效
  • ACK:接收数据序号字段有效
  • PSH:表示通过flush操作发送的数据
  • RST:强制断开连接,用于异常中断的情况
  • SYN:同步序号,用于建立连接过程,在连接请求中发送SYN=1和ACK=0 , 应答 SYN=1和ACK=1
  • FIN:用于释放连接,为1时表示发送方已经没有数据发送了,即关闭本方数据流。

(8)窗口:TCP的流量控制,窗口起始于确认序号字段指明的值,这个值是接收端正期望接收的字节数。窗口最大为65535字节。

(9)校验和:校验字段,包括TCP首部和TCP数据

(10)紧急指针,只有当URG标志置1时紧急指针才有效。紧急指针指出在本报文段中紧急数据共有多少个字节(紧急数据放在本报文段数据的最前面)

(11)选项字段:长度不定。但必须是32bits的整倍数

(12)数据:可以不发送任何数据,TCP会在握手阶段告知对方自己的MSS(最大分段大小,常见为1460),而MSS+TCP头部(20byte)+IP头部(20byte)就得到MAC层的MTU1500字节


->返回总目录<-


  • 13
    点赞
  • 172
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式知行

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值