首先,在计算机网络用语当中,要严格区分大小写:
ACK为确认包的意思,而ack为acknowledge number,确认号码的意思,两者完全不同;
同理,SYN是建立连接包,不存在syn;
其次,务必搞懂TCP,TCP是传输控制协议,当数据从我的电脑传到服务器时,相当于建立了一个虚拟连接,我们把它称为http请求,就是在网页中输入地址url,产生的http请求,请求发生后,我的电脑和服务器之间产生了TCP连接,这个连接的过程称为双方的三次握手;
那么就很好懂了,第一次握手:首先我方发送一个SYN包,给这个包弄个序列号吧,于是计算机随机产生了一个序列号seq=x,序列号为x,seq是序号的意思;
第二次握手:服务器收到了这个请求包,返回一个响应包ACK包+SYN包,这里服务器也随机产生了一个序列号,seq=y,同时为了表示确定对该ip产生的连接,这样ack=x+1,也就是我的电脑发生序列号+1,当然这里面也可以+2,但是这是计算机协议的规定要+1,就像我们人类可以规定1+1等于2,也可以规定1+1等于3,所以你这个问题相当于在问,为什么1+1不能等于3呢,只是通用,好记,所以返回的序列号用+1来表示,就像你跟你邻居建立 连接,你是201户,你把数据给了门卫,门卫再交到202户手里,所以这个+1的含义在这。
第三次握手:我方收到服务器的SYN+ACK包,则我方再发送个响应包ACK包,其中ack=y+1即可。
通过三次握手确认一个连接产生,那么SYN=1,ACK=1又代表什么呢,这就是一个计算机高低电平,0是低电平,1是高电平,最原始的计算机通过0和1代表有效无效,仅仅代表这个包确认有效,SYN=1,SYN包有效,ACK=0,ACK包无效,ACK包不存在的意思罢了
TCP三次握手SYN,ACK
最新推荐文章于 2024-09-09 16:47:17 发布