网络中端口的概念

Socket端口的概念

UDP和TCP都使用了与应用层接口处的端口(port)与上层的应用进程进行通信。端口是个非常重要的概念,因为应用层的各种进程是通过相应的端口与运输实体进行交互。当运输层收到IP层交上来的数据(即TCP报文段或UDP用户数据报)时,就要根据其中首部的端口号来决定应当通过哪—个端口上交给应当接收此数据的应用进程。图8-6说明了端口在进程之间的通信中所起的作用。

用OSI的术语,图中的端口就是运输层服务访问点TSAPC可以看出,若没有端口,运输层就无法知道数据应当交付给应用层的哪一个进程。从这个意义上讲,端口是用来标识应用层的进程。由于使用了复用和分用技术,在运输层与网络层的交互中已看不见各种应用进程,而只有TCP报文段或用户数据报。IP层也使用类似的复用和分用技术,因而在网络层和链路层的交互中也只有IP数据报。上述概念在网络中是十分重要的。

无

端口在进程之间的通信中所起的作用

在运输层与应用层的接口上所设置端口是一个16 bit的地址,并用端口号进行标识。端口就是一个抽象的定位符,有时也可称为邮箱(mailbox)。端口的基本概念就是:应用层的源进程将报文发送给运输层的某个端口,而应用层的目的进程从端口接收报文。端口号只具有本地意义。即端口号只是为了标识本计算机应用层中的各进程。不同计算机中的相同端口号是没有联系的。16比的端口号可允许有64K个端口号,这个数目对一个计算机来说是足够用的。

端口号分为两类。一类是由因特网指派名字和号码公司I。ANN负责分配给—些常用的应用层程序固定使用的熟知端口(well-known port),其数值一股为0~l023,见[RFC1700]。例如,FTP用21,TELNET用23,SMTP用25,DNS用53,HTTP用80,SNMP用161,等等。“熟知”就表示这些端口号是TCP/IP体系确定并公布的,因而是所有用户进程都知道的。当一种新的应用程序出现时,必须为它指派一个熟知端口,否则其他的应用进程就无法和它进行交互。在应用层中的各种不同的服务器进程不断地检测分配给它们的熟知端口,以便发现是否某个客户进程要和和它通信。另一类则是一般端口,用来随时分配给请求通信的客户进程。

图8-8举例说明了端口的作用。设主机A使用简单邮件传送协议SMTP与主机。通信。SMTP使用而向连接的TCPC为了找到目的主机中的SMTP,主机A与主机。建立的连接要使用目的主机中的熟知端口,其端口号为25。主机A也要给自己的进程分配一个端口号,设分配的源端口号为1500。这就是主机A和主机。建立的第一连接。图中的连接画成虚线,表示这种连接不是物理连接而只是个虚连接(即逻辑连接)。

现在主机A中的另一个进程也要和主机。中的SMTP建立连接。目的端口号仍为25,但其源端口号不能与上一个连接的重复。设主机A分配的这个源端口号为1501。这是主机A和主机。建立的第二个连接。

设主机B现在也要和主机C的SMTP建立连接,端口号当然还是25。主机B选择源端口号为1500。这是和主机C建立的第三个连接。这里的源端口号与第一个连接的源端口号相同,但纯属巧合。各主机都独立地分配自已的端口号。

为了在通信时不致发生混乱,就必须把端口号和主机的IP地址结合在—起使用,在图8-8中,主机A和B虽然都使用了相同的源端口号1500.但只要查一下IP地址就可知道是哪一个主机的数据。

因此,TCP使用“连接”(而不仅仅是“端口”)作为最基本的抽象。一个连接由它的两个端点来标识。这样的端点就叫做插口(socket)或套接字。插口的概念并不复杂,但非常重要。插口包括IP地址(32 bit)和端口号(16 bit),共48 bit。插口和端口、IP地址的关系如图8-9所示。

在整个因特网中,在运输层通信的一对插口必须是惟一的。例如:对图8-8中的连接1的一对插口是:

(131.6.23.13,1500)和(130.42.85.15,25)

意思是:IP地址为131.6.23.13的主机用端口1500和IP地址为130.42.85.15的主机端口25建立了连接1,而连接2的一对插口是:

(131.6.23.13,1501和(230.42.85.15,25)

意思是:IP地址为131.6.23.13的土机用端口1501和IP地址为130.42.85.15的主机的端口25建立了连接2。

上面的例子是使用面向连接的TCP。若使用无连接的DDP,虽然在相互通信的两个进程之间没有一条虚连接,但发送端UDP一定有一个发送端口而在接收端UDP一定有—个接收端口,因而也同样可使用插口的概念。这样才能区分多个主机中同时通信的多个进程。

值得注意的是,插口这个名词很容易让人将一些概念弄混淆,因为同一个名词socket有多种不同的意思。例如:

(1)允许应用程序访问连网协议的应用编程接口API(Application Programming Interface),也就是在运输层和应用层之间的—种接口,称为socket API,并简称为socket。

(2)在socket API中使用的—个函数名也叫做socket。

(3)调用socket函数的端点称为socket,如“创建—个数据报socket”。

(4)socket函数的返回值称为socket描述符,可简称为socket。

(5)在操作系统内核中连网协议的Berkeley实现称为socket实现。

上面的这些socket的意思请大家留意。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值