20天 - TCP 和 UDP 有什么区别?说说 TCP 的三次握手?TCP 是用来解决什么问题?

TCP 和 UDP 有什么区别?

TCP(传输控制协议)和 UDP(用户数据报协议)都是传输层的网络协议,它们的主要区别如下:

连接方式

  • TCP:面向连接的协议,类似于打电话,在数据传输之前需要建立连接,通信结束后需要断开连接。
  • UDP:无连接的协议,类似于寄信,发送数据时不需要建立连接,直接将数据报发送出去。

可靠性

  • TCP:提供可靠的、字节流服务。发送端确保数据的完整传输,接收端收到数据后需要发送确认信息,如果发送端没有收到确认信息,会重新发送数据。
  • UDP:不保证数据传输的可靠性,不提供确认信息和重传机制。发送端发送数据后不关心接收端是否收到,数据可能丢失或顺序混乱。

传输速度

  • TCP:由于需要建立连接、确认数据和重传机制,速度相对较慢。
  • UDP:没有连接建立和数据确认等过程,传输速度更快。

数据传输形式

  • TCP:基于字节流,将数据视为连续的字节序列进行传输,接收端需要根据应用层协议来解析数据。
  • UDP:基于数据报,每个数据报都有独立的包头和数据部分,接收端收到的是完整独立的数据报。

使用场景

  • TCP:适用于对数据准确性要求高、数据传输量大的场景,如网页浏览、文件传输、电子邮件等。
  • UDP:适用于对实时性要求高、数据传输量小的场景,如视频直播、在线游戏、语音通话等。

总结

TCP 强调数据传输的可靠性和完整性,适用于需要确保数据准确到达的场景;UDP 则更注重传输速度和实时性,适用于对数据丢失不太敏感、追求快速传输的场景。

说说 TCP 的三次握手?

TCP 的三次握手是建立连接的过程,确保双方已准备好进行数据传输。具体步骤如下:

  1. 第一次握手:客户端向服务器发送一个带有 SYN(同步序列编号)标志的数据包,请求建立连接。这个数据包还包含客户端的初始序列号(ISN),用于后续的数据同步。
  2. 第二次握手:服务器收到客户端的 SYN 数据包后,确认客户端的请求,并回送一个带有 SYN 和 ACK(确认)标志的数据包。这个数据包包含服务器的初始序列号,同时将客户端的序列号加 1 作为确认。
  3. 第三次握手:客户端收到服务器的 SYN+ACK 数据包后,发送一个带有 ACK 标志的数据包作为确认,将服务器的序列号加 1 作为确认。服务器收到这个 ACK 数据包后,连接建立完成,双方可以开始数据传输。

三次握手的意义

  • 确保双方都已准备好进行通信:通过三次握手,客户端和服务器都能确认对方收到了自己的连接请求和确认信息,确保了连接的可靠性。
  • 同步序列号:双方交换初始序列号,用于后续的数据传输中的数据顺序控制和丢失重传。

示例

假设客户端的初始序列号为 X,服务器的初始序列号为 Y

  1. 客户端发送 SYN 数据包,序列号为 X
  2. 服务器收到后,发送 SYN+ACK 数据包,序列号为 Y,确认号为 X+1
  3. 客户端收到后,发送 ACK 数据包,序列号为 X+1,确认号为 Y+1

通过这三次握手,客户端和服务器建立了一个可靠的 TCP 连接,可以开始正式的数据传输

TCP 是用来解决什么问题?

TCP(传输控制协议)主要用于解决网络数据传输中的可靠性问题,确保数据能够完整、准确地从发送端传输到接收端。以下是TCP解决的主要问题:

1. 数据丢失

  • 问题:网络传输中数据包可能丢失。
  • 解决方案:TCP通过确认机制和重传机制来解决。发送方在发送数据后会等待接收方的确认信息(ACK)。如果发送方在超时时间内没有收到确认信息,就会认为数据包丢失,并重新发送丢失的数据包。

2. 数据重复

  • 问题:网络传输中数据包可能重复到达。
  • 解决方案:TCP使用序列号来标识每个数据包。接收方通过检查序列号来判断数据包是否重复,如果重复则丢弃。

3. 数据顺序错乱

  • 问题:网络传输中数据包可能顺序错乱。
  • 解决方案:TCP使用序列号和确认号来重组数据包,确保接收方收到的数据是按正确顺序排列的。

4. 网络拥塞

  • 问题:网络传输中可能出现拥塞,导致数据传输变慢或丢包。
  • 解决方案:TCP通过拥塞控制算法(如慢启动、拥塞避免等)来动态调整发送方的数据发送速率,以适应网络的当前状况。

5. 连接管理

  • 问题:如何确保双方在数据传输前都已准备好。
  • 解决方案:TCP通过三次握手来建立可靠的连接,确保双方都已准备好进行数据传输。

6. 数据完整性

  • 问题:如何确保数据在传输过程中未被篡改。
  • 解决方案:TCP使用校验和来验证数据的完整性。接收方在收到数据后会计算校验和,如果与发送方的校验和不一致,则认为数据被篡改或损坏,要求重传。

总结

TCP通过上述机制确保了数据传输的可靠性、顺序性和完整性,适用于对数据准确性要求高的场景,如网页浏览、文件传输、电子邮件等。

相关推荐
无敌最俊朗@1 小时前
WebSocket与Webhook:实时通信技术对比
网络·websocket·网络协议
2301_773730313 小时前
系统编程—IPC进程间通信
网络·网络协议
fiveym4 小时前
Apache HTTP 服务搭建全攻略
网络协议·http·apache
老蒋新思维4 小时前
创客匠人推演:当知识IP成为“数字心智”的架构师——论下一代认知服务的形态
网络·人工智能·网络协议·tcp/ip·机器学习·创始人ip·创客匠人
BuffaloBit5 小时前
5G 核心网架构入门
网络协议·5g·架构
2501_915106326 小时前
HTTP 协议详解,HTTP 协议在真实运行环境中的表现差异
网络·网络协议·http·ios·小程序·uni-app·iphone
老蒋新思维7 小时前
创客匠人:从个人IP到知识变现,如何构建可持续的内容生态?
大数据·网络·人工智能·网络协议·tcp/ip·创客匠人·知识变现
从零开始学习人工智能7 小时前
解决Docker容器无法访问宿主机IP和端口的全维度实践指南
tcp/ip·docker·容器
老蒋新思维8 小时前
创客匠人洞察:从“个人品牌”到“系统物种”——知识IP的终极进化之路
网络·人工智能·网络协议·tcp/ip·重构·创客匠人·知识变现