内容目录
Ethernet II 帧格式
- 目的MAC地址
占用6字节 - 源MAC地址
占用6字节 - 帧类型
占用2字节 - 数据payload
占用46字节~1500字节 - 源MAC地址
占用4字节
Ethernet II 帧的最小和最大长度
最小帧长度:64 字节(包括帧头和 FCS)。如果有效载荷部分小于 46 字节,则通过填充(padding)来达到最小长度。
最大帧长度:1518 字节(包括 14 字节的帧头和 4 字节的 FCS)。有效载荷部分最多为 1500 字节。
wireshark分析
wireshark捕获了常用的字段
IPv4头部结构详解
- 4位版本号
ipv4协议的值是4 - 4位头部长度
表示头部长度(单位为4字节),如果是15,则表示头部有60字节。 - 8位服务类型
包含一个3位的优先权字段(现忽略),4位的TOS字段和1位保留字段(必须置零)。4位的TOS字段分别表示:最小延时,最大吞吐量,最高可靠性和最小费用。其中最多有一个置为1。这段话是书上的定义。
以现在来看,8位服务类型由两部分组成:前 6 位:现在称为 DSCP(Differentiated Services Code Point),用于标识数据包的优先级和服务级别。后 2 位:被定义为 ECN(Explicit Congestion Notification,显式拥塞通知),用于拥塞管理。 - 16位总长度
标识整个数据包的长度(单位字节),最大是65535字节,但因为MTU限制,超过MTU长度的数据包都将进行分片处理。 - 16位标识
标识主机发送的每一个数据报,其初始值由系统随机生成,每发送一个数据报,其值就加1。每个数据报分片都具有相同的标识值。 - 3位标志
3位标志字段的第一位保留。第二位表示禁止分片(通过置1设置)。第三位表示MF,表示还有其他分片。 - 13位分片偏移
分片偏移是相对原始IP数据报开始处的偏移。实际的偏移值是该值左移(乘8)得到的,因此,除了最后一个分片,每一个IP分片的数据部分必须是8的整数倍。 - 8位生存时间TTL time to live
是数据包到达目的地之前允许经过的路由器跳数。TTL值被发送端设置(常见的值是64)。数据报每经过一个路由,该值就被-1. - 8位协议
6表示TCP,17是UDP - 16位头部校验和
CRC - 32位源IP地址
- 32位目的IP地址
- 可选项,最多40字节。
可用的选项包括:时间戳,记录路由等等。
TCP协议头部结构详解
- 16位源端口号
无哈哈 - 16位目的端口号
无哈哈 - 32位序号
一次TCP通信过程中某一个传输方向上的每个字节的编号。假设主机A和主机B进行TCP通信,A发送给B的第一个TCP报文段中,序号值被系统初始化为某个随机值的ISN(ISN,初始序号值)。那么在该传输方向上后续的TCP报文段中序号值将被系统设置成ISN加上该报文段所携带数据的第一个字节在则会那个个字节流中的偏移。例如,某个TCP报文段传送的数据是字节流中第1025~2048字节,那么该报文段的序号值就是ISN+250。 - 32位确认号
用作对另一方发送来的TCP报文段的响应。其值是收到的TCP报文段的序号值加1。 - 4位头部长度
标识该TCP头部有多少个(4字节)。TCP头部最长是60字节。 - 6位标志位
- URG标志:表示紧急指针是否有效。
- ACK标志:表示确认号是否有效。
- PSH标志:提示接收端应用程序应该立即从TCP接收缓冲区中读走数据,为接受后续数据腾出空间。
- RST标志:表示要求对方重新建立连接。
- SYN:表示请求建立连接。
- FIN标志:表示通知对方本端要关闭连接了。
- 16位窗口大小
TCP流量控制 - 16位校验和
- 16位紧急指针
是一个正的偏移量。后面再说。
UDP协议头部结构详解
- 源端口
占用2字节 - 目的端口
占用2字节 - 长度
占用2字节 - 校验和
占用2字节