TCP与DUP简单对比

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TCP与DUP简单对比相关的知识,希望对你有一定的参考价值。

  • 看回顾一下OSI 7层协议网络模型
    技术图片

  • 再回顾一下OSI每一层的作用
    技术图片

  • OSI 7层协议模型与TCP/IP 5层协议模型的对应关系
    技术图片
从上述图片中可以看出tcp与udp 是传输层的协议。

TCP与DUP比较:

1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接
2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付
3、tcp通过校验和,重传控制,序号标识,滑动窗口、确认应答实现可靠传输。如丢包时的重发控制,还可以对次序乱掉的分包进行顺序控制(TCP粘包处理)。
3、UDP具有较好的实时性,工作效率比TCP高,适用于对高速传输和实时性有较高的通信或广播通信。
4、TCP对系统资源要求较多,UDP对系统资源要求较少。

技术图片

TCP可能存在的问题:

TCP通信特点

  1. TCP 是流式协议没有消息边界,客户端向服务器端发送一次数据,可能会被服务器端分成多次收到。客户端向服务器端发送多少数据。服务器端可能一次全部收到。
    2.保证传输的可靠性,顺序。
    3.TCP有拥塞控制,所以数据包可能会延后发送。

粘包问题

1什么是 TCP 粘包?

TCP 粘包是指发送方发送的若干包数据?到?接收方接收时粘成一包,从接收缓冲区看,后一包数据的头紧接着前一包数据的尾。(多条信息可能会合成一条消息)

2 TCP 出现粘包的原因?

发送方:发送方需要等缓冲区满才发送出去,造成粘包
接收方:接收方不及时接收缓冲区的包,造成多个包接收

3.TCP粘包的处理

方式一:手动解决粘包,客户端发送明文消息,在消息结尾加上特定的EOF标记。服务端接收到消息后,通过特定EOF将数据报分割多条,每条即是原始消息。
方式二:客户端按照约定的封包类型对消息进行封包pack操作,服务端开启消息的包格式校验,符合条件后对消息进行解包操作。

技术图片

TCP消息传递过程

2.缓冲区拥堵或溢出

 每个 socket 被创建后,都会分配两个缓冲区,输入缓冲区和输出缓冲区。

write()/send() 并不立即向网络中传输数据,而是先将数据写入缓冲区中,再由TCP协议将数据从缓冲区发送到目标机器。
一旦将数据写入到缓冲区,函数就可以成功返回,不管它们有没有到达目标机器,也不管它们何时被发送到网络,这些都是TCP协议负责的事情。

 TCP协议独立于 write()/send() 函数,数据有可能刚被写入缓冲区就发送到网络,

也可能在缓冲区中不断积压,多次写入的数据被一次性发送到网络,
这取决于当时的网络情况、当前线程是否空闲等诸多因素,不由程序员控制。

以上是关于TCP与DUP简单对比的主要内容,如果未能解决你的问题,请参考以下文章

反向tcp shell编写

TCP DUP ACK抓包分析

dup和dup2函数简单使用

[转载] TCP与UDP对比

简单对比vue2.x与vue3.x响应式及新功能

RPC接口与REST对比