TCP:TCP连接的建立与终止

news2024/11/25 8:21:09

TCP连接的建立与终止

  • 建立连接
    • 第一次握手
    • 第二次握手
    • 第三次握手
  • 终止连接
    • 第一次挥手
    • 第二次挥手
    • 第三次挥手
      • TIME_WAIT 状态
    • 第四次挥手
  • 连接建立超时

T C P是一个面向连接的协议。无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接。本文将详细讨论一个T C P连接是如何建立的以及通信结束后是如何终止的。
如何使用抓包工具 wireshark

建立连接

为了建立一个TCP连接:

第一次握手

  1. 请求端发送一个S Y N段指明连接的服务器的端口,以及初始序号(ISN)。这个SYN段为报文段1。
    使用抓包工具得到以下内容,可以看到:
    1. 指定了源端口和目标端口,什么?怎么没有IP地址,IP地址在IP首部呢!
    2. 序号为 1514758884,序号并不从0开始,而是生成ISN。序号为什么不从0开始?
    3. SYN=1 表明这是一个连接请求或连接接受报文
    4. 窗口大小声明为 64240
      在这里插入图片描述

第二次握手

  1. 服务器发回包含服务器的初始序号的S Y N报文段(报文段2)作为应答。同时,将确认
    序号设置为客户的I S N加1以对客户的S Y N报文段进行确认。一个S Y N将占用一个序号。
    使用抓包工具得到以下内容,可以看到:
    1. 指定了源端口(22)和目标端口(60378)
    2. 序号为 3444481880
    3. ACK=1,表明确认号ack有效,ack=151475885,即发来的报文序号1514758884+1
    4. SYN=1 表明这是一个连接请求或连接接受报文
    5. 窗口大小声明为64240
      在这里插入图片描述

第三次握手

  1. 客户必须将确认序号设置为服务器的I S N加1以对服务器的S Y N报文段进行确认(报文
    段3)。
    使用抓包工具得到以下内容,可以看到:
    1. 同样指定了源端口和目标端口
    2. 序号为 1514758885
    3. ACK=1,表明确认号ack有效,ack=3444481881,即发来的报文序号3444481880+1
    4. SYN=0 表明这不是一个连接请求或连接接受报文,服务器连接请求和连接接受发生在第二次握手时。
    5. 窗口大小声明为513,为什么这么小呢?这个流量控制有关。
      在这里插入图片描述

一个整体的流程图:
在这里插入图片描述

终止连接

建立一个连接需要三次握手,而终止一个连接要经过 4次挥手。这由T C P的半关闭(h a l f - c l o s e)造成的。一个T C P连接是全双工(即数据在两个方向上能同时传递),因此每个方向必须单独地进行关闭。
如图,为抓包工具显示内容:这就是四次挥手的过程
在这里插入图片描述

第一次挥手

  1. 我从服务器进行断开连接的,故而先由服务器主动关闭连接。当一方完成数据传输并想要关闭连接时,它会发送一个FIN(结束)标志的数据包。这个FIN标志表示发送方已经完成了数据发送,但仍然可以接收数据。
    在这里插入图片描述

第二次挥手

  1. 收到FIN标志的一方会在处理完剩余数据后,再发送一个带有ACK(确认)标志的数据包以确认收到了FIN。
    在这里插入图片描述

第三次挥手

  1. 此时,如果应用程序不调用c l o s e而调用s h u t d o w n,且第2个参数值为1,则socket的A P I支持半关闭。显然,这不是一个半关闭。所以本地主机发送一个FIN(结束)标志的数据包至服务器。
    在这里插入图片描述

TIME_WAIT 状态

