附件:报文格式
1.1Ethernet数据包格式(RFC894)
1、DstMac的最高字节的最低BIT位如果为1,表明此包是以太网组播/广播包,
送给CPU处理。
2、将DstMac和本端口的MAC进行比较,如果不一致就丢弃。
3、获取以太网类型字段Type/Length。
0x0800→IP 继续进行3层的IP包处理。
0x0806→ARP 送给CPU处理。
0x8035→RARP 送给CPU处理。
0x8863→PPPoE discovery stage 送给CPU处理。
0x8864→PPPoE session stage 继续进行PPP的2层包处理。
0x8100→VLAN
其它值当作未识别包类型而丢弃。
1.2PPP数据包格式
1、获取PPP包类型字段。
0x0021→IP 继续进行3层的IP包处理。
0x8021→IPCP 送给CPU处理。
0xC021→LCP 送给CPU处理。
0xc023→PAP 送给CPU处理。
0xc025→LQR 送给CPU处理。
0xc223→CHAP 送给CPU处理。
0x8023→OSICP 送给CPU处理。
0x0023→OSI 送给CPU处理。
其它值当作未识别包类型而丢弃。
1.3 ARP 报文格式(RFC826)
|←----以太网首部---->|←---------28字节ARP 请求/应答
------
1.4 IP 报文格式(RFC791)(20bytes)
TOS
1.5 PING 报文格式(需IP 封装)(8bytes)
1.6 TCP 报文格式(需IP 封装)(20bytes)
紧急指针有效 ACK 确认序号有效 PSH 接收方应该尽快将这个报文交给应用层 RST 重建连接 SYN
同步序号用来发起一个连接 FIN 发端完成发送认务
1.7 UDP 报文格式(需IP 封装)(8bytes)
1.8 MPLS 报文格式
MPLS 报文类型: 以太网中 0x8847(单播) 0x8848(组播) PPP 类型上 0x8281(MPLSCP)
1.9MTU
1.10TCP与UDP应用
2以太网帧,TCP/IP数据报文详解
其实也不是很详细,详细起来要很厚一本书,但是都是针对主要的写的
以太网2的帧格式
前导码:8个字节,这个主要是给信号同步的,给信号的开始传输的第一个bit定位的
目的地址:6个字节,目的的MAC地址
源地址:6个字节,是自己的MAC地址
类型长度:2字节,辨别上层协议的
数据:46-1500字节,就是上层的所有数据
帧校验FCS:4字节,数据发过去的时候,会随机给个值,对端需要验证这个值,如果值不对,就说明这段数据干扰,或某种原因被修改。
数据部分最小46个字节,最大1500 以太帧最小64字节,最大1518字节。
这层主要是把物理层透明的传输bits组合成字节近而组合成帧,在网络中传输。用MAC地
址访问介质,错误发现但是不能纠正。
IP数据包格式
版本Version:4位,表示IP地址的版本1111=32bits
首部长度Header Length:4位,表示IP数据报头的长度,最小20字节,最大69字节。那么这个bit是怎么表示的呢。0001 = 1X4=4字节0101 = 55X4=20字节1111 = 15
15X4=60字节
优先级与服务类型Priority&type of service:8位,该字段用于表示数据的优先级和服务类型,通过数据包中划分一定的优先级,用于实现服务质量的要求。
总长度Total Length:16位,该字段用于指示整个IP报的长度,最长65535个字节,包括
报头和数据。
标识符Identification:16位,当IP数据对上层数据进行分段的时候,它会将所有的段分配一组编号,然后将这些编号放入标识符字段,保证分段不会被错误的进行重组,标识符字段用于表示一个数据包所属的消息,以使得接受节点可以重组被分断或分段的消息。
标志Flags:3位,标志和分段一起被用来传递信息,例如,对当前的包不能进行分段,或者当一个包被分段后,用以指示在一系列的包片段中,最后一个片段是否已发出。
段偏移量Fragment Offset:13位,在一个分段组序列中如何将各片段重新连接起来。
TTL Time to live:8位,IP数据包的生命周期,防御一个数据包在网络中无限循环的转发下去。当TTL值为0时,该数据报将被丢弃,数据包没经过一个路由器,TTL值将减去1。
协议号Protocd:8位,该字段表示在IP数据报中封装的是哪一个协议,TCP为6,UDP为
17。
首部校验和Header Checksum:16位,它是16位的错误检测字段,目的的主机和网络中的每个网关都要重新计算包头的校验和,就同源机器所做的一样,如果数据没有被改动,两
个计算结果应该是一样的。
源IP地址Source IP Address:32位
目的IP地址Destination IP Address:32位
可选项Options:选项字段,根据实际情况可变长,可以和IP一起使用的选项有多个,例如,
可以输入创建该数据报的时间等。
TCP报文格式
源端口号Source IP Address:16位呼叫端的端口号,这个端口是由发送方随机产生的。
目标端口号Destination Port:16位,被叫端的端口。
32位序列号Sequence Number:由于TCP封包必须要带入IP封包中,所以如果TCP资料太大时(大于IP封包的容许程度),就要进行分段,这个序列号就是记录每个封包的序号,可
以让接受端重新将TCP的资料组合起来。
32位确认号Acknowledge Number:为了确认对方确实收到我们的封包,如果收到了,发
送ACK确认。
首部长度:4位,为了确认整个TCP包的大小,就必须要这样来说明数据的起始位。
保留Reserved:6位,未使用的保留位,留着扩展用。
Code:6个控制位,URG,ACK,PSH,RST,SYN,FIN。