TCP协议的三次握手和四次挥手(超详细讲解+详细命令行)

系列文章目录
数通王国历险记(2)


目录

前言

 一、TCP我们称之为可靠的传输层协议,为什么称它为可靠呢?

二、TCP的建立——三次握手

1,提前知道TCP协议报文中都有些啥?

2.第一次握手

总的来说:就是PC1向PC2发出一个同步报文说,我想和你建立连接

3,第二次握手

总的来说:就是PC2同意和PC1建立连接,同时确认告诉PC1自己也想和PC1建立连接和的自己已经收到了PC1的同步报文的这件事

4,第三次握手

总的来说:就是PC1对PC2发送消息说:我已经收到你的同步报文和确认报文了,关系就此建立。

三,TCP关闭----四次挥手

1,为什么是四次挥手呢?

2.第一次挥手

提前知道:

因为四次挥手有两次是重复的,只不过是方向不同,所以我们在此就介绍从左到右方向的一来一回的挥手,而且挥手是建立在三次握手之后的事情,握手里面提到的标识符什么意思为我们就不多概述了,我们就以大家已经理解了为前提去介绍四次挥手。

3.第二次挥手

4,四次挥手为什么有两次重复的挥手?

5,关于四次挥手细节

总结


前言

随着华为公司的不断发展,数据通信这门技术也越来越重要,很多人都开启了数据通信学习,本文就介绍了存在TCP协议的三次握手和四次挥手,是我们通过数通王国的第二站(我们在文章中使用的是华为的ENSP软件)。


 一、TCP我们称之为可靠的传输层协议,为什么称它为可靠呢?

因为它的建立经历了三次握手,它的关闭经历了四次挥手。

总而言之就是它的每一个步骤都需要确认,不确认就不能经行下一步操作,所以非常可靠

这就是TCP为什么称之为可靠性的协议

二、TCP的建立——三次握手

先看图了解一下,并且我们的讲解是根据这个图进行讲解的:

1,提前知道TCP协议报文中都有些啥?

首先我们看到的有IP头部和TCP头部

1,IP头部里面存放的是源IP和目的IP

源IP:就是发送方的IP地址

目的IP:就是接收方的IP地址

2,TCP头部里面存在

Seq代表是发送数据大小,是随机的

Flags标志位,指示当前报文是什么类型

解释: 就是这个标志位可能填充的是怎么一个字段

Flags的报文类型有两种1,SYN 2,ACK

SYN:   就是同步的意思

解释: 就是PC1想和PC2建立连接,这就是同步,是由PC1主动发起的,PC2接受进行。

ACK:就是确认的意思

解释:PC1刚刚给PC2发报文说建立连接吗,PC2同意了,并且要表达自己已经知道PC1要跟自己建立连接这个事情,所以,给PC1的回复报文里面就要有一定的确认,让PC1知道自己已经接收到了请求建立的报文。

发给PC1的确认分为两种:一种是隐藏的,另一种是明文的。

2.第一次握手

我们分析PC1发送的TCP头部当中的信息:

总的来说:就是PC1向PC2发出一个同步报文说,我想和你建立连接

Seq=a:是什么意思呢:就是PC1会发送一个数据,序列号等于a(Seq=a),可以理解为PC1给PC2发了一个a大小的数据。

Ack=0:是什么意思呢?:可以理解为PC1当前的一个确认等于0

Flags:SYN置位:表示的要同步,什么意思呢,就是PC1要和PC2建立联系

通俗来说就是pc1和pc2说,我要和你建立TCP的连接

PC2接到来自PC1的请求建立报文就表示第一次握手结束了。

3,第二次握手

当这个pc2收到了pc1的建立连接的请求之后

总的来说:就是PC2同意和PC1建立连接,同时确认告诉PC1自己也想和PC1建立连接和的自己已经收到了PC1的同步报文的这件事

我们分析PC2发送的TCP头部当中的信息:

Seq=b:pc2会发送一个随机大小的序列号等于b,也可以理解为大小为b的数据

Ack=a+1:是什么意思呢?:

就是说,PC1刚刚不是给PC2发了一个大小为a的数据了,所以PC2收到之后就要告诉PC1,我已经收到这个大小为a的数据了,接下来你可以从a+1这个大小开始发。

举个例子:

就好比如果pc1之前发的数据是5,pc2接受到后和pc1说你下次从6开始给我发报文,下一次PC1可以从6开始给PC2发报文

Flags:SYN置位:表示也是要同步,就是PC2要和PC1建立联系

通俗来说就是pc2和pc1说,我要也要和你建立TCP的连接

Flags:ACK置位:PC2主动向PC1发起连接,同时PC2对PC1之前从左到右发过来的请求做一个确认。

通俗来说就是:

PC1刚才发报文给PC2说要建立连接,PC2说我也要跟你建立连接,并且我已经知道你想和我建立连接l就是Ack确认的意思

4,第三次握手

