端口映射是什么?

端口映射其实特别好理解,通俗一些讲:在你所在的小区里并不太方便所有的快递员都送货上门,于是小区物业就指定一个快递柜给你用,不管是你寄快递还是别人寄快递给你都是通过这个快递柜 。


端口映射是什么?
文章插图

大家千万别将端口映射和端口转发搞混了,端口转发的重点在“转”字上 。比如:送过来的快递全部先交给小区门口的保安,再由保安根据每件快递上的收件人来进行分发 。网络数据是通过什么来识别要送给谁,或者从谁手上送出去呢?通过端口 。其实“端口映射”、“端口转发”最不好理解的还是“端口”的含义 。

什么是端口?

端口是已经被抽象化的概念,没有实物的话大家是特别难理解的 。我们可以通过过去的打电话这件事来理解端口的含义 。电话问世之初,如果要你要打电话,就必须先将电话打到服务台,告诉接线员你要打给谁,接线员根据你说的名字,将你的线路插到对应的插口上,这样线路通了之后就可以相互通话 。这一个一个的插口就是原始形态的“端口” 。


端口映射是什么?
文章插图

端口现在又被称为连接端口、协议端口,在网络中是一种经由软件创建的服务,在一个电脑操作系统中扮演通信的端点,每一个端口都会与主机的IP地址及通信协议相关联,比如浏览网页HTTP协议默认使用80端口连线,Telnet协议默认使用23端口连线,经由公认端口号通常可以辨认出这个连线使用的通信协议 。位于传输层的通信协议通常需要指定端口号,例如在TCP/IP协议族之下的TCP和UDP协议 。


端口映射是什么?
文章插图

一个端口号使用16位无符号整数来表示,其范围介于0~65535之间 。在TCP协议中端口0是被保留不可使用,1~1023操作系统保留由root用户使用,1024~4999由客户端程序自由分配,而5000~65535由服务器端程序自由分配在UDP协议中,来源端口号可以选择不填,如果设为0则代表没有来源端口号 。


端口映射是什么?
文章插图

在操作系统中,一个行程可以通过网络套接字将它的输入/输出与一个特定的传输协议、一个端口、一个IP地址关联起来,这个关联的动作就是绑定 。在应用层中,使用主从式架构的通信协议每个端口提供多路复用的服务,但使用同样协议的多个程序,尝试绑定在同一个IP地址下的相同端口,就会产生端口冲突的现象 。

为什么需要端口映射和端口转发?

在互联网中不管是大网络还是小网络都不是一对一的关系,而是多对多的关系 。网络与网络之间也是通过无数的路由器、交换机来进行连接 。传输介质(如:网线、光纤等)是没有办法准确地识别数据要传输给谁 。


端口映射是什么?
文章插图

IPV4的IP地址枯竭,也促使了IP地址分层定址,并且划分出了私网IP地址供局域网内使用,这样确实很大程度的缓解了IP地址枯竭的问题 。


端口映射是什么?
文章插图

但这也同样意味着每台电脑(或其他联网设备)不能获得唯一公网IP地址,仅仅只是在局域网内唯一 。局域网内和外网进行数据传输都需要经过网关转发 。


端口映射是什么?
文章插图

那么问题来了:内网的电脑作为服务器没有公网IP,想提供一个端口供其他人使用,怎么办呢?

NAT技术(网络地址转换)便应运而生了,它能够将当前地址空间中的IP地址映射到另一个地址空间,可以理解成一个转换表,其中存储着外部地址/端口到内部地址/端口的转换关系 。


端口映射是什么?
文章插图

【端口映射是什么?】端口映射和端口转发就是NAT地址转换技术的的一种,它能够让外网通过公网IP地址访问到局域网内的特定资源 。

    推荐阅读