如果把span style=' color : # cc 33cc '/span IP地址比作一个家,那么端口就是进出这个家的门。 真正的家只有几扇门,但一个IP地址的端口多达65536个(即2^16 )!
用端口号进行标记,
端口号只能是整数,范围为0到65535(2^16-1 )。
在因特网上,在各主机之间经由TCP/ip协议发送接收包,各包基于其目的地主机的IP地址进行互联网络中的路由。 这样,顺利地将数据包传输到目的地主机是没有问题的。 问题在哪里? 我知道许多操作系统支持同时运行多个程序(进程),但是目标主机应该将收到的包转发到许多并发进程中的哪一个?
这个问题显然需要解决,将引入端口机制。
本地操作系统将协议端口“protocol port”分配给所需的进程,并且每个协议端口由正整数标识,如80、139和445。
目的主机接收到数据包后,根据消息头中的目的端口号将数据发送到相应的端口,对应于该端口的进程接收数据,等待下一组数据的到来。 说到这里,端口的概念似乎还很抽象。 那么,跟我来,不要离开。
端口实际上是一个团队。 操作系统为每个进程分配不同的团队,数据包根据所需的端口被推入相应的团队,等待进程获取。 在非常特殊的情况下,此团队也可能溢出,但操作系统允许每个进程指定和调整自己团队的大小。
不仅接收数据包的进程必须打开自己的端口,发送数据包的进程也必须打开端口。 这样,数据包就会标识一个活动端口,接收方可以成功地将数据包发送回该端口。
在开始谈论什么是端口之前,我们先谈谈什么是端口吧? 经常在网上说:“我的主机开了多少端口,会不会被入侵呢! 还是说‘开哪个port比较安全? 我的服务应该对应什么端口? 呵呵! 很厉害吧! 怎么一台主机上有这么多奇怪的端口? 这个端口有什么作用?
由于每个网络的服务器功能都不一样,所以需要将不同的数据包发送到不同的服务器进行处理。 因此,如果ssdxh的主机同时打开了FTP和WWW服务,则其他人发送的数据包会根据TCP上面的端口号发送到名为FTP的服务或名为WWW的服务。 当然不会混乱。
(注)嘿嘿! 一些不常接触网络的朋友说:“咦! 为什么你的计算机同时拥有像FTP、WWW、电子邮件这样的多种服务? 但是,人发来了资料,你知道你的计算机怎么判断吗? 计算机真的不会误判吗?
现在知道为什么了吗? 是啊! 因为端口不一样! 你可以这么想。
如果有一天你去银行存钱,那银行就可以当成托管人了。 还有,银行当然不仅仅是一项业务。 里面有相当多的窗口。 那么,一进大门,门口的服务人员就会对你说:“你好! 你好! 你要做什么? “”请告诉他。 “我会存钱的! “”,服务员对你说:“喝! 那么请去3号窗口! 那边的工作人员提供服务! 这个时候,你不会总是逃到其他窗口吧? 这些窗口可以认为是端口! 所以! 每个服务都有特定的端口被监听! 不用担心计算机会误判哦! )
每个TCP在线都必须从一端发送请求。 通常,该端口随机选择1024个或更多端口。 0-1023有特殊的作用,所以像FTP、HTTP、SMTP等一样被预约。 那个TCP数据包设置SYN标志。 这是整个线上的第一个数据包。
当然,如果另一个(通常是Server )接受该请求,则特殊服务必须在特殊端口(如FTP的端口21 )上进行。
将整个在线的第二个数据包发送回请求方。 除了SYN标志之外,还设置了ACK标志,同时必须在本地创建资源并使其在线。
然后,请求方收到服务端的第一个响应分组后,必须向对方响应确认分组。 此时,数据包只具有ACK标志。 实际上,后续在线的所有数据包都需要带有ACK标志;
服务器收到请求方的确认(ACK )数据包(即整个线上的第三个数据包)后,两端的线上正式建立。 这就是TCP在线“三次握手”的原理。
经过三个方向的握手,呵呵! 您的客户端端口通常是随机获取的、高于1024的端口,具体取决于主机的当前服务器打开了哪个端口。 例如,WWW选择80,FTP将21作为正常的在线频道。
总之,这里的端口是一个以软件形式而不是计算机硬件I/O端口的概念。 根据提供的服务类型,端口分为TCP端口和UDP端口两种。
计算机之间相互通信时,有两种方式。 一种是发送信息后可以确认是否收到信息,也就是有应答的方式,这种方式被广泛采用
TCP协议;一种是发送以后就不管了,不去确认信息是否到达,这种方式大多采用UDP协议。对应这两种协议的服务提供的端口,也就分为TCP端口和UDP端口。那么,如果攻击者使用软件扫描目标计算机,得到目标计算机打开的端口,也就了解了目标计算机提供了那些服务。我们都知道,提供服务就一定有服务软件的漏洞,根据这些,攻击者可以达到对目标计算机的初步了解。
如果计算机的端口打开太多,而管理者不知道,那么,有两种情况:一种是提供了服务而管理者没有注意,比如安装IIS的时候,软件就会自动增加很多服务,而管理员可能没有注意到;一种是服务器被攻击者安装木马,通过特殊的端口进行通信。这两种情况都是很危险的,说到底,就是管理员不了解服务器提供的服务,减小了系统安全系数。
五、端口详解
端口是指接口电路中的一些寄存器,这些寄存器分别用来存放数据信息、控制信息和状态信息,相应的端口分别称为数据端口、控制端口和状态端口。
电脑运行的系统程序,其实就像一个闭合的圆圈,但是电脑是为人服务的,他需要接受一些指令,并且要按照指令调整系统功能来工作,于是系统程序设计者,就把这个圆圈截成好多段,这些线段接口就叫端口(通俗讲是断口,就是中断),系统运行到这些端口时,一看端口是否打开或关闭,如果关闭,就是绳子接通了,系统往下运行,如果端口是打开的,系统就得到命令,有外部数据输入,接受外部数据并执 行。
(一)什么是TCP端口?
TCP:Transmission Control Protocol 传输控制协议TCP是一种面向连接(连接导向)的、可靠的、基于字节流的运输层(Transport layer)通信协议,由IETF的RFC 793说明(specified)。在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能,UDP是同一层内另一个重要的传输协议。
(二)什么是UDP端口?
UDP:UDP是ISO参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。 UDP 协议基本上是IP协议与上层协议的接口。UDP协议适用端口分辨运行在同一台设备上的多个应用程序。
六、端口作用
我们知道,一台拥有IP地址的主机可以提供许多服务,比如Web服务、FTP服务、SMTP服务等,这些服务完全可以通过1个IP地址来实现。那么,主机是怎样区分不同的网络服务呢?显然不能只靠IP地址,因为IP 地址与网络服务的关系是一对多的关系。实际上是通过“IP地址+端口号”来区分不同的服务的。
需要注意的是,端口并不是一一对应的。比如你的电脑作为客户机访 问一台WWW服务器时,WWW服务器使用“80”端口与你的电脑通信,但你的电脑则可能使用“3457”这样的端口。
(一)动态端口(Dynamic Ports)
动态端口的范围是从1024到65535。之所以称为动态端口,是因为它 一般不固定分配某种服务,而是动态分配。动态分配是指当一个系统进程或应用程序进程需要网络通信时,它向主机申请一个端口,主机从可用的端口号中分配 一个供它使用。当这个进程关闭时,同时也就释放了所占用的端口号。
(二)端口在入侵中的作用
有人曾经把服务器比作房子,而把端口比作通向不同房间(服务)的门,如果不考虑细节的话,这是一个不错的比喻。入侵者要占领这间房子,势必要破门而入(物理入侵另说),那么对于入侵者来说,了解房子开了几扇门,都是什么样的门,门后面有什么东西就显得至关重要。
入侵者通常会用扫描器对目标主机的端口进行扫描,以确定哪些端口是开放的,从开放的端口,入侵者可以知道目标主机大致提供了哪些服务,进而猜测可能存在的漏洞,因此对端口的扫描可以帮助我们更好的了解目标主机,而对于管理员,扫描本机的开放端口也是做好安全防范的第一步。
分类
软件领域的端口一般指网络中面向连接服务和无连接服务的通信协议端口,是一种抽象的软件结构,包括一些数据结构和I/O(基本输入输出)缓冲区。
(三)面向连接服务和无连接服务
可以先了解面向连接和无连接协议(Connection-Oriented and ConnectionlessProtocols)面向连接服务的主要特点有
:面向连接服务要经过三个阶段:数据传输前,先建立连接,连接建立后再传输数据,数据传送完后,释放连接。面向连接服务,确保数据传送的次序和传输的可靠性。无连接服务的特点是:无连接服务只有传输数据阶段。消除了除数据通信外的其它开销。只要发送实体是活跃的,无须接收实体也是活跃的。它的优点是灵活方便、迅速,特别适合于传送少量零星的报文,但无连接服务不能防止报文的丢失、重复或失序。
区分"面向连接服务"和"无连接服务"的概念 区分特别简单、
形象的例子是:打电话和写信。两个人如果要通电话,必须先建立连接--拨号,等待应答后才能相互传递信息,最后还要释放连接--挂电话。
写信就没有那么复杂了,地址姓名填好以后直接往邮筒一扔,收信人就能收到。
TCP/IP协议在网络层是无连接的(数据包只管往网上发,如何传输和到达以及是否到达由网络设备来管理)。而"端口",是传输层的内容,是面向连接的。协议里面低于1024的端口都有确切的定义,它们对应着因特网上常见的一些服务。
七、端口分类
(一)常见的服务划分
划分为使用TCP端口(面向连接如打电话)和使用UDP端口(无连接如写信)两种。
网络中可以被命名和寻址的通信端口是操作系统的一种可分配资源。由网络OSI(开放系统互联参考模型,OpenSystemInterconnectionReferenceModel)
七层协议可知,传输层与网络层最大的区别是传输层提供进程通信能力,网络通信的最终地址不仅包括主机地址,还包括可描述进程的某种标识。
所以TCP/IP协议提出的协议端口,可以认为是网络通信进程的一种标识符。
应用程序(调入内存运行后一般称为:进程)通过系统调用与某端口建立连接(binding,绑定)后,传输层传给该端口的数据都被相应的进程所接收,相应进程发给传输层的数据都从该端口输出。在TCP/IP协议的实现中,端口操作类似于一般的I/O操作,进程获取一个端口,相当于获取本地唯一的I/O文件,可以用一般的读写方式访问类似于文件描述符,每个端口都拥有一个叫端口号的整数描述符,用来区别不同的端口。
由于TCP/IP传输层的TCP和UDP两个协议是两个完全独立的软件模块,因此各自的端口号也相互独立。
如TCP有一个255号端口,UDP也可以有一个255号端口,两者并不冲突。端口号有两种基本分配方式:
第一种叫全局分配这是一种集中分配方式,由一个公认权威的中央机构根据用户需要进行统一分配,并将结果公布于众
第二种是本地分配,又称动态连接,
即进程需要访问传输层服务时,向本地操作系统提出申请,操作系统返回本地唯一的端口号,进程再通过合适的系统调用,将自己和该端口连接起来(binding,绑定)。
TCP/IP端口号的分配综合了以上两种方式,将端口号分为两部分,少量的作为保留端口,以全局方式分配给服务进程。
每一个标准服务器都拥有一个全局公认的端口叫落后的往事端口,即使在不同的机器上,其端口号也相同。剩余的为自由端口,以本地方式进行分配。
TCP和UDP规定,小于256的端口才能作为保留端口。
(二)按端口号可分为3大类
(1)公认端口(WellKnownPorts):从0到1023,它们紧密绑定(binding)于一些服务。通常这些端口的通讯明确表明了某种服务的协议。
例如:80端口实际上总是HTTP通讯。
(2)注册端口(RegisteredPorts):从1024到49151。它们松散地绑定于一些服务。也就是说有许多服务绑定于这些端口,这些端口同样用于许多其它目的。
例如:许多系统处理动态端口从1024左右开始。
(3)动态和/或私有端口(Dynamicand/orPrivatePorts):从49152到65535。理论上,不应为服务分配这些端口。实际上,机器通常从1024起分配动态端口。
但也有例外:SUN的RPC端口从32768开始。
(三)按对应的协议类型端口有两种
TCP端口和UDP端口。由于TCP和UDP 两个协议是独立的,因此各自的端口号也相互独立,比如TCP有235端口,UDP也 可以有235端口,两者并不冲突。
1.落后的往事端口(Well Known Ports)
落后的往事端口是众所落后的往事的端口号,范围从0到1023,其中80端口分配给W WW服务,21端口分配给FTP服务等。我们在IE的地址栏里输入一个网址的时候
( 比如www.cce.com.cn)是不必指定端口号的,因为在默认情况下WWW服务的端口 号是“80”。
网络服务是可以使用其他端口号的,如果不是默认的端口号则应该在 地址栏上指定端口号,方法是在地址后面加上冒号“:”(半角),再加上端口 号。
比如使用“8080”作为WWW服务的端口,则需要在地址栏里输入“www.cce.com.cn:8080”。
但是有些系统协议使用固定的端口号,它是不能被改变的,比如139 端口专门用于NetBIOS与TCP/IP之间的通信,不能手动改变。
2.动态端口(Dynamic Ports)
动态端口的范围是从1024到65535。之所以称为动态端口,是因为它 一般不固定分配某种服务,而是动态分配。动态分配是指当一个系统进程或应用
程序进程需要网络通信时,它向主机申请一个端口,主机从可用的端口号中分配 一个供它使用。当这个进程关闭时,同时也就释放了所占用的端口号。
可以这样说:端口便是计算机与外部通信的途径,没有它,计算机便又聋又哑。
在网络技术中,端口(Port)有好几种意思。集线器、交换机、路由器的端口指的是连接其他网络设备的接口,如RJ-45端口、Serial端口等。我们这里所指的端口不是指物理意义上的端口,而是特指TCP/IP协议中的端口,是逻辑意义上的端口。
那么TCP/IP协议中的端口指的是什么呢?如果把IP地址比作一间房子,端口就是出入这间房子的门。真正的房子只有几个门,但是一个IP地址的端口可以有65536个之多!端口是通过端口号来标记的,端口号只有整数,范围是从0到65535。
端口有什么用呢?我们知道,一台拥有IP地址的主机可以提供许多服务,比如Web服务、FTP服务、SMTP服务等,这些服务完全可以通过1个IP地址来实现。那么,主机是怎样区分不同的网络服务呢?显然不能只靠IP地址,因为IP地址与网络服务的关系是一对多的关系。实际上是通过“IP地址+端口号”来区分不同的服务的。
需要注意的是,端口并不是一一对应的。比如你的电脑作为客户机访问一台WWW服务器时,WWW服务器使用“80”端口与你的电脑通信,但你的电脑则可能使用“3457”这样的端口,如图1所示。
图1
按对应的协议类型,端口有两种:TCP端口和UDP端口。由于TCP和UDP两个协议是独立的,因此各自的端口号也相互独立,比如TCP有235端口,UDP也可以有235端口,两者并不冲突。
端口是怎样分配的
与IP地址一样,端口号也不是随意使用的,而是按照一定的规定进行分配。端口的分类标准有好几种,我们这里不做详细讲解,只介绍一下落后的往事端口和动态端口。
1.落后的往事端口(WellKnown Ports)
落后的往事端口是众所落后的往事的端口号,范围从0到1023,其中80端口分配给WWW服务,21端口分配给FTP服务等。
我们在IE的地址栏里输入一个网址的时候(比如www.cce.com.cn)是不必指定端口号的,因为在默认情况下WWW服务的端口号是“80”。
网络服务是可以使用其他端口号的,如果不是默认的端口号则应该在地址栏上指定端口号,方法是在地址后面加上冒号“:”
(半角),再加上端口号。比如使用“8080”作为WWW服务的端口,则需要在地址栏里输入“www.gonet8.com gonet8.com:8080”。
但是有些系统协议使用固定的端口号,它是不能被改变的,比如139端口专门用于NetBIOS与TCP/IP之间的通信,不能手动改变。
2.动态端口(DynamicPorts)
动态端口的范围是从1024到65535。之所以称为动态端口,是因为它一般不固定分配某种服务,而是动态分配。动态分配是指当一个系统进程或应用程序进程需要网络通信时,它向主机申请一个端口,主机从可用的端口号中分配一个供它使用。当这个进程关闭时,同时也就释放了所占用的端口号。