HCIP第二次作业(TCP的三次握手和四次断开)

一.与三次握手和四次断开有关的部分:

1.源端口号:本次TCP连接中,发起连接的主机使用的端口号;

2.目的端口号:本次TCP连接主,接受连接的主机使用的端口号;

3.序号:通过TCP传输的每一个数据段,都有一个序号,作用是为了确认此数据段的顺序。网络中允许传输的数据长度是有限制的,所以当我们要通过TCP传输一个较大的数据时,TCP会将数据切割成很多小的数据段进行传输。而将这些小的数据段发送到目的主机时(发送方会同时发送多个数据),并不能保证它们是按顺序到达目的地,所以对于每一个数据段,都要有一个序号,来标识它们是属于总数据的哪一部分,以保证在目的主机中能将他们重新拼接。

4.确认序号:接收方若接收到一个数据段,会发送一个确认报文给发送方,告诉发送方已经接收到这个数据段,而确认序号的作用就是告诉发送方接收到了哪条数据段。若接收方接收到了序号为n的报文段,则确认序号将是n+1,表示它已经接收了n,下一条想要接收n+1

5.首部长度TCP报文的首部+选项的字节数;

6.ACK:只有1 bit的标志位,若为1,表示这个数据段中的确认序号是有效的,即这个数据报是对之前接收到的某个报文的确认(一个TCP报文可以同时作为确认报文和传递数据报文)。

7.RST:只有1 bit的标志位,若客户端向服务器的一个端口请求建立TCP连接,但是服务器的那个端口并不允许建立连接(比如没开启此端口),则服务器会回送一个TCP报文,将RST位置为1,告诉客户端不要再向这个端口发起连接;

8.SYN:只有1 bit的标志位,若为1,表示这是一条建立连接的TCP报文段;

9.FIN:只有1 bit的标志位,若为1,表示这是一条断开连接的TCP报文段;

二.TCP的三次握手的步骤:

1.第一步:客户端的TCP程序首先向服务器的TCP程序发送一个TCP报文。这个报文不包含数据,且它的SYN标志位被置为1,表示这是一条建立连接的TCP报文段,因此这个报文段也被称为SYN报文段。客户端的TCP程序随机选择一个序号作为客户端报文的初始序号(假设序号为client_isn),放入这个报文段的序号部分。这个报文段由运输层传递到网络层后,被封装在一个IP数据报中发往服务器;

2.第二步:包含SYN报文段的IP数据报被服务器接收,服务器的网络层将SYN数据报抽取出来,交给运输层,同时服务器为该TCP连接分配资源(包括发送缓存、接收缓存和变量等),并向客户发送允许连接的TCP报文段。这条允许连接的报文段不包含数据,SYN标志位也被置为1,同时它的ACK标志位也被置为1,表示它是SYN报文段的确认报文,所以这条允许连接的报文段也被称为SYNACK报文段。服务器随机选择一个序号,作为服务器报文段的初始序号(假设称为server_isn),并将其放入SYNACK报文段的序号部分,同时确认号字段被设置为client_isn + 1SYN报文段的序号+1)。这个报文段可以解释为服务器向客户端说:“我收到了你的连接请求,我允许你连接,我的初始序号是server_isn”。

3.第三步:当客户端接收到SYNACK报文段后,它也将为TCP连接分配资源(缓存和变量),同时生成一条SYNACK报文段的确认报文,并发送给服务器。由于经过上面两个步骤,已经算是建立了连接,所以这次的SYN标志位将被置为0,而不是1ACK标志位是1)。同时,这条报文段的序号被设置为client_isn + 1(第一条客户报文的序号是client_isn,而这是它的下一条,所以+1),而确认序号被设置为server_isn + 1(第一条服务器报文的序号是server_isn,客户端成功接收,所以期望服务器下一次发送server_isn + 1)。和上面两条报文不同,第三条报文可以携带数据,比如HTTP的请求就是在TCP的第三次握手报文中发送到服务器的。

三.TCP的四次断开的步骤: 

1.第一步:客户端进程发出断开连接指令,这将导致客户端的TCP程序创建一个特殊的TCP报文段,发送到服务器。这个报文段的FIN字段被置为1,表示这是一条断开连接的报文;

2.第二步:服务器接收到客户端发来的断开连接报文,向客户端回送这个报文的确认报文(ACK字段为1),告诉服务器已经接收到FIN报文,并允许断开连接;

3.第三步:服务器发送完确认报文后,服务器的TCP程序创建一条自己的断开连接报文,此报文的FIN字段被置为1,然后发往客户端;

4.第四步:客户端接收到服务器发来的FIN报文段,则产生一条确认报文(ACK1),发送给服务器,告知服务器已经接收到了它的断开报文。服务器接收到这条ACK报文段后,释放TCP连接相关的资源(缓存和变量),而客户端等待一段时间后(半分钟、一分钟或两分钟),也释放处于客户端的缓存和变量;

 

四.三次握手和四次挥手的本质是什么?

三次握手的本质是确认通信双方收发数据的能力 。
四次挥手的目的是关闭一个连接 。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值