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

news2025/8/9 21:16:05

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

TCP连接管理

  • 第一步:客户端发送SYN
  • 第二步:服务端接收TCP SYN
  • 第三步:客户端接收SYNACK,并且分配缓存和变量


第一步:客户端发送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报文段了。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/34035.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring中各种注解的使用说明汇总清单

目录 一、放在最开始方法的外侧的注解 1、ControllerAdvice: 2、ResponseBody 3、slf4j 4、Configuration 5、Component 6、Mapper 7、Service 8、RestController RequestMapping("/路径") 9、EnableTransactionManagement和Transactional&…

maven学习:maven安装、maven仓库、Idea配置maven

一、maven安装 1.1 下载maven Maven的版本对应的jdk和发布日期:Maven – Maven Releases History 到官方网站下载maven,网站: Maven – Download Apache Maven 如下图: 下载maven之前的版本:Index of /dist/maven/maven-3 注意: idea与maven的版本需要兼容, 所以我…

Python学的好,工作不愁找

俗话说的好:“Python学的好,工作不愁找”,不管我们学习哪一门语言,我们都要掌握从抽象化中提取出来的方法,这样你才能提高我们的学习能力,并且在学习新事物的时候可以提取我们自己的想法。学习Python&#…

基于SpringBoot的仿小米商城系统

仿小米商城分为前后台,分为用户和管理员两种角色,管理员可以登录后台管理系统~ 可以作为毕设~也可以作为学习的项目~ 前台部分运行截图如下所示 后台部分运行截图如下所示 拒绝白嫖!20分享源码!want to get it 私 me&#xf…

Java入门简单小游戏有哪些?

适合新手练习的小游戏有超级玛丽、愤怒的小鸟、飞机大战、五子棋、彩虹雨、聊天室、华容道、坦克大战、扫雷等。还有贪吃蛇,由Java开发出来的一款经典小游戏,java小白入门可以用这款游戏开发练手锻炼自己的编程能力。 教程推荐:玩会Java&…

【Linux】(六)MobaXterm文件传输与终端-实验室服务器使用MobaXterm传输文件和ssh终端连接

MobaXterm系列文章文件传输或远程终端(MobaXterm)系列文章 (一)服务器初次配置及安装vncserver (二)实验室添加新用户及其配置vnc4server、xfce4桌面访问流程 (三)VNC桌面连接开发方…

C++初阶(stack+queue)

stack是一种容器适配器,专门用在具有后进先出 (last-in first-out)操作的上下文环境中,其删除只能从容器的一端进行元素的插入与提取操作。stack是作为容器适配器被实现的,容器适配器即是对特定类封装作为其底层的容器,并提供一组…

Unity RectTransform 组件

文章目录1.RectTransform 介绍2.Anchor 锚点3.Pivot 轴心点4.RectTransform API 属性4.1 anchorMax、anchorMin —— 锚点矩形4.2 offsetMax、offsetMin —— 偏移量4.3 rect —— 矩形类4.4 sizeDelta —— UI坐标4.5 anchoredPosition —— UI坐标5.RectTransform API 方法5.…

数据可视化 | Tableau从入门到高手 入门联接关系数据预处理

Tableau 人人可用、处处可用的分析 Tableau 是一个可视化分析平台,它改变了我们使用数据解决问题的方式,使个人和组织能够充分利用自己的数据。利用 Tableau 查看并理解任何数据。 Tableau Software 可以帮助人们查看并理解数据,可连接到几乎…

蓝桥杯实战应用【算法代码篇】-基于数组实现线性表

前言 线性表是由有限个具有相同性质的元素构成,结构上要求,非表头和表尾元素有且只有一个前驱和后继。对于表头和表尾元素,如果是没有环的线性表,则表头元素没有前驱,表尾元素没有后继。如果有环则均存在前驱和后继元素。对于线性结构,有两种保存的方法,一种是使用C语言…

Spring Boot Admin -Actuator 图形化管理工具

Spring Boot Admin 概述 之前学习了Spring Boot Actuator的特性,它能够是开发者很便捷的监控系统的各种指标,但是有一个很大的问题 — 不够直观。今天来学习下Spring Boot Admin。Spring Boot Admin 是一个免费的开源社区项目,用于监控、管…

Java多线程:从基本概念到避坑指南

本文为掘金社区首发签约文章,未获授权禁止转载 多核的机器,现在已经非常常见了。即使是一块手机,也都配备了强劲的多核处理器。通过多进程和多线程的手段,就可以让多个CPU同时工作,来加快任务的执行。 多线程&#xf…

户外运动耳机推荐、这几款耳机专为户外运动而生

随着夏日的艳阳离去,秋意渐浓。在这个最适合郊外野游,最适合户外运动的季节,我们当然不能继续做我们的宅男宅女,而应该放任自己到野地里去撒一回野。当然,对于没有数码产品一天都不能活的你来说,即使行走在…

debug(二)(还没完)

视频来源:尚硅谷_宋红康_IDEA2022版本的安装与使用 【【尚硅谷】IDEA2022全新版教程,兼容JDK17(快速上手Java开发利器)】 https://www.bilibili.com/video/BV1CK411d7aA?p16&vd_source581d732b20cb23e01428068f153a99ed I…

Spring Security(5)

您好,我是湘王,这是我的CSDN博客,欢迎您来,欢迎您再来~ 经常上网的人都应该有这样的体验:很多网站或者APP只需要第一次登录时输入用户名和密码之后,后面很长一段时间内就不需要再次输入密码了。…

48种数据分析可视化图表

可视化对于数据分析师来说可能不是最重要的,重要的是你分析或挖掘出来的结果是否有效。在这基础之上就需要通过可视化恰当完整的表达见解。这里又有区别了:实用性和美观性哪个更重要?要我说实用性是第一位的,能用一个元素表达最好…

python中的GUI自动化工具介绍

目录 1.pyautoGui 2.Lackey 3.AXUI 4.winGuiAuto 5.pywinauto 6.总结 1.pyautoGui PyAutoGUI是一个纯Python的GUI自动化工具,通过它可以让程序自动控制鼠标和键盘的一系列操作来达到自动化测试的目的。PyAutoGui 也一个流行的跨平台库(具有基于图…

Day5:写前端项目(html+css+js)-导航部分p1

目录 实现折叠按钮 medium screen size 实现折叠按钮 效果图&#xff1a; 如何在调整屏幕尺寸大小的时候&#xff0c;导航栏的列表会从横的变成三条杠杠。就像手风琴导航栏 手风琴button的操作 aria-expanded - Accessibility | MDN <button class"mobile-nav-tog…

【opencv】形态学重建案例-数糖果(细胞)个数

原始图片如下&#xff0c;要求是利用形态学重建方法数出糖果个数 step1&#xff1a;先进行测地膨胀 令F表示标记图像&#xff0c;令G表示模板图像。在讨论中&#xff0c;我们假设两幅图像都是二值图像&#xff0c;且F包含于G。标记图像相对于模板大小为1的测地膨胀定义为 F相对…

ssm分页实战

1. 插件 1. maven <!-- 分页插件 --><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId><version>5.2.0</version></dependency> 3. mybaits核心配置文件中或spring配置文件中…