面向连接的TCP协议
TCP(Transmission Control Protocol,传输控制协议),属于TCP/IP协议模型中的传输层,是基于连接的协议。
TCP协议通过序列化应答和必要时重发数据包,为应用程序提供了可靠的传输流和虚拟连接服务。
三次握手
面向连接指的是在发送数据之前,必须与对方建立可靠的连接,就像打电话一样,你得先拨号,然后保证线路通畅,对方接听了电话,这时才能互相通话。这个建立连接的过程被称作“三次握手”。
举个微信发消息的例子来说,握手就是发送消息;建立连接就是确保双方可以投入到接下来的对话中去,不会咕咕咕;数据传输就是双方之后的聊天。
比如有个妹子在微信上找你问问题,那么看一看为什么三次握手是必要的。
如果只有一次握手
妹子:在吗?
(你没有回应……)
GG,你将永远失去她。
如果只有两次握手
妹子:在吗?
(一个小时过去了)
你:在
这时候妹子的问题已经解决了,而你却激动地等待着她的回复。
(她什么时候才能回我啊.jpg)
当然这不是我们想看到的结果
如果有三次握手
妹子:在吗?(第一次握手)
你:在(第二次握手)
妹子:问你一个问题(第三次握手)
这时,她确定你在,所以会准备问问题,你也确定她在,所以激动紧张的等待没有白费
接下来你们开始愉快地聊天(数据传输)
四次挥手
终止连接的过程称之为“四次挥手”或者“四次分手”(感觉后者不太吉利,以下就用挥手)
继续用刚才的微信发消息来举例:
你:我讲完了, 你懂了吗?(第一次挥手)
妹子:懂了,我也问完了(第二次挥手)
妹子:谢谢谢,那我下了(第三次挥手)
你:好,我也下了(第四次挥手)
如果只有一、二、三次挥手的话,结果很容易自己想到。
建立连接的三次握手,和终止连接的四次挥手,都是为了保证双方应答有效,避免让某一方持续等待接受数据而造成的资源浪费。在例子中体现为,开始聊天时不会咕咕咕,结束时不会突然去世。
无连接的UDP协议
UDP(User Datagram Protocol,用户数据报协议),属于TCP/IP模型中的传输层,它是一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。
TCP、UDP的优缺点及区别
特征点 | TCP | UDP |
---|---|---|
是否连接 | 面向连接 | 面向非连接 |
传输可靠性 | 可靠 | 不可靠、会丢包 |
速度 | 慢 | 快 |
资源占用 | 多(首部20字节) | 少(首部8字节) |
面向的对象 | 字节流 | 报文 |
连接类型 | 一对一 | 一对一、一对多、多对一、多对多 |
应用场景 | 传输数据量大 | 传输数据量小 |
注:传输可靠指的是,通过拥塞控制、流量控制、超时重发、丢弃重复数据等等可靠性检测手段,保证数据无差错、不丢失、不重复且按序到达。