TCP与UDP异同(tcp与udp的相同与不同)

网友投稿 295 2022-10-12


TCP与UDP异同(tcp与udp的相同与不同)

TCP与UDP异同

​​TCP/IP​​​模型的运输层有两个不同的协议:​​UDP​​​用户数据报协议与​​TCP​​传输控制协议。

相同点

​​TCP​​​与​​UDP​​都是运行在运输层的协议。​​TCP​​​与​​UDP​​的通信都需要开放端口。

不同点

TCP

​​TCP​​是面向连接的协议,提供全双工通信,需要建立链接之后再传输数据,数据传输负载相对较大。​​TCP​​提供可靠交付的服务,使用流量控制和拥塞控制等服务保证可靠通信。​​TCP​​​首部最小​​20​​​字节,最大​​60​​字节,包括源端口、目的端口、序号、确认号、数据偏移、控制标志、窗口、校验和、紧急指针、选项等信息。​​TCP​​只能是一对一通信。​​TCP​​面向字节流通信。​​TCP​​​保证数据传输的顺序,通过给​​TCP​​连接中传送数据流的每个字节都编上序号来确定传输顺序。​​TCP​​提供校验和、确认应答、序列号、超时重传、连接管理、流量控制、拥塞控制等功能。​​TCP​​适用于要求可靠传输的应用,如文件传输等

UDP

​​UDP​​是无连接的,即发送数据之前不需要建立连接,数据传输负载相对较小。​​UDP​​使用尽最大努力交付,即不保证可靠交付,同时也不使用流量控制和拥塞控制。​​UDP​​​首部​​8​​字节,包括源端口、目的端口、长度、校验和信息。​​UDP​​具有单播、多播、广播的功能,支持一对一、一对多、多对多、多对一的数据传输方式。​​UDP​​​是面向报文通信,对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界,在添加首部后就向下交付​​IP​​层。​​UDP​​不保证数据传输的顺序,需要应用层程序在数据段加入序号等方式控制顺序。​​UDP​​​只在​​IP​​的数据报服务之上增加了很少一点的功能,即端口的功能和差错检测的功能。​​UDP​​适用于实时应用,如网络电话、视频会议、直播等

相关问题

UDP实现可靠性传输

运输层无法保证数据的可靠传输,只能通过应用层来实现了,实现的方式可以参照​​TCP​​​可靠性传输的方式,只是实现不在传输层,实现转移到了应用层,主要通过实现确认机制、重传机制、窗口确认等机制来实现可靠传输,有​​RUDP​​​、​​RTP​​​、​​UDT​​​等开源程序利用​​UDP​​​实现了可靠的数据传输,此外有结合​​TCP​​​的可靠与​​UDP​​​速度的权衡​​KCP​​协议。

TCP短连接和长连接的区别

短连接:​​Client​​​向​​Server​​​发送消息,​​Server​​​回应​​Client​​​,然后一次读写就完成了,这时候双方任何一个都可以发起​​close​​​操作,不过一般都是​​Client​​​先发起​​close​​​操作。短连接一般只会在​​Client/Server​​​间传递一次读写操作。短链接管理起来比较简单,建立存在的连接都是有用的连接,不需要额外的控制手段,但是如果客户请求频繁,将在​​TCP​​​的建立和关闭操作上浪费时间和带宽。 长连接:​​​Client​​​与​​Server​​​完成一次读写之后,它们之间的连接并不会主动关闭,后续的读写操作会继续使用这个连接,长连接可以省去较多的​​TCP​​​建立和关闭的操作,减少浪费,节约时间,对于频繁请求资源的客户来说,较适用长连接,但是随着客户端连接越来越多,​​Server​​​负载会越来越大,此时就需要采取一些策略减少负载,例如关闭长时间未读写的链接​​LRU​​算法、限制客户端链接数量等。

TCP粘包拆包解决方案

由于​​TCP​​本身是面向字节流的,无法理解上层的业务数据,所以在底层是无法保证数据包不被拆分和重组的,这个问题只能通过上层的应用协议栈设计来解决。

消息定长:发送端将每个数据包封装为固定长度(不够的可以通过补​​0​​填充),这样接收端每次接收缓冲区中读取固定长度的数据就自然而然的把每个数据包拆分开来。设置消息边界:服务端从网络流中按消息边界分离出消息内容,在包尾增加回车换行符进行分割,例如​​FTP​​协议。将消息分为消息头和消息体:消息头中包含表示消息总长度(或者消息体长度)的字段。

每日一题

https://github.com/WindrunnerMax/EveryDay

参考

https://zhuanlan.zhihu.com/p/108822858


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:如何实现工厂生产能耗数据的无线监测?
下一篇:Java异常类型及处理
相关文章

 发表评论

暂时没有评论,来抢沙发吧~