计算机网络——TCP连接管理

本文将会介绍如何建立和拆除一条TCP连接,TCP的连接会显著的增加人们感受到的时延(尤其是在Web冲浪时)。同时一些常见的网络攻击SYN洪范攻击利用了TCP连接管理的弱点。
假定运行一台主机(客户)上的一个进程想和另一台主机(服务器上)的一个进程建立一条连接;客户端进程会首先通知客户端TCP,建立一个与服务器上层某个进程之间的连接。具体步骤如下:


第一步:客户端发送SYN

首先,客户端TCP会首先向服务端的TCP发送一个特殊的TCP报文段,该报文段中不包含应用层的数据。在保温段的首部中的一个标志位(也就是SYN比特)会被置1。因此,该特殊报文段被称之为SYN报文段

另外,客户会随机选一个初始序号(client_isn),并且把该编号放置于起始的TCP SYN报文段的序号字段中。该报文段会被封装在一个IP数据报中,并且发送给服务器。


第二步:服务端接收TCP SYN

一旦包含TCP SYN的报文段IP数据报到达服务器主机(假设确定到达了),服务器会从这个数据报中提取TCP SYN报文段,并且给该TCP连接分配TCP缓存和变量,并且向客户端发送允许连接的报文段。

在完成三次握手的第三步之前分配这些缓存和变量,会让TCP容易受到称之为SYN的洪泛的拒绝服务攻击。

这些允许连接的报文段不应该包含应用层的数据,不过,在报文段的首部却包含了三个重要的信息:

  • 首先,SYN比特会被置1。
  • 其次,该TCP报文段的首部的确认号字段被重置为client_isn + 1
  • 最后,服务器选择自己的初始序号server_isn,并且将其放置到TCP报文段首部的序号字段中。

这个允许连接的报文段实际上表明了:我接受了你发起建立的SYN分组,该分组带有初始序号的client_isn,服务器同意建立该连接,服务器初始序号server_isn,该允许连接的报文段称之为SYNACK报文段SYNACK segment)。


第三步:客户端接收SYNACK,并且分配缓存和变量

在接受了SYNACK报文段之后,客户也要给该连接分配缓存和变量。客户主机则向服务器发送了另一个报文段,最后一个报文段对服务器的允许连接的报文段进行了确认(该客户端通过把server_isn + 1放置到TCP报文段首部的确认字段中完成)。

由于连接已经建立,所以该SYN比特重置0,该三次握手的第三个阶段可以在报文段负载中携带客户到服务器的数据。

在这里插入图片描述

假设客户端要关闭连接,则会引起客户TCP向服务器进程发送一个特殊的TCP报文段。该特殊的报文段让其首部的一个标志位也就是FIN比特被设置1

当服务器接收到该报文段之后,就像发送方回送一个确认报文段,其FIN被设置1,最后,该客户对这个服务器的终止保温段进行了确认。此时,两台主机上用于连接的所有的资源均被释放。

在这里插入图片描述

在一个TCP连接的生命周期中,运行在每一台主机的TCP协议在各种TCP状态,如下图表明客户端TCP会经历一系列的典型TCP状态。

客户的TCP开始处于closed关闭态。客户的应用程序发起了一个新的TCP连接。引起了客户端的TCP向服务器的发送了一个SYN报文段。在发送过SYN报文段之后,客户端的TCP就进入了SYN-SENT状态;其将会等待服务的TCP对客户端的发送报文段进行确认并且SYN比特置1的一个报文段。

在收到这样的一个报文段之后,客户TCP进入established已建立状态,当处于该状态时,TCP客户端就能够发送和接收包含有效载荷(也就是应用层产生的数据)的TCP报文段了。

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值