另一方面,在回答这个问题之前,必须考虑TCP协议为什么会丢包,以及在什么情况下会丢包。
1 .传输控制协议定义(TCP )是基于面向连接的可靠字节流的传输层通信协议。
2. TCP为了基于不可靠网络实现可靠的传输,一定存在丢包的问题。
3 .在通信过程中,如果数据丢失或丢包,其中最大的可能性是在发送或接收程序时出现了问题。
例如,我有两台服务器,a和b服务器。
如果a服务向b服务发送数据的频率太高,b服务将来不及处理,导致数据丢包。 (原因可能是程序逻辑问题、多线程同步问题或缓冲区溢出问题。)
如果a服务器不控制发送频率,或者重新发送数据的话,b服务器接受的数据会变少。 数据将会丢失
二、TCP协议丢包后如何解决丢包问题
不丢失数据包以满足TCP协议。 TCP协议有以下规定:
1 .数据切片:发送方将数据切片,接收方重组数据。 TCP决定切片的大小,控制切片和重组
2 .到达确认:在接收方接收到片数据的情况下,基于片数据号码向发送方发送确认
3 .超时重发:发送端在发送分片时设置超时定时器,定时器超时后,未收到相应确认的,重发分片数据
4 .滑动窗口: TCP连接的每个接收缓冲器的大小恒定,并允许接收方仅发送能够由另一个接收方缓冲器接收的数据。 TCP基于滑动窗口提供业务控制,以防止快主机溢出慢主机上的缓冲器
5 .失序处理:作为IP数据报传输的TCP分片到达时,可能会发生失序。 TCP对收到的数据进行排序,并将收到的数据按正确的顺序传递给APP应用层。
6 .重复处理:作为IP数据报传输的TCP分片发生重复,TCP接收方必须丢弃重复数据;
7 .数据检查: TCP保持其前端和数据检查。 这是端到端的检查,目的是检测数据传输过程中的任何变化。 如果经过分片检查或出现错误,TCP将放弃此分片,并且不会确认由于接收到此消息段而导致的端到端超时和重传
TCP握手3次,释放4次图:
【编辑推荐】
【责任编辑: ggdxtdtel:(010 ) 68476606】
好耶0