网站首页 > 博客文章 正文
(1)TCP是基于连接的,UDP是基于无连接的.
(2)TCP的数据是可靠的,UDP的数据是不可靠的.
(3)TCP的数据是有序的,UDP的数据是无序的.
(4)TCP不保存用户边界,UDP保存用户边界.
(5)TCP速度较慢,UDP速度较快.
(6)TCP是重量级的开销,UDP是轻量级的.
(7)TCP比UDP的头大.
(8)TCP可以进行流控,UDP不能.
(9)TCP和UDP编程模式不同.
总结:
TCP是面向连接的,可靠的,缓慢的,可靠交付以及保证消息顺序的协议。
UDP是无连接的,不可靠的,没有序列保证,但是一个快速传输的协议。
1.连接比较
TCP的连接流程:
UDP无连接
2.可靠性比较
TCP提供交付保证,这意味着一个使用TCP协议发送的消息是保证交付给客户端的。如果消息在传输过程中丢失,那么它将重发,这是由TCP协议本身控制的。UDP是不可靠的,它不提供任何交付的保证。一个数据报包在运输途中可能会丢失。这就是为什么UDP是不适合保证交付的项目.
3.有序性
除了提供交付保证,为TCP也保证了消息的有序性。该消息将以从服务器端发出的同样的顺序发送到客户端,尽管这些消息到网络的另一端时可能是无序的。TCP协议将会为你排好序。UDP不提供任何有序性或序列性的保证。数据包将以任何可能的顺序到达。这就是为什么TCP是适合需要顺序交付方式的应用,尽管有基于UDP的协议通过使用序列号和重传来提供有序和可靠性的应用,如TIBCO Rendezvous,他实际上就是一个基于UDP的应用。
4.数据边界
TCP不保存数据的边界,而UDP保证。在传输控制协议,数据以字节流的形式发送,并没有明显的标志表明传输信号消息(段)的边界。在UDP中,数据包单独发送的,只有当他们到达时,才会再次集成。包有明确的界限来哪些包已经收到,这意味着在消息发送后,在接收器接口将会有一个读操作,来生成一个完整的消息。虽然TCP也将在收集所有字节之后生成一个完整的消息,但是这些信息在传给传输给接受端之前将储存在TCP缓冲区,以确保更好的使用网络带宽.
5.传输速度
TCP速度比较慢,而UDP速度比较快,因为TCP必须创建连接,以保证消息的可靠交付和有序性,他需要做比UDP多的多的事。这就是为什么UDP更适用于对速度比较敏感的应用,例如:在线视频媒体,电视广播和多人在线游戏。
6.重量级&轻量级
TCP被认为是重量级的协议,而与之相比,UDP协议则是一个轻量级的协议。因为UDP传输的信息中不承担任何间接创造连接,保证交货或秩序的的信息。这也反映在用于承载元数据的头的大小。
7.报文头
TCP具有比UDP更大的头。一个TCP数据包报头的大小是20字节,UDP数据报报头是8个字节。TCP报头中包含序列号,ACK号,数据偏移量,保留,控制位,窗口,紧急指针,可选项,填充项,校验位,源端口和目的端口。而UDP报头只包含长度,源端口号,目的端口,和校验和。
8.流量控制
TCP有流量控制。在任何用户数据可以被发送之前,TCP需要三数据包来设置一个套接字连接。TCP处理的可靠性和拥塞控制。另一方面,UDP不能进行流量控制。
9.编程模式
需要C/C++ Linux服务器开发学习资料私信“资料”(资料包括C/C++,Linux,golang技术,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK,ffmpeg等),免费分享
猜你喜欢
- 2024-12-01 利用nginx搭建RTMP视频点播、直播、HLS服务器
- 2024-12-01 Nginx:为什么高性能?Master&worker如何配合?负载均衡了解吗?
- 2024-12-01 为什么 NGINX 的 reload 命令不是热加载?
- 2024-12-01 Docker实战-使用NGINX实现4层的负载均衡
- 2024-12-01 Linux网络编程-UDP和TCP协议详解
- 2024-12-01 nginx严重级别安全漏洞:DNS解析器不按堆大小写入漏洞
- 2024-12-01 Nginx的10个使用场景 # 强化学习
- 2024-12-01 Nginx如何实现四层负载均衡
- 2024-12-01 nginx服务器-四层代理与七层代理概要及应用场景
- 2024-12-01 nginx stream块的介绍
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)