端口
复习
- 自治系统与 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、端口
参考资料
- Wikipedia(zh):TCP/UDP端口列表:常见服务使用的端口号
- Wikipedia(zh):端口 (计算机网络):标识主机上应用通信端点的编号
思考题答案(仅供参考)
思考题 1
因为 IP 地址只能定位到哪一台主机,而一台主机上可能同时运行许多网络程序。数据包到达主机后,还需要区分交给哪个程序,这正是端口承担的职责。
思考题 2
因为 IP 地址在其中唯一定位了主机,端口号又在该主机内唯一定位了通信的程序。两者合在一起,就能在整个网络中唯一指出“哪台机器上的哪个程序”,因此可以作为通信端点。
协议
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。
封面图
设计师 | 南国微雪