运输层
运输层是TCP/IP体系结构中一个关键的组成部分,它位于网络层和应用层之间,负责为两个主机之间提供端到端的通信服务。运输层的主要任务是处理与数据包的传输和接收相关的各种功能,以确保数据在源主机和目标主机之间可靠、有效地传输。
主要功能
-
分段与重组:当应用程序生成的数据包太大,无法在一个网络层数据报中发送时,运输层会将其分割成多个较小的片段(对于TCP)并在接收端重新组合。
-
流量控制:通过调整发送方的发送速率来防止接收方缓冲区溢出。这通常通过滑动窗口机制来实现。
-
差错控制:检测并处理在传输过程中可能出现的错误。TCP使用确认/重传机制来确保数据的可靠传输。
-
多路复用与分解:运输层允许一个主机上的多个应用程序同时与另一个主机上的多个应用程序进行通信。这通过为每个应用程序分配唯一的端口号来实现。
-
连接管理:对于面向连接的协议(如TCP),运输层需要管理连接的建立、维护和终止。
主要协议
-
TCP
:传输控制协议,提供面向连接的、可靠的、基于字节流的传输服务。它使用三次握手来建立连接,并通过确认/重传机制来处理错误。-
面向连接:在数据传输之前,需要先建立连接。就像打电话一样,在通话之前需要先拨号建立连接,通话结束后再挂断连接。
-
可靠传输:通过确认、重传、流量控制等机制,确保数据准确无误地传输。如果在传输过程中出现数据丢失、错误等情况,TCP 会自动进行重传,直到数据被正确接收。
-
适用于对数据可靠性要求较高的应用,如文件传输、电子邮件等。
-
-
UDP
:用户数据报协议,提供无连接的、不可靠的、基于数据报的传输服务。它通常用于那些对实时性要求较高,但对数据可靠性要求不高的应用程序。-
无连接:不需要事先建立连接,直接发送数据。就像寄明信片一样,不需要事先和收件人联系,直接将明信片投入邮筒即可。
-
不可靠传输:不保证数据一定能够到达目的地,也不进行重传等操作。
-
适用于对实时性要求较高、对数据可靠性要求相对较低的应用,如视频会议、在线游戏、流媒体、DNS查询等。
-
端口号
运输层使用端口号来区分同一主机上的不同应用程序。每个应用程序都被分配一个唯一的端口号(0-65535),其中0-1023是知名端口号,通常用于系统或服务。
-
熟知端口号:范围为 0 到 1023,这些端口号被分配给一些常用的应用程序,如
HTTP
协议使用端口号 80,FTP
协议使用端口号 21 等。 -
登记端口号:范围为 1024 到 49151,这些端口号通常被一些不太常用的应用程序使用,需要在
IANA
(互联网数字分配机构)进行登记。 -
客户端口号:范围为 49152 到 65535,这些端口号通常由客户端程序随机选择,用于临时与服务器进行通信。
进程间基于网络的通信
网络层的作用范围是主机到主机,提供主机之间的逻辑通信,然而在网络>计算机网络中实际进行通信的真正实体,是位于通信两端主机中的进程。
端到端的通信服务
运输层位于网络层之上,它的任务是为运行在不同主机上的应用进程(使用端口号)提供直接的逻辑通信服务。网络层实现的是主机到主机的通信,而运输层则将这种通信延伸到了应用程序之间,即端到端的通信。
可以把网络层类比为邮政系统中的运输网络,它负责将信件从一个城市运送到另一个城市;而运输层则像是具体的收件人和发件人之间的通信渠道,确保信件准确无误地从发件人的手中传递到收件人的手中。
运输层协议又称为端到端协议。
复用和分用
-
复用:指多个应用层进程可以同时使用下面运输层的服务。不同的应用程序可以通过不同的端口号来区分,运输层可以同时接收来自多个应用程序的数据,并将它们封装在不同的运输层报文段中进行传输。
-
分用:指运输层把收到的信息分别交付给上面应用层中相应的进程。当运输层接收到数据后,根据报文段中的端口号,将数据准确地交付给对应的应用程序。
网络的通信.png]]" />
可以简单地认为,运输层直接为应用进程间的逻辑通信提供服务,好像是沿水平方向传送数据,但事实上通信双方的运输层之间,并没有一条水平方向的物理连接。要传送的数据是沿着图中上下多次的虚线方向传送的。
网络的通信.png]]" />
-
AP1
、AP2
等代表不同的应用程序接口 -
应用层与运输层之间的“端口”并不是看得见、摸得着的物理端口,而是用来区分不同应用进程的标识符。
运输层向应用层实体屏蔽了下面网络核心的细节(例如网络拓扑、所采用的路由选择协议等),它使应用进程看见的就好像是在两个运输层实体之间有一条端到端的逻辑通信信道。