概述和运输层服务
运输层解决的问题是,数据传输的问题。数据传输分为不可靠传输和可靠数据传输,分别对应的是UDP协议和TCP协议。
- 运输层和网络层的关系
- 在发送端,运输层将从发送应用程序接收到的报文(应用层报文)转换成报文段,随后将这些报文段传递给网络层,网络层将其封装为网络层分组(即数据报),并向目的地发送;
- 在接收端,网络层从数据报中提取运输层报文段,并将该报文段上交给运输层,运输层则处理接收到的报文段,使该报文段中的数据为接收应用程序使用;
- 运输层协议只工作在端系统中
- 网络层IP协议为不可靠服务,其服务模型是尽力而为交付服务(best-effort delivery service),这意味着它不确保报文段的交付、不保证报文段的按序交付、不保证报文段中数据的完整性。
- 因特网运输层概述
- Internet运输层上提供TCP(传输控制协议) 和 UDP(用户数据报协议)两种。
- 多路复用和多路分解
- 无连接的多路复用和多路分解
- 在运输层,无连接的网络传输是通过UDP来实现的,一个UDP套接字是由一个含有目的IP地址和目的端口号的一个二元组来全面标识的。
- 主机收到UDP段后检查段中的目的端口号,并将UDP段导向绑定在该端口号的Socket,因此如果两个UDP报文段有不同的源IP地址/端口号,却有相同的目的端口号,那么两个报文段将通过相同的目的套接字被定向到相同的目的进程。
- 面向连接的多路复用与多路分解
- 在运输层中面向连接的网络传输多使用TCP,而TCP套接字和UDP套接字之间有一个细微的差别,TCP套接字是由一个四元组(源IP地址、源端口号,目的IP地址,目的端口号)来标识的。当一个TCP报文段从网络到达一台主机时,主机会使用全部4个值来将报文段定向,即多路分解到相应的套接字。
- 与UDP不同的是,两个具有不同源IP或源端口号的到达的TCP报文段将被重定向到两个不同的套接字。
- Web服务器与TCP
- 当今的高性能Web服务器通常只使用一个进程,但是为每个新的客户连接创建一个具有新连接套接字的新线程。
- 无连接运输:UDP
- UDP报文段结构
- UDP检验和
- 作用
- 提供了差错检查功能
- 用于确定当UDP报文段从源到达目的地移动时,其中的比特是否发生了变化(例如,可能由于链路中的噪声干扰或者存储在路由器中时引入问题)
- 原理
- 反码(complement):发送方的UDP对报文段中的所有16bit字的和进行反码运算,就是将所有的0换成1,所有的1换成0;接收端计算校验和但不做反码,将结果与发送方校验码相加,如果得到的结果为16个1,那么说明该分组中没有引入差错。
- 回卷(wrap around):遇到最高位进位的时候,就将溢出的那一位与低16位相加。
- UDP 的几个优点
- 对于发送什么数据和何时发送数据有更为精细的控制。TCP 因为有拥塞控制使得 TCP 发送速率不能得到保证,而 UDP 没有这种限制
- 无须事先建立连接。TCP 在发送数据前必须经过 3 次握手,这就引入了非常大的时延
- 无连接状态。UDP 不需要额外的内存以保存缓存、拥塞控制参数等数据,因此服务器可以有更多的 UDP 连接
- 分组的首部开销更小。UDP 的首部只有 8 个字节,而 TCP 有 20 个字节。
- 可靠数据传输原理
- 构造可靠数据传输协议
- 经完全可靠信道的可靠数据传输:rdt1.0
- 经具有比特差错信道的可靠数据传输:rdt2.0
- 经具有比特差错的丢包信道的可靠数据传输:rdt3.0
- 流水线可靠数据传输协议
- 回退N步
- 选择重传
- 面向连接的运输:TCP
- TCP连接建立三次握手:
- 客户端的TCP会向服务端的TCP发送一个报文,该报文有一个标志位SYN被置为1,客户端还会随机选择一个初始序号client_isn然后发送给服务端TCP
- 服务端TCP收到客户端的报文后,会为客户端TCP分配缓存和变量,同时也会发送一个报文给客户端,其中有SYN=1,并加clenet_isn+1处理,服务端也会发送一个自己的初始序号server_isn(有一种典型的SYN泛洪攻击就是利用这个一步骤会分配变量和缓存,导致系统崩溃)
- 客户端收到服务端的报文后,也会为服务端TCP分配缓存和变量,然后再次发送一个报文给服务端TCP,该报文中,将SYN=0,把server_isn+1处理。
- 关闭TCP连接:
- 客户端会向 服务端 发送一个报文,该报文中有个标志为FIN=1,服务端收到会发送一个报文给客户端,该报文中也有一个标识位FIN=1;等客户端收到报文后确认了FIN标识位,就是释放。
- TCP报文段结构
- 往返时间的估计与超时
- 可靠数据传输
- 流量控制
- TCP连接管理
- 拥塞控制原理
- 拥塞原因与代价
- 拥塞控制方法
- 网络辅助的拥塞控制例子:ATM ABR拥塞控制
- TCP拥塞控制
- 慢启动
- 拥塞避免
- 快速恢复
- TCP拥塞控制:回顾
- 对TCP吞吐量的宏观描述
- 经高带宽路径的TCP