当这个pc1收到了pc2的建立连接和确认的报文之后

我们分析PC1发送的TCP头部当中的信息:

总的来说:就是PC1对PC2发送消息说:我已经收到你的同步报文和确认报文了,关系就此建立。

Seq=a+1:因为刚刚PC2发过来想请求想和PC1建立连接的时候的Ack里面和pc1说了,下一次你给我发数据的时候,可以从a+1开始发,因为PC1之前发的是a,pc2已经全部收到了,那pc1就从a+1开始发

隐含的含义:从侧面暗示着,pc1已经收到了pc2的主动发过来的这个握手报文

Ack=b+1:是什么意思呢:

并且PC2刚刚是不是也给PC1发了一个数据啊,大小是b啊,所以PC1也会对这个数据进行确认,是b+1代表PC1已经收到了PC2从右往左发送的这个报文,这个数据大小为b,所以下次PC2可以从b+1开始给PC1发数据,

Flags:ACK置位

因为这个报文是对它的第二次握手的报文的一个确认,所以标志位只有确认,也就是Ack,因为pc2已经向pc1同步过,pc1也向pc2同步过,最后pc1回复一个报文告诉pc2,我收到你的,同步报文和确认报文了

所以PC1和PC2连接到此正式建立

三,TCP关闭----四次挥手

1,为什么是四次挥手呢?

因为它是有从左到右,PC1要跟PC2断开连接,PC2要给PC1回复确认,同意PC1的断开连接这是从左到右反向的

从右到左呢,也是一样的,PC2也要和PC1断开连接,然后PC1同意断开连接、

两次的一来一回刚好是四次,所以叫四次挥手

TCP这个协议必须有确认机制的,没有确认没办法正常的完成交互

刚才通过TCP的三次握手之后建立之后,就可以正常通信了

当数据传输完成之后,TCP需要通过四次挥手机制断开TCP连接,释放系统资源

我们刚才所说的有两个方向,一共需要两次,一个是右到左需要两次,一个是左到右需要两次,所以2+2刚好就是4,所以我们称之为四次挥手

2.第一次挥手

提前知道:

因为四次挥手有两次是重复的,只不过是方向不同,所以我们在此就介绍从左到右方向的一来一回的挥手,而且挥手是建立在三次握手之后的事情,握手里面提到的标识符什么意思为我们就不多概述了,我们就以大家已经理解了为前提去介绍四次挥手。

第一次挥手:

突然pc1主动向pc2发起断开连接请求,请求断开的一个标志位叫FIN,FIN就是结束的意思,并且还带了一个ACK确认,因为什么呢?,PC1在发送请求跟pc2断开的连接之前,pc2肯定有发数据给你,这些数据PC1你收到了没有,所以PC1是不是要对这个行为做一个确认,所以我PC1不但要请求断开,并且请求断开的前提是我PC1已经收到PC2发过了的所有数据,这也是为什么PC1发的报文里面的标志位,带有的这两个字段

Flags:FIN 就是断开连接的意思

3.第二次挥手

 第二次挥手:

PC1跟PC2请求断开,一般来说,PC2确定,也可以跟PC1断开,所以PC2就回复了,PC1刚发过来的数据要确认PC2收到了Ack301,也就是下一次PC2可以从301的大小开始给pc1发数据,所以pc2就从301给PC1发数据大小,Ack等于102,为什么因为PC1之前发过来的数据是101,那pc2就从102给pc1发,代表着pc2已经收到101了,pc1下一次就可以从102,给pc2发,

确认pc1下一次从102给pc2发了,然后它的标志位就是Flags:ACK,表示PC2对pc1刚才发过来的请求断开的连接表示同意

4,四次挥手为什么有两次重复的挥手?

左边向右边断开之后,不代表右边的和左边断开了,双向的所以才需要四次挥手

右边和左边类似,所以需要四次挥手才能彻底断开连接

从右到左就轮到了pc2向pc1发送请求断开连接的报文请求,标志位和pc1发送的标志位是相同的

那我发这个请求带断开之前,我一定要对你,之前发过来的数据进行一个确认,因为数据没有发完之前,

你请求断开就不合理了,要跟你进行一个确认,那之后在对你进行请求断开,接着我们pc1对它进行回复,

所以一来一回,一来一回,一共两次,就是变成了四次挥手

完成四次挥手PC1和PC2就断开连接了

5,关于四次挥手细节

  1. 主动发起的断开连接里面会包含对断开之前的接收数据的确认。flags:fin+ack
  2. 被请求方在收到主动提出断开的请求后,会对该请求单独回复确认报文(第二次挥手
  3. 截止到目前这个位置从左到右的连接断开。
  4. 右边到左边类似,所以一共需要四次挥手才能彻底断开连接。

总结

恭喜你,你通过本章的学习通过了,数通王国的第二个关卡,后面还有很多的关卡,数通王国还有很多宝藏等着你去探险,加油!只为成为更好的自己。

  • 35
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 30
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 30
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值