TCP连接的建立与释放

TCP连接的建立与释放

题目:使用Cisco Packet Tracer模拟TCP连接的建立以及释放过程,分析每个互交报文的序列号,确认号,Flags不同标志位的变化及原因。

1.TCP连接的建立(三次握手)

TCP的链接的建立的过程被称为“三次握手”,因为通信双方在建立链接的时候需要发送三个报文。为了清楚了解TCP的三次握手过程,搭建如下图所示的TCP连接建立实验拓扑。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
(*注:要确保服务器HTTP是开着的,一般系统会自动默认是打开的。)

配置好基本信息,将Packet Tracer模拟器切换到Simulation模式,打开客户端Web Browser,输入192.168.1.254,观察报文发送过程。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(*注:此时会出现多个报文,为了使观察更加清楚可以点击ShowAll/None先屏蔽掉所有类型的报文,然后点击EditFilters来选择自己想要看见的报文类型,这里我们选择TCP类型的和HTTP类型的。在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

因为HTTP服务是基于YCP的,所以当请求访问网页时会先建立TCP连接。下图为客户端发送的TCP连接建立请求报文。即第一次握手
在这里插入图片描述
从报文段中可以看出,HTTP服务使用TCP端口号80,报文序号为0,确认序号也为0,SYN同步标志置1。下图为服务器发送的确认报文。即第二次握手
在这里插入图片描述

可以看到,服务器的确认报文段序列号为0,确认号为1,同时将SYN和ACK 两个标志位置1。如下图是客户端的再次确认报文。即第三次握手
在这里插入图片描述

由于客户端的连接建立请求报文已经消耗掉了一个序号,因此这个再确认报文的序号为1,确认号为1,ACK标志置1。

2.TCP连接的释放(四次挥手)

在数据传输结束后,通信双方都可以发出释放连接的请求。TCP采用“文雅"的方式释放连接。也就是说,TCP连接的释放是在两个方向上分别释放连接,每个方向上的连接的释放只终止本方向的数据传输。
  当一个方向的连接释放后,TCP的连接就处于“半连接”或“半关闭”状态。当两个方向的连接都释放后,TCP连接才完全释放,下图显示了TCP连接的释放过程。

在这里插入图片描述

PC0收到应用层的通知,向服务器发送FIN为1的连接释放报文段,报文段的序号为U,它是之前PC0已发送的所有数据的最后一个字节的序号加1.按照TCP的规定,这个FIN报文段要消耗一个序号。
随后服务器收到PC0的连接释放请求并向PC0发出确认,确认序号是U加1。服务器的确认报文序号是V,同样,它是之前服务器已发送的所有数据的最后一个字节的序号加1.
至此,从PC0到服务器这个方向的TCP连接已经释放,PC0不能在向服务器发送报文。但从服务器到PC0这个方向的TCP连接并未关闭,因此服务器仍然可以向PC0发送报文。这时的TCP连接处于半关闭状态。
服务器收到应用层的通知,向PC0发送FIN为1的连接释放报文段。注意到这个报文段的序号是W,而W不一定等于V,因为服务器可能在半关闭状态下又向PC0发送了一些数据。
在PC0收到服务器的释放连接请求并向服务器发送ACK为1的确认报文,报文序号是U加1,确认报文是W加1.
最后,服务器收到PC0的确认报文,释放到PC0这个方向的TCP连接。

在数据传输结束后,通信双方都可以发出释放要求。首先由客户端向服务器发送连接释放报文段,并主动关闭TCP连接。此报文中,终止控制FIN和ACK都为1,序号是103,确认序号为472.如下图所示

在这里插入图片描述

随后服务器收到连接释放报文后立即发出确认报文,确认序号为104,而这个报文本身序号为472,
ACK控制位是1,如下图所示

在这里插入图片描述

此时TCP连接已经处于半关闭状态,即PC0到服务器的方向的连接已经断开,但是服务器到PC0的方向的连接还没断,也就是说,服务器还是可以向PC0发送数据。如果服务器已经没有什么数据报文发给PC0,就向PC0发送一个连接释放的报文。这个终止报文的终止控制位FIN和ACK控制位都是1,确认序号为472.如下图所示。
在这里插入图片描述

PC0在接收到报文后也会对此发出确认报文段,在确认报文段中把ACK控制位置为1,确认序号472,报文本身的序号为103.
在这里插入图片描述

TCP连接过程:
(1) 服务端通过socket,bind和listen准备好接受外来的连接,此时服务端状态为Listen

(2)客户端通过调用connect来发起主动连接,导致客户端TCP发送一个SYN(同步)字节,告诉服务器客户将在(待建立的)连接中发送的数据的初始序列号,客户端状态为SYN_SENT。

(3)服务器确认(ACK)客户的SYN,并自己也发送一个SYN,它包含服务器将在同一连接中发送数据的初始序列号。

(4)客户端确认服务的ACK和SYN,向服务器发送ACK,客户端状态ESTABLISHED

(5)服务器接收ACK,服务器状态ESABLISHED。在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值