什么是端口?

什么是端口?它们是如何工作的?

在先前的演示中,我们介绍了 IP 地址以及路由器如何根据地址的前缀部分制定决策,从而将数据包从源主机路由到目标主机。我们使用了邮政服务作为类比,将这种前缀比喻为邮政编码,并将 IP 地址的其余部分比喻为街道地址。

如果还是使用这个邮政服务的类比,收件人姓名对应的是什么呢?在书写信函的地址时,我们会加上收件人的姓名,比如 Lucille Ball。当然,邮政局并不关心收件人的姓名,但在信函送到目标地址后,那里会有某个人查看收件人姓名,然后把这封信交给相应的人。因为很可能有很多人在同一个地址处生活。

对于互联网主机来说,情况也是如此。主机会运行多个进程或应用程序。例如,一台服务器可能运行着多个服务,如 Web 和电子邮件。笔记本电脑等用户设备可能运行多个客户端,如网页浏览器和电子邮件阅读器。在一个数据包传送到主机处时,我们要如何确定应该把它交付给哪个进程? 这就是 TCP 和 UDP 的作用所在。

传输控制协议 (TCP) 和用户数据报协议 (UDP):

  • 是互联网协议 (IP) 套件的一部分,有时也称为 TCP/IP。
  • 它们构成我们所说的传输层,决定了进程间通信。 
  • TCP 和 UDP 通过端口号识别通信端点。端口号就好比信件中的收件人姓名。

 

我们来更具体地介绍一下 TCP。 TCP 用来将字节流从发件人发给收件人。它能确保按顺序可靠地传输字节流。请注意,仅凭 IP 地址本身并不能保证次序,甚至没法保证送达。IP 数据包可能会被丢弃,也确实会发生这种情况。TCP 将数据流拆分成片段,随后在带有序列号的 IP 数据包内传输每一个片段,通过这种方式来保证按照顺序加以传输。接收方在收到片段后,会向发送方回发一个确认报文,如果发送方未收到确认报文,那么在达到超时阈值后,会重新传输相应的片段。

 

再来说 UDP。UDP 用来将数据包从发送方发送到接收方。数据报在 IP 数据包内传输。UDP 数据报不保证送达。UDP 数据报与 IP 数据包之间的唯一主要区别就在于端口号。 

通过端口通信的进程由(16 位的)编号识别。每个 IP 数据包都会添加源和目标端口号。端口号的书写格式通常是为 IP 地址附上“:<端口号>”。 

每个主机都维护着一份表格,用来将端口号映射到进程,在有数据包送达主机时,主机会使用该表格来将数据包路由到正确的进程。在这个例子中,目标端口 443 与第二行匹配,所以数据包会传输到 Web 服务器。

那么,我们如何来确定端口号?对于服务器,答案就是服务会侦听众所周知的端口号(1-1023 范围内)。例如:

  • Web (HTTP) 是端口 80。
  • 安全 Web (HTTPS) 是端口 443,
  • DNS 是端口 43。

客户端选择对应于所请求服务的目标端口号。在示例中,我们在与 HTTPS 服务通信,所以目标端口号是 443。

 

对于源端口号,客户端从所谓的临时端口(范围为 1024-65535)发起通信。它会选择该范围内当前未在使用的任何端口号。在本例中,客户端选择了端口号为 12627 的端口,所以这就是源端口号。

在服务器做出响应时,源和目标则调换角色。

但我们如何确定这些 IP 地址?答案就是命名服务,我们会在下一次的演示中加以介绍。

在有关寻址的内容结束之前,我们先来进行总结,一起回顾一下邮政服务的类比。端口号类似于收件人姓名。就像只有目标地址的居住者会关注收件人姓名一样,仅有主机本身必须关注端口号。在查看 IP 地址时,我们将其分成两大部分,前缀就好比邮政编码,IP 地址的其余部分就像街道地址。在我们的例子中,仅有 90210 邮局必须关注街道地址,同样,仅有 MIT 网络内的路由器必须关注整个 IP 地址。在 90210 邮局的范围之外,投递信件时只需要邮政编码,因此在 MIT 之外,路由数据包时只需要前缀。

回顾:比如 Web 请求和响应等应用程序消息置于 IP 数据包内。它们通常是加密的。IP 数据包根据源和目标 IP 地址和端口号进行寻址。

