端口及端口映射

本文深入解析了网络通信中的端口概念,包括TCP与UDP端口的区别、端口的作用及类型,以及端口映射技术和安全管理等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

协议端口

编辑

如果把IP地址比作一间房子 , 端口就是出入这间房子的门。真正的房子只有几个门,但是一个IP地址的 端口可以有65536(即:2^16)个之多!端口是通过 端口号来标记的,端口号只有 整数,范围是从0 到65535(2^16-1)。
在Internet上,各 主机间通过TCP/IP协议发送和接收 数据包,各个数据包根据其目的主机的ip地址来进行互联网络中的 路由选择。可见,把数据包顺利的传送到目的主机是没有问题的。问题出在哪里呢?我们知道大多数 操作系统都支持多 程序(进程)同时运行,那么目的主机应该把接收到的数据包传送给众多同时运行的进程中的哪一个呢?显然这个问题有待解决, 端口机制便由此被引入进来。
本地 操作系统会给那些有需求的进程分配协议 端口(protocol port,即我们常说的端口),每个协议端口由一个正 整数标识,如:80,139,445,等等。当目的主机接收到数据包后,将根据 报文首部的目的 端口号,把数据发送到相应端口,而与此端口相对应的那个进程将会领取数据并等待下一组数据的到来。说到这里, 端口的概念似乎仍然抽象,那么继续跟我来,别走开。
端口其实就是队, 操作系统为各个进程分配了不同的队,数据包按照目的端口被推入相应的队中,等待被进程取用,在极特殊的情况下,这个队也是有可能溢出的,不过操作系统允许各进程指定和调整自己的队的大小。
不光接受数据包的进程需要开启它自己的 端口,发送数据包的进程也需要开启端口,这样,数据包中将会标识有源端口,以便接受方能顺利地回传数据包到这个端口。
端口详解
在开始讲什么是 端口之前,我们先来聊一聊什么是 port 呢?常常在网络上听说,我的主机开了多少的 port ,会不会被入侵呀!?或者是说,开哪个 port 会比较安全?又或者说,我的服务应该对应什么 port 呀?呵呵!很神奇吧!怎么一部主机上面有这么多的奇怪的 port 呢?这个 port 有什么作用呢?
由于每种网络的服务功能都不相同,因此有必要将不同的 封包送给不同的服务来处理,所以啰,当你的主机同时开启了 FTPWWW服务的时候,那么别人送来的资料封包,就会依照 TCP 上面的 port 号码来给 FTP 这个服务或者是 WWW 这个服务来处理,当然就不会搞乱啰!(注:嘿嘿!有些很少接触到网络的朋友,常常会问说:咦!为什么你的 计算机同时有 FTP、WWW、 E-Mail这么多服务,但是人家传资料过来,你的计算机怎么知道如何判断?计算机真的都不会误判吗?!现在知道为什么了吗?!对啦!就是因为 port 不同嘛!你可以这样想啦,有一天,你要去银行存钱,那个银行就可以想成是主机,然后,银行当然不可能只有一种业务,里头就有相当多的窗口,那么你一进大门的时候,在门口的服务人员就会问你说:"嗨!你好呀!你要做些什么事?"你跟他说:"我要存钱呀!",服务员接着就会告诉你:喝!那么请前往三号窗口!那边的人员会帮您服务!这个时候你总该不会往其它的窗口跑吧?! ""这些窗口就可以想成是port 啰!所以啦!每一种服务都有特定的 port 在监听!您无须担心计算机会误判的问题呦! )
· 每一个 TCP 连接都必须由一端(通常为 client )发起请求,这个 port 通常是随机选择大于 1024 以上(因为0-1023一般被用作知名服务器的端口,被预定,如FTP、HTTP、SMTP等)的 port 号来进行!其 TCP 封包会将(且只将) SYN 旗标设定起来!这是整个联机的第一个封包;
· 如果另一端(通常为 Server ) 接受这个请求的话(当然啰,特殊的服务需要以特殊的 port 来进行,例如 FTP 的 port 21 ),则会向请求端送回整个联机的第二个 封包!其上除了 SYN 旗标之外同时还将 ACK 旗标也设定起来,并同时在本机端建立资源以待联机之需;
· 然后,请求端获得 服务端第一个响应 封包之后,必须再响应对方一个确认封包,此时封包只带 ACK 旗标(事实上,后继联机中的所有封包都必须带有 ACK 旗标);
· 只有当 服务端收到请求端的确认( ACK ) 封包(也就是整个联机的第三个封包)之后,两端的联机才能正式建立。这就是所谓的 TCP 联机的' 三次握手( Three-Way Handshake )'的原理。
经过三向交握之后,呵呵!你的 client 端的 port 通常是高于 1024 的随机取得的 port,至于主机端则视当时的服务是开启哪一个 port 而定,例如 WWW 选择 80 而 FTP 则以 21 为正常的联机信道!
总而言之,我们这里所说的 端口,不是计算机 硬件I/O端口,而是 软件形式上的概念。根据提供 服务类型的不同, 端口分为两种,一种是 TCP端口,一种是UDP端口。计算机之间相互通信的时候,分为两种方式:一种是发送信息以后,可以确认信息是否到达,也就是有应答的方式,这种方式大多采用TCP协议;一种是发送以后就不管了,不去确认信息是否到达,这种方式大多采用 UDP协议。对应这两种协议的服务提供的 端口,也就分为TCP端口和UDP端口。
那么,如果攻击者使用 软件扫描目标计算机,得到目标计算机打开的 端口,也就了解了目标计算机提供了哪些服务。我们都知道,提供服务就一定有服务 软件的漏洞,根据这些,攻击者可以达到对目标计算机的初步了解。如果计算机的 端口打开太多,而管理者不知道,那么,有两种情况:一种是提供了服务而管理者没有注意,比如安装IIS的时候, 软件就会自动增加很多服务,而 管理员可能没有注意到;一种是服务器被攻击者安装 木马,通过特殊的端口进行通信。这两种情况都是很危险的,说到底,就是管理员不了解服务器提供的服务,减小了系统安全系数。
端口类型
TCP 端口和UDP端口。由于TCP和UDP 两个协议是独立的,因此各自的端口号也相互独立,比如TCP有235端口,UDP也 可以有235端口,两者并不冲突。

