Scale-of-evaluation / daily-question

This repo is used to help you better understand the world,Enjoy!
MIT License
4 stars 2 forks source link

【09.03】什么是TCP粘包?如何避免粘包? #257

Open Derek-94tm opened 3 years ago

Derek-94tm commented 3 years ago

请在下方作答。

changjl317 commented 3 years ago

TCP 粘包:TCP粘包就是指发送方发送的若干包数据到达接收方时粘成了一包,从接收缓冲区来看,后一包数据的头紧接着前一包数据的尾,出现粘包的原因是多方面的,可能是来自发送方,也可能是来自接收方。 如何避免: (1)对于发送方引起的粘包现象,用户可通过编程设置来避免,TCP提供了强制数据立即传送的操作指令push,TCP软件收到该操作指令后,就立即将本段数据发送出去,而不必等待发送缓冲区满; (2)对于接收方引起的粘包,则可通过优化程序设计、精简接收进程工作量、提高接收进程优先级等措施,使其及时接收数据,从而尽量避免出现粘包现象; (3)由接收方控制,将一包数据按结构字段,人为控制分多次接收,然后合并,通过这种手段来避免粘包。