计算机网络1:Tcp三次握手和四次挥手

2023-11-06

一、TCP传输的过程-三次握手

1.建立连接并确认连接(三次握手)


** 过程: **
(1)客户端向服务端发出连接请求SYN=1,seq=x,等待服务端响应.状态由CLOSED转为SYN_SENT
(2)服务端做出响应ACK和连接信号SYN=1,seq=y,状态由LISTEN转为SYN_RECEVD
(3)为防止数据丢失,客户端也要做出响应ACK,确认是否有效,seq=x+1。客户端和服务端状态均变为ESTABLISH

2.为什么要进行三次握手

(1)确保客户端/服务端均有接受和发送功能
(2)防止失效的连接请求到达服务器,让服务器错误打开连接
(3)防止建立多个冗余连接,造成不必要的资源浪费

3.为什么不是4次

三次在理论上可以最少的建立可靠连接,不需要使用更多的通信次数

4 .进行数据传输,发送数据包


数据传输总是从 客户端—》服务端,因此客户端和服务端不是固定的。

二 、TCP传输的过程-四次挥手

1、四次挥手过程

1.(客户端:终止等待1)客户端向服务端发起关闭连接的请求FIN=1,不再发送数据了,客户端进入FIN_WAIT_1状态,但如果服务器发送数据,客户端还要接收
2.(服务端:关闭等待)服务端收到FIN,可能还有数据未传输完毕,还无法完成关闭,所以先响应客户端发送ACK,表示收到关闭请求。服务端进入CLOSE_WAIT状态
3.(客户端:终止等待2)客户端收到服务器的确认请求后,客户端进入终止等待2(FIN_WAIT_2),等待服务端发送连接释放报文
4.(服务端:最后确认)等服务器的数据传输工作完成,就把FIN信号(连接释放报文)发送给客户端,可能还会发送一些数据,服务端进入LAST_ACK状态
5.(客户端:时间等待)客户端收到服务器的FIN连接释放报文。发出确认ACK,客户端进入TIME_WAIT状态
6.(服务端:CLOSED)服务端收到客户端的确认ACK,立即进入CLOSED状态
7.客户端TIME_WAIT持续2倍的MSL时长,在Linux中大约60s,之后也进入CLOSED状态
8.服务器结束TCP连接的时间比客户端早

2、为什么四次挥手

让服务端发送还未发送完成的数据,客户端只是不再发送数据,但还可以接收数据

3、为什么TIME_WAIT是2MSL

(1)确保客户端的确认报文ACK能到达服务端,如果服务端没有收到客户端发来的确认,就会重新发送关闭连接的报文
(2)确保两个传输方向上的尚未被接收活迟到的报文段都已经消失,否则如果关闭连接后,两端在原来的端口又重新建立新连接,可能导致老连接的迷途报文被新的连接收到而被误解(被误解可能以为对方要关闭连接)。
扩展:
MSL:报文最大生存时间,超过这个时间,报文就会消失

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

计算机网络1:Tcp三次握手和四次挥手 的相关文章

