计算机网络——传输层 解决如何通信?
1.传输层概述
2.UDP协议概述
- UDP(User Datagram Protocol):用户数据报协议
- UDP是一个非常简单的协议
2.1.UDP协议头部
2.2.UDP协议特点
- UDP是无连接的协议。不需要提前建立连接
- UDP不能保证可靠的交付数据,无法保证数据是否丢失
- UDP是面向报文传输的
- UDP没有拥塞控制
- UDP的首部开销很小
3.TCP协议详解
- TCP(Transmission Control Protocol):传输控制协议
- TCP协议是网络中非常复杂的一个协议
3.1TCP协议特点
- TCP是面向连接的协议
- TCP的一个连接有两端(点对点通信)
- TCP提供可靠的传输服务
- TCP协议提供全双工的通信
- TCP是面向字节流的协议
3.2.TCP协议首部
16源端口、16位目的端口:地址
头部固定:20字节
序号:
- 0~2^ 32 - 1
- 一个字节一个序号
- 数据首字节序号
确认号: - 0~2^ 32 - 1
- 一个字节一个序号
- 期待收到数据的首字节序号
数据偏移:
占4位:0~15,单位为:32位字节
数据偏离首部的距离 TCP标记:
占6位,每位各有不同的意义 窗口:
占16位:0~2^ 16 - 1
窗口指明允许对方发送的数据量
确认号:501, 窗口:1000, 从501到1500的数据都可以被接收
校验和
紧急指针:
- ? 紧急数据(URG = 1)
- ? 指定紧急数据在报文的位置
TCP选项:
? 最多40字节
? 支持协议未来的拓展
3.3.可靠传输的基本原理
3.3.1停止等待协议
停止等待协议是最简单的可靠传输协议
停止等待协议对信道的利用效率不高
3.3.2.连续ARQ协议
ARQ:自动重传请求 累计确认前的都已经确认了。
3.4.TCP协议的可靠传输
- TCP的可靠传输基于连续ARQ协议
- TCP的滑动窗口以字节位单位
可靠传输的效率不高
选择重传:重传的是数据的边界
- 选择重传需要指定需要重传的字节
- 每一个字节都有唯一的32位序号
3.5.TCP协议的流量控制
- 流量控制指让发送方发送速率不要太快
- 流量控制是使用滑动窗口来实现的
发送方和接收方会一直等待,这时使用坚持定时器。
3.6.TCP协议的拥塞控制
- 流量控制考虑点对点的通信量的控制
- 拥塞控制考虑整个网络,是全局性的考虑
- 报文超时则认为是拥塞
3.6.1.慢启动算法
- 由小到大逐渐增加发送数据量
- 每收到一个报文确认,增大一倍
1 2 4 8 16 指数增长 达到慢启动阈值16,启动拥塞避免算法
3.6.2.拥塞避免算法
- 维护一个拥塞窗口的变量。
- 只要网络不拥塞,就试探着拥塞窗口调大, 每次加1
1 2 4 8 16 慢启动阈值16
? 17 18 19
3.7.TCP连接的建立----三次握手
TCP标记: 为什么发送方要发出第三个确认报文呢?(三次握手)
? 防止已经失效的连接请求报文传送到对方,引起错误。
3.8.TCP的释放-----4次挥手
等待计时器:等待2MSL,MSL(最长报文段寿命)
MSL建议设置为2分钟。
为什么需要等待2MSL?
- 确保发送方的ACK可以到达接收方,
- 一个报文没有确认
- MSL是报文最长寿命
- 2MSL时间内没有收到,则接收方会重发
- 确保当前连接的所有报文都已经过期
3.9套接字与套接字编程
- 使用端口(Port)来标记不同的网络进程
- 端口(Port)使用16比特位表示(0~65535)
{IP:Port}. ===>套接字(Socket)
- 套接字(Socket)是抽象概念,表示TCP连接的一端
- 通过套接字可以进行数据发送或接受
TCP由两个套接字组成
|