T I M E _ WA I T状态也称为2 M S L(报文段最大生存时间,Maximum Segment Lifetime)等待状态。这个时间是有限的,因为 T C P报文段以I P数据报在网络内传输,而I P数据报则有限制其生存时间的T T L(Time To Live)字段。

  • 确保数据可靠传输:time_wait状态确保了所有可能还在网络中徘徊的数据包被接收或丢弃,避免新连接接收旧数据,保证数据的准确性和完整性
  • 防止旧连接的干扰:确保在相同的源地址、目标地址、源端口和目标端口的新连接建立之前,旧的连接完全关闭,避免可能的数据混乱

第四次挥手

  1. 服务器确认(stream 主机->服务器 关闭连接)
    在这里插入图片描述
    一个完整的流程图:
    在这里插入图片描述

连接建立超时

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

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

相关文章

文心一言用户达3亿!文心大模型4.0 Turbo发布,支持API,真GPT-4 Turbo国产来了!

文心一言用户规模达到3亿了! 这是笔者在今天的百度Wave Summit 2024大会上的看到的数字。需要强调的是,文心一言的用户规模是在去年12月破亿的。这意味着,仅仅隔了6个月,文心一言用户数量在亿这个级别的数字上竟然直接翻了三倍。…

2024最出色的代理软件评估及推荐

随着网络技术的飞速发展,代理软件已成为许多网络活动不可或缺的工具,特别是在数据抓取、网络安全防护等方面。在众多代理软件中,哪些能真正满足用户需求,提供卓越的性能和服务呢?我们的测评团队经过深入研究和测试&…

Reid系列论文学习——无人机场景下基于 Transformer 的轻量化行人重识别

今天介绍的一篇论文是针对无人机场景下的行人重识别,论文题目为:"无人机场景下基于 Transformer 的轻量化行人重识别"。该论文针对无人机场景下行人呈现多角度多尺度的特点、以及传统CNN网络在行人重识别任务中受限于感受野和下采样导致的无法…

Go-知识测试-单元测试

Go-知识测试-单元测试 1. 定义2. 使用3. testing.common 测试基础数据4. testing.TB 接口5. 单元测试的原理5.1 context 单元测试的调度5.1.1 等待并发执行 testContext.waitParallel5.1.2 并发测试结束 testContext.release 5.2 测试执行 tRunner5.3 启动测试 Run5.4 启动并发…

《晨集》开源软件平台的创新与发展

一、引言 在数字化浪潮的推动下,开源软件平台已成为推动软件创新、促进知识共享的重要力量。《晨集》作为新兴的开源软件平台,其上线标志着开源生态圈的又一重要里程碑。本文旨在探讨《晨集》开源软件平台的创新特点、对开发者社区的影响以及未来发展趋…

Flink作业执行之 4.JobGraph

Flink作业执行之 4.JobGraph 1. 入口 前文了解了由Transformation到StreamGraph的过程,StreamGraph即作业的逻辑拓扑结构。 生成逻辑结构后,接下来的操作往往是对逻辑结构的优化。在很多组件中都是这样的处理,如hive、spark等都会执行“逻辑…

【linux】从零到入门

linux概述 Linux是一个免费使用和自由传播的一套操作系统。用户可以无偿地得到它地源代码,和大量地应用程序,并且可以随意修改和增加它们。 Linux的内核起初由林纳斯编写。内核是啥? 驱动设备,文件系统,进程管理&…

『MySQL 实战 45 讲』22 - MySQL 有哪些“饮鸩止渴”提高性能的方法?

MySQL 有哪些“饮鸩止渴”提高性能的方法? 需求:业务高峰期,生产环境的 MySQL 压力太大,没法正常响应,需要短期内、临时性地提升一些性能 短连接风暴 短连接模式:执行很少的 SQL 语句就断开,…

【Sklearn-驯化】一文搞懂机器学习树模型建模可视化过程

【Sklearn-驯化】一文搞懂机器学习树模型建模可视化过程 本次修炼方法请往下查看 🌈 欢迎莅临我的个人主页 👈这里是我工作、学习、实践 IT领域、真诚分享 踩坑集合,智慧小天地! 🎇 免费获取相关内容文档关注&#xff…

