python网站和js做网站,关于政务网站建设工作情况的总结,找人做网站会不会被偷,网站腾讯备案从应用层到 TCP 传输层的多个数 据包是一连串的字节流是没有边界的#xff0c;而且 TCP 首部并没有记录数据包的长度#xff0c;所以 TCP 传输数据的时候可能会发送粘包和拆包的问题#xff1b;而 UDP 是基于数据报传输数据的#xff0c;UDP 首部也记录了数据报的长度…从应用层到 TCP 传输层的多个数 据包是一连串的字节流是没有边界的而且 TCP 首部并没有记录数据包的长度所以 TCP 传输数据的时候可能会发送粘包和拆包的问题而 UDP 是基于数据报传输数据的UDP 首部也记录了数据报的长度可以轻易的区分出不同的数据包的边界。 接下来看下 TCP 传输数据的几种情况首先第一种情况是正常的既没有发送粘包也没有发生拆包。 第二种情况发生了明显的粘包现象这种情况对于数据接收方来说很难处理。 接下来的两种情况发生了粘包和拆包的现象接收端收到的数据包要么是不完整的要么是多出来一 块儿。 造成粘包和拆包现象的原因 TCP 发送缓冲区剩余空间不足以发送一个完整的数据包将发生拆包 要发送的数据超过了最大报文长度的限制TCP 传输数据时进行拆包 要发送的数据包小于 TCP 发送缓冲区剩余空间TCP 将多个数据包写满发送缓冲区一次发送出 去将发生粘包接收端没有及时读取 TCP 发送缓冲区中的数据包将会发生粘包。 粘包拆包的解决方法 发送端给数据包添加首部首部中添加数据包的长度属性这样接收端通过首部中的长度字段就可以知道数据包的实际长度啦 针对发送的数据包小于缓冲区大小的情况发送端可以将不同的数据包规定成同样的长度不足这个长度的补充 0接收端从缓冲区读取固定的长度数据这样就可以区分不同的数据包 发送端通过给不同的数据包添加间隔符合确定边界接收端通过这个间隔符合就可以区分不同的数据包。