文章目录
第五章 运输层
计算机网络体系结构
5.1 运输层协议
5.1.1进程之间的通信
- 从通信和信息处理的角度看,运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层。
- 当网络的边缘部分中的两个主机使用网络的核心部分的功能进行端到端的通信时,只有位于网络边缘部分的主机的协议栈才有运输层,而网络核心部分中的路由器在转发分组时都只用到下三层的功能。
(1)运输层的作用
- 从IP层来说,通信的两端是两台主机。
- 从运输层的角度看,通信的真正端点并不是主机而是主机中的进程。也就是说,端到端的通信时应用进程之间的通信。
(2)端系统之间通信的含义
- “主机A和主机B进行通信”实际上是指“运行在主机A上的某个程序和运行在主机B上的另一个程序进行通信“(
计算机之间通信
)。端到端的通信时进程之间的通信。
(3)运输层的作用
运输层为相互通信的应用进程提供了 逻辑通信
(4)网络层和运输层有明显的区别
网络层是为主机之间提供逻辑通信;运输层为应用进程之间提供端到端的逻辑通信。
(5)基于端口的复用和分用功能
复用
:是指在发送方不同的应用进程都可以使用同一个运输层协议传送数据(需要加上适当的首部)。分用
:是指接收方的运输层在剥去报文的首部后能够把这些数据正确交付目的应用进程。
(6)屏蔽作用
运输层向高层用户屏蔽了下面网络核心的细节,它使应用进程看见的就是好像在两个运输层实体之间有一条端到端的逻辑通信信道。
(7)两种不同的运输协议
TCP
:当运输层采用面向连接的TCP协议时,尽管下面的网络是不可靠的(只提供尽最大努力服务),但这种逻辑通信信道就相当于一条全双工的可靠信道。UDP
:当运输层采用无连接的UDP协议时,这种逻辑通信信道是一条不可靠信道。
5.1.2运输层的两个主要协议
TCP/IP的运输层有两个主要协议:
- 用户数据报协议UDP(user datagram protocol)
- 传输控制协议TCP(transmission control protocol)
(1)TCP与UDP
运输协议数据单元TPDU
:两个对等运输实体在通信时传送的数据单元。- TCP传送的数据单位协议是TCP报文段
- UDP传送的数据单位协议是UDP报文或用户数据报。
(2)使用UDP和TCP的典型应用和应用层协议
- 运输层的UDP用户数据报与网际层的IP数据报有很大区别
- IP数据报要经过互连网中许多路由器的存储转发
- UDP用户数据报是在运输层的端到端抽象的逻辑信道中传送的。
- TCP报文段是在运输层抽象的端到端逻辑信道中传送,这种信道是可靠的全双工信道。但这样的信道却不知道究竟经过了哪些路由器,而这些路由器也根本不知道上面的运输层是否建立了TCP连接。
5.1.3 运输层的端口
- 运行在计算机中的进程是用
进程标识符
来标志的。为了使运行不同操作系统的计算机的应用进程能够互相通信,就必须用统一的方法对TCP/IP体系的应用进程进行标志。
(1)端口号(protocol port number)
A、问题
由于进程的创建和撤销都是动态的,发送方几乎无法识别其他机器上的进程。有时我们会改换接收报文的进程,但并不需要通知所有发送方。我们往往需要利用目的主机提供的功能来识别终点,而不需要知道实现这个功能的进程。
B、解决问题的方法
在运输层使用协议端口号。简称为端口。
我们可以把端口想象成通信的终点,因为我们只要把要传送的报文交到目的主机的某一个合适的目的端口,剩下的工作(即最后交付目的进程)就由TCP来完成。
C、软件端口和硬件端口
软件端口
:在协议栈层间的抽象的协议端口硬件端口
:路由器或交换机上的端口
硬件端口是不同硬件设备进行交互的接口,而软件端口是应用层的各种协议进程与运输实体进行层间交互的一种地址。
(2)TCP/IP运输层端口
- TCP/IP的运输层用一个16位端口号来标志一个端口。允许有65535个不同的端口号。
- 端口号只具有本地意义,即端口号只是为了标志本计算机应用层中的各进程。
两个计算机中的进程要互相通信,不仅必须知道对方的端口号(为了找到对方计算机中的应用进程),而且还要知道对方的IP地址(为了找到对方的计算机)。
(3)两大类端口
服务器端使用的端口
- 熟知端口,数值一般为0-1023
- 登记端口号,数值为1024-49151,为没有熟知端口号的应用程序使用的。
客户端使用的端口号
- 又称为短暂端口号,数值为49152-65535,留给客户进程短暂时使用。
5.2.1UDP概述
- UDP只在IP的数据报服务之上增加了很少的一点功能:
- 复用和分用的功能
- 差错检测的功能
(1)UDP的主要特点
UDP是无连接的
。发送数据之前不需要建立连接,因此减小了开销和发送数据之前的时延。UDP使用尽最大努力交付
,即不保证可靠交付,因此主机不需要维持复杂的连接状态表。UDP是面向报文的
。UDP对应用层交下来的报文,即不合并,也不拆分,而是保留这些报文的边界。UDP一次交付一个完整的报文。UDP没有拥塞控制
,因此网络出现的拥塞不会使主机的发送速率降低。这对某些实时应用时很重要的。很适合多媒体通信的要求。UDP支持一对一,一对多,多对一和多对多的交互通信
UDP的首部开销小
,只有8个字节,比TCP的20个字节的首部要短。
(2)面向报文的UDP
- 发送方UDP对应用程序交下来的报文,在添加首部后就向下交付IP层。UDP对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。
- 应用层交给UDP多长的报文,UDP就照样发送,即一次发送一个报文。
- 接收方UDP对IP层交上来的UDP用户数据报,在去除首部后就原封不动地交付上层的应用进程,一次交付一个完整的报文。
- 应用程序必须选择合适大小的报文。
- 若报文太长,UDP把它交给IP层后,IP层在传送时可能要进行分片,这会降低IP层的效率。
- 若报文太短,UDP把它交给IP层后,会使IP数据报的首部的相对长度太大,这也降低了IP层的效率。
5.2.2UDP的首部格式
用户数据报UDP有两个字段:数据字段和首部字段。
首部字段有8个字节,由4个字段组成,每个字段都是2个字节。
5.3 传输控制协议TCP概述
5.3.1 TCP最主要的特点
- TCP是面向连接的运输层协议,在无连接的、不可靠的IP网络服务基础之上可靠交付的服务。为此,在IP的数据服务基础之上,增加了保证可靠性的一系列措施。
- 每一条TCP连接只能有两个端点,每一条TCP连接只能是对点的(一对一)
- TCP提供可靠交付的服务,提供全双工通信。
- 面向字节流
- TCP中的“流”(stream)指的是流入或流出进程的字节序列。
- “面向字节流”的含义是:虽然应用程序和TCP的交互式一次一个数据块,但TCP把应用程序交下来的数据看成仅仅是一连串无结构的字节。
(1)TCP面向流的概念
- TCP不保证接收方应用程序所收到的数据块和发送方应用程序所发出的数据块具有对应大小的关系。
- 但接收方应用程序收到的字节流必须和发送方应用程序发出的字节流完全一样。
注意:
- TCP连接是一条虚连接而不是一条真正的物理连接
- TCP对应用进程一次把多长的报文发送到TCP的缓存中是不关心的。
- TCP根据对方给出的窗口值和当前网络拥塞的程度来决定一个报文段应包含多少个(UDP发送的报文长度是应用进程给出的&