当前位置:网站首页>How TCP protocol ensures reliable transmission
How TCP protocol ensures reliable transmission
2020-11-08 09:45:00 【Total cost】
About “tcp How protocols ensure reliable transmission ” This problem , The information on the Internet is uneven . Recently, I began to read some textbooks in the library , Read the following bibliography with questions about TCP Chapter of , The summary is recorded .
- University of Potsdam, Germany 《internetworking Technische Grundlagen und Anwendungen》/《 Network technology foundation and Application 》(christoph meinel,harald sack)
- 《 In depth understanding of computer networks 》( Wang Da )
- 《 Computer network tutorial top-down method 》(Behrouz A.Forouzan Firouz Mosharraf)
- 《 computer network 》( Zhang Zengke 、 Yang Xianhui )
- 《 computer network 》 The first 7 edition ( Xie Xiren )
Why? TCP We need reliable transmission
- The network layer is unreliable . The task of the network layer is only to select the appropriate inter network routing and switching nodes , Make sure the data is transmitted in time .
- Due to the nature of the transport layer , The upper level needs reliability . Therefore, the main task of transport layer is to make the best use of network resources according to the characteristics of communication subnet , And Reliability and economy The way , Between the conversation layers , Provide to build 、 Function of maintaining and canceling transmission connection , Responsible for reliable transmission of data .
- UDP By sacrificing reliability , In exchange for best effort delivery 、 High communication efficiency 、 Ensure the real-time characteristics of the data . Natural needs TCP Appearance , Come on Use needs complement each other .
So the above 3 spot , The burden of reliable transmission has been placed on TCP above .
TCP How to achieve reliable transmission
For the purpose of reliable transmission ,TCP Use 4 Solutions : Connection oriented transport mechanism 、 Timeout retransmission control 、 Variable sliding window flow control 、 Congestion control .
Connection oriented transport mechanism
Used Three handshakes 、 Four waves , This is more common , Everybody is familiar with , There is no redundancy .
The checksum , Confirm response (ACK), Serial number .
And it doesn't work for repetition ACK To deal with , Take it and discard it , Realize automatic retransmission request .
Timeout retransmission control
When the message is sent, the receiver's confirmation is not received within a certain period of time , The sender will retransmit . Every time a packet is sent , Just set up a Timeout retransmission timer , When the other party returns ack, To undo the set timeout timer . To achieve this , There are three points to note :
- Keep after sending copy , For retransmission , Received the return of the other party ack after , To clear the copy .
- Number .
- The time setting of the timeout retransmission timer takes the delay into account 、 Congestion and other uncertain factors , thus Retransmission time The setting will be longer than the average round-trip time of data packets .
Variable slide window flow control
The window is divided into sending window and receiving window . Briefly , The receiver puts the acceptable data size ( Accept window size ), adopt ACK Feedback to the sender , To set the coordinated sending content size . The details are as follows :
- When the sending data exceeds the size of the receiver window , Retransmit the excess ;
- When the sending data is smaller than the size of the receiver window , The sender continues to send the content ;
- Not for every segment ACK Reply to , When possible, one or more segments , Send a ACK;
- When the number of received message segments is missing , The received segment is stored in the cache , Wait for the sender to retransmit the missing segment ; Merge complete , Back again ACK; If the missing segment is not received for a long time , Then the message segments in the cache will be emptied .
Congestion control
There are four kinds of control algorithms : Slow start 、 Congestion avoidance 、 Fast retransmission and fast recovery .
- Slow start : Gradually increase the value of congestion window from small to large .
Initial value of congestion window = 1 The value of the maximum segment to two senders ;
Congestion window increases each time = min( The number of bytes of the newly received acknowledgement message , The value of the maximum message segment of the sender ).
- Congestion avoidance : Let the congestion window slow down and increase .
Every time I pass by RTT Just slide the window size and just add 1;
- Fast retransmission : The data received by the receiver shall be confirmed immediately , A packet returns a confirmation ACK, In order to know the loss of individual messages as soon as possible .
for example , When sending M3 Packet loss , The receiver only received M2 And M4 Packet time , The receiver returns in succession 3 individual M2 Of ACK To the sender ( The sender is missing M3 Little brother );
The sender received 3 A continuous M2 Of ACK after , immediately Retransmission M3 Data packets .
- Fast recovery : After encountering network congestion , Reduce congestion window immediately .
Set up a ssthresh As a starting point for using congestion avoidance algorithms , Through this ssthresh value It is half of the maximum threshold of sliding window .
Understand the above four algorithms , It's easy to look at the picture below :

summary :TCP Because it's in the transport layer , The essential , Solve the unreliable problem of the lower network layer , Provides a reliable connection to the session layer ; And realize the right to UDP The use of complementary .
TCP Reliability is mainly through connection oriented transport mechanism 、 Timeout retransmission control 、 Variable sliding window flow control 、 Congestion control implementation .
版权声明
本文为[Total cost]所创,转载请带上原文链接,感谢
边栏推荐
- 学习小结(关于深度学习、视觉和学习体会)
- laravel8更新之速率限制改进
- We interviewed the product manager of SQL server of Alibaba cloud database, and he said that it is enough to understand these four problems
- Python loop distinction (while loop and for loop)
- More than 50 object detection datasets from different industries
- 2020-11-05
- Littlest jupyterhub| 02 using nbgitpuller to distribute shared files
- Is software testing training class easy to find a job
- Rust: command line parameter and environment variable operation
- Tiktok live monitoring Api: random recommendation
猜你喜欢

Astra: the future of Apache Cassandra is cloud native

将“光头”识别为“足球”,AI 摄像头如何犯的错?

What is the difference between vivoy73s and vivoy70s

PCIe 枚举过程

laravel8更新之速率限制改进

Littlest jupyterhub| 02 using nbgitpuller to distribute shared files

Flink's sink: a preliminary study

Close to the double 11, he made up for two months and successfully took the offer from a large factory and transferred to Alibaba

5g/4g工业无线路由器

M 端软件产品设计思虑札记 - 知乎
随机推荐
python学习 day1——基础学习
Architect (November 2020)
next.js实现服务端缓存
Is software testing training class easy to find a job
分布式共识机制
Which is more worth starting with the difference between vivos7e and vivos7
Daily challenges of search engines_ 4_ External heterogeneous resources - Zhihu
比Python快20%,就问你兴不兴奋?
Recommend an economic science video, very valuable!
Oops, the system is under attack again
Tiktok live monitoring Api: random recommendation
Seven features of Python 3.9
来自不同行业领域的50多个对象检测数据集
Ulab 1.0.0 release
nvm
Flink的sink实战之一:初探
SQL Server 2008R2 18456错误解决方案
Game mathematical derivation AC code (high precision and low precision multiplication and division comparison) + 60 code (long long) + 20 point code (Full Permutation + deep search DFS)
推荐一部经济科普视频,很有价值!
ASP.NET MVC下基于异常处理的完整解决方案