1. 传输层协议
- TCP:传输控制协议
- UDP:用户数据报协议
2. UDP特点
- 无连接: 不用在数据传输之前连接和释放连接
- 尽最大努力交付
- 面向报文: 既不合并,也不拆分
应用报文会原封不动作为传输层UDP数据报的数据部分和UDP首部组成运输层的UDP数据报
3. UDP功能
复用
:多个端口可以共用一个传输层UDP的数据报, 再经由IP层传输出去分用
: IP数据报拆分成UDP数据包, 每个报文格式中有原有端口和目的端口的标识, 可以根据目的端口进行分发差错检测
TCP传输协议
4.TCP特点
- 面向连接
- 可靠传输
- 面向字节流
- 流量控制
- 拥塞控制
4.1 面向连接
数据开始传输之前,需要建立连接
三次握手
, 数据传输完成后,需要释放连接,四次挥手
三次握手
- 为应对网络中存在的延迟: 如果1.SYN同步报文延迟发送到服务端,
- 客户端超时连接机制会再次发送1.SYN同步报文,
- 服务端发送同步确认报文2.SYN,ACK; 客户端发送3.ACK确认报文;
- 如果此时服务端收到延迟的1SYN同步报文, 服务端会以为客户端要在进行一次TCP连接, 会发送同步确认报文到客户端,
- 但此时客户端因为已连接, 是不会再次发送3ACK确认连接报文的. >- 这样服务端在一段时间后会认为 是超时报文, 客户端不想建立连接.
四次挥手
- 为什么要四次挥手, 而不是两次?
因为一条通道客户端和服务端都可以接收和发送, 所以要双向断开
4.2 TCP可靠传输
- 无差错
- 不丢失
- 不重复
- 按序到达
停止等待协议
无差错情况
超时重传
确认丢失
确认迟到
4.3. TCP面向字节流
- 发送方有一个缓冲区
- 接收方也有一个缓冲区
- 无论发送方一次给TCP缓冲区传递多少字节, 对TCP本身来说, 会根据实际情况进行划分一次传递多少字节, 并不是把发送方所有字节一次传递给接收方[
和UDP不同
]
4.4. TCP流量控制
基于滑动窗口协议
4.5. TCP拥塞控制