Tcp协议发送数据,粘包,拆包问题,这句话本身是错误的,tcp是协议,发送接收数据时并不会粘包,tcp,ip,只负责传输数据
粘包是应用层解析数据时,包1和包2粘连在一起,解析数据时,出现错误的,网络中,很多博主,就没搞清楚。
send,发送频率太快,发送包的时候,有可能发送1400字节,或100个字节,按流的方式发送,应用层很快频率,非阻塞去recv数据时,不一定能读到1400个字节,可能只有1000个,下次再去读取时,读到应用层发送的第一包里的后400个字节开头的数据包,出现粘包,解析数据头是出错,其实tcp传输数据时,没有包的概念,和uart串口一样,只有流的概念,tcp协议讲的很清晰,tcp是面向流的,一个一个字节流,
tcp传输时,只按流的方式发送,没有一包一包的概念,假如发送数据很大,tcp协议,自动分成多包一个一个字节进行发送,接收端接收到数据,会自动按包号,进行组合假如分成1,2,3,4,5包,接收端接收到1,2,4,5,底层协议自动组合,错误将自动重传,所以,tcp是可靠的传输。
这个包和应用层send发包不是一个概念,udp才是面向报文的,应用层按包发送接收,发送1400字节的包,udp只要网络正常,基本一定能收到1400个字节的包,tcp不一定能rec