你从未见过如此详细的 TCP 八股文!

本文详细介绍了TCP和UDP两种传输层协议的区别,包括连接、服务对象、可靠性、拥塞控制、首部开销等方面。TCP是面向连接、可靠的,提供拥塞控制,适合用于需要稳定传输的场景,如HTTP、HTTPS等。而UDP则是无连接、尽最大努力交付的协议,适用于实时通信和多播等对速度要求较高的场景。文章还探讨了TCP的三次握手和四次挥手过程,以及拥塞控制机制,如超时重传、快速重传和滑动窗口等概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

TCP 是一个可靠数据传输的服务,它能确保接收端接收的网络包是无损坏、无间隔、非冗余和按序的。

TCP

​状态位:SYN 是发起一个连接,ACK 是回复,RST 是重新连接,FIN 是结束连接等。TCP 是面向连接的,因而双方要维护连接的状态。

TCP 是面向连接的、可靠的、基于字节流的传输层通信协议。

  • 面向连接:一定是「一对一」才能连接,不能像 UDP 协议可以一个主机同时向多个主机发送消息,也就是一对多是无法做到的;

  • 可靠的:无论的网络链路中出现了怎样的链路变化,TCP 都可以保证一个报文一定能够到达接收端;

  • 字节流:用户消息通过 TCP 协议传输时,消息可能会被操作系统「分组」成多个的 TCP 报文,如果接收方的程序如果不知道「消息的边界」,是无法读出一个有效的用户消息的。并且 TCP 报文是「有序的」,当「前一个」TCP 报文没有收到的时候,即使它先收到了后面的 TCP 报文,那么也不能扔给应用层去处理,同时对「重复」的 TCP 报文会自动丢弃。

UDP

​       目标和源端口:主要是告诉 UDP 协议应该把报文发给哪个进程。

  • 包长度:该字段保存了 UDP 首部的长度跟数据的长度之和。

  • 校验和:校验和是为了提供可靠的 UDP 首部和数据而设计,防止收到在网络传输中受损的 UDP包

两者区别

1. 连接

  • TCP 是面向连接的传输层协议,传输数据前先要建立连接。

  • UDP 是不需要连接,即刻传输数据。

2. 服务对象

  • TCP 是一对一的两点服务,即一条连接只有两个端点。

  • UDP 支持一对一、一对多、多对多的交互通信

3. 可靠性

  • TCP 是可靠交付数据的,数据可以无差错、不丢失、不重复、按需到达。

  • UDP 是尽最大努力交付,不保证可靠交付数据。

4. 拥塞控制

  • TCP 有拥塞控制。

  • UDP 则没有,即使网络非常拥堵了,也不会影响 UDP 的发送速率。

5. 首部开销

  • TCP 首部长度较长,会有一定的开销,首部在没有使用「选项」字段时是 20 个字节,如果使用了「选项」字段则会变长的。

  • UDP 首部只有 8 个字节,并且是固定不变的,开销较小。

6. 传输方式(面向字节流与面向报文)

TCP 是面向字节流的协议,UDP 是面向报文的协议。这是因为操作系统对 TCP 和 UDP 协议的发送方的机制不同。

相关视频讲解:

5000道“八股文”,还需要“死记硬背”吗?90分钟梳理清晰

5个网络问题,了解网络协议栈的哪些不为人知的八股文

网络原理tcp、udp,网络编程epoll、reactor,面试中正经“八股文”

C/C++Linux服务器开发高级架构师/C++后台开发架构师​免费学习地址icon-default.png?t=M85Bhttps://ke.qq.com/course/417774?flowToken=1013189

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值