端口作用编辑

我们知道,一台拥有IP 地址的主机可以提供许多服务,比如 Web服务、FTP服务、SMTP服务等,这些服务完全可以通过1个IP地址来实现。那么,主机是怎样区分不同的 网络服务呢?显然不能只靠IP地址,因为IP 地址与网络服务的关系是一对多的关系。实际上是通过“IP地址+ 端口号”来区分不同的服务的。
需要注意的是, 端口并不是一一对应的。比如你的电脑作为客户机访 问一台WWW服务器时,WWW服务器使用“80” 端口与你的电脑通信,但你的电脑则可能使用“3457”这样的 端口
动态 端口(Dynamic Ports)
动态分配是指当一个 系统进程或应用 程序进程需要 网络通信时,它向主机申请一个 端口,主机从可用的 端口号中分配 一个供它使用。当这个进程关闭时,同时也就释放了所占用的 端口号
端口在入侵中的作用
有人曾经把服务器比作房子,而把 端口比作通向不同房间(服务)的门,如果不考虑细节的话,这是一个不错的比喻。入侵者要占领这间房子,势必要破门而入(物理入侵另说),那么对于入侵者来说,了解房子开了几扇门,都是什么样的门,门后面有什么东西就显得至关重要。
入侵者通常会用扫描器对目标主机的 端口进行扫描,以确定哪些 端口是开放的,从开放的端口,入侵者可以知道目标主机大致提供了哪些服务,进而猜测可能存在的 漏洞,因此对端口的扫描可以帮助我们更好的了解目标主机,而对于管理员,扫描本机的开放端口也是做好安全防范的第一步。

软件领域的端口一般指网络中面向连接服务和 无连接服务的 通信协议端口,是一种抽象的 软件结构,包括一些 数据结构和I/O(基本输入输出) 缓冲区
面向连接服务和无连接服务
可以先了解 面向连接和无连接协议(Connection-Oriented and ConnectionlessProtocols) 面向连接服务的主要特点有:面向连接服务要经过三个阶段:数据传输前,先建立连接,连接建立后再传输数据, 数据传送完后,释放连接。 面向连接服务,可确保 数据传送的次序和传输的可靠性。 无连接服务的特点是:无连接服务只有传输数据阶段。消除了除数据通信外的其它 开销。只要发送实体是活跃的,无须接收实体也是活跃的。它的优点是灵活方便、迅速,特别适合于传送少量零星的报文,但 无连接服务不能防止报文的丢失、重复或失序。
区分"面向连接服务"和"无连接服务"的概念
区分特别简单、形象的例子是:打电话和写信。两个人如果要通电话,必须先建立连接--拨号,等待应答后才能相互传递信息,最后还要释放连接--挂电话。写信就没有那么复杂了,地址姓名填好以后直接往邮筒一扔,收信人就能收到。TCP/IP协议在 网络层无连接的(数据包只管往网上发,如何传输和到达以及是否到达由 网络设备来管理)。而"端口",是传输层的内容,是面向连接的。协议里面低于1024的 端口都有确切的 定义,它们对应着 因特网上常见的一些服务。

