科技名词定义
中文名称:端口 英文名称:port
定义:信号能由此进网和或出网的终接点。
所属学科:通信科技(一级学科);通信原理与基本技术(二级学科)
百科名片
端口示意图
计算机"端口"是英文port的意译,可以认为是计算机与外界通讯交流的出口。
硬件端口(接口)
  其中硬件领域的端口又称接口,如:USB端口、串行端口等。
软件端口
  软件领域的端口一般指网络中面向连接服务和无连接服务的通信协议端口,是一种抽象的软件结构,包括一些数据结构和I/O(基本输入输出)缓冲区
网络端口
  在网络技术中,端口(Port)有好几种意思。集线器、交换机、路由器的端口指的是连接其他网络设备的接口,如RJ-45端口、Serial端口等,指传统意义上的硬件接口,而我们这里所指的端口不是指物理意义上的端口,而是特指TCP/IP协议中的端口,是逻辑意义上的端口
TCP/IP协议中的端口
  如果把IP地址比作一间房子,端口就是出入这间房子的门,一个IP地址的端口可以有65536(即:256×256)个,端口是通过端口号来标记的,端口号只有整数,范围是从0 65535256×256-1)。
  在Internet上,各主机间通过TCP/IP协议发送和接收数据包,各个数据包根据其目的主机的ip地址来进行互联网络中的路由选择,将数据包顺利传送到目的主机。但是大多数操作系统都支持多程序(进程)同时运行,那么目的主机应该把接收到的数据包传送给哪一个进程,于是,端口机制便由此被引入进来。
本地操作系统会给那些有需求的进程分配协议端口protocol port,即我们常说的端口),每个协议端口由一个正整数标识,如:80139445等。当目的主机接收到数据包后,将根据报文首部的目的端口号,把数据发送到相应端口,而与此端口相对应的那个进程将会领取数据并等待下一组数据的到来。
端口其实就是队,操作系统为各个进程分配了不同的队,数据包按照目的端口被推入相应的队中,等待被进程取用,在极特殊的情况下,这个队也是有可能溢出的,不过操作系统允许各进程指定和调整自己的队的大小。接受数据包的进程需要开启它自己的端口,发送数据包
的进程也需要开启端口,这样,数据包中将会标识源端口,以便接受方能顺利的回传数据包到这个端口。
  端口详解
由于每种网络的服务功能都不相同,因此有必要将不同的封包送给不同的服务来处理,所以,主机同时开启FTPWWW服务时,数据包就会依照TCP上面的port号码来给FTP这个服务或者是WWW这个服务来处理,每一种服务都有特定的port在监听。
  · 每一个TCP联机都必须由一端(通常为client)发起请求这个port,通常是随机选择大于1024以上(因为0-1023有特殊作用,被预定,如FTPHTTPSMTP等)的port 号来进行,其TCP封包会将SYN 旗标设定起来,这是整个联机的第一个封包;
  · 如果另一端(通常为Server)接受这个请求的话,则会向请求端送回整个联机的第二个封包,其上除了SYN旗标之外同时还将ACK旗标也设定起来,并同时在本机端建立资源以待联机之需;
  · 然后,请求端获得服务端第一个响应封包之后,必须再响应对方一个确认封包,此时封包
只带 ACK 旗标(事实上,后继联机中的所有封包都必须带有 ACK 旗标)
  · 只有当服务端收到请求端的确认(ACK)封包(也就是整个联机的第三个封包)之后,两端的联机才能正式建立。这就是所谓的TCP联机的三段式交握(Three-Way Handshake)的原理。
  经过三向交握之后,client端的port通常是高于1024的随机取得的port,至于主机端则视当时的服务是开启哪一个port而定,例如WWW选择80,而FTP则以21为正常的联机信道。
  根据提供服务类型的不同,端口分为TCP端口和UDP端口两种。计算机之间相互通信分为两种方式:一种是信息发送以后,可以确认信息是否到达,也就是有应答的方式,这种方式大多采用TCP协议;一种是发送以后就不去确认信息是否到达,这种方式大多采用UDP协议。对应这两种协议的服务提供的端口,也就分为TCP端口和UDP端口。
  如果攻击者使用软件扫描目标计算机,得到目标计算机打开的端口信息,也就获得了目标计算机提供的服务信息。我们知道,提供服务的服务软件一定含有漏洞,根据这点,攻击者可以达到对目标计算机的初步了解。如果计算机的端口打开太多,而管理者不知道,那么,有两种情况:一种是提供了服务而管理者没有注意,比如安装IIS的时候,软件就会自动增加
很多服务,而管理员可能没有注意到;一种是服务器被攻击者安装木马,通过特殊的端口进行通信。这两种情况都是很危险的,说到底,就是管理员不了解服务器提供的服务,减小了系统安全系数。
端口详解
  电脑运行的系统程序,其实就像一个闭合的圆圈,但是电脑是为人服务的,他需要接受一些指令,并且要按照指令调整系统功能来工作,于是系统程序设计者,就把这个圆圈截成好多段,这些线段接口就叫端口(通俗讲是断口,就是中断),系统运行到这些端口时,一看端口是否打开或关闭,如果关闭,就是绳子接通了,系统往下运行,如果端口是打开的,系统就得到命令,有外部数据输入,接受外部数据并执行。
什么是TCP端口?
  TCPTransmission Control Protocol 传输控制协议TCP是一种面向连接(连接导向)的、可靠的、基于字节流的运输层(Transport layer)通信协议,由IETFRFC 793说明(specified)。在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能,UDP是同一层内另一个重要的传输协议。
