传输层
第五章 传输层
1. 传输层概述
1.1 功能
- 传输层提供进程和进程之间的逻辑通信。
- 复用和分用
- 传输层对收到的报文进行差错检测。
- 传输层的两种协议。
1.2 复用和分用
- 传输层的复用和分用
- 复用:发送方不同的应用进程都可使用同一个传输层协议传送数据
- 分用:接收方的传输层在剥去首部后把数据交付给相应的协议
- 网络层的复用和分用
- 复用:发送方不同的数据都可以封装成IP数据报发送出去
- 分用:接收方的网络层在剥去首部后把数据交付给相应的协议
1.3 端口划分
- 端口号长度为16bit,能表示65536个不同的端口号。
1.4 套接字
- 套接字唯一标识了网络中的一个主机和它上面的一个进程
- 套接字Socket=(主机IP地址,端口号)
2. UDP
2.1 UDP概述
- UDP只在IP数据报服务之上增加了很少功能,即复用分用和差错检测功能。
- 特点:
- UDP是无连接的,减少开销和发送数据之前的时延。
- UDP使用最大努力交付,即不保证可靠交付。
- UDP是面向报文的,适合一次性传输少量数据的网络应用。
- UDP无拥塞控制,适合很多实时应用。
- UDP首部开销小,8B,TCP 20B
2.2 UDP首部格式
- 分用时,找不到对应的目的端口号,就丢弃报文,并给发送方发送ICMP“端口不可达”差错报告报文。
2.3 UDP校验
- 伪首部只有在计算检验和时才出现, 不向下传送也不向上递交
- 17:封装UDP报文的IP数据报首部协议字段是17
- UDP长度:UDP首部8B + 数据部分长度(不包括伪首部)
3. TCP
3.1 TCP概述
- TCP特点:
TCP是面向连接(虚连接)的传输层协议。打call
每一条TCP连接只能有两个端点,每一条TCP连接只能是点对点的。
TCP提供可靠交付的服务,无差错、不丢失、不重复、按序到达。(可靠有序,不丢不重)
TCP提供全双工通信
TCP面向字节流
3.2 TCP 首部格式
- 序号:在一个TCP连接中传送的字节流中 的每一个字节都按顺序编号,本字段表 示本报文段所发送数据的第一个字节的序号
- 确认号:期望收到对方下一个报文段的 第一个数据字节的序号。若确认号为N, 则证明到序号N-1为止的所有数据都已正 确收到。
- 数据偏移(首部长度):TCP报文段的 数据起始处距离TCP报文段的起始处有多 远,以4B位单位,即1个数值是4B。
- 紧急位URG:URG=1时,标明此报文段 中有紧急数据,是高优先级的数据,应 尽快传送,不用在缓存里排队,配合紧 急指针字段使用
- 确认位ACK:ACK=1时确认号有效,在连 接建立后所有传送的报文段都必须把 ACK置为1。
- 推送位PSH:PSH=1时,接收方尽快交付 接收应用进程,不再等到缓存填满再向 上交付。
- 复位RST:RST=1时,表明TCP连接中出现 严重差错,必须释放连接,然后再重新 建立传输链接。
- 同步位SYN:SYN=1时,表明是一个连接 请求/连接接受报文。
- 终止位FIN:FIN=1时,表明此报文段发 送方数据已发完,要求释放连接。
- 窗口:指的是发送本报文段的一方的 接收窗口,即现在允许对方发送的数据量。
- 检验和:检验首部+数据,检验时要加 上12B伪首部,第四个字段为6。
- 紧急指针:URG=1时才有意义,指出 本报文段中紧急数据的字节数
- 选项:最大报文段长度MSS、窗口扩 大、时间戳、选择确认…
3.3 TCP 连接管理
3.3.1 连接建立(三次握手)
3.3.2 连接释放(四次挥手)
3.4 TCP可靠传输
- 传输层:使用TCP实现可靠传输
- 网络层:提供尽最大努力交付,不可靠传输
- TCP实现可靠重传机制:1. 校验、2. 序号、3. 确认、 4. 重传
- 与UDP校验一样,增加伪首部
- 一个字节占一个序号,序号字段指的是一个报文段的第一个字节的序号
- TCP默认使用累计确认。
- TCP的发送方在规定的时间内没有收到确认就要重传已发送的报文段。超时重传
- 重传时间:TCP采用自适应算法,动态改变重传时间RTTs(加权平均往返时间)。
- 快重传:发送方收到3个对于报文段1的冗余ACK 认为报文段丢失,重传报文段
3.5 流量控制
- TCP利用滑动窗口机制实现流量控制
- 接收窗口rwnd:根据接受缓存设置的值,并告知给发送方,反映接收方容量。
- 拥塞窗口cwnd: 发送方根据自己估算的网络拥塞程度而设置的窗口值,反映网络当前容量。
- 发送窗口 = Min{接收窗口rwnd,拥塞窗口cwnd}
- TCP为每一个连接设有一个持续计时器,只要TCP连接的一方收到对方的零窗口通知,就启动持续计时器。
- 若持续计时器设置的时间到期, 就发送一个零窗口探测报文段。 接收方收到探测报文段时给出 现在的窗口值。
- 若窗口仍然是0,那么发送方就 重新设置持续计时器。
3.6 拥塞控制
- 出现拥塞的条件:对资源需求的总和 > 可用资源
- 拥塞控制:防止过多的数据注入到网络中。
3.6.1 慢开始和拥塞避免
- 一个传输轮次: 发送了一批报文段并收到它们的确认的时间。
- 一个往返时延RTT。 开始发送一批拥塞窗口内的报文段到开始发送下一批拥塞窗口内的报文段的时间
3.6.2 快重传和拥塞恢复
[[计网-第六章(应用层)]]