在网络技术中,端口(Port)有好几种意思。集线器、交换机、路由器的端口指的是连接其他网络设备的接口,如RJ-45端口、Serial端口等。我们 这里所指的端口不是指物理意义上的端口,而是特指TCP/IP协议中的端口,是逻 辑意义上的端口。
那么TCP/IP协议中的端口指的是什么呢?如果把IP地址比作一间房子 ,端口就是出入这间房子的门。真正的房子只有几个门,但是一个IP地址的端口 可以有65536(即:256×256)个之多!端口是通过端口号来标记的,端口号只有整数,范围是从0 到65535(256×256)。
在Internet上,各主机间通过TCP/IP协议发送和接收数据包,各个数据包根据其目的主机的ip地址来进行互联网络中的路由选择。可见,把数据包顺利的传送到目的主机是没有问题的。问题出在哪里呢我们知道大多数 *** 作系统都支持多程序(进程)同时运行,那么目的主机应该把接收到的数据包传送给众多同时运行的进程中的哪一个呢?显然这个问题有待解决,端口机制便由此被引入进来。
本地 *** 作系统会给那些有需求的进程分配协议端口(protocal port,即我们常说的端口),每个协议端口由一个正整数标识,如:80,139,445,等等。当目的主机接收到数据包后,将根据报文首部的目的端口号,把数据发送到相应端口,而与此端口相对应的那个进程将会领取数据并等待下一组数据的到来。说到这里,端口的概念似乎仍然抽象,那么继续跟我来,别走开。
端口其实就是队, *** 作系统为各个进程分配了不同的队,数据包按照目的端口被推入相应的队中,等待被进程取用,在极特殊的情况下,这个队也是有可能溢出的,不过 *** 作系统允许各进程指定和调整自己的队的大小。
不光接受数据包的进程需要开启它自己的端口,发送数据包的进程也需要开启端口,这样,数据包中将会标识有源端口,以便接受方能顺利的回传数据包到这个端口。
按端口号可分为3大类:
(1)公认端口(WellKnownPorts):从0到1023,它们紧密绑定(binding)于一些服务。通常这些端口的通讯明确表明了某种服务的协议。例如:80端口实际上总是>服务端的端口是固定的,客户端的端口是随机的。
比如百度知道这个网站,它公布域名是zhidaobaiducom,端口是TCP80,这个就不可以随便变更。如果经常变,你今天问的问题,明天想看答案发现域名不对,或者端口不对,你就打不开百度知道,答案就找不到了。
客户端端口是随机的,我去访问百度知道的80,系统为浏览器分配了个端口1024。过一会重开电脑,我访问了新浪,可能还是用1024端口,我不关浏览器,还要再开一个浏览窗口访问百度知道时,系统就不可能为这个浏览进程分配1024端口了,因为被占用了,分配的可能是1025或者5021端口了。
再举个例子,你是一个超市的老板,上电视报纸打了一堆广告,你必须在广告上写明你的卖场地点,你的卖场提供了商品销售的服务,是服务端。这个卖场地点是固定的而且不能随便变更的,你肯定不会打完广告之后,就偷偷摸摸地把卖场从北京给搬到天津了吧。
看到广告的客户,他们要去你的卖场,他们就是客户端。有的人用私家车端口来访问,有的用公交车端口来访问,有的干脆用两条腿的端口来访问。甚至对同一个客户,今天他开车来,明天坐公交来,下礼拜走着来,甚至雇个八抬大轿让人抬着他来。当一台电脑启动了一个可以让远程其他电脑访问的程序,那么它就要开启至少一个端口号来让外界访问。我们可以把没有开启端口号的电脑看作是一个密封的房间,密封的房间当然不可能接受外界的访问,所以当系统开启了一个可以让外界访问的程序后它自然需要在房间上开一个窗口来接受来自外界的访问,这个窗口就是端口。
数据是用端口号来通知传输层协议送给哪个软件来处理的,数据是没有智慧的,如果很多的程序共用一个端口来接受数据的话,那么当外界的一个数据包送来后传输层就不知道该送给哪一个软件来处理,这样势必将导致混乱。在网络技术中,端口(Port)大致有两种意思:一是物理意义上的端口,比如,ADSL Modem、集线器、交换机、路由器用 于连接其他网络设备的接口,如RJ-45端口、SC端口等等。二是逻辑意义上的端口,一般是指TCP/IP协议中的端口,端口号的范围从0到65535,比如用于浏览网页服务的80端口,用于FTP服务的21端口等等。我们这里将要介绍的就是逻辑意义上的端口
那么TCP/IP协议中的端口指的是什么呢?如果把IP地址比作一间房子 ,端口就是出入这间房子的门。端口号就是打开门的钥匙。真正的房子只有几个门,但是一个IP地址的端口 可以有65536个之多!端口是通过端口号来标记的,端口号只有整数,范围是从0 到65535。
端口有什么用呢?我们知道,一台拥有IP地址的主机可以提供许多服务,比如Web服务、FTP服务、SMTP服务等,这些服务完全可以通过1个IP地址来实现。那么,主机是怎样区分不同的网络服务呢?显然不能只靠IP地址,因为IP 地址与网络服务的关系是一对多的关系。实际上是通过“IP地址+端口号”来区 分不同的服务的。
服务器一般都是通过知名端口号来识别的。例如,对于每个TCP/IP实现来说,FTP服务器的TCP端口号都是21,每个Telnet服务器的TCP端口号都是23,每个TFTP(简单文件传送协议)服务器的UDP端口号都是69。任何TCP/IP实现所提供的服务都用知名的1~1023之间的端口号。这些知名端口号由Internet号分配机构(InternetAssignedNumbersAuthority,IANA)来管理。
到1992年为止,知名端口号介于1~255之间。256~1023之间的端口号通常都是由Unix系统占用,以提供一些特定的Unix服务—也就是说,提供一些只有Unix系统才有的、而其他 *** 作系统可能不提供的服务,IANA管理1~1023之间所有的端口号。
Internet扩展服务与Unix特定服务之间的一个差别就是Telnet和Rlogin。它们二者都允许通过计算机网络登录到其他主机上。Telnet是采用端口号为23的TCP/IP标准且几乎可以在所有 *** 作系统上进行实现。Rlogin只是为Unix系统设计的(尽管许多非Unix系统也提供该服务),它的有名端口号为513。
客户端通常对它所使用的端口号并不关心,只需保证该端口号在本机上是唯一的就可以了。客户端口号又称作临时端口号(即存在时间很短暂)。这是因为它通常只是在用户运行该客户程序时才存在,而服务器则只要主机开着的,其服务就运行。
大多数TCP/IP实现给临时端口分配1024~5000之间的端口号。大于5000的端口号是为其他服务器预留的(Internet上并不常用的服务)。我们可以在后面看见许多这样的给临时端口分配端口号的例子。
Solaris22是一个很有名的例外。通常TCP和UDP的缺省临时端口号从32768开始。
以上摘自百度百科。>端口在计算机编程上的接口就叫做服务器端口。
随着计算机网络技术的发展,原来物理上的接口已不能满足网络通信的要求,TCPIP协议作为网络通信的标准协议就解决了这个通信难题。TCPIP协议集成到 *** 作系统的内核中,这就相当于在 *** 作系统中引入了一种新的输入、输出接口技术,因为在TCPIP协议中引入了一种称之为"Socket"应用程序接口。有了这样一种接口技术,一台计算机就可以通过软件的方式与任何一台具有Socket接口的计算机进行通信。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)