文章目录
- 1 概述
- 2 TCP 协议
- 2.1 报文格式
- 2.2 三次握手,建立连接
- 2.3 四次挥手,断开连接
- 2.4 窗口机制
- 3 UDP 协议
- 3.1 传输头格式
- 4 扩展
- 4.1 常用端口号
- 4.2 TCP 与 UDP 区别
1 概述
2 TCP 协议
2.1 报文格式
- 蓝色背景为重点了解部分
- (1)源端口(16 位):数据从哪里来
- (2)目标端口(16 位):数据到哪里去
- (3)序号(32 位,seq):TCP 将要传输的每个字节都进行编号,序号是本报文段发送的数据组的第一个字节的编号,序号可以保证传输信息的有效性。比如:一个报文段的序号为 300,此报文段数据部分共有 100 字节,则下一个报文的序列号为 401
- (4)确认号(32 位,ack):
- 表明该序号之前的所有数据已经正确无误的收到
- 指明下一个期待收到的序号(ack = seq + 1)
- (5)首部长度(4 位):表示该 TCP 头部有多少个 32 位(有多少个 4 字节)
- (6)保留字段(6 位):未用,所有实现必须把这个字段置全 0
- (7)标志字段(6 位):为 1 时,有效
- URG:紧急指针有效
- ACK:接收序号有效
- PSH:推进功能有效
- RST:连接复位为初始状态,通用用于连接故障后的恢复
- SYN:对序号同步,用于连接的建立
- FIN:数据发送完,连接可以释放
- (8)窗口(16 位):为流控分配的信息量
- (9)校验和(16 位):段中所有 16 位字按模 2 16 − 1 2^{16} - 1 216−1 相加的和,然后取 1 的补码
- (10)紧急指针(16 位):从发送顺序号开始的偏置值,指向字节流的一个位置,此位置之前的数据是紧急数据
- (11)选项:目前只有一个任选项,即建立连接时指定的最大段长
2.2 三次握手,建立连接
2.3 四次挥手,断开连接
2.4 窗口机制
3 UDP 协议
3.1 传输头格式
4 扩展
4.1 常用端口号
- 0 ~ 1023:系统端口,这些端口只有系统特许的进程才能使用
- 1024 ~ 5000:临时端口,一般的应用程序使用
- 5001 ~ 65535:服务器(非特权)端口,用来给用户自定义端口
常用端口号 | 应用 | 说明 |
---|---|---|
20 | FTP | File Transfer Protocol,文件传输协议,用于 数据传输 |
21 | FTP | File Transfer Protocol,文件传输协议,用于 控制信息和数据能够同时传输 |
80 | HTTP | Hyper Text Transport Protocol,超文本传输协议 |
4.2 TCP 与 UDP 区别
TCP | UDP | |
---|---|---|
是否连接 | 面向连接 | 无连接 |
传输可靠性 | 可靠的 | 不可靠的 |
应用场景 | 传输大量数据 | 传输少量数据 |
速度 | 慢 | 快 |