下面是形象说明TCP协议的工作原理介绍,作者本人也是在上面吃过很多亏,也在前东家处理市场批量问题(设备在基于TCP通讯跑工况时,连续跑了42天后自动断线了),当然啦,收获也是硕果累累。时隔几年,对TCP也是记忆模糊了,现通过该文章重新整理整理。为衔接历史文章《OSI七层模型和TCP/IP四层模型形象实例》,这里依旧以邮件为例。
目录
1、工作原理
假设,我们正在通过一个TCP连接在两台计算机之间传送一个文件,就像通过网络发送电子邮件附件一样。
1.1、三次握手(建立连接)
1.1.1、第一次握手(SYN)
假设A想要发送一个文件给B。
A的计算机发送一个TCP段,这个段就像是一封信,上面写着:”我想和你建立一个通信连接,这是我的起始序列号X。“
1.1.2、第二次握手(SYN-ACK)
B的计算机收到A的请求后,发送一个确认响应,这个响应包含两个信息:“我收到了你的连接请求,这是我的起始序列号Y,并且我统一建立连接。”
1.1.3、第三次握手(ACK)
A的计算机收到B的确认后,发送最后一个确认段:“好的,我们已经建立连接,让我们开始传输数据。”
1.2、数据传输
1.2.1、数据分段传输
A的计算机开始将文件分割成多个小块,并为每个小块分配一个序列号。这些小块就像是一系列带有编号的信件。
A的计算机发送第一个数据块(比如编号为1的信件)给B,并等待确认。
1.2.2、确认与重传
B的计算机收到数据块后,发送一个确认消息(ACK)给A:“我已经收到了编号为1的信件。”
如果A在预定时间内没有收到确认,它会认为数据块可能在传输中丢失了,于是会重新发送这个数据块。
1.2.3、流控制
在传输过程中,B的计算机可能会暂时处理不过来收到的数据,就像邮筒满了无法接收更多信件一样。
B的计算机通过发送一个窗口大小为0的消息告诉A:“请暂停发送,我的邮筒满了。”
1.3、四次挥手(终止连接)
1.3.1、第一次挥手(FIN)
当所有数据块都传输完毕后,A的计算机发送一个结束连接的请求:“我已经发哦是那个玩所有数据,我想关闭这个连接。”
1.3.2、第二次挥手(ACK)
B的计算机确认收到结束连接的请求:“好的,我知道你想关闭连接了。”
1.3.3、第三次挥手(FIN)
B的计算机也准备好关闭连接,于是发送自己的结束连接请求:“我也准备好了,可以关闭连接了”
1.3.4、第四次挥手(ACK)
A的计算机确认B的结束请求:“好的,我们现在可以关闭连接了。”
2、总结
通过这个例子,可以看到TCP协议就像是一个精心设计的邮递系统,确保信息能够可靠、有序的在A和B之间传递,即使是在网络条件不佳的情况下也能保持通信的稳定性。希望对大家有所帮助。