概念
- **运输层协议为运行在不同主机上的应用进程提供了逻辑通信的功能。**从应用程序的角度来看,通过逻辑通信,运行不同进程的主机好像直接相连在一起。
- 运输层协议是在端系统而不是在网络路由器中实现的。
- 运输层为主机上的应用程序提供直接的通信服务,接受网络层提供的服务。
运输层
运输层和网络层的关系
**运输层为运行在不同主机上的进程提供了逻辑通信,而网络层提供了主机之间的逻辑通信。**从应用程序的角度来看,通过逻辑通信,运行不同进程的主机好像直接相连在一起。
**运输层协议是在端系统而不是在网络路由器中实现的。运输层协议只工作在端系统,中间路由器和交换机既不处理也不识别运输层加在应用层的任何报文。**运输层协议将来自应用进程的报文划分成报文段,封装后交付网络层,或者将网络层的报文段,重新装配成报文交给应用层的应用进程。但是,对于这些报文在网络中怎么移动的不做任何规定。
运输层和网络层概述
网络层协议有一个名字叫IP,网际协议。IP为主机之间提供了逻辑通信,IP的服务模型是尽力而为交付服务。它不能保证报文段的交付,顺序和完整性,所以被称为不可靠服务。
TCP/IP网络为应用层提供了两种运输层协议TCP和UDP:
UDP为调用它的应用程序提供了不可靠的无连接的服务;
TCP为调用它的应用程序提供了可靠的面向链接的服务。
UDP和TCP的最基本任务是将两个端系统之间IP的交互服务扩展为运行在两个端系统上的进程之间的交付服务。**进程间数据交付和差错检查是两种最低限度的运输层服务,也是UDP能提供的仅有的两种服务。**UDP也是一种不可靠的服务。UDP和TCP还可以在报文段的首部上添加差错检测字段而提供完整性检查。TCP为应用程序提供了几种附加服务:提供可靠数据传输,和拥塞控制。
多路复用和多路分解
- 进程有一个或者多个socket,它是网络和进程之间交互的通道。将运输层报文段中的数据交付到正确的套接字的过程叫做多路分解;从源主机的不同套接字中手机数据块,封上首部信息生成报文段,将报文段传输到网络层的过程叫做多路复用。
多路复用和多路分解将主机到主机之间的交互服务扩展为运行在两个主机上的进程之间的交付服务。 - socket,套接字是应用程序进程和运输层协议之间的应用程序编程接口。套接字在应用层有一部分,在传输层也有一部分,应用程序开发者可以控制套接字在应用层的所有东西,但是对于套接字在传输层的东西几乎没有控制。
- 一个UDP套接字由一个包含目的IP地址和目的端口号的IP地址的二元组进行标识的,一个TCP套接口由源IP地址,源端口号,目的IP地址,目的端口号的四元组进行标识。
- UDP和TCP报文中都有源端口号和目的端口号,接收端从报文段中提取源端口号作为回传的目的端口号。
UDP
UDP相对于TCP的优势:
- 应用层能更好的控制要发送的数据和发送时间。
- 无需连接建立。
- 无连接状态。
- 分组首部开销小。TCP报文段有20字节的首部开销,而UDP只有8字节的开销。
UDP报文段结构
UDP报文段的首部共8个字节,64位,每个字段8位,共4个字段,:
- 16位源端口号,16位目的端口号
- 16位长度字段,16位检验和
长度字段包含了首部在内的UDP报文段的长度(以字节为单位)。
检验和提供了差错检测功能,但是不能进行差错恢复。
可靠数据传输的原理
TCP
TCP报文段由首部字段和一个数据字段组成。
- 16位源端口号,16位目的端口号;
- 32位序号;
- 32位确认号;
- 4位首部长度字段,6位标志地钻,16位接收窗口;
- 16位互联网校验和,16位紧急数据指针。
参考文献
1.《计算机网络自顶向下》