当你在网上刷视频、和朋友语音通话、或者下载文件的时候,背后有两个“快递员”在默默工作——TCP和UDP。它们是互联网传输层的两大核心协议,负责把数据从一台设备送到另一台设备。虽然目标相同,但它们的做事方式截然不同。

用一个形象的比喻就能说清楚:TCP像打电话,UDP像寄信。

一、TCP:像打电话一样可靠

想象一下你给朋友打电话的过程:你要先拨号,等对方接听了,才能开始说话。通话过程中,你们一来一往,对方每说一句话你都能听到,如果没听清可以马上问“你再说一遍”。聊完之后,你们说“再见”然后挂断电话。

这就是TCP的工作方式——面向连接。

在TCP协议下,两台设备要通信,必须先建立连接。这个过程叫作“三次握手”:客户端先发一个“我想和你通信”的请求(SYN),服务器回复“收到,我准备好了”(SYN-ACK),客户端再确认一下“好的,那我们开始吧”(ACK)。三次握手结束后,连接才算正式建立。

建立连接之后,TCP会提供一系列“靠谱”的服务:

保证送达:每发送一个数据包,接收方都要回复一个“已收到”的确认(ACK)。如果发送方等不到确认,就会认为数据包丢了,自动重发一次。

按序到达:TCP给每个数据包编上序号,即使数据包在路上走散了,接收方也能按照序号把它们重新排好顺序。

没有重复:如果同一个数据包被重发了多次,接收方会识别出重复的包并丢弃,保证应用层拿到的数据不重不漏。

流量控制:TCP会根据接收方的处理能力调整发送速度。如果接收方处理不过来,就会告诉发送方“慢一点,我忙不过来了”。

正因为TCP这么“较真”,它非常适合那些绝对不能出错的场景:网页浏览(HTTP)、文件下载(FTP)、发送邮件(SMTP)、数据库连接等。你总不希望打开一个网页,显示的内容缺了一半吧?也不希望下载一个安装包,解压时发现文件损坏了。

不过,靠谱的代价是速度稍慢、资源消耗更大。TCP协议头最少20个字节,连接建立和维护都需要额外的开销。但好在对于大多数应用来说,这点开销完全值得。

二、UDP:像寄信一样高效

再想象一下寄信的场景:你写好信、填好地址、贴好邮票,往邮筒里一扔就完事了。你不需要提前和收信人“建立联系”,也不知道这封信什么时候能到,甚至不知道对方能不能收到——因为邮局不会给你回电话确认。

这就是UDP的工作方式——无连接。

UDP协议“简单粗暴”:想发数据就直接发,不打招呼、不握手、不确认、不重传。每个数据包都是一个独立的“数据报”,彼此之间没有任何关系。

由于省去了所有确认和重传的环节,UDP有两个显著优势:

速度快:没有握手、没有等待确认的延迟,数据可以源源不断地发出去。UDP协议头只有8个字节,比TCP小得多。

资源占用少:不需要维护连接状态,对系统资源要求低,能同时服务更多的客户端。

但缺点也很明显:不保证送达,不保证顺序,不保证不重复。数据包可能在路上丢失,可能后发的先到,可能收到重复的包——UDP统统不管。

那么,谁会用这么“不靠谱”的协议呢?恰恰是那些对速度要求极高、可以容忍少量丢包的场景:

视频直播:你宁可画面偶尔花一下,也不想等它把每一帧都确认重传——那早就卡死了。

在线游戏:角色移动的指令必须实时发送,迟到的数据没有意义,丢了就丢了,下一帧继续。

语音通话:如果说“你好”这个字丢了,你宁愿听到“好”字有点卡顿,也不愿意等它重传导致对方的话延迟几秒。

DNS域名解析:查询一个域名,发一个请求包,服务器回一个响应包,简单直接,没必要建立连接。

三、打电话 vs 寄信:一图读懂

把这两个比喻放在一起对比,区别就更清楚了:

建立连接

TCP(打电话):先拨号,等对方接听才能说话

UDP(寄信):直接丢进邮筒,不需要提前联系

可靠性

TCP(打电话):每句话都能听到,听不清就“再说一遍”

UDP(寄信):寄出去就不管了,对方收没收到不知道

顺序性

TCP(打电话):话一句接一句,不会乱

UDP(寄信):多封信可能先后顺序颠倒

速度

TCP(打电话):要说“喂”“听到了吗”,慢一点

UDP(寄信):扔进去就走,飞快

资源占用

TCP(打电话):全程占用一条电话线

UDP(寄信):占用的资源少得多

典型场景

TCP(打电话):重要的事情,比如网页、文件、邮件

UDP(寄信):实时的事情,比如视频、游戏、语音

四、为什么需要两种协议?

也许你会问:既然TCP这么可靠,为什么不全部用TCP?为什么还要保留UDP?

答案很简单:天下没有免费的午餐。 TCP的可靠性是用速度和资源换来的。在某些场景下,速度比完美更重要。

比如你正在和朋友视频通话,画面偶尔卡一下、声音偶尔糊一下,你还能接受。但如果因为重传丢包导致画面延迟2秒,对话就完全没法进行了。这种场景下,UDP的“快”比TCP的“稳”更实用。

反过来,你正在网银转账,哪怕慢1秒,你也愿意等,但绝不允许金额数字出错。这时候TCP的“稳”就至关重要。

所以,TCP和UDP不是谁好谁坏的关系,而是各有所长、互补共存。它们是互联网传输层的左膀右臂,共同支撑着各种各样的网络应用。返回搜狐,查看更多

Copyright © 2088 欧洲世界杯预选赛_赛程世界杯 - tvzfj.com All Rights Reserved.
友情链接