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

相关推荐
再创世纪10 小时前
让USB打印机变网络打印机,秀才USB打印服务器
linux·运维·网络
yugi98783812 小时前
异构网络下信道环境建模方法及应用
开发语言·网络
Xの哲學13 小时前
深入解析 Linux systemd: 现代初始化系统的设计与实现
linux·服务器·网络·算法·边缘计算
C_心欲无痕13 小时前
网络相关 - 强缓存与协商缓存讲解
前端·网络·网络协议·缓存
三两肉13 小时前
HTTP/1.1到HTTP/3:互联网通信协议的三代演进之路
网络·网络协议·http·http3·http2·http1.1
Jul7_LYY14 小时前
03雷达的有源干扰分类
网络·人工智能·分类
以太浮标14 小时前
华为eNSP模拟器综合实验之-DHCP服务中继配置案例
网络·华为·智能路由器·信息与通信
YJlio14 小时前
Kali Linux 外置无线网卡接入与识别排障(VMware 环境|合规学习版)
linux·网络·学习
Dillon Dong14 小时前
网络通讯:Wireshark常用的报文过滤指令
网络·测试工具·wireshark
Tony_long748314 小时前
锐捷交换机忘记密码怎么办
运维·网络·信息与通信