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 四次挥手

相关推荐
枷锁—sha5 小时前
【CTFshow-pwn系列】03_栈溢出【pwn 045】详解:Ret2Libc 之 32位动态泄露(补充本地 Libc 手动加载指南)
服务器·网络·网络安全·系统安全
liann1195 小时前
4.3.2_WEB——WEB后端语言——PHP
开发语言·前端·网络·安全·web安全·网络安全·php
byzh_rc5 小时前
[深度学习网络从入门到入土] 含并行连结的网络GoogLeNet
网络·人工智能·深度学习
乾元5 小时前
对抗性攻击:一张贴纸如何让自动驾驶视觉系统失效?
运维·网络·人工智能·安全·机器学习·自动驾驶
全栈前端老曹7 小时前
【Redis】Pipeline 与性能优化——批量命令处理、提升吞吐量、减少网络延迟
前端·网络·数据库·redis·缓存·性能优化·全栈
MediaTea8 小时前
Python:生成器对象的扩展接口
开发语言·网络·python
正儿八经的少年10 小时前
服务网关(Service Gateway)
运维·网络
末日汐10 小时前
应用层自定义协议与序列化
运维·服务器·网络
实时数据10 小时前
渗透测试步骤 信息收集:收集目标系统的相关信息,例如域名、IP地址、开放端口和服务等
网络·安全·web安全
小同志0010 小时前
网络原理 -KTTP/HTTPS(五) --认识响应“报头“(header) / “正⽂“(body)
java·网络·网络协议·http·https