随机推荐

  • Variable used in lambda expression should be final or effectively final报错解决方案

    Variable used in lambda expression should be final or effectively final报错解决方案 问题背景 解决方案 Lyric 哪里都是你 问题背景 在使用forEach报错 Va
  • 比double精度更高的数据类型_数据类型

    两个重点 数据类型 变量 数据类型 Data Type 数据类型就是数据的类型 每种数据有自己的值和操作规则 C 有三大类语句类型 简单数据类型 结构化据类型 点 这一期只详细讲简单数据类型 另外两个类型的会分别单独做一期 简单数据类型 S
  • Faster Rcnn

    一 公用特征Feature Maps的获取 二 Region Proposal Network Feature Maps bs 1024 38 38 经过3 3卷积 然后分别经过两个1 1的卷积 通道数分别为18 36 18 9 2 代表每
  • JDBC-查询数据(封装工具类)

    使用封装工具类方式查询数据 1 封装注册 连接 关闭工具类 public class JdbcUtils 设置属性 驱动 private static String driver 连接 private static String url m
  • 算法课程设计--A*算法解决特定条件下的最短路径问题

    1 算法课设题目 LOL 峡谷地图最优路径规划 以下问题的计算 按照该地图的基本规则来进行在该地图中分布着各种形状不规则的障碍区域环境 整个地图模型 可以根据需求进行自行简化 问题一 在任意起点与终点之间 规划一条最短路径 问题二 当你拥有
  • 亚信科技AntDB数据库参与“国内首款”事务型性能测试工具开源发布会,树立金融技术风向标

    日前 在中国信息通信研究院和中国通信标准化协会大数据技术标准推进委员会共同举办的 国内首款金融数据库性能测试工具DataBench T开源发布会 上 亚信科技受邀进行了 亚信科技数据库测试之道 的主旨演讲 图1 中国信通院DataBench
  • 基于TensorFlow让机器生成赵雷曲风的歌词

    本文转载自公众号量化投资与机器学习 ZXL LHTZ JQXX 原文 致敬赵雷 基于TensorFlow让机器生成赵雷曲风的歌词 责编 王艺 投稿及采访请邮件wangyi csdn net 或 扫描文末二维码 我们基本上收集了赵雷所有唱过的
  • 狂神说Es

    在学习ElasticSearch之前 先简单了解一下Lucene Doug Cutting开发 是apache软件基金会4 jakarta项目组的一个子项目 是一个开放源代码的全文检索引擎工具包 不是一个完整的全文检索引擎 而是一个全文检索
  • MyBatis-Plus系列(一)--MyBatis-Plus集成Druid环境搭建

    一 简介 Mybatis Plus是一款 MyBatis 动态 sql 自动注入 crud 简化 增 删 改 查 操作中间件 启动加载 XML 配置时注入 mybatis 单表 动态 SQL 操作 为简化开发工作 提高生产率而生 Mybat
  • 大数据教育平台数仓实时计算实现 附安装包与脚本

    一 Spark Streaming Spark Streaming 是核心Spark API的扩展 可实现实时数据的可扩展 高吞吐量 容错处理 数据可以从许多来源 如Kafka Flume Kinesis 或TCP套接字 中获取 并可以使用
  • 模型训练评估——交叉验证法的介绍

    与留出法相似 将数据集D划分为k个子集同样存在多种划分方式 为减小因样本划分不同而引入的差别 k折交叉验证通常要随机使用不同的划分重复p次 最终的评估结果是这p次k折交叉验证结果的均值 例如常见的有 10次10折交叉验证 假定数据集D中包含
  • python opencv键盘监听

    目录 读取图片监听 opencv pyinput 监听小键盘 读取图片监听 for file in files a cv2 imread path file cv2 imshow a a k cv2 waitKey 10 0xFF if k
  • 292. Nim Game

    class Solution public bool canWinNim int n return n 4 0 my first solution if n 4 0 return false else return true
  • 新浪博客插入代码(块)及代码高亮…

    新浪博客不能插入代码是一件非常尴尬的事情 这里将介绍如何在新浪博客中加入代码块及其高亮的方法 所需工具 1 XAMPP数据创建软件 2 wordpress 与 codecolorer 3 CSDN博客 步骤 1 安装wordpress 与
  • pycharm IDE报错 ,记事本打开后出现卡顿,之后出现ide错误

    打开IDE之后进行编辑 点击setting出现页面无反应 右下角出现的提示 ide error occurred see detail submit display 点击进去之后 在点击这个display 类似重启IDE的命令 然后就可以继
  • 微服务架构超详细解析,写得太好了!

    本文将介绍微服务架构和相关的组件 介绍他们是什么以及为什么要使用微服务架构和这些组件 本文侧重于简明地表达微服务架构的全局图景 因此不会涉及具体如何使用组件等细节 为了防止不提供原网址的转载 特在这里加上原文链接 https www cnb
  • 什么是IPU?

    在图像识别的SOC中 有一个很重要的单元 IPU Image Processing Unit 图像处理单元 图像处理单元的目标是提供从图像输入 摄像头传感器 电视信号输入等 到显示设备 LCD显示屏 TV输出 外部图像处理单元等 端到端的数
  • 探索OLED拼接屏的特点及在莱山的场景化应用

    涞山oled拼接屏是一种高清晰度的显示屏 由多个oled屏幕拼接而成 它可以用于各种场合 如商业展示 广告宣传 会议演示等 涞山oled拼接屏具有以下特点 1 高清晰度 oled屏幕具有高对比度 高亮度 高色彩饱和度等特点 可以呈现出非常清
  • go-kit grpc调用及中间件封装

    存在问题 grpc 调用问题 通常我们向业务返回会定义如下的结构 code 20000 msg Success data 但是如果我们定义如下的proro grpc的返回值可以在客户端不能直接使用 还需要使用json进行解析 message
  • 计算机网络1:Tcp三次握手和四次挥手

    一 TCP传输的过程 三次握手 1 建立连接并确认连接 三次握手 过程 1 客户端向服务端发出连接请求SYN 1 seq x 等待服务端响应 状态由CLOSED转为SYN SENT 2 服务端做出响应ACK和连接信号SYN 1 seq y