你用手机刷短视频时,视频一帧一帧流畅播放;用微信发一条语音,对方几乎秒收——这些体验背后,离不开一种叫“面向连接”的网络传输协议。
连接,不是点个头就完事
想象一下打电话:你拨号,对方接起,双方确认“喂,听得到吗?”,通话中全程保持这条线路畅通,挂断才算结束。这个过程就是“面向连接”。它不急着传数据,先花点时间把路铺好、状态对齐、彼此确认好,再稳稳地传。
TCP 是最典型的例子
我们天天用的网页(HTTP)、邮件(SMTP)、文件下载(FTP),底层大多靠 TCP 协议干活。TCP 的三次握手就是面向连接的标志动作:
客户端 → 服务端:SYN(我想建连)
服务端 → 客户端:SYN+ACK(收到,我也同意)
客户端 → 服务端:ACK(好嘞,连上了)握手完成,才真正开始传数据。中间丢包了?TCP 会重发;顺序乱了?它帮你排好;网速忽快忽慢?它自动调窗口大小。所有这些“兜底”,都建立在“连接已建立”这个前提上。
和它对着干的是 UDP
UDP 就像往邮筒里塞信:写好地址扔进去,不管它到没到、有没有被拆开、是不是按顺序到的。没有握手,没有确认,没有重传。所以它快、轻量,适合直播、语音通话、游戏——哪怕偶尔卡一下、丢一帧,也比等重传强。但它不面向连接。
选哪个?看你要什么
做内部监控系统,要确保每条告警都到位,选 TCP;做在线多人射击游戏,动作同步必须快,宁可丢一两包也要低延迟,那就倾向 UDP。面向连接不是万能钥匙,而是权衡之后的选择。
路由器转发一个 TCP 包,会查连接状态表;而转发 UDP 包,只看目标 IP 和端口。这就是“连接”二字带来的真实差别——它让网络设备多记了一笔账,换来的是更可靠的交付。