-
复用 和 分用
复用:用于发送方;应用层所有的应用进程都可以通过运输层再传送到网络层
分用:用于接收方;运输层从网络层收到发送给应用进程的数据后,必须分别交付指明的各应用进程
因此需要给应用层的每个进程赋予一个标志,使得运输层得以区分它们 -
单个计算机中的进程使用
进程标识符(一个不大的整数)来标志。
但互联网中主机可能使用不同的OS,可能使用不同格式的进程标识符。若要使不同OS的计算机上的进程能进行通信,就需要使用统一的方法(与OS种类无关)来标识应用进程。 -
在运输层使用协议端口号(即
端口port)。
这种在协议栈层间的抽象的协议端口是软件端口,和路由器和交换机上的硬件端口不同。
这种软件端口是应用层各种进程与运输实体进行层 间交互的一种地址。
这种硬件端口是不同硬件设备进行交互的接口;
只要把所传送的报文交到目的主机的某个合适的目的端口,剩下的工作(即交付目的进程)就由TCP或UDP来完成。
TCP和UDP首部格式中,都由源端口和目的端口两个字段。运输层收到网络层交上来的运输层报文时,就能够根据其首部中的目的端口号把数据交付应用层的目的应用进程。 -
发送数据时,应用层的数据通过
端口向下交付运输层。
接收数据时,运输层的数据通过端口向上交付应用层的某个应用程序。 -
运输层使用一个
16位的端口号来标志一个端口。允许有 216 个端口号。
端口号只具有本地意义:只用于本计算机中应用层和运输层交互的层间接口。
不同计算机中,相同的端口号也没有关联 -
两台主机上的进程要进行通信,需要知道彼此的
ip地址(找到主机)、端口号(找到进程) -
运输层的端口号可分为两类
1、服务器使用的端口号
2、客户端使用的端口号 -
服务器使用的端口号
1、熟知端口号(系统端口号):数值为0 ~ 1023,这些端口号被指派给了TCP/IP 中最重要的一些应用程序。当一种新的应用程序出现后,IANA必须为它指派一个熟知端口,否则互联网上的其它应用进程无法和它进行通信。如 FTP 21,TELNET 23,DNS 53,HTTP 80,HTTPS 443。
2、登记端口号:1024 ~ 49151,此类端口号是给无熟知端口号的应用程序使用的,使用这类端口号要向IANA登记以防止重复,也固定下来了。 -
客户端使用的端口号(3、短暂端口号)
数值为 49152 ~ 65535,这类端口仅在客户进程运行时才动态选择(所以又叫短暂端口号,给客户进程暂时使用)
当服务器进程收到客户进程的报文时,就知道客户进程使用的端口号,因而可以把数据发送给客户进程。
通信结束后,刚才已使用过的客户端口号就不复存在了,这个端口号可以共其它客户进程使用。 -
TCP连接的端点是套接字,一个套接字只能和唯一的另一个远地套接字相连。
但是:
同一个IP地址可以有多个不同的TCP连接,同一个端口号也可以出现在多个不同的TCP连接中。
但是多个客户端同时连接到服务器上的一个端口(比如80),服务器是否会新起另一个端口进行通信?
答:
服务器不会新起端口。服务器的80端口一直负责监听客户端的请求。
如果有客户端请求,服务器始终使用相同的初始套接字来响应(不需要分配另一个服务器端口);
接着创建新的套接字(根据五元组){SRC-IP, SRC-PORT, DEST-IP, DEST-PORT, PROTOCOL};
然后创建一个线程或一个协程 通过刚才新创建的套接字来和客户端通信。所以服务器从头到尾只占用了一个80端口进行监听和通信。
5.1.3 运输层的端口
最新推荐文章于 2023-09-13 14:51:53 发布
478

被折叠的 条评论
为什么被折叠?



