一、进程间的通信
通信的两端应当是两个主机中的应用进程,也就是说,端到端的通信是应用进程之间的通信
运输层有一个很重要的功能就是复用和分用,复用是指在发送方不同的应用进程都可以使用同一个运输层协议传送数据,分用是指接收方的运输层在剥去报文的首部后能够把这些数据正确交付给目的应用进程。
从上图可以知道,网络层为主机之间的通信提供服务,而运输层则在网络层的基础上,为应用进程之间的通信提供服务。
除此之外,运输层向高层用户屏蔽了下面网络的核心的细节,它使应用进程看见的就是好像在两个运输层实体之间有一条端到端的逻辑通信信道,而当采用TCP协议时,这条信道是全双工的可靠信道,但是当采取UDP协议时,这条信道是一条不可靠信道。
二、运输层的两个主要协议
1、用户数据报协议UDP(User Datagram Protocol)
UDP协议在传输数据之前不需要先建立连接。远地主机的运输层在收到UDP报文后不需要给出任何的确认。虽然UDP不提供可靠的交付,但是UDP非常简单
2、传输控制协议TCP(Transmission Control Protocol)
TCP则提供面向连接的服务。在传输数据之前必须先建立连接,数据传送结束后要释放连接。TCP不提供广播或者多播服务。
三、运输层的端口
1、端口的定义
在单个计算机中的进程是用进程标识符来标志的。但是由于计算机的操作系统的种类很多,而不同的操作系统又使用不同格式的进程标识符。为了使不同操作系统之间的进程可以进行通信,就不许采取一种统一的且与特定的操作系统无关的方法来对TCP/IP体系的应用进程来进行标志。
我们把这些门设置为通信的抽象终点,被命名为协议端口(protocol port)。TCP/IP的运输层用一个16位端口号来标志一个端口。但是请注意端口号只具有本地意义,不同的计算机中相同的端口号是没有关联的。
2、端口的分类
(1)服务器使用的端口号
一类是熟知端口号或者全球通用端口号,数值位0~1023;另一类是登记端口号,数值为1024~49151。
(2)客户端使用的端口号
数值为49152~65535。这类端口仅在客户端运行时才动态显示。通信结束之后,刚才已使用过的客户端口号就会被系统收回,以便给其他的客户进程使用。
四、实例分析
工程代码见
https://github.com/daviddou2023/page
demo网页见
https://daviddou2023.github.io/page