网络中可以被命名和寻址的通信端口操作系统的一种可分配资源。
系统管理员可以"重定向"端口
BlakeR.Swopes指出使用重定向 端口 还有一个原因,在UNIX系统上,如果你想侦听1024以下的端口需要有 root权限 。如果你没有root权限而又想开web服务,你就需要将其安装在较高的 端口 。此外,一些ISP的 防火墙 将阻挡低 端口 的通讯,这样的话即使你拥有整个机器你还是得重定向端口。
非法入侵的方式可粗略分为4种:
1、扫描 端口,通过已知的系统Bug攻入主机。
2、种植木马,利用木马开辟的后门进入主机。
3、采用数据溢出的手段,迫使主机提供后门进入主机。
4、利用某些 软件设计的漏洞,直接或间接控制主机。
非法入侵的主要方式是前两种,尤其是利用一些流行的 黑客工具,通过第一种方式攻击主机的情况最多、也最普遍;而对后两种方式来说,只有一些手段高超的黑客才利用,波及面并不广泛,而且只要这两种问题一出现, 软件服务商很快就会提供 补丁,及时修复系统。
对于个人用户来说,您可以限制所有的 端口,因为您根本不必让您的机器对外提供任何服务;而对于对外提供网络服务的服务器,我们需把必须利用的端口(比如WWW端口80、FTP端口21、 邮件 服务端口25、110等)开放,其他的端口则全部关闭。

端口映射(Port Mapping)
端口映射其实就是常说的NAT的一种,其功能就是把在公网的地址转翻译成 私有地址, 采用 路由 方式的ADSL 宽带路由器 拥有一个动态或固定的公网IP,ADSL直接接在HUB或 交换机 上,所有的电脑 共享上网
很多客户每天都问为什么要端口映射?例如:通过 路由器上网的,网站自己可以访问,但是别人就不能;输入 127.0.0.1可以访问,别人还是看不到;输入localhost可以看到,但是别人就是看不到,气人啊~没办法,只有进行端口映射了。

端口映射过程

端口映射过程就如同:你家在一个小区里B栋2410室,你朋友来找你,找到小区门口,不知道你住哪层哪号?就问守门的保安,保安很客气的告诉了他你家详细门牌,所以你朋友很轻松的找到了你家。这个过程就是外网访问 内网通过端口映射的形象比喻。
网络技术中,端口(英文Port)有好几种意思。 集线器交换机路由器的端口指的是连接其他 网络设备的接口,如 RJ-45端口、Serial端口等。
我们这里所说的端口,不是 计算机硬件的I/O进出端口,而是 软件形式上的概念。
服务器可以向外提供多种服务,比如,一台服务器可以同时是 WEB服务器,也可以是 FTP服务器,同时,它也可以是 邮件服务器
为什么一台服务器可以同时提供那么多的服务呢?其中一个很主要的方面,就是各种服务采用不同的端口分别提供不同的服务,比如:WEB采用80端口,FTP采用21端口等。这样,通过不同端口, 计算机与外界进行互不干扰的通信。我们这里所指的端口不是指物理意义上的端口,而是特指 TCP/IP协议中的端口,是逻辑意义上的端口。

端口映射

内网的一台电脑要上因特网对外开放服务或接收数据,都需要端口映射。
端口映射分为动态和静态。动态端口映射: 内网中的一台电脑要访问网站,会向NAT 网关发送 数据包包头中包括对方网站IP、端口和本机IP、端口,NAT 网关会把本机IP、端口替换成自己的公网IP、一个未使用的端口,并且会记下这个映射关系,为以后转发数据包使用。然后再把数据发给网站,网站收到数据后做出反应,发送数据到NAT 网关的那个未使用的端口,然后NAT网关将数据转发给 内网中的那台电脑,实现内网和公网的通讯.当连接关闭时,NAT网关会释放分配给这条连接的端口,以便以后的连接可以继续使用。
动态端口映射其实也就是NAT 网关的工作方式。
静态端口映射::就是在NAT 网关上开放一个固定的端口,然后设定此端口收到的数据要转发给 内网哪个IP和端口,不管有没有连接,这个映射关系都会一直存在。就可以让公网主动访问 内网的一台电脑。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值