端口号和套接字对

任何时候,多个进程可能同时使用TCP、UDP和SCTP这3种传输层协议中的任何一种。这3种协议都使用16位整数的端口号来区分这些进程。

当一个客户想要跟一个服务器联系时,它必须标识想要与之通信的这个服务器。TCP、UDP和SCTP定义了一组众所周知的端口号,用于标识众所周知的服务。

另一方面,客户通常使用短期存活的临时端口。这些端口号通常由传输层协议自动赋予客户,客户通常不关心其临时端口的具体值,而只需确信该端口在所在主机中是唯一的就行。传输协议的代码确保这种唯一性。

端口被划分为以下3段。

1)众所周知的端口为0~1023.这些端口由IANA分配和控制。可能的话,相同端口号就分配给TCP、UDP和SCTP的同一给定服务。例如,不论TCP还是UDP端口号80都被赋予Web服务器,尽管它目前的所有实现都单纯使用TCP。

2)已登记的端口为1024~49151.这些端口不受IANA控制,不过由IANA登记并提供它们的使用情况清单,以方便整个群众。可能的话,相同端口号也分配给TCP和UDP的同一给定服务。

3)49152~65535是动态的或私用的端口。IANA不管这些端口。它们就是我们所称的临时端口。

套接字对

一个TCP连接的套接字对是一个定义该连接的两个端点的四元组:本地IP地址、本地TCP端口号、外地IP地址、外地TCP端口号。套接字对唯一标识一个网络上的每个TCP连接。就SCTP而言,一个关联由一组本地IP地址、一个本地端口、一组外地IP地址、一个外地端口标识。在两个端点均非多宿这一最简单的情形下,SCTP与TCP所用的四元组套接字对一致。然而在某个关联的任何一个端点为多宿的情形下,同一关联可能需要多个

原文地址:https://www.cnblogs.com/wuchanming/p/4018779.html