在通信原理里也提到了端口这个概念,但是没有详细讲解,今天详细讲解以下 “网络协议端口”,因为这个“东东”也是黑客们常常利用渗透入侵的手段。 网络协议


计算机“端口”是英文port的译义,可以认为是计算机与外界通讯交流的出口。其中硬件领域的端口又称接口,如:USB端口、串行端口等。
软件领域的端口一般指网络中面向连接服务和无连接服务的通信协议端口,是一种抽象的软件结构,包括一些数据结构和I/O(基础输入输出)缓冲区。
在网络技术中,端口(Port)有好几种意思。集线器、交换机、路由器的端口指的是连接其他网络设备的接口,如RJ-45端口、Serial端口等。
而今天要将的“网络协议端口”不是指物理意义上的端口,而是特指TCP/IP协议中的端口,是逻辑意义上的端口。
网络协议中的端口指的是什么呢?如果把IP地址比作一间房子,端口就是出入这间房子的门。真正的房子只有几个门,但是一个IP地址的端口可以有65536(即:2562256)个之多!端口是通过端口号来标记的,端口号只有整数,范围是从0到65535(256256)。
在Internet上,各主机间通过TCP/IP协议发送和接收数据报,各个数据报根据其目的的主机的ip地址来进行互联网中的路由选择。可见,把数据报顺利的传送到目的的主机是没有问题的。问题出在哪里呢?大家都知道大多数操作系统能够都支持多程序(进程)同时运行,那么目的主机应该把接收到的数据报传送给众多同时运行的进程中的哪一个呢?显然这个问题有待解决,短裤机制便由此被引入进来。
操作系统会给那些有需求的进程分配协议端口(protocol port,即大家常说的端口),每个协议端口由一个正整数标识,如:80,139,445等等。当目的主机接收到数据报后,将根据报文首部的目的端口号,把数据发送到相应端口,而与此端口相对应的那个进程将会领取数据并等待下一组数据的到来。说到这里,端口的概念似乎仍然抽象,那么继续讲解。
端口其实就是对操作系统为各个进程分配了不同的队,数据报按照目的的端口被推入相应的队中,等待被进程取用,在极特殊的情况下,这个队也是有可能溢出的,不过操作系统允许各进程指定和调整自己的队的大小。
接受数据报的进程需要开启它自己的端口,发送数据报的进程也需要开启端口,这样,数据报中将会标识有源端口,以便接受方能顺利的回传数据报到这个端口。
常常在网络上听说“某主机开了多少的port,会不会被入侵呀?!”或者是说“开那个port会比较安全?又,某的服务应该对应什么port呀?!”很神奇把!怎么一部主机上面有这么多的奇怪的port呢?这个port有什么作用呢?!
由于每种网络的服务功能都不相同,因此有必要将不同的封包送给不同的服务来处理,所以,当你的主机同时开启了FTP与WWW服务的时候,那么别人送来的资料封包,就会依照TCP上面的port号码来给FTP这个服务或者是WWW这个服务来处理,当然就不会错乱!很多人会问说:“为什么计算机通南宁市有FTP、WWW、E-Mail这么多服务,传资料过来,计算机怎么知道如何判断?计算机真的都不会误判吗?”现在知道为什么了吧!?“对了!就是因为port不同嘛”!每一种服务都有特定的port在监听!您无须担心计算机会误判的问题。
每一个TCP联机都必须由一端(通常为client)发起请求这个port通常是随机选择大于1024以上的port号来进行!其TCP封包会将(且只将)SYN旗标设定起来!这是联机的第一个封包;如果另一端(通常为Server)接受这个请求的话(当然,特殊的服务需要以特殊的port来进行,例如FTP的port21),则会向请求端送回整个联机的第二个封包!其上除了SYN旗标之外同时还将ACK旗标也设定起来,并同时在本机端建立资源以待联机之需;然后,请求端获得服务端第一个响应封包之后,必须再响应对方一个确认封包,此时封包只带ACK旗标(事实上,后继联机中的所有封包都必须带有ACK旗标);
只有当服务端收到请求端的确认(ACK)封包(也就是整个联机的第三个封包)之后,两端的联机才能正是建立。这就是所谓的TCP联机的“三段交握(Three-Way Handshake)的原理。经过三向交握之后,你的client端的port通常是高于1024的随机取得的port至于主机端则视当时的服务是开启哪一个port而定,例如WWW选择80而FTP则以21为正常的联机信道!”