数据帧与IP数据包头
帧的定义
帧是数据链路层的协议数据单元,报文在经过网卡添加目标MAC、FCS(帧校验序列)、源MAC和类型后成为帧
格式有802.3(无线网卡)和802.11(有线网卡) (IEEE协议)以太网标准:IEEE 802.3简介及各分类标准汇总_ieee802.3_Sigent_思佳科技-车载以太网的博客-CSDN博客
帧的结构
帧由帧头,帧尾以及上三层数据组成
·帧头:
包含目标MAC地址(MAC地址的组成:前24bit(厂商编号)+后24bit(厂商具体生产的网卡号) 一共 48bit(bit代表0或 1)
8个bit(位)为一个字节)、源MAC地址、类型(表示上层在处理数据时所用协议)
·帧尾:
FCS,帧校验序列是指特别的检测码字符被添加到在一个通信协议中的帧中进行检错和纠错。发送主机在整个帧中发送一个检测码。接收主机在整个帧中的检测码使用相同的运算法则,并将它与接收到的 FCS 相比较。以此来探测数据是否在运输中丢失或被改变。
·数据:
包含上三层的数据,如用户发送的数据、IP数据包等
其中TCP协议和UDP协议来自传输层,分别应对不同情况
简略来说TCP为可靠的传输协议,TCP连接必须要经过三次“握手”才能建立起来 三次握手细则:深入浅出TCP三次握手 (多图详解) - 知乎 (zhihu.com)
UDP是不可靠的传输协议,传输数据之前源端和终端不建立连接
一张很好用的图:
IP数据包
结构:大部分IP数据包由版本、首部长度、优先级与服务类型、总长度、标识符、标志、段偏移量、TTL、协议号、首部校验和、源地址和目标地址组成,总共有20个字节
各部分作用
·版本号(4bit)
记录IP地址为IPV4还是IPV6
·首部长度(4bit)
记录包头长度(可以此推断有无可选项)
·优先级与服务类型(8bit)
按位被定义为 PPP DTRM0
PPP:定义包的优先级(值越大越重要)
000 普通 (Routine)
001 优先的 (Priority)
010 立即的发送 (Immediate)
011 闪电式的 (Flash)
100 比闪电还闪电式的 (Flash Override)
101 CRI/TIC/ECP
110 网间控制 (Internetwork Control)
111 网络控制 (Network Control)
Delay 时间延迟,0:普通 1:延迟尽量小
Throughput 吞吐量, 0:普通 1:流量尽量大
Reliability 可靠性, 0:普通 1:可靠性尽量大
Cost 传输成本,0:普通 1:成本尽量小
0 最后一位被保留,恒定为0
·总长度(16bit)
记录总长度,最大为1500字节(超过的数据将进行分片)
·标识符(16bit)
区分不用IP数据包的分片数据
·标志(3bit)
共三位
000 需要分片且当前为最后一个分片
010 不需要分片
001 需要分片且还有后续分片
·段偏移量(13bit)
决定IP分片数据的先后顺序,只能是0或1480的倍数,第一个分片数据发送时偏移量为0, 用于重组数据包时靠偏移量来按顺序组合分片数据
·TTL(8bit)
范围为1-255,单位为跳数,数据包每经过一台路由器即为一跳,数值同时减一,当值为0时自动丢弃数据包,用于防止数据包在网络中永久的循环
Windows系统TTL一般为128,Linux系统TTL为1-128之间,通常为56,64(跳点跟踪命令:tracert IP地址)
·协议号(8bit)
区分上层协议;6代表TCP协议,17代表UDP协议
·首部校验和(16bit)
校验三层IP包头是否出错
·源地址(32bit)
记录主机地址
·目标地址(32bit)
记录接收数据包的目标主机地址
一图流: