传输层
概述
- 功能
完成主机进程-主机进程之间的报文传输 - 地位
位于网络体系结构的中间, 作为数据通信和数据处理的分水岭, 具有承上启下的作用 - 传输层要彻底解决网络通信问题, 使得应用层不必关心通信问题
- 端对端的通信
传输层协议在端主机上运行,路由器一般没有传输层
传输层从主机层面上对网络层采取相应补救措施,可以提供更高质量的数据传输能力
传输层独立于网络设备,可以提供标准的传输服务接口(原语)
传输层协议机制
传输协议数据单元
传输协议数据单元(TPDU) 是传输层的最小数据传输单位, 又称为“报文段”
TPDU类型
- CR:连接请求
- CC:连接确认, 对CR TPDU的确认
- DR:断连请求
- DC: 断连确认, 对DR TPDU的确认
- DT:数据(高层数据)
- AK:数据确认, 对DT TPDU的确认
- REJ:拒绝接受请求, 或拒绝接受DT TPDU
传输地址
- 传输地址唯一地标识主机进程
- 传输地址=网络号+主机号+端口号, 端口号即传输服务访问点(TSAP), 用来标识应用进程;在IP网络, 传输地址= IP地址+端口号
建立连接(三次握手)
建立传输连接过程比较复杂, 双方需进行反复协商, 通常采用“三次握手” , 其原因是:
- 传输服务质量等参数进行多次协商, 有助于提高连接成功率
- 网络层服务不可靠(如IP协议), “两次握手” 可能导致连接失败
建立传输连接过程
- 发起方发出建立连接请求CR TPDU, 提出相关服务质量要求及其它参数与对方协商,包括吞吐量、TPDU的大小等
- 接收方收到连接请求CR TPDU后
若同意(或适当修改协商参数) , 返回连接确认CC TPDU
若不同意, 则返回断连请求DR TPDU, 并附带原因参数 - 发送方收到连接确认CC TPDU后
发送第一个数据TPDU(DT TPDU) 确认连接建立;
发送REJ TPDU拒绝连接。
释放连接(四次挥手)
由于TCP连接是全双工的,因此每个方向都必须单独进行关闭。这个原则是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向的连接。收到一个 FIN只意味着这一方向上没有数据流动,一个TCP连接在收到一个FIN后仍能发送数据。首先进行关闭的一方将执行主动关闭,而另一方执行被动关闭。
(1)客户端A发送一个FIN,用来关闭客户A到服务器B的数据传送。
(2)服务器B收到这个FIN,它发回一个ACK,确认序号为收到的序号加1。和SYN一样,一个FIN将占用一个序号。
(3)服务器B关闭与客户端A的连接,发送一个FIN给客户端A。
(4)客户端A发回ACK报文确认,并将确认序号设置为收到序号加1。