->返回总目录<-
目录
一、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个字节的标签协议标识:0x81002个字节的标签控制信息: 用户优先级: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=1FIN:用于释放连接,为1时表示发送方已经没有数据发送了,即关闭本方数据流。(8)窗口:TCP的流量控制,窗口起始于确认序号字段指明的值,这个值是接收端正期望接收的字节数。窗口最大为65535字节。
(9)校验和:校验字段,包括TCP首部和TCP数据
(10)紧急指针,只有当URG标志置1时紧急指针才有效。紧急指针指出在本报文段中紧急数据共有多少个字节(紧急数据放在本报文段数据的最前面)
(11)选项字段:长度不定。但必须是32bits的整倍数
(12)数据:可以不发送任何数据,TCP会在握手阶段告知对方自己的MSS(最大分段大小,常见为1460),而MSS+TCP头部(20byte)+IP头部(20byte)就得到MAC层的MTU1500字节
->返回总目录<-