号外号外!!!---- TCP/UDP 浅析与区别

传输层中协议
在传输层是利用两种协议来接受应用层数据并进行传输,这两种协议有着迥然不同的作用与特点。一种是传输控制协议 TCP,另外一种是 数据报文协议 UDP。

TCP 协议
当两台计算机相互通信时,为了确保数据的完整可靠性。例如:我们在查看一个网页的时候不会缺少某个部分或则内容不会乱序等。我们就需要使用 TCP 协议来确保数据的完整可靠性。

一、TCP 连接建立
TCP 连接建立也称三次握手,如图:
在这里插入图片描述
在这里插入图片描述
第一次握手:客户端会生成一个随机的序列号 SYN ,并发送给服务端,请求发送完后,客户端便进入了 SYN-SENT 状态。

第二次握手:服务端接受到客户端发送的 SYN,并根据客户端发送的 SYN 序号值生成 ACK ,值为客户端所发送的 SYN + 1。与此同时生成一个服务端的 SYN 随机序列值,最后服务端将 ACK 和 SYN 一同发送给客户端,服务端回复完毕后便进入了 SYN-RECEIVED 状态。

第三次握手:客户端接受到了服务端的回复后,并根据接收到的服务端所回复的 SYN 生成 ACK,值为服务端所回复的 SYN + 1,请求发送完毕后,客户端便进入了 ESTABLISHED 状态。等到服务端收到客户端所发送的 ACK 时,服务端便也就进入了 ESTABLISHED 状态。自此,便建立了 TCP 连接。

问题:为什么需要三次握手,为什么不能两次握手?
1、当第一次握手时,客户端发送的是一个失效的连接请求;第二次握手,服务端接受到客户端所发送的 SYN 时,就给客户端发起了连接请求回复。倘若只有两次握手,此时客户端便和服务端建立连接,但是由于客户端发送的是一个失效的连接请求,因此后续客户端并不会向服务端发送相关请求,这便白白浪费了服务器资源。

2、tcp 协议是一个双工通信协议。单第一次握手时,证明客户端能发送数据;第二次握手时,证明服务端能接收并发送消息,倘若只有两次握手,则无法证明客户端能接收消息。

二、TCP 协议特性
面向连接性、可靠性、仅支持单播传输性、面向字节流性、提供拥塞控制性、提供双工控制性

三、TCP 连接断开
TCP 连接断开也称四次挥手,如图:
在这里插入图片描述
第一次挥手:客户端会生成一个随机的序列号 FIN 关闭标识 ,并发送给服务端。表示要单方面关闭数据的传输。

第二次挥手:服务端接收到客户端发送的 FIN 时,会根据 FIN 生成一个 ACK,值为 FIN + 1 并发送给客户端。表示收到客户端关闭连接。

第三次挥手:当服务端不再传输数据时,服务端会生成一个随机序列号 FIN 关闭标志,并发送给客户端。表示要单方面关闭数据的传输。

第四次挥手:客户端接收到服务端发送的 FIN 时,会根据 FIN 生成一个 ACK,值为 FIN + 1 并发送给服务端。表示收到服务端关闭连接。当服务端接受到 ACK 时,此时 TCP 连接断开。

问题:为什么是四次挥手,而不是三次挥手?
1、因为 TCP 是双工协议。第一次挥手时,客户端发送 FIN 标志,表示客户端不会再发送数据;第二次挥手时,服务端发送 ACK 标志,表示服务端不会再接收数据;第三次挥手时,服务端发送 FIN 标志,表示服务端不会再发送数据。倘若只有三次挥手,则无法知晓客户端此时是否关闭接收数据,因此为了确保双方都已彻底关闭连接(不再接收与发送数据),需要四次挥手来进行互相确认。

问题:为什么 TCP 支持半连接状态?
1、当第二次挥手后,此时服务端表示已关闭接收状态。但是此时可能还有数据服务端未完整的传输给客户端,因此这也是为什么第二次挥手后,服务端可客户端都是半关闭状态,服务端可以发送数据,客户端可以接收数据。

UDP协议
当两台计算机相互语音时,为了确保数据的高效实时性。例如:我们在利用两台网络设备进行语音时,为了确保语音的高效实时性。我们就需要使用 UDP 协议来确语音的高效实时性。

一、高效性
UDP 协议对于上层应用层所传来数据并不会做分包处理,它只会给整个数据报文加上它自己的特有标志符号,之后便直接传递给网络层。因为不需要分包等处理,因此 UDP 协议说传输的数据高于 TCP 协议。

二、不可靠性
TCP 协议绝大多数的性能时间消耗都是为了确保数据的可靠性。但是 UDP 协议不需要进行分包打标等可靠性处理,因此在高效性的同时又带来了一种不可靠性。

参考:
TCP 协议详解
TCP 和 UDP 区别

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值