当前位置:网站首页>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]所创,转载请带上原文链接,感谢
边栏推荐
- The difference between vivoy 73s and glory 30 Youth Edition
- [data structure Python description] use hash table to manually implement a dictionary class based on Python interpreter
- Python learning Day1 -- Basic Learning
- python_scrapy_房天下
- 来自不同行业领域的50多个对象检测数据集
- VC++指定目录下文件按时间排序输出
- That's what software testing is all about?!
- 来自不同行业领域的50多个对象检测数据集
- python 循环区分(while循环和for循环)
- 我们采访了阿里云云数据库SQL Server的产品经理,他说了解这四个问题就可以了...
猜你喜欢
413【毕设课设】基于51单片机无线zigbee无线智能家居光照温湿度传输监测系统
将“光头”识别为“足球”,AI 摄像头如何犯的错?
IOS learning note 2 [problems and solutions encountered during the installation and use of cocopods] [update 20160725]
Shiyou's numerical analysis assignment
【原创】关于高版本poi autoSizeColumn方法异常的情况
Px4 adds new applications
Face recognition: attack types and anti spoofing techniques
Simple use of future in Scala
Application of bidirectional LSTM in outlier detection of time series
分布式共识机制
随机推荐
More than 50 object detection datasets from different industries
SQL Server 2008R2 18456 error resolution
Architect (November 2020)
Littlest JupyterHub| 02 使用nbgitpuller分发共享文件
Cloud alibabab notes come out, the whole network detailed explanation only this one hand is slow
Tiktok live monitoring Api: random recommendation
Deeplight Technology Bluetooth protocol SRRC certification services
ulab 1.0.0发布
架构师(2020年11月)
sed之查找替换
面部识别:攻击类型和反欺骗技术
狗狗也能操作无人机!你没看错,不过这其实是架自动驾驶无人机 - 知乎
Is blazor ready to serve the enterprise?
2天,利用下班后的4小时开发一个测试工具
Macquarie Bank drives digital transformation with datastex enterprise (DSE)
Codeforce算法题 | 你能想出解法,让你的基友少氪金吗?
FORTRAN77从文件中读入若干数据并用heron迭代公式开方
Mozi college SQL injection solution
【计算机网络】学习笔记,第三篇:数据链路层(谢希仁版)
An error occurred while starting the kernel was successfully resolved