TCP/IP体系结构
应用层 | RIP、OSPF、FTP |
运输层 | TCP、UDP |
网际层 | IP、ARP、ICMP |
网络接口层 | 底层协议(Ethernet) |
数据链路层
Ethernet报文格式
6Byte | 6Byte | 2Byte | 46~1500Byte | 4Byte |
目的MAC地址 | 源MAC地址 | 类型/长度 | 数据 | FCS |
其中,类型 / 长度值小于 1536(0x0600)时表示数据字段的长度,大于等于 1536(0x0600)时表示数据字段的协议类型。类型 / 长度值 0x0800 表示帧中封装的数据为 IP 分组,类型值 0x0806 表示帧中封装的数据为 ARP 分组
Ethernet II 类型以太网帧的最小长度为 64 字节(6+6+2+46+4)最大长度为 1518 字节(6+6+2+1500+4)。其中前 12 字节分别标识出发送数据帧的源节点 MAC 地址和接收数据帧的目标节点 MAC 地址。
接下来的 2 个字节(类型)标识出以太网帧所携带的上层数据类型,如下
- IPv4: 0x0800
- ARP:0x0806
- PPPoE:0x8864
- 802.1Q tag: 0x8100
- IPV6: 0x86DD
- MPLS Label:0x8847
4 个字节的帧校验序列(Frame. Check Sequence,FCS)
PPP 帧格式
STP 协议格式
- 目的 mac 地址 ― 目的地址是一个固定的桥的组播地址(0x0180c2000000)
- 源 MAC 地址 ― 即发送该配置消息的桥 MAC 地址
- 长度 / 类型 ― 这里表示帧长
- LLC Header ― 固定的链路头 - 0x424203
- Payload ― BPDU 数据
网络层
IP 报文
类型:IP 报文的类型为 0x0800;
Version:4 比特;表示版本;目前为 4;即 0100
IHL:Internet Header Length 首部长度;占 4 比特。是头部占 32 比特的数字,包括可选项。普通 IP 数据报(没有任何选项),该字段的值是 5,即 160 比特 = 20 字节。此字段最大值为 60 字节;
服务类型(Type of Service ,TOS)字段:占 8 比特。其中前 3 比特为优先权子字段(Precedence,现已被忽略)。第 8 比特保留未用。第 4 至第 7 比特分别代表延迟、吞吐量、可靠性和花费。当它们取值为 1 时分别代表要求最小时延、最大吞吐量、最高可靠性和最小费用。这 4 比特的服务类型中只能置其中 1 比特为 1。可以全为 0,若全为 0 则表示一般服务。服务类型字段声明了数据报被网络系统传输时可以被怎样处理。例如:TELNET 协议可能要求有最小的延迟,FTP 协议(数据)可能要求有最大吞吐量,SNMP 协议可能要求有最高可靠性,NNTP(Network News Transfer Protocol,网络新闻传输协议)可能要求最小费用,而 ICMP 协议可能无特殊要求(4 比特全为 0)。实际上,大部分主机会忽略这个字段,但一些动态路由协议如 OSPF(Open Shortest Path First Protocol)、IS-IS(Intermediate System to Intermediate System Protocol)可以根据这些字段的值进行路由决策。
总长度字段:占 16 比特。指明整个数据报的长度(以字节为单位)。最大长度为 65535 字节。
标识字段:占 16 比特。用来唯一地标识主机发送的每一份数据报。通常每发一份报文,它的值会加 1。
标志位字段:占 3 比特。标志一份数据报是否要求分段
段偏移字段:占 13 比特。如果一份数据报要求分段的话,此字段指明该段偏移距原始数据报开始的位置
生存期(TTL:Time to Live)字段:占 8 比特。用来设置数据报最多可以经过的路由器数。由发送数据的源主机设置,通常为 32、64、128 等。每经过一个路由器,其值减 1,直到 0 时该数据报被丢弃
协议字段:占 8 比特。指明 IP 层所封装的上层协议类型,如 ICMP(1)、IGMP(2) 、TCP(6)、UDP(17)等
ARP 协议报文
以太网类型为 0x0806 代表 ARP 协议
Ethernet
IP
ICMP、IP、Ethernet PDU封装关系
IP分组 | IP首部 | 数据载荷:ICMP | |
Ethernet帧 | 帧首部 | 数据载荷:IP |