Keyboard shortcuts

Press or to navigate between chapters

Press ? to show this help

Press Esc to hide this help

端口

复习

  • 自治系统与 BGP:域间交换可达信息
  • IPv4 数据包:首部含说明上层协议的字段
  • 为什么还需要 IP:IP 提供端到端寻址

TL;DR

  • IP 地址定位到主机,端口定位到主机上的程序
  • 传输层用端口把数据交给正确的应用
  • 端口号是 16 位,范围 0 到 65535
  • “IP 地址 + 端口”共同标识一个通信端点

正文

  经过一路奔波,数据包终于到达了目标主机。可接下来还有个小问题:这台主机上同时跑着浏览器、聊天软件、游戏……这个包到底该交给哪个程序?

  IP 地址只告诉我们“哪台机器”,但一台机器上有许多程序。于是,需要再引入一层定位——端口(port)。

给程序发个门牌号

  端口可以理解成主机上每个应用程序的“门牌号”。当数据到达时,传输层根据端口号,把它交给对应的程序。

  一些端口是约定俗成的,比如:

  • 网页服务常用 80(HTTP)和 443(HTTPS)
  • 域名解析常用 53(DNS)

  有了端口,同一台主机上的多个程序,就能各自收发自己的数据,互不干扰。IP 地址负责找到大楼,端口负责找到房间。

端点 = IP + 端口

  一条通信连接,通常用**“IP 地址 + 端口”**来标识一个端点。比如“192.168.1.20:443”,既说明了哪台主机,也说明了主机上的哪个程序。

  你会发现,这又是一次“加一层”的经典操作:MAC 地址解决本地交付,IP 地址解决跨网络寻址,端口再在主机内部往下细分到程序。每一层负责一个范围,越往下越具体。

  既然端口解决了“交给谁”,那么“怎么交”就出现了分歧。传输层因此分成了两种截然不同的风格:一种极简,另一种把可靠性扛在自己肩上。先看极简的那位。

思考题 1

  为什么有了 IP 地址,还需要端口?

思考题 2

  “IP 地址 + 端口”为什么能唯一标识一个通信端点?

小结

知识点

  • 端口用于定位主机上的具体程序
  • 端口号 16 位,范围 0 到 65535
  • IP 加端口构成通信端点
  • 分层逐级细化:MAC、IP、端口

参考资料

  1. Wikipedia(zh):TCP/UDP端口列表:常见服务使用的端口号
  2. Wikipedia(zh):端口 (计算机网络):标识主机上应用通信端点的编号

思考题答案(仅供参考)

思考题 1

  因为 IP 地址只能定位到哪一台主机,而一台主机上可能同时运行许多网络程序。数据包到达主机后,还需要区分交给哪个程序,这正是端口承担的职责。

思考题 2

  因为 IP 地址在其中唯一定位了主机,端口号又在该主机内唯一定位了通信的程序。两者合在一起,就能在整个网络中唯一指出“哪台机器上的哪个程序”,因此可以作为通信端点。

协议

  本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

封面图

设计师 | 南国微雪