一:端口
(1):端口的定义
端口号的主要作用是表示一台计算机中的特定进程所提供的服务。网络中的计算机是通过IP地址来代表其身份的,它只能表示某台特定的计算机,
但是一台计算机上可以同时提供很多个服务,如数据库服务、FTP服务(文件传输)、Web服务等,我们就通过端口号来区别相同计算机所提供的这些不同的服务,
如常见的端口号21表示的是FTP服务,端口号23表示的是Telnet服务端口号25指的是SMTP服务(邮件传输)等。端口号一般习惯为4位整数,在同一台计算机上端口号不能重复,否则,就会产生端口号冲突这样的例外 [
(也就是是IP确定一台电脑的位置 而端口可以确定这台电脑上的某个服务)
(2):逻辑端口和物理端口
- 在 网络技术 中,端口包括逻辑端口和物理端口两种类型。物理端口是用于连接物理设备之间的接口,如 ADSL Modem、 集线器 、 交换机 、 路由器 上用于连接其他网络设备的接口,如 RJ-45端口 、SC端口等等
- 逻辑端口是指逻辑意义上用于区分服务的端口,比如用于浏览网页服务的80端口,用于FTP服务的21端口等。如 TCP/IP协议 中的服务端口,通过不同的逻辑端口来区分不同的服务。一个IP地址的端口通过16bit进行编号,最多可以有65536个端口 [3] 。端口是通过端口号来标记的,端口号只有整数,范围是从0 到65535。
二:端口和进程
(1):问题的引出
在Internet上,各主机间通过TCP/IP协议发送和接收数据包,各个数据包根据其目的主机的ip地址来进行互联网络中的路由选择,把数据包顺利的传送到目的主机。大多数操作系统都支持多程序(进程)同时运行,那么目的主机应该把接收到的数据包传送给众多同时运行的进程中的哪一个呢?显然这个问题有待解决,端口机制便由此被引入进来。
(也就是我们给目主机发送数据包 但是目的主机上是有很多的很多进程在执行的,那么我们把我们的数据包到底是发送给哪个进程的呀 这时候就把端口引进啦)
(2):端口和进程的关系
- 本地操作系统会给那些有需求的进程分配协议端口(protocol port,即我们常说的端口),每个协议端口由一个正整数标识,如:80,139,445,等等。当目的主机接收到数据包后,将根据报文首部的目的端口号,把数据发送到相应端口,而与此端口相对应的那个进程将会领取数据并等待下一组数据的到来。
- 端口其实就是队,操作系统为各个进程分配了不同的队,数据包按照目的端口被推入相应的队中,等待被进程取用,在极特殊的情况下,这个队也是有可能溢出的,不过操作系统允许各进程指定和调整自己的队的大小。
不光接受数据包的进程需要开启它自己的端口,发送数据包的进程也需要开启端口,这样,数据包中将会标识有源端口,以便接受方能顺利地回传数据包到这个端口。