端口号(port number):16位整数,用来区分不同的进程。
服务器使用的端口号:TCP和UDP定义了一组众所周知的端口(well-known port),用于标识众所周知的服务。
客户端使用的端口号:通常使用短期存活的临时端口(ephemeral port)。这些端口号通常由传输层协议自动赋予客户。客户一般不关心其临时端口的具体值,而只需确信它在所在主机中是唯一的就行。传输层协议的代码确保这种唯一性。
端口号被划分成三段:
(1)众所周知的端口为0-1023. 这些端口由IANA分配和控制。可能的话,相同的端口号就分配给TCP、UDP和SCTP的同一给定服务。例如,端口号80不论是TCP还是UDP都被赋予Web服务器,尽管目前它所有的实现都单纯使用TCP。
(2)已登记的端口(registered port)为1024-49151. 这些端口不受IANA控制,不过由IANA登记并提供它们的使用情况清单,以方便整个群体。可能的话,相同端口号也分配给TCP和UDP的同一给定服务。
(3)动态的(dynamic)或私用的(private)端口:49152-65535. IANA不管这些端口,它们就是我们所称的临时端口。(49152这个魔数是65535的四分之三。)
注意:
一个TCP连接的套接口对(socket pair)是一个定义该连接的两个端点的四元组:本地IP地址、本地TCP端口号、远地IP地址、远地TCP端口号。一个套接口对唯一标识互联网上的一个TCP连接。
就SCTP而言,一个关联由一组本地IP地址、一个本地端口、一组远地IP地址、一个远地端口标识。
标识每个端点的两个值(IP地址和端口号)通常称为一个套接口(socket)。
举例来说,应用程序通过bind函数为TCP、UDP或SCTP套接口指定本地IP地址和本地端口号。
UNIX网络编程读书笔记:端口号、套接口对和套接口,布布扣,bubuko.com
原文:http://www.cnblogs.com/nufangrensheng/p/3584343.html