什么是UDP端口?
  UDP:UDPISO参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。 UDP 协议基本上是IP协议与上层协议的接口。UDP协议适用端口分辨运行在同一台设备上的多个应用程序。
端口作用
  我们知道,一台拥有IP地址的主机可以提供许多服务,比如Web服务、FTP服务、SMTP服务等,这些服务完全可以通过1IP地址来实现。那么,主机是怎样区分不同的网络服务呢?显然不能只靠IP地址,因为IP 地址与网络服务的关系是一对多的关系,实际上是通过IP地址+端口号来区分不同的服务的。
  需要注意的是,端口并不是一一对应的,比如你的电脑作为客户机访问一台WWWtcp ip协议各自的含义是什么服务器时,WWW服务器使用80”端口与你的电脑通信,但你的电脑则可能使用3457”这样的端口。
动态端口(Dynamic Ports
  动态端口的范围是从102465535。之所以称为动态端口,是因为它一般不固定分配某种服务,而是动态分配。动态分配是指当一个系统进程或应用程序进程需要网络通信时,它向主机申请一个端口,主机从可用的端口号中分配一个供它使用。当这个进程关闭时,同时也就释放了所占用的端口号。
端口在入侵中的作用
  有人曾经把服务器比作房子,而把端口比作通向不同房间(服务)的门,如果不考虑细节的话,这是一个不错的比喻。入侵者要占领这间房子,势必要破门而入(物理入侵另说),那么对于入侵者来说,了解房子开了几扇门,都是什么样的门,门后面有什么东西就显得至关重要。
  入侵者通常会用扫描器对目标主机的端口进行扫描,以确定哪些端口是开放的,从开放的端口,入侵者可以知道目标主机大致提供了哪些服务,进而猜测可能存在的漏洞,因此对端口的扫描可以帮助我们更好的了解目标主机,而对于管理员,扫描本机的开放端口也是做好安全防范的第一步。
  分类
  软件领域的端口一般指网络中面向连接服务和无连接服务的通信协议端口,是一种抽象的软件结构,包括一些数据结构和I/O(基本输入输出)缓冲区。
面向连接服务和无连接服务
可以先了解面向连接和无连接协议(ConnectionOriented and ConnectionlessProtocols)面向连接服务的主要特点有:面向连接服务要经过三个阶段:数据传输前,先建立连接,连接建立后再传输数据,数据传送完后,释放连接。面向连接服务,可确保数据传送的次序和传输的可靠性。无连接服务的特点是:无连接服务只有传输数据阶段。消除了除数据通信外的其它开销。只要发送实体是活跃的,无须接收实体也是活跃的。它的优点是灵活方便、迅速,特别适合于传送少量零星的报文,但无连接服务不能防止报文的丢失、重复或失序。
区分"面向连接服务""无连接服务"的概念 
区分特别简单、形象的例子是:打电话和写信。两个人如果要通电话,必须先建立连接--拨号,等待应答后才能相互传递信息,最后还要释放连接--挂电话。写信就没有那么复杂了,地址姓名填好以后直接往邮筒一扔,收信人就能收到。TCP/IP协议在网络层是无连接的(数
据包只管往网上发,如何传输和到达以及是否到达由网络设备来管理)。而"端口",是传输层的内容,是面向连接的。协议里面低于1024的端口都有确切的定义,它们对应着因特网上常见的一些服务。
这些常见的服务划分
  划分为使用TCP端口(面向连接如打电话)和使用UDP端口(无连接如写信)两种。
  网络中可以被命名和寻址的通信端口是操作系统的一种可分配资源。由网络OSI(开放系统互联参考模型,OpenSystemInterconnectionReferenceModel)七层协议可知,传输层与网络层最大的区别是传输层提供进程通信能力,网络通信的最终地址不仅包括主机地址,还包括可描述进程的某种标识。所以TCP/IP协议提出的协议端口,可以认为是网络通信进程的一种标识符。
  应用程序(调入内存运行后一般称为:进程)通过系统调用与某端口建立连接(binding,绑定)后,传输层传给该端口的数据都被相应的进程所接收,相应进程发给传输层的数据都从该端口输出。在TCP/IP协议的实现中,端口操作类似于一般的I/O操作,进程获取一个端
口,相当于获取本地唯一的I/O文件,可以用一般的读写方式访问类似于文件描述符,每个端口都拥有一个叫端口号的整数描述符,用来区别不同的端口。由于TCP/IP传输层的TCPUDP两个协议是两个完全独立的软件模块,因此各自的端口号也相互独立。如TCP有一个255号端口,UDP也可以有一个255号端口,两者并不冲突。端口号有两种基本分配方式:第一种叫全局分配这是一种集中分配方式,由一个公认权威的中央机构根据用户需要进行统一分配,并将结果公布于众,第二种是本地分配,又称动态连接,即进程需要访问传输层服务时,向本地操作系统提出申请,操作系统返回本地唯一的端口号,进程再通过合适的系统调用,将自己和该端口连接起来(binding,绑定)。TCP/IP端口号的分配综合了以上两种方式,将端口号分为两部分,少量的作为保留端口,以全局方式分配给服务进程。每一个标准服务器都拥有一个全局公认的端口叫周知端口,即使在不同的机器上,其端口号也相同。剩余的为自由端口,以本地方式进行分配。TCPUDP规定,小于256的端口才能作为保留端口