当前位置:网站首页>TCP packet sticking problem
TCP packet sticking problem
2022-07-06 17:53:00 【TABE_】
Here's the catalog title
TCP Stick package problem
TCP Sticky packet means that the data of several packets sent by the sender arrive at the receiver and become a packet , From the receive buffer , The head of the next packet of data is next to the tail of the previous one , There are many reasons for sticking , It could be from the sender , It could be from the receiver .
cause TCP The reason for sticking the bag
Sender reason
The sending end sends multiple packets to the receiving end , More efficient sending to the receiver , So the optimization algorithm is used (Nagle Algorithm ), Will be multiple with smaller intervals 、 Data with a small amount of data , Merge into a large block of data , Then the packet is sealed .
TCP By default Nagle Algorithm ( The main role : Reduce the number of newspaper segments in the network ), and Nagle Algorithms do two things :
- Only the last group is confirmed , Will send the next packet
- Collect multiple subgroups , Send together when a confirmation arrives
Nagle The algorithm may cause packet sticking problem on the sender .
The receiver's reason
TCP When a packet is received , It will not be handed over to the application layer immediately for processing , In other words, the application layer does not immediately process . actually ,TCP Save the received packet in the receiving cache , The application then actively reads the received packets from the cache . thus , If TCP The speed of receiving packets to the cache is faster than that of applications reading packets from the cache , Multiple packages will be cached , It is possible for an application to read multiple packages that are glued together .
How to deal with it TCP Sticky package
If multiple groups of data sent by the sender are originally different parts of the same piece of data , For example, a file is divided into multiple parts and sent , At this time, of course, there is no need to deal with the sticking phenomenon . If multiple packets are irrelevant , Even juxtaposition , Then we must deal with the sticking phenomenon at this time
The sender
For the packet sticking problem caused by the sender , Can be closed by Nagle Algorithm to solve , Use TCP_NODELAY Option to turn off the algorithm .
The receiving party
The receiver has no way to deal with packet sticking , Only the application layer can handle the problem .
application layer
The solution of application layer is simple and feasible , It can not only solve the sticking problem of the receiver , It can also solve the packet sticking problem of the sender .
terms of settlement : Loop processing , When an application reads a packet from the receive cache , After reading a piece of data , You should cycle through the next piece of data , Until all the data is processed , But how to judge the length of each data ?
- Format data : Each data has a fixed format ( Start Rune , Terminator ), This method is simple and easy , However, when selecting the start and end characters, make sure that the beginning and ending characters are not included inside each data .
- Sending length : When sending each piece of data , Send the length of the data together , For example, before prescribing data 4 Bits are the length of the data , The application layer can judge the start and end position of each group according to its length .
Why? UDP No sticking problem
TCP In order to ensure reliable transmission and reduce additional overhead ( Every time the contract is awarded, it has to be verified ), Stream based transmission is adopted , Stream based transport does not consider messages to be one by one , Is unprotected message boundary ( Protect message boundaries : Transmission protocol refers to the transmission of data on the Internet as an independent message , The receiver can only accept one independent message at a time ).
UDP Is message transmission oriented , There are protected message boundaries , The receiving party accepts only one piece of information at a time , So there is no sticking problem .
for instance : There are three packets , The sizes are 2k、4k、6k, If the UDP Send it , No matter how big the receiver's receive cache is , We must send at least three times before we can send the data packet , But use TCP If the agreement is sent , We only need the receiver's receive cache to have 12k Size , You can put this... At one time 3 All packets have been sent .
边栏推荐
- Why should Li Shufu personally take charge of building mobile phones?
- Unity tips - draw aiming Center
- Spark accumulator and broadcast variables and beginners of sparksql
- 《ASP.NET Core 6框架揭秘》样章发布[200页/5章]
- Solution qui ne peut pas être retournée après la mise à jour du navigateur Web flutter
- It doesn't make sense without a distributed gateway
- Appium automated test scroll and drag_ and_ Drop slides according to element position
- Selected technical experts from China Mobile, ant, SF, and Xingsheng will show you the guarantee of architecture stability
- Run xv6 system
- OpenEuler 会长久吗
猜你喜欢
scratch疫情隔离和核酸检测模拟 电子学会图形化编程scratch等级考试三级真题和答案解析2022年6月
SQL statement optimization, order by desc speed optimization
What is the reason why the video cannot be played normally after the easycvr access device turns on the audio?
8位MCU跑RTOS有没有意义?
node の SQLite
PyTorch 提取中间层特征?
Zen integration nails, bugs, needs, etc. are reminded by nails
【MySQL入门】第三话 · MySQL中常见的数据类型
Pytorch extract middle layer features?
Unity小技巧 - 绘制瞄准准心
随机推荐
Distinguish between basic disk and dynamic disk RAID disk redundant array
面试突击62:group by 有哪些注意事项?
Unity小技巧 - 绘制瞄准准心
How to solve the error "press any to exit" when deploying multiple easycvr on one server?
C语言通过指针交换两个数
【MySQL入门】第三话 · MySQL中常见的数据类型
MarkDown语法——更好地写博客
[rapid environment construction] openharmony 10 minute tutorial (cub pie)
adb常用命令
Scratch epidemic isolation and nucleic acid detection Analog Electronics Society graphical programming scratch grade examination level 3 true questions and answers analysis June 2022
What is the reason why the video cannot be played normally after the easycvr access device turns on the audio?
Olivetin can safely run shell commands on Web pages (Part 1)
Unity粒子特效系列-闪星星的宝箱
传统家装有落差,VR全景家装让你体验新房落成效果
【ASM】字节码操作 ClassWriter 类介绍与使用
The NTFS format converter (convert.exe) is missing from the current system
【Android】Kotlin代码编写规范化文档
【Elastic】Elastic缺少xpack无法创建模板 unknown setting index.lifecycle.name index.lifecycle.rollover_alias
Wechat applet obtains mobile number
scratch疫情隔离和核酸检测模拟 电子学会图形化编程scratch等级考试三级真题和答案解析2022年6月