1.什么是端口?

单个服务器可以同时运行多个服务或程序,并且这些服务是共享一个IP地址的,如同一个家庭共享一个街道地址。因此服务器必须知道哪个数据包相对应于哪个服务,这样才能准确将数据进行传输。而在网络通信中使用的解决方案称为端口,端口用于为不同的服务提供地址:

  • 一台计算机使用单个IP地址进行管理,但它可以同时侦听多个端口。 每个在网络中通信的程序都需要自己唯一的端口
  • 已启动的程序和服务会告诉操作系统要侦听哪些端口,然后操作系统将开始侦听到该端口的流量,如果有任何此类流量到达计算机,操作系统会将流量转发给相应的程序

  • 常见服务监听的端口如下:


2.UDP和TCP的区别?

不同的程序和服务对于如何通过网络发送流量有不同的要求,有些程序要求数据包不丢失且接收顺序不发生错误,而有些可能不关心是否发生某些错误或数据包丢失。TCP和UDP就是负责管理流量如何通过网络发送的传输协议:

  • TCP可以确保流量以正确顺序到达,并且没有数据包丢失,任何丢失的数据包都会自动再次发送
  • UDP不关心数据包是否丢失或以错误的顺序到达,它主要考虑流量传输速度,其无需任何额外的控制
TCP UDP
跟踪丢失的数据包以确保丢失的数据可以重传 不跟踪丢失的数据包
对每个包添加序列号,如果数据包以错误的顺序到达目的地会根据这些序列号进行重新排序 不关心数据包到达的顺序
因要添加额外的功能,传输速度较慢 速度较快
需要跟踪当前会话并且进行管理,需要更多的计算机资源 需要较少的计算机资源
常见程序和服务:HTTP、HTTPS、FTP、部分电脑游戏 常见程序和服务:DNS、IP通话、DHCP、部分电脑游戏
  • 不同服务或程序选择TCP或UDP是有原因的,比如DNS使用UDP是因为DNS请求丢失并不重要,计算机会检测是否得到DNS回复,如果没有计算机就将发送另一个DNS请求,不过这样的通信略有延迟。

3.端口和TCP/UDP之间的关系

端口并不是Internet协议或IP地址的一部分,它们是TCP和UDP传输协议的一部分。 因此任何数据流量被发送到一个IP地址意味着流量被发送到哪台计算机或服务器,而被发送到某个端口意味着流量被发送到哪个服务或程序:

  • 应用程序始终侦听特定端口以及特定传输协议(UDP 或 TCP),因此不仅需要知道使用的端口,还需要知道程序使用的传输协议,当要进行端口转发或允许流量通过防火墙时,这些额外的信息就变得很重要

4.什么是端口转发?

假设在家庭网络上安装了一个Web服务器,同时该网络上还连接了几台计算机。当有人从 Internet 浏览到家庭路由器的公共IP地址时,路由器如何知道它应该将流量传递到 Web 服务器?

此时就需要创建端口转发:

  • 路由器管理员需要LAN上的Web服务器想要侦听的端口,然后确保来自Internet的发送到这些端口的流量都在路由器中转发到正确的设备
  • 要自动化的方式实现端口转发需要使用到UPnP协议,但是该协议并不总是能正常工作

实际上,端口转发就是一个特殊类型的NAT。在下图设置端口转发规则后,来自Internet访问端口80/TCP的流量会被路由器转发到LAN中私有IP地址为192.168.1.2的Web服务器且端口80/TCP上:

如何配置端口转发呢?路由器中通常有一个可用的设置称为“端口转发”,需要首先选择应该转发到内部计算机的端口,然后选择转发到该端口的流量应该转发到哪个内部IP地址。同时可以为该计算机配置静态IP地址,要不然计算机更改其IP地址,端口转发规也将停止工作


5.UPnP协议

UPnP(Universal Plug n Play)表示即插即用:

  • 它可以使得连接到网络的计算机、路由等设备共享它们正在运行的服务信息,并且可以自动连接到其他设备的服务。比如一台储存了电影的计算机可以向在相同网络的其他设备告知该信息,当你启动电视机的时候就可以看这些电影
  • 路由器可以告知LAN上的计算机其有能力进行自动端口转发,这些计算机就会自动告诉路由器执行它们需要的端口转发。假如启动一个游戏并且游戏告诉计算机它需要几个端口转发,那么计算机可以要求路由器执行这些端口转发:

其实大部分设备都禁用了UPnP,需要手动去启动它,Windows 中,UPnP功能称为网络发现。因为它的作用就是让您计算机上的程序告诉家用路由器通过其保护机制打开漏洞。如果在您的家庭网络中启用了UPnP,计算机上的恶意软件可以使用UPnP随意打开家庭路由器安全功能的漏洞,让Internet上的攻击者直接进入您的家庭网络

参考

  1. https://www.homenethowto.com/ports-and-nat/ports-addresses-for-programs/

  2. https://www.homenethowto.com/ports-and-nat/udp-and-tcp-two-ways-of-sending-traffic/

  3. https://www.homenethowto.com/ports-and-nat/port-forward/

  4. https://www.homenethowto.com/ports-and-nat/upnp-automatic-port-forward/

