1、端口(port)
在TCP/IP协议中为标识不同的应用,给各个分组赋予称作端口的代码。在端口域中对不同的应用使用不同的值,传输层协议可以利用该端口号来决定应由哪个应用程序来接收分组的数据。由此可见,端口号的作用与IP的下一个头标域相似。当IP区分传输协议时利用下一个头标,而传输协议区分应用协议时要用端口号。
有两种方法用来选取端口号。这两种方法是指应用在一个会话中所起的两种作用,即客户和服务器。客户主动发送请求信息来开始会话,服务器只是对客户发来的请求报文进行应答。
当客户的应用程序需要发送请求报文时,必须知道将该请求报文发往服务器的方法。也就是说,客户的应用程序应预先知道对于特定的应用所使用的端口号。另一方面,服务器即使不知道在该应答报文中使用的端口号也无妨,因为当服务器收到报文时,只要查看请求报文就能知道客户使用了哪个端口,于是,服务器就可向该端口回送报文。
为特定的应用预先定义的端口称作已知端口。表1示出了利用UDP/TCP协议时主要应用的一些端口号。
2、套接口(socket)
TCP为了标识各个连接,引入套接口的概念。套接口(socket)由IP地址和端口(port)组成。IP地址标识一个系统,端口号则用来区分该系统内的各个应用。TCP利用套接口来标识连接的端点。因此,用套接口可以惟一的标识一个连接。
端口只不过决定了应用协议,换句话说,端口并不提供区分在计算机上实际运行的应用程序的功能。然而,一旦将端口号和网络地址组合,就可用来区分应用程序。这种组合称作套接口(socket)。
图1示出了某计算机网上的两个不同的会话。图中,上方的工作站和下方的两个工作站交换管理信息,这两个会话共使用了4个套接口。套接口1和套接口2形成了左方和上方工作站间的会话;套接口3和套接口4形成了右方和上方工作站间的会话。如该例所示,不同的套接口其端口号和网络地址可以完全相同。例如,套接口2和套接口3可以具有相同的网络地址(上方工作站的网络地址)和相同的端口号(管理业务量的端口号)。
图1:套接口定义了会话的端点