互联网协议地址或 IP 地址用来通过网络连接传输数据。此地址包含一个数字字符串,它起到唯一标识符的作用。端口号是 16 位的无符号整数,将附加到此字符串,并使用一个冒号分隔,例如 17.253.207.54: 443。这个附加的数字就叫做“端口号”,用来在互联网流量送达服务器时为流量提供指引。传输控制协议 (TCP) 和用户数据报协议 (UDP) 用来将数据包路由到正确的进程。端口号数量众多,它们是互联网运作机制中不可或缺的要素。

端口是如何工作的?

自从计算技术问世以来,计算机端口就存在。端口号的概念最初由高级研究计划局网络 (ARPANET) 提出。

端口用来标识连接端点,并将数据传送到服务。端口分为虚拟和物理两种。USB 端口是我们常见的一种物理端口,当我们提到计算机端口时,脑海中立即就会浮现出此类端口。但虚拟端口要更加常见,端口也是以这种形式影响着互联网的运作机制。端口是 OSI 互联网模型第 4 层的一部分,也就是传输层。

为了解释端口的工作原理,我们需要回到信件的类比,收件人是“加州贝弗利山罗克斯伯里大道 1000 号 Lucille Ball,邮编 90210”。在我们的 IP 地址文章中,我们用这个信件类比解释了虚拟地址,说明了 IP 地址如何将“信件”路由到目的地。在邮政服务类比中,将信件送达到最终地址后,信件上的收件人姓名指明了这封信件究竟要交给谁;从这个角度来理解,端口就等同于“Lucille Ball”这个姓名。

虚拟端口非常多,端口号的范围从 0 到 65535。互联网协议 TCP 和 UDP 决定了数据包发送到哪个进程,其依据是服务器-客户端架构,我们在有关 HTTP(超文本传输协议) 和 HTTPS的其他网页上介绍了相关内容。

什么是主机?

主机(例如服务器)通常运行多个进程或应用程序,比如 Web 和电子邮件。每个主机都维护着一份表格,用来将端口号映射到进程,在有数据包送达主机时,主机会使用该表格来将数据包路由到正确的进程或服务。笔记本电脑等终端设备通常运行多个客户端,如网页浏览器和电子邮件阅读器。在数据包送达目标地址时,TCP 和 UDP 协议决定了要将数据包发到何处。尽管这两种协议都用来传送流量,但它们有着不同的功能。

什么是 TCP?

TCP 即传输控制协议,它使用字节流将数据从发送方发送到接收方。TCP 的核心功能就是可以确保按顺序可靠地传输字节流。IP 数据包在路由过程中可能会被丢弃,所以这种功能必不可少。TCP 将数据流拆分成片段,随后在带有序列号的 IP 数据包内传输每一个片段,通过这种方式来保证按照顺序加以传输;接收方会在收到 IP 数据包序列时加以确认。如果没有收到某个 IP 数据包序列的确认,发送方会在达到超时阈值之后重新发送未收到的片段。

什么是 UDP?

UDP 与 TCP 之间的主要区别在于,UDP 不提供送达保证。UDP 用来将数据包从发送方发送到接收方。数据报在 IP 数据包内传输。端口号是 UDP 数据报与 IP 数据包之间的唯一重要区别。但 UDP 不提供送达保证,因此需要安全、可靠的数据传输的服务(如电子邮件和网站)会选择 TCP 端口。

服务端口号示例

可用端口号共有 65,535 个。服务会侦听众所周知的端口号,即 1-1023 范围内的端口号。部分常用的服务端口号如下:

  • 端口 80:Web (HTTP)
  • 端口 443:安全 Web (HTTPS)
  • 端口 43:DNS(域名系统)
  • 端口 3389:远程桌面协议 (RDP)
  • 端口 21:文件传输协议 (FTP)
  • 端口 22:安全外壳 (SSH),用于创建安全网络连接的隧道协议

在我们的 IP 地址示例 (17.253.207.54: 443) 中,通信通过 HTTPS 协议完成,即使用 443 端口。

源端口号

源端口号使用 1024-65535 范围内的“临时端口”。该范围内当前未使用的任何端口号均可供选择。

互联网号码分配局 (IANA) 维护端口号列表。IANA 将端口 0 指定为保留端口,不可使用。

Akamai、端口和在线攻击防御

