IP(指定目的地址和源地址)
Version 版本号 四个字节 IHL:IP Header Length IP头长度 Total Length 总的长度 (总的长度减去IP头长度=数据长度) Identification Flags Fragment Offset 拆包、组包用(超过最大传输单元时) 标识 允许/不运行拆包(一个保留字节) 每个包在原来中的偏移量 Time To Live 缩写TTL 路由的跳数(一般设置成32) Protocol 协议的类型:TCP UDP Header Checksum 整个的校验和 从一个路由到另一个路由有没有发送变化,比如被篡改 Source Address 源地址 Destination Address 目的地址 Options 实际需求选项 Padding 用于填充,保证32位
相关定义
MTU
最大传输单元,是指网上可传输数据的最大尺寸 可通过ICMP查询最大传输单元。它通过设置IP层的DF(Don‘t Fragment)不分片位,比如将这一 比特置1,IP层将不对数据报进行分片 获取MTU的好处是传输过程中不拆包,提高传输效率。以太网MTU默认是1500B
TCP(指定端口号)
第四行:MAC Header 帧头 MAC Ender 帧尾 中间的是以太网帧的数据 第三行:IP头 数据 第二行:TCP/UDP头 数据
Source Port 源端口 Destination 目的端口 用于确定某个具体应用程序 Sequence Number 保证有序 编号 接受后有序排序(按字节为单位编号) Acknowledgment Number 保证可靠 一个主机向另一个主机发一个包,它来收发应答。 Data offset 数据 因为Options是动态变化,所以数据从哪里开始,用它指定 Reserved 保留字 URG 紧急数据标识 ACK 目的主机收到包后发送的确认消息 置1 PSH 发送的主机 置1 RST 复位标记 比如对80端口发送消息,对方该端口没有开通,就会收到这个标记 SYN 三次握手中用 每次握手都置1 FIN 四次挥手中使用 每次置1 断开连接 window 发送数据包的一个滑动窗口 用于增加发送数据包的吞吐量 Checksum 校验和 Urgent Pointer 紧急指针 Options 选项 比如传输最大报文是多少 padding 保证32位对齐 data 数据
Seq Number具体含义
在TCP,数据不是按包排序的,而是按字节排。每个包的Seq Number代表的是发送字节的起始序号 发送的第一个包的初始序号是随机的,在创建连接的三次握手过程中交换。
Ack Number
希望对方下一个发送包从什么位置开始。 比如发送的四个包都收到了,只需要回第四个包的ack就可以了。
TCP 三次握手
TCP四次挥手
TCP ACK机制
TCP滑动窗口
UDP与RTP
RTP是上层协议(实时传输协议),可用于TCP上,也可用于UDP上。主要用于UDP上 就是对UDP进行模拟的TCP管理。关键字段Sequence number(以包为单位) timestamp 时间戳 如果数据一次传不开 多个包同一源,同一时刻只能有一个包 除非timestamp有差别 SSRC 每一个信源(比如麦克风,电脑声音)都有一个唯一标识 CSRC 共享源,比如混音,将他们混合成一个信源发送出去 PT 类型 音频都音频的数据类型,视频有视频的数据类型 M 标记,对于视频,一个帧的最后一个包 它会置1 CC CSRC的个数
总结:通过seq number可以排序包,通过samestap可以判断包是否属于同一帧
RTCP
就是RTP的控制协议 (丢了多少包,来了多少包)
|