TCP中三次握手那些事
写在前言,本篇文章借阅了csdn博主: 青柚_的博客:https://blog.csdn.net/qq_38950316/article/details/81087809,同时也借阅了bilibili的up主:LIUSE网络的视频:https://www.bilibili.com/video/av35645270?from=search&seid=1451912717130158360,我看完两位大佬的文章和视频后也对三次握手有了初步的理解,借此用来巩固和学习。
三次握手过程理解
(借用青柚_博主的图)
先不要理有那么多特殊名称,先了解有SYN,ACK这两个东西,SYN顾名思义为同步标志,表示要和服务器建立连接,随后,服务器接收到客户端的SYN后,也向客户端发送SYN,表示同意连接,并且发送ACK(确认是否有效)确认这个SYN为正确的SYN,最后客户端再向服务器发送ACK确认建立连接。
然后,可以用比较形象的故事来解读,就把客户端和服务器端比作在打战时期的两个同盟阵营A和B,A想告诉B今晚去攻打XXX,然后A就派了个干员SYN前往B阵营,告诉B今晚要去打XXX,然后B得知,并且同意后,让SYN传话回去,告诉A,表示B同意了,然后为了确保路上的安全,在派ACK来保护SYN回去,SYN回去告诉A后,ACK也该回到自己的B阵营了,便从A回到B,这就类似TCP中的三次握手,这样说不知道会不会好理解一些。
当然,我这么说只是白话的说,里边的内容其实有很多,这样只是方便理解和记忆,图上的就不一一讲解了,毕竟现在还处于学习阶段,大多数知识还是有盲区的,然后说一下状态的变化吧:
最初两端的TCP进程都处于CLOSED关闭状态,A主动打开连接,而B被动打开连接。(A、B关闭状态CLOSED——B收听状态LISTEN——A同步已发送状态SYN-SENT——B同步收到状态SYN-RCVD——A、B连接已建立状态ESTABLISHED)。
说完上边那两个标志位(SYN,ACK),再来简单说一下其它标志位:
字段 | 含义 |
---|---|
SYN | 请求建立连接并在其序列号的字段进行序列号的初始值设定。建立连接,设置为1。 |
ACK | 确认号是否有效,一般置为1。 |
PSH | 提示接收端应用程序立即从TCP缓冲区把数据读走。 |
RST | 对方要求重新建立连接,复位。 |
URG | 紧急指针是否有效。为1,表示某一位需要被优先处理 |
FIN | 希望断开连接。(四次挥手中) |
总之,先简单理解三次挥手,做好面试被提问的准备,当然还有四次挥手也是很多面试官喜欢问的问题,这里是我写的关于四次挥手的博客,大家可以看一看哟,也许还对你有帮助哦,各位共勉,一起加油,Fighting!