基于云的网络攻击无处不在。Akamai 致力于杜绝黑客和网络犯罪分子利用互联网发动的网络攻击。针对 Web 服务器的分布式拒绝服务 (DDoS) 攻击可能会造成 IP 数据包丢失。未受保护的端口或给漏洞利用留下机会的端口是公认的攻击媒介。我们的专用基础架构提供 DDoS 防范功能,可在云端阻止 DDoS 攻击,避免其侵扰应用程序、数据中心和面向互联网的(公有或私有)基础架构。Akamai 拥有独特的架构,可将 DNS 资源划分到彼此不重叠的多个专用云环境之中。超过 225 名一线 SOCC 响应人员是 Akamai 的有力后盾;我们的全托管式解决方案可过滤攻击流量、拦截各种重大攻击,让您的防御人员可以腾出时间专注于高优先级的安全计划。Akamai 为现代企业提供保护,抵御云和分散式团队造成的漏洞。

Akamai 与网络安全

Akamai 对 IP、HTTP、HTTPS 等协议和端口的工作原理有着深刻理解,并藉此在网络安全领域树立了自身的威信。除了安全解决方案之外,Akamai 还通过云计算解决方案套件优化云计算、提供安全防护、可扩展性和监测能力,并且不受云服务提供商的束缚。我们的云计算产品套件包括 Download Delivery 产品线,能够优化全球范围内的每一次大型 HTTP 文件下载。

常见问题

端口可以是虚拟端口或物理端口,用于标识网络的起点和终点。虚拟端口会分配到一个 16 位的唯一编号,用于标识连接端点并将数据传送到特定服务或进程。端口用于将不同类型的流量传传送到设备,如电子邮件和网页。

端口使用两种协议:传输控制协议 (TCP) 和用户数据报协议 (UDP)。TCP 能提供更可靠的服务,因为它采用按顺序传送字节流的方式,将数据包分成多个数据流;任何未确认的数据流都会被重新发送。

端口号范围为 0 至 65535。1-1023 的编号分配给服务,1024 至 65535 是用于标识源的临时端口。端口 0 被 互联网号码分配局 指定为“保留”。

攻击者可以扫描端口,以寻找可利用的开放端口。防火墙根据安全规则阻止或允许流量。黑客会尝试利用开放端口传输恶意流量。防火墙会阻止除某些基本服务外的所有端口流量,如用于电子邮件的 25 端口、用于 HTTP 网络流量的 80 端口,及用于安全 HTTPS 网络流量的 443 端口。端口 3389 用于 RDP 流量,并且是公认的攻击媒介 ,黑客会寻找 RDP 中的漏洞,并将其用于勒索软件攻击和其他漏洞利用攻击。

主机(例如服务器)通常运行多个进程或应用程序,比如 Web 和电子邮件。每个主机都维护着一份表格,用来将端口号映射到进程,在有数据包送达主机时,主机会使用该表格来将数据包路由到正确的进程或服务。笔记本电脑等终端设备通常运行多个客户端,如网页浏览器和电子邮件阅读器。在数据包送达目标地址时,TCP 和 UDP 协议决定了要将数据包发到何处。尽管这两种协议都用来传送流量,但它们有着不同的功能。

TCP 即传输控制协议,它使用字节流将数据从发送方发送到接收方。TCP 的核心功能就是可以确保按顺序可靠地传输字节流。IP 数据包在路由过程中可能会被丢弃,所以这种功能必不可少。TCP 将数据流拆分成片段,随后在带有序列号的 IP 数据包内传输每一个片段,通过这种方式来保证按照顺序加以传输;接收方会在收到 IP 数据包序列时加以确认。如果没有收到某个 IP 数据包序列的确认,发送方会在达到超时阈值之后重新发送未收到的片段。

UDP 与 TCP 之间的主要区别在于,UDP 不提供送达保证。UDP 用来将数据包从发送方发送到接收方。数据报在 IP 数据包内传输。端口号是 UDP 数据报与 IP 数据包之间的唯一重要区别。但 UDP 不提供送达保证,因此需要安全、可靠的数据传输的服务(如电子邮件和网站)会选择 TCP 端口。

Why customers choose Akamai

Akamai is the cybersecurity and cloud computing company that powers and protects business online. Our market-leading security solutions, superior threat intelligence, and global operations team provide defense in depth to safeguard enterprise data and applications everywhere. Akamai’s full-stack cloud computing solutions deliver performance and affordability on the world’s most distributed platform. Global enterprises trust Akamai to provide the industry-leading reliability, scale, and expertise they need to grow their business with confidence.

探索 Akamai 的所有安全解决方案