端口、TCP/UDP、端口转发、UPnP相关推荐

  1. python测试udp端口_zabbix上使用外部检查的方式监测公网tcp/udp端口开放情况

    1.使用nmap程序可以监测公网tcp/udp开放情况,比较准确 2.zabbix服务器支持使用外部检查的方式定义监控项,需要自己编写脚本 3.脚本的思路使用nmap监测公网指定tcp/udp端口,使 ...

  2. linux udp 端口测试,RAKsmart:Linux下TCP/UDP 端口测试及验证方法说明

    RAKsmart:Linux下TCP/UDP 端口测试及验证方法说明2020-06-11 在 Linux 系统中,有时需要在系统中测试端口的连通性,以便确认系统的TCP.UDP协议栈是否可以正常运行. ...

  3. Tcp/Udp端口对照表

    Tcp/Udp端口對照 reserved 0/tcp Reserved [JBP] reserved 0/udp Reserved [JBP] tcpmux 1/tcp TCP Port Servic ...

  4. TCP/UDP 端口及部分端口的作用

    TCP/UDP 端口 TCP 和 UDP 都是 IP 层的传输协议,是 IP 与上层之间的处理接口.TCP 和 UDP 协议端口号被设计来区分运行在单个设备上的多重应用程序的 IP 地址. 由于同一台 ...

  5. Linux服务器上测试TCP/UDP端口的连通性

    目录 说明 测试tcp端口的连通性: 使用nc命令来测试udp端口的连通性: 使用nc命令来测试tcp端口的连通性: 使用案例如下: 说明 翻译自: How to Test Port[TCP/UDP] ...

  6. TCP/UDP端口连接测试

    TCP/UDP端口连接测试 TCP端口连接测试 测试主机与目标端口的网络是否通畅 telnet ip port UDP端口连接测试 1.测试目标端口是否正常(前提是目标主机上启动了服务端口,且本机与服 ...

  7. linux 开通udp 端口号,Linux 下 TCP/UDP 端口测试及验证方法说明

    Linux 下 TCP/UDP 端口测试及验证方法说明 在云服务器 ECS Linux 系统中,有时需要在系统中测试端口的连通性,以便确认系统的TCP.UDP协议栈是否可以正常运行.本文对此进行简要说 ...

  8. linux系统怎么测试udp端口通不通,怎么在Linux服务器上测试TCP/UDP端口的连通性?...

    翻译自: How to Test Port[TCP/UDP] Connectivity from a Linux Server (文档 ID 2212626.1) 适用于: Linux OS - Ve ...

  9. TCP端口和UDP端口有什么区别

    TCP端口和UDP端口区别: 1)TCP端口---传输控制协议,提供的是面向连接.可靠的字节流服务.当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据.TCP提供超时重 ...

  10. tcp端口和udp端口范围_TCP和UDP端口列表,名称和使用频率

    tcp端口和udp端口范围 Nmap tool provides a popular ports list as a database where this list is also used in ...

最新文章

  1. Solr部署如何启动
  2. R语言使用upper.tri函数、lower.tri函数、diag函数改变matrix矩阵上三角形、下三角形、对角线的数值
  3. 微信小程序电商系统省市区选择器(二)
  4. 用python操作mysql数据库(之批量插入数据)
  5. 哈夫曼树(最优树)及编码
  6. hdf5文件和csv的区别_使用HDF5文件并创建CSV文件
  7. linux使用find命令_如何在Linux中使用FIND
  8. 关于call和apply函数的区别及用法
  9. Learn OpenGL(七)——OpenGL中使用着色器的基本步骤及GLSL渲染简单示例
  10. backup exec 安装时报‘Microsoft sql express安装失败
  11. Java简单聊天室Socket服务器客户程序
  12. 杭州电子科技大学计算机考研资料汇总
  13. 第二次作业——时事点评
  14. amd显卡用黑苹果输出黑屏_AMD锐龙Ryzen系列黑苹果教程
  15. 大数据毕设 - 大数据二手房数据分析与可视化(python 爬虫)
  16. C++游戏——小胎大乱斗
  17. 一种高效的Polar码冻结比特编译码方法
  18. 一种TV端自动化测试应用OTA升级的方法
  19. 一直都在用的rgba与hex颜色系统你了解过吗?
  20. Symantec Backup Exec 2010 Agent For Linux安装

热门文章

  1. H5调用摄像头拍照,录音及选择文件
  2. 智能化、高效化、轻量化 助力 倾斜摄影单体化思路
  3. redis java.util.LinkedHashMap cannot be cast to XXX
  4. 简单使用exoplayer播放HLS
  5. Robust Network Traffic Classification
  6. 北理计算机网络实验报告,北京理工大学计算机网络实践ftp客户端实验报告.doc...
  7. Hadoop安装教程_单机/伪分布式配置_CentOS6.4/Hadoop2.6.0
  8. Cglib动态代理实现及原理
  9. win2003系统安装以及服务器ftp的配置
  10. Camera Metadata原理