LeetCode刷题之HOT100之数组中的第K个最大元素

2024 6/29 今天天气很好啊,想爬山,奈何下午还有最后的一个汇报。做个题先 1、题目描述 2、算法分析 看到这个题我想到的就是: public int findKthLargest(int[] nums, int k) {Arrays.sort(nums);return nums[nums.length - k ];}哈哈,我提…

计算机网络 —— 基本概念

基本概念 1. 通信协议2. 面向连接 v.s. 面向无连接3. 电路交换 v.s. 分组交换4. 单工通信 v.s. 双工通信 1. 通信协议 通信协议就是计算机与计算机之间通过网络实现通信时事先达成的一种“约定”。这种“约定”使那些由不同厂商的设备、不同的CPU 以及不同的操作系统组成的计算…

记录一下MATLAB优化器出现的问题和解决

今天MATLAB优化器出了点问题。我想了想,决定解决一下,不然后面项目没有办法进行下去。 我忘了截图了。 具体来说,是出现了下面的问题。 Gurobi: Cplex: 在上次为了强化学习调整了Pytoch环境以后(不知道是不是这个原因&#…

background 与 background-image

相同点:background 与 background-image都可以用于设置背景图 区别. background既可以用于设置背景图, 又可以用于设置CSS样式,还可以用于设置背景属性。 background-image只能用于设置背景图 background能设置的背景属性,如下&…

绝了!Stable Diffusion做AI治愈图片视频,用来做副业简直无敌!10分钟做一个爆款视频保姆教程

一 项目分析 这个治愈类视频的玩法是通过AI生成日常生活场景,制作的vlog,有这样的一个号,发布了几条作品,就涨粉了2000多,点赞7000多,非常的受欢迎。 下面给大家看下这种作品是什么样的,如图所…

大语言模型LLM基础:推理/不同模型/量化对显存、推理速度和性能的影响

通过本文,你将了解以下几个方面的内容: 要运行一个LLM需要多少显存?(我的GPU可以运行多大LLM?)不同LLM推理速度如何?量化对显存、推理速度和性能的影响?vLLM、DeepSeed等工具的加速…

智慧校园-档案管理系统总体概述

智慧校园档案管理系统,作为教育信息化进程中的重要一环,它运用现代信息技术的力量,彻底改变了传统档案管理的面貌,为学校档案资源的收集、整理、存储、检索与利用开辟了全新的途径。这一系统全面覆盖学生、教职工、教学科研及行政…

Rocky Linux设置静态IP

[connection] idens160 uuidcd246f67-c929-362a-809d-f1b44ddc5d25 typeethernet autoconnect-priority-999 interface-nameens160 timestamp1719094243[ethernet][ipv4] ## 在IPV4下面修改如下内容 methodmanual address192.…

常见的反爬手段和解决思路(爬虫与反爬虫)

常见的反爬手段和解决思路(爬虫与反爬虫) 学习目标1 服务器反爬的原因2 服务器长反什么样的爬虫(1)十分低级的应届毕业生(2)十分低级的创业小公司(3)不小心写错了没人去停止的失控小…

nuxt实现vuex持久化

前言: 此处不借助插件实现 store 本地持久化 所有状态持久化 使用 vuex 里面的 replaceState 方法还原 store 的根状态 API 参考 | Vuex 创建 store-cache.js 文件 在 plugins 目录下创建 store-cache.js 文件; store-cache.js export default (ctx) &g…

深度之眼(二十八)——神经网络基础知识(三)-卷积神经网络

文章目录 一、前言二、卷积操作2.1 填充(padding)2.2 步长2.3 输出特征图尺寸计算2.4 多通道卷积 三、池化操作四、Lenet-5及CNN结构进化史4.1 Lenet-5 一、前言 卷积神经网络–AlexNet(最牛)-2012 Lenet-5-大规模商用(1989) 二、…