为什么只需三次握手而挥手要四次

     自己的理解,内容虽短但很好理解

     当服务端的LISTEN状态下的socket当收到SYN报文的连接请求后,它可以把ACK和SYN(ACK起应答的作用,SYN起建立连接的作用)放到一个报文里来发送,但关闭连接时,当收到对方的FIN报文通知时,它仅仅表示对方没有数据发给你了,但未必你所有的数据都全部发送给对方了,所以你可能未必去马上关闭socket,也可能你你需要发送一些数据给对方后再发送FIN报文给对方表示你同意现在关闭连接了。所以这里的ACK和FIN报文多数的情况下是分开发送的。

TCP (Transmission Control Protocol) 和 UDP (User Datagram Protocol) 都是网络通信协议,但它们有以下几个关键区别: 1. **连接性**: - TCP 是面向连接的,意味着数据传输前需要先建立连接。客户端发送一个 SYN 包请求建立连接,服务器回应SYN+ACK,然后双方交换完整的三次握手确认连接才开始数据传输。断开连接时也有严格的四次挥手过程。 - UDP 是无连接的,即不需要预先建立连接,发送数据之前只简单地分配一个临时的数据报文头,适合对延迟敏感的实时应用。 2. **可靠性**: - TCP 提供了可靠的数据传输服务,它通过序号、确认应答、流量控制和错误检测机制保证数据按顺序到达并且不会丢失,如果接收方收到错误的数据包,会通知发送方并重传缺失或损坏的部分。 - UDP 没有内置的错误检测或确认机制,它将数据包直接发送出去,数据可能会乱序、重复或丢弃,但速度通常更快。 3. **延迟**: - TCP 的特性使其在长距离、大流量的应用中可能存在较高的延迟,因为它需要完成连接、同步和确认流程。 - UDP 相对延迟较低,因为它是尽力而为的模式,更适合实时应用如视频流、在线游戏等,虽然偶尔可能出现丢包,但对于实时性要求高的场景影响较小。 4. **带宽占用**: - TCP 由于其流量控制和拥塞窗口管理,可能会消耗更多的带宽资源。 - UDP 单纯地将数据包发送出去,因此通常占用更少的带宽。 5. **应用场景**: - TCP 主要用于需要高可靠性和有序性的服务,比如HTTP、HTTPS、SMTP等。 - UDP 适用于对时间敏感、低延迟要求高的应用,如DNS查询、VoIP、在线直播等。 总结来说,TCP 更注重数据的完整性,适合需要保证数据准确送达的应用;UDP 则追求效率和即时性,适合那些能够容忍一些数据丢失或错误的应用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值