ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

以太网帧结构及IP数据报格式详解

以太网帧结构及IP数据报格式详解 目录1、以太网帧结构介绍2、IP(IPv4)数据报格式2.1、IP首部2.2、ICMP报文格式2.3、UDP报文格式2.4、TCP报文格式3、ARP报文格式4、VLAN数据帧格式1、以太网帧结构介绍以太网帧Ethernet Frame是数据链路层的基本传输单位其结构遵循IEEE 802.3标准或其他变种如Ethernet II.基于IEEE 802.3的帧结构如下以太网(IEEE802.3)帧格式包含一个源地址和目的地址、一个重载的长度/类型字段、一个数据字段和一个帧校验序列(CRC32)。另外基本帧格式提供了一个可选的标签项其中包含一个VLAN ID和优先级信息(802.1p/q)以及一个最近出现的可扩展标签。前导和 SFD 被用于接收器同步。当以太网以半双工模式运行在100Mb/s或以上速率时其他位可能被作为载体扩展添加到短帧中以确保冲突检测电路的正常运行。Ethernet II为使用最广泛的以太网帧格式前导码Preamble7字节交替的10101010用于时钟同步。物理层功能不计入帧头。帧开始符SFD, Start Frame Delimiter1字节10101011标志帧的开始。目标MAC地址Destination MAC6字节接收方的物理地址。广播地址为FF:FF:FF:FF:FF:FF。源MAC地址Source MAC6字节发送方的物理地址。类型/长度EtherType/Length2字节Ethernet II标识上层协议类型。IEEE 802.3表示数据字段的长度≤1500通过该字段区分两种帧格式。数据Payload46~1500字节上层协议数据如IP包。若数据46字节需填充至最小长度保证帧≥64字节。帧校验序列FCS, Frame Check Sequence4字节CRC校验值用于检测传输错误。其中类型字段具体定义如下Ethernet II类型字段范围15001500及以下为802.3长度字段因数据报文长度为46-1500。常用的类型字段有0x0800IPv40x0806ARP0x0835RARP0x8100802.1Q VLAN标签更详细的以太网类型参考: IEEE 802 Numbers2、IP(IPv4)数据报格式IPInternet Protocol数据报是网络层的基本数据单元其格式由固定长度的首部Header和可变长度的数据部分Payload组成。2.1、IP首部1固定首部20字节必选部分字段长度bit说明版本Version4IP协议版本如IPv4填4,IPv6填6首部长度IHL4首部长度如果不带Option字段则为520byte最长为60该值限制了记录路由选项。以4字节为一个单位。服务类型TOS8只有在有QoS差分服务要求时这个字段才起作用用于QoS优先级、延迟、吞吐量等现多用于DiffServ或ECN总长度Total Length16整个数据报的长度头部数据最大65535字节。必须不超过最大传输单元MTU标识Identification16唯一标识数据报用于分片重组主机每发一个报文加1标志Flags3控制分片- bit0保留0 -bit1DF禁止分片 - bit2MF更多分片非最后一片片偏移Fragment Offset13片偏移分片重组时会用到该字段分片在原数据报中的位置以8字节为偏移单位。生存时间Time to Live8数据报经过的最大路由器跳数每经过一跳减1到0时丢弃协议Protocol8下一层协议。指出此数据包携带的数据使用何种协议以便目的主机的IP层将数据部分上交给哪个进程处理如TCP6UDP17ICMP1更多协议请参考参考文件头部校验和Header Checksum16仅校验头部每经过一跳重新计算。源IP地址Source Address32发送方的IP地址。目的IP地址Destination Address32接收方的IP地址。2可选首部字段0~40字节可选选项Options用于扩展功能如记录路由、时间戳等实际很少使用。填充Padding确保头部长度是4字节的整数倍。2.2、ICMP报文格式ICMPInternet Control Message Protocol报文是网络层协议主要用于在IP主机、路由器之间传递控制信息如网络通断、主机可达性、路由状态等。ICMP为IP数据报的一种ICMP报文在IP数据报数据段承载。在IP首部可以通过协议字段区分ICMP/TCP/UDPICMP/TCP/UDP报文均在IP数据报数据段承载每个报文格式也包含头部和数据。ICMP各字段详解Type1字节报文类型决定ICMP的功能如8为请求回显0为回显应答。Code1字节细分类型例如Type3目标不可达时Code0表示网络不可达Code1表示主机不可达。Checksum2字节校验和覆盖整个ICMP报文。可变部分4字节内容随Type/Code变化如标识符、序列号用于回显请求。数据部分通常包含触发该ICMP报文的原始IP头前8字节数据用于错误诊断。常见的ICMP报文类型和细分类型2.3、UDP报文格式UDPUser Datagram Protocol是一种无连接、不可靠但高效的传输层协议其报文格式简单固定首部仅 8字节。UDP首部字段名位数说明源端口Source Port16发送方的端口号可选不用时可置0目的端口Destination Port16接收方的端口号长度Length16整个UDP报文的长度首部数据最小为8字节最大65535字节校验和Checksum16可选字段IPv4中可置0校验范围包括伪首部、UDP首部和数据部分伪首部校验时临时添加含源/目的IP、协议类型等仅用于计算不实际传输。伪首部字段来自于IP数据报首部内容。校验和UDP 的校验和是可选的。由于 IP 包只对头部做校验和无法对数据部分进行纠错因此 UDP 自己实现校验和。和IP数据报的检验和只检验IP数据报的首部不同UDP的检验和是把首部包含伪首部和数据部分一起都检验这就导致在实现过程中UDP使用校验和时需要缓存所有数据包。2.4、TCP报文格式TCPTransmission Control Protocol是一种面向连接、可靠的传输层协议其报文格式比UDP复杂包含固定首部20字节和可选字段。TCP首部TCP包含20字节固定首部字段名位数说明源端口Source Port16发送方的端口号目的端口Destination Port16接收方的端口号。序列号Sequence Number32数据字节流的编号用于数据排序和可靠性。TCP链接中传输的数据流中每个字节都编上一个序号。序号字段的值指的是本报文段所发送的数据的第一个字节的序号确认号Acknowledgment Number32确认号是期望收到对方的下一个报文段的数据的第1个字节的序号即上次已成功接收到的数据字节序号加1。只有ACK标识为1此字段有效。首部长度Data Offset4TCP头部长度以4字节为单位最小值为5即20字节。保留Reserved6保留字段必须置0控制标志Flags6连接控制- URG紧急指针有效- ACK确认号有效- PSH接收方应立即推送数据给应用层- RST重置连接- SYN同步序列号建立连接- FIN释放连接窗口大小Window Size16接收方的可用缓冲区大小TCP的流量控制窗口起始于确认序号字段指明的值这个值是接收端期望接收的字节数。窗口最大为65535字节校验和Checksum16校验范围包括伪首部、TCP首部和数据部分与UDP类似是一个强制性的字段一定是由发端计算和存储并由收端进行验证。在计算检验和时要在TCP报文段的前面加上12字节的伪首部紧急指针Urgent Pointer16仅当URG1时有效指向紧急数据的末尾。TCP的紧急方式是发送端向另一端发送紧急数据的一种方式。紧急指针指出在本报文段中紧急数据共有多少个字节紧急数据放在本报文段数据的最前面TCP包含最大40字可变首部TCP协议最初只规定了一种选项即最长报文段长度只包含数据字段不包括TCP首部又称为MSS。MSS告诉对方TCP“我的缓存所能接收的报文段的数据字段的最大长度是MSS个字节”。新的RFC规定有以下几种选型选项表结束空操作最大报文段长度窗口扩大因子时间戳选项表结束。空操作没有特殊含义一般用于将TCP选项的总长度填充为4字节的整数倍。最大报文段长度又称为MSS只包含数据字段不包括TCP首部。窗口扩大因子3字节其中一个字节表示偏移值S。新的窗口值等于TCP首部中的窗口位数增大到16S相当于把窗口值向左移动S位后获得实际的窗口大小。时间戳10字节其中最主要的字段是时间戳值4字节和时间戳回送应答字段4字节。3、ARP报文格式以太网中的 ARPAddress Resolution Protocol地址解析协议帧 用于通过 IP地址 查询对应的 MAC地址是局域网通信的基础协议。以太网帧格式和802.3帧格式ARP报文格式如下在类型字段后ARP和RARP均有46字节数据其中28字节为有效数据18字节为填充数据。其中ARP和RARP的类型分别为0x0806和0x0835。其中基于以太网帧的28字节具体报文如下各字段详解硬件类型HTYPE 2字节 网络接口类型0x0001 表示以太网Ethernet协议类型PTYPE 2字节 上层协议类型0x0800 表示IPv4硬件地址长度HLEN 1字节 MAC地址长度0x066字节协议地址长度PLEN 1字节 IP地址长度0x044字节操作码OPER 2字节 ARP操作类型1 ARP请求Request2 ARP响应Reply发送方MACSHA 6字节 发送ARP的主机MAC地址发送方IPSPA 4字节 发送ARP的主机IP地址目标MACTHA 6字节 目标MAC地址请求时填 00:00:00:00:00:00目标IPTPA 4字节 要查询的目标IP地址4、VLAN数据帧格式VLAN 报文采用 IEEE 802.1Q 标准在以太网帧的源 MAC 地址和协议类型之间插入 4 字节的 VLAN 标签 。带有该标签的帧称为 Tagged 帧未插入标签的称为 Untagged 帧 。‌‌‌VLAN帧结构里多了什么插入位置‌位于源 MAC 地址6 字节之后长度/类型2 字节之前 。标签长度‌总共 4 字节包含 TPID 和 TCI 两个主要部分 。整体长度‌加入标签后最大帧长从 1518 字节变为 1522 字节 。‌‌‌‌VLAN字节标签拆分定义如下表字段长度含义取值TPID2ByteTag Protocol Identifier标签协议标识符表示数据帧类型取值为 0x8100 时表示 IEEE 802.1Q 的 VLAN 数据帧。如果不支持 802.1Q 的设备收到这样的帧会将其丢弃。各设备厂商可以自定义该字段的值。当邻居设备将 TPID 配置为非 0x8100 时为了能够识别这样的报文实现互通必须在本设备上修改 TPID 值确保和邻居设备的 TPID 值配置一致。PRI3bitPriority表示数据帧的 802.1p 优先级取值范围为 0 7值越大优先级越高。当网络阻塞时交换机优先发送优先级高的数据帧CFI1bitCanonical Format Indicator标准格式指示位表示 MAC 地址在不同的传输介质中是否以标准格式进行封装用于兼容以太网和令牌环网CFI 取值为 0 表示 MAC 地址以标准格式进行封装为 1 表示以非标准格式封装。在以太网中CFI 的值为 0。VID12bitVLAN ID表示该数据帧所属 VLAN 的编号VLAN ID 取值范围是 0 4095。由于 0 和 4095 为协议保留值所以 VLAN ID 的有效取值范围是 1 4094。参考资料:IP 报文格式大全Ethernet NumbersIEEE
返回列表