你有没有遇到过这种情况:看视频时突然卡成PPT,但微信消息却一条不落?或者打游戏时明明网速很快,却总是延迟高得离谱?其实这些问题,很大程度上跟传输层用的是哪种协议有关。
TCP:靠谱的“快递员”
TCP(Transmission Control Protocol)就像一个特别较真的快递小哥。他送包裹不但要确认你收到了,还得确保每一件都没破损、顺序也没错。如果你收到一半,他会把没送到的部分重新发一遍。
比如你打开一个网页,里面包含文字、图片、样式表等一堆内容,这些数据必须完整无误地到达你的浏览器,否则页面可能就乱了。这时候就得靠 TCP 出马,它保证数据完整、有序、不丢包。
不过这种“事事确认”的方式也有代价——慢。每次发送都要等对方回个“收到”,来回折腾,自然耗时间。
UDP:快而不问结果的“飞毛腿”
UDP(User Datagram Protocol)则完全不同,他是个只管扔包裹、不管你收没收到的选手。发出去就完事,不重传、不排序、也不建立连接,速度自然快得多。
像在线游戏、直播、语音通话这类场景,实时性比完整性更重要。你说一句话,哪怕中间丢了几个字,对方也能根据上下文听懂;但如果每个包都等确认,那说话就变成对口型了。所以这类应用大多用 UDP,宁愿丢点数据,也要低延迟。
两个协议的端口机制一样
不管是 TCP 还是 UDP,它们都使用端口号来区分同一台设备上的不同应用。比如你同时在刷网页、看直播、聊微信,系统就是靠端口号知道哪个数据该给浏览器,哪个该给视频App。
常见的端口例子:
HTTP(网页):80(TCP)
HTTPS:443(TCP)
DNS 查询:53(常用 UDP)
视频会议:通常用 10000+ 的动态 UDP 端口
怎么选?看场景说话
文件下载、网页浏览、邮件收发这些不能出错的场景,首选 TCP。
而视频直播、网络电话、多人联机游戏,更看重速度和实时性,UDP 是主流选择。有些高级应用还会自己在 UDP 上加校验机制,比如 Google 的 QUIC 协议,既快又稳。
你家路由器里设置“端口转发”时,也常会看到要选 TCP 还是 UDP,搞不清的话两个都勾上,基本就没问题。