tcp和udp的区别

半兽人 发表于: 2015-10-08   最后更新时间: 2021-07-28 16:19:30  
{{totalSubscript}} 订阅, 3,836 游览

在现实生活中,“要想富,先修路”;同时人总要“居有定所”,于是盖起了N多的房子。但是当你和同事商量好去做客的时候却发现,兜了半天就是找不到他家的房子。原因是路上没有指示牌,且所有的房子都没有门牌号码。所以你一怒之下,将有关部门举报了。几天过后门牌号码都钉在了房子的显著位置上。于是你再次和同事约定,按照朋友给的地址,顺利找到他家。可是,当你到了他家门口又遇到问题了:他家的房子非常的大,所以四处都装了门,有N个,你不知敲哪个门。

上面的比喻里:道路就不要说了,都是指网络中的硬件,光线、海底电缆...,路由器做指示牌,地址有现实中的xx省xx市xx路xxx号xx楼统一变为xxx.xxx.xxx.xxx的IP地址了;而那房子就是计算机/服务器,房子的N个门就是计算机的65535个端口。

说到TCP,你不能单纯的去用TCP连接理解网络实际工作过程。在我上面的例子中,代表“TCP连接”的是"你和朋友面对面接触并商量好"这个过程而已。如果你换个方式:你没见到他本人,只是给他留个便条,说你要去做客,然后你就去了,那这个过程就是一个UDP的过程,因为你到了他的办公桌前,留下了纸条,就视作建立了“UDP连接”。

TCP是可靠的连接,因为你和他当面锣对面鼓的商定了那件事情;而UDP是不可靠连接,因为你只是留了个便条给他,你不知道他是否收到了你的便条,天知道纸条是否被风扇吹到垃圾篓去了。但是显而易见的是,UDP更方便,而TCP很麻烦。

说到这些就不能不提到SOCKET这个重要的概念。一个著名的比喻是:你要打电话,首先必须要先把电话线接到电话插槽。然后你拿起电话给朋友打电话,电话通了,你问:“你是赵二吗?”,对方回答“是”,这样你们就建立了一次可靠连接;然后你说:“周六我去你家做客,准备好酒菜”;赵二回答:“好的”,这样你们就建立了二次可靠的连接---事情敲定!这就是TCP连接(两次握手)。然而当你拿起电话给朋友打电话,电话通了但一直没人接,几声之后转到录音电话上,你只好留言说我要去做客了云云,然后就挂断电话了。你也并不知道赵二是否听到了你的录音留言,这就是UDP的不可靠连接。

更新于 2021-07-28
在线,13分钟前登录

查看Linux更多相关的文章或提一个关于Linux的问题,也可以与我们一起分享文章