TCP、UDP

TCP和UDP的区别

是否面向连接 :UDP 在传送数据之前不需要先建立连接。而 TCP 提供面向连接 的服务,在传送数据之前必须先建立连接 ,数据传送结束后要释放连接

是否是可靠传输 :远地主机在收到 UDP 报文后,不需要给出任何确认,并且不保证数据不丢失不保证是否顺序到达 。TCP 提供可靠的传输服务,TCP 在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制。通过 TCP 连接传输的数据,无差错、不丢失、不重复、并且按序到达

是否有状态:有状态说的是 TCP 会去记录自己发送消息的状态比如消息是否发送了、是否被接收了等等。为此 ,TCP 需要维持复杂的连接状态表。而 UDP 是无状态服务,只管发送不管后果。

传输效率:由于使用 TCP 进行传输的时候多了连接、确认、重传等机制,所以 TCP 的传输效率要比 UDP 低很多。

传输形式:TCP 是面向字节流的,UDP 是面向报文的。

首部开销:TCP 首部开销(20 ~ 60 字节)比 UDP 首部开销(8 字节)要大。

TCP和UDP的使用场景

UDP 一般用于即时通信,比如:语音、 视频、直播等等。这些场景对传输数据的准确性要求不是特别高,比如你看视频即使少个一两帧,实际给人的感觉区别也不大。

TCP 用于对传输准确性要求特别高的场景,比如文件传输、发送和接收邮件、远程登录等等

TCP的三次握手和四次挥手

三次握手过程中:一共涉及到三个包的传输。

如果第一次包没有成功发送到,即C给S的,那么C会超时重传,直到收到S的确认。

如果第二次包没有成功发送到,即S给C的确认,那么S会超时重传,直到收到S的确认。

如果第三次包没有成功发送到,即C给S的确认,分为三种情况:

①如果此时双方都没有数据发送,那么S会认为自己的消息没有传输到,会超时重传,直到收到C的确认。

②如果此时正好C要开始发数据了(因为在C的角度,三次握手已经建立好了),那么S收到C的data+ACK,自然会切换为established状态,并接受C的data。

③如果S有数据发送,数据发送不了,会一直周期性超时重传SYN + ACK,直到收到A的确认才可以发送数据。

注意,第三次传输如果丢包的话,只涉及S的超时重传,不涉及C!!!

**TCP的超时重传机制主要是针对数据传输的,而不是专门为了确认报文。**在TCP协议中,当一个确认(ACK)报文单独发送时(即不携带任何数据),如果这个ACK报文丢失,发送方不会等待一个超时时间然后重传这个ACK。

//TODO 四次挥手

相关推荐
xsc-xyc8 分钟前
用 Tailscale + Syncthing 实现手机、电脑与 NAS 的跨网络文件同步
linux·网络·网络安全·智能手机·电脑
Shepherd061919 分钟前
【IT 运维】Apache 使用 mod_remoteip 恢复 Cloudflare 后的真实访客 IP
运维·tcp/ip·apache
VidDown25 分钟前
视频帧率技术详解:从 24fps 到 120fps,帧率如何影响你的观看体验?
网络·网络协议·编辑器·音视频·视频编解码·视频
C++ 老炮儿的技术栈26 分钟前
Qt工控实战:自研机器人TCP长连接客户端(粘包处理+心跳保活+自动重连完整源码解析)
qt·tcp/ip·机器人
TechWayfarer29 分钟前
苏超赛事网站安全防护:WAF、DDoS与仿冒页面如何联动治理
网络·python·安全·flask·ddos
段一凡-华北理工大学1 小时前
LangChain框架在高炉炼铁智能化领域的应用~系列文章09:工具调用Tool — 让AI学会操作高炉仪表盘
网络·人工智能·架构·langchain·高炉炼铁·高炉智能化·高炉智能体
fofantasy1 小时前
NSK LH25FL 升级至 NH25EM 技术规格指南
服务器·网络·数据库·经验分享·规格说明书
梁辰兴1 小时前
计算机网络基础:报文鉴别
网络·计算机网络·计算机·计算机网络基础·梁辰兴·报文鉴别
hbugs0012 小时前
EVE-NG V7常用网络协议流量洞察Filter
网络·网络协议
qq_452396232 小时前
第十四篇:《K8s 网络模型与 CNI 插件(Calico、Flannel、Cilium)》
网络·kubernetes·php