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

相关推荐
lazy H3 小时前
【计算机网络】第 15 篇:Java BIO、NIO 与高并发网络通信——从 Socket 理解 I/O 模型
网络·后端·tcp/ip·计算机网络·nio·408
IT古董5 小时前
Modbus TCP 详解:工业设备通信协议与 MES 集成实战
网络·网络协议·tcp/ip
叼烟扛炮6 小时前
Linux 学习笔记(四十五):Web 安全基石——Cookie、Session 与 HTTPS 原理解析
linux·前端·网络·笔记·学习·tcp/ip·安全
tedcloud1237 小时前
Docker Compose 部署 Uptime Kuma:配置 HTTPS、QQ 邮箱告警与数据备份
服务器·网络协议·ui·docker·容器·https·开源
嵌入式学习菌7 小时前
HTTP/HTTPS、MQTT/MQTTS 区别
网络协议·http·https
cyf318 小时前
第 02 篇:ARP——IP 地址到 MAC 地址的“翻译官“
tcp/ip·计算机网络·wireshark·以太网·vmware·arp·地址解析协议
2501_9151063217 小时前
抓包抓到乱码或压缩字节怎么解析,TraceEagle五种查看模式和一键解码
网络协议·计算机网络·网络安全·ios·adb·https·udp
情 九17 小时前
MCP 实战 06:把 HTTP 接口接成工具,让 AI 帮你查数据
人工智能·网络协议·http·mcp
Da Da 泓18 小时前
五子棋 Web 端测试用例报告
前端·网络·websocket·网络协议·测试用例·项目
流浪00120 小时前
计算机网络篇14:传输层——UDP 协议:8 字节定长报头划出报文边界,16 位端口号完成分用
计算机网络·udp·udp包头结构