字号:大 中 小
一、以太网链路层协议封装格式
以太网数据在网络介质上传输需要遵循一定的机制,其中CSMA/CD介质访问控制机制约定了以太网在传输数据时,两帧之间需要等待一个帧间隙时间(IFG或IPG),为以太网接口提供了帧接收之间的恢复时间,该恢复时间最小值为传输96bit所花费的时间,对于10M线路,该时间为9.6uS,100M线路为960nS,1G的线路为96nS。同时以太网数据帧在传输时还需要有7byte的前导字段和1byte的定界符。因此以太网数据在传输过程中是由以下部分组成的:7byte(前导)+1byte(定界符)+以太网数据帧+12byte(IPG)。
在全双工工作模式下,如果CSMA/CD介质访问控制机制发现传输冲突时,则会放弃当前帧发送,改为发送一个48比特的噪声帧。
其中以太网数据帧限制为最小长度为64byte,最大长度为1518byte,其格式为:6byte(目的MAC地址)+6byte(源MAC地址)+2byte(类型字段)+数据字段+4byte(FCS校验字
段)。其中帧类型字段标识其后的数据类型。
这里值得注意的是区分Ethernet II帧格式和802.3帧格式的不同,我们有时可能会混用了这两个术语。
Ethernet II帧是最常见的一种以太网帧格式,也是今天以太网的事实标准,由DEC,Intel和Xerox在1982年公布标准,Ethernet II可以支持TCP/IP,Novell IPX/SPX,Apple Talk Phase I等协议,其比较常见的类型字段为:0X0800(IP帧),0X0806(ARP请求/应答帧),0X8035(PARP请求/应答帧),0X8137(Novell IPX),0X809b(Apple Talk)。RFC 894定义了IP报文在Ethernet II上的封装格式。
802.3帧将Ethernet II帧头中的类型字段替换为帧长度字段(取值范围为0X0000-0X05dc,不包括CRC检验码),因此对于接收到的帧,如果类型字段取值范围为0X0000-0X05dc,则可以判断其为802.3帧,而非Ethernet II帧。其中RAW 802.3是1983年Novell发布Netware/86网络套件时采用的私有以太网帧格式,只支持IPX/SPX一种协议;802.3/802.2 LLC是IEEE 公布的正式802.3标准,它加入了3byte的LLC字段, 其中SAP值用以标志上层应用,每个tcp ip协议设置怎么填SAP字段为8bits,其中只有6bit用于标识上层协议,因此所能标识的协议数不超过32种,导
致802.3/802.2 LLC的使用有很大局限性;802.3/802.2 SNAP是IEEE为保证在802.2 LLC上支持更多的上层协议同时更好的支持IP协议而发布的标准,在802.3/802.2 LLC基础上添加了5byte的SNAP字段,从而使其可以标识更多的上层协议类型,OUI字段用于代表不同的组织(一般置为0),在802.3/802.2 SNAP基础上RFC1042定义了IP报文在802.2网络中的封装方法和ARP协议在802.2 SANP中的实现。
目前实际环境中大多数TCP/IP设备都使用Ethernet II格式的帧,它采用了RFC 894的实现标准。从上述帧格式中可以看出,Ethernet II格式帧数据段的长度限制在46byte-1500byte之间,当数据段长度小于46个字节时,加填充字段(PAD)补足。Ethernet II和802.3对数据帧的长度限制,其最大值分别是1500和1492字节,这一特性称作最大传输单元(MTU)。
图 IEEE802.2/802.3(RFC1042)和Ethernet II(RFC894)的封装格式
在TCP/IP协议族中,链路层主要有三个目的:(1)为IP模块发送和接收IP数据报;(2)为ARP模块发送ARP请求和接收ARP应答;(3)为RARP发送RARP请求和接收RARP应答。
二、以太网IP层协议封装格式
在TCP/IP协议族中基于链路层以上的协议主要有三种:IP协议、ARP协议和RARP协议,其中在IP数据报中又额外封装了ICMP协议和IGMP协议。IP层协议也就是通常的网络层协议,它提供点到点的服务(不同于传输层TCP/UDP协议提供端到端的服务)。
4 bits | 4 bits | 8 bits | 3 bits | 13 bits |
版本号 | 首部长度 | 服务类型(TOS) | 总长度(字节数) | |
标 识 | 标志 | 片偏移 | ||
生存时间(TTL) | 协议 | 首部校验和 | ||
源IP地址 | ||||
目的IP地址 | ||||
选 项 | ||||
数 据 | ||||
IP包封装格式
版本号:IP包的版本,当前一般为IPv4,即0100。
首部长度:IP包头长度(Internet Header Length,IHL),是一个4bit字段,是头部占32比特的数字,包括可选项。普通IP数据报(没有任何选项),该字段的值是5,即160比特=20字节。此字段最大值为60字节,表示头部报文中没有发送可选部分数据。
服务类型(TOS):其中前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 Protoc
ol)可以根据这些字段的值进行路由决策。
总长度:头部及数据项长度,最大长度为65535bytes。
标识:当IP包较大需要进行分段时,用于标识该段所属的分组。通常每发一份报文,它的值会加1。
标志:构成为[0][D][M],其中D为1表示不分段,M为0表示为最后分段,为1表示非最后分段。
片偏移:即分段偏移。如果一份数据报要求分段的话,此字段指明该段偏移距原始数据报开始的位置。
生存时间(TTL):表示一个IP数据流的生命周期,由发送数据的源主机设置,通常为32、64、128等。每次IP数据包经过一个路由器的时候TTL就减一,当减到0时,这个数据包就消亡了。
协议:传输层的协议类型。
协议代码 | 协 议 名 称 |
1 | ICMP (Internet Control Message Protocol) |
2 | IGMP (Internet Group Management Protocol) |
3 | GGP (Gateway-to-Gateway Protocol) |
4 | IP (IP in IP encapsulation) |
6 | TCP (Transmission Control Protocol) |
8 | EGP (Exterior Gateway Protocol) |
17 | UDP (User Datagram Protocol |
首部校验和:根据IP头部计算得到的校验和码。计算方法是:对头部中每个16比特进行二进制反码求和。(和ICMP、IGMP、TCP、UDP不同,IP不对头部后的数据进行校验)。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论