TCP和UDP
2019-07-14 本文已影响0人
sydneywhatever
TCP是面向连接的协议,UDP是无连接的协议。
A给B送快递,A不管B在不在家,先送了再说,B碰巧在家快递就能收到,B不在家,快递就直接丢掉。这就是无连接的UDP协议。
A给B送快递,送之前先电话问问B在不在家,B不接电话不送,B接了电话回复不在家不送,问到一半信号不好还会重播,B接了电话并明确回复在家才约定时间派送,送之前先建立连接。这就是面向连接的TCP协议。
看起来UDP很不靠谱,这样的协议还有人用吗?UDP协议也有自身优势:效率高,速度快,占资源少。视频聊天、语音聊天、即时消息对速度要求高,丢几个包画面丢失几帧影响不大。但是视频网站使用的又是TCP协议,相比画面有马赛克,看视频时缓冲几秒再播放稍微能接受些。
TCP建立连接叫三次握手,断开连接时四次挥手。
三次握手过程:
1)A问B:你在家吗?
2)B回复A:我在的!
3)A再回复B:我知道你在家了。
接下来就可以愉快地派送快递了。
四次挥手过程:
1)A告诉B:我没有东西要送给你了;
2)B回复A:我知道了,你关闭连接吧,我再想想有没有东西需要发走的;
3)B告诉A:我没有需要发的快递,你走吧;
4)A回复B:我知道了,再见。
为什么建立连接三次就可以,断开连接需要四次?
因为TCP连接是全双工的,每个方向都必须要单独进行关闭。(单工通信:只能A向B发送数据;半双工:AB可以互发,但是同时只能有一个人在发;全双工:AB可以同时发送数据)
假设四次挥手的第二步,B有快递要发走,可以告诉A:帮我发一个快递,虽然A关闭了向B发送的连接,但是能收到B发过来的消息。