基础05-TCP三次握手和四次挥手

news2024/11/17 7:17:08

TCP 连接 三次握手 四次挥手

题目

请描述 TCP 连接的 三次握手 和 四次挥手

建立连接

在这里插入图片描述

客户端和服务端通过 HTTP 协议发送请求,并获取内容。

在发送请求之前,需要先建立连接,确定目标机器处于可接受请求的状态。

就例如,你要请快递员(第三方的)去张三家取一个东西,你必须先打电话问问他在不在家。这就是建立连接的过程。

HTTP 协议是一个应用层的协议,它只规定了 req 和 res 的数据格式,如状态码、header、body 等。

而建立网络连接需要更加底层的 TCP 协议。

三次握手

三次握手,即建立一次 TCP 连接时,客户端和服务端总共需要发送 3 个包。

先举一个例子。还是你要派人去张三家取一个东西,现在你要发短信(不是打电话)“建立连接”,至少需要 3 个步骤,缺一不可。

  • 你:在家吗?
  • 张三:在家
  • 你:好,这就过去(然后你指派人上门,张三准备迎接)

过程

  • 客户端发包,服务端收到。服务端确认:客户端的发送能力是正常的。
  • 服务端发包,客户端收到。客户端确认:服务端的接收能力是正常的。
  • 客户端发包,服务端收到。服务端确认:客户端即将给我发送数据,我要准备接收。

建立连接完成,然后就开始发送数据,通讯。
在这里插入图片描述

四次挥手

握手,是建立连接。挥手,就是告别,就是关闭连接。

还是之前的例子。取东西,不一定一次就取完,可能要来回很多次。而且,也不一定全部由你主动发起,过程中张三也可能会主动派人给你发送。

即,你在 chrome 中看到的是一次 http 请求,其实背后可能需要好几次网络传输,只不过浏览器给合并起来了。

好了,取东西完毕了,你要发短信“关闭连接”,告诉张三可以关门了,需要 4 个步骤。

【注意】这里你需要等着确认张三关门,才算是完全关闭连接,不能你说一声就不管了。跟日常生活不一样。

  • 你:完事儿了
  • 张三:好的 (此时可能还要继续给你发送,你也得继续接收。直到张三发送完)
  • 张三:我发送完毕,准备关门了
  • 你:好,关门吧 (然后你可以走了,张三可以关门了,连接结束)

过程

  • 客户端发包,服务端接收。服务端确认:客户端已经请求结束
  • 服务端发包,客户端接收。客户端确认:服务端已经收到,我等待它关闭
  • 服务端发包:客户端接受。客户端确认:服务端已经发送完成,可以关闭
  • 客户端发包,服务端接收。服务端确认:可以关闭了

图示

在这里插入图片描述
在这里插入图片描述

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

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

相关文章

如何做SpringBoot单元测试?

前言单元测试(unit testing),是指对项目中的最⼩可测试单元进⾏检查和验证的过程就叫单元测试,对于Java来说或者是在SpringBoot项目中,最小的可测试单元就是一个方法。做单元测试就是为了证明某段代码的执⾏结果是否符…

如何快速开发一套分布式IM系统

架构说明: 1)CIM 中的各个组件均采用 SpringBoot 构建;2)采用 Netty Google Protocol Buffer 构建底层通信;3)Redis 存放各个客户端的路由信息、账号信息、在线状态等;4)Zookeeper …

1110道Java面试题及答案(最新Java初级面试题大汇总)

开篇小叙 现在 Java 面试可以说是老生常谈的一个问题了,确实也是这么回事。面试题、面试宝典、面试手册......各种 Java 面试题一搜一大把,根本看不完,也看不过来,而且每份面试资料也都觉得 Nice,然后就开启了收藏之路…

nginx常用命令与简单转发配置

一、Nginx常用基本命令 1、启动Nginx服务器命令: 去到sbin路径:cd /usr/local/nginx/sbin 启动Nginx服务器: ./nginx2、查看Nginx 版本号命令: ./nginx -v 或 ./nginx -V3、查看Nginx进程命令: ps aux|grep nginx4、检查Nginx…

我又和redis超时杠上了

背景 经过上次redis超时排查,并联系云服务商解决之后,redis超时的现象好了一阵子,但是最近又有超时现象报出,但与上次不同的是,这次超时的现象发生在业务高峰期,在简单看过服务器的各项指标以后&#xff0…

虚拟化系列教程:创建 KVM 虚机的几种方式

虚拟化系列教程:创建虚拟机的几种方式[TOC](虚拟化系列教程:创建虚拟机的几种方式)创建 KVM 虚机的几种方式使用 virt-install 命令创建虚拟机参数说明一般选项安装方法存储配置网络配置其它常用的选项图形配置设备选项虚拟化平台其它创建虚拟机的操作演…

java25种设计模式之适配器模式

1、定义 适配器模式在java中是一中结构型设计模式。 在实际的java来发中,有时候我们会遇到一些不能直接调用,或者不是客户需要的接口,但是却需要使用时,我们就可以使用适配器设计模式。 适配器设计模式就是将一个原本不兼容的接口…

文件处理命令连接命令

ln 命令英文原意:link 命令所在路径:/bin/ln 执行权限:所有用户 语法:ln -n[原文件][目标文件] -s 创建软连接 功能描述:生成链接文件 由上图可以看到这是我们所创建的软链接文件 为什么要用软连接? 软…

记录 yarn的安装和使用

yarn简介: Yarn是facebook发布的一款取代npm的包管理工具。 yarn的特点: ◆ 速度快 npm 会等一个包完全安装完才跳到下一个包,但 yarn 会并行执行包 ◆离线模式。 Yarn 缓存了每个下载过的包,所以再次使用时无需重复下载。 同时…

CentOS7安装Telnet客户端和服务端和使用方式

在执行telnet时会提示命令不存在。Telnet服务的配置步骤如下:一、检测是否安装telnet软件包(通常要两个)1、telnet-client (或 telnet),这个软件包提供的是 telnet 客户端程序;2、telnet-server 软件包,这个才是真正的…

UE4 安卓AR 识别图片

UE4 安卓AR 识别图片 开启一个插件 准备一个只有玩家出生点的场景,这个场景用来做识别图片的 新建一个游戏模式,设置好默认的pawn类: 一个摄像机就行了,代表手机开启AR会话后的那个相机 然后gamemode 事件开始运行&#xff0…

【Linux】线程概念 | 线程控制

​🌠 作者:阿亮joy. 🎆专栏:《学会Linux》 🎇 座右铭:每个优秀的人都有一段沉默的时光,那段时光是付出了很多努力却得不到结果的日子,我们把它叫做扎根 目录👉知识补充&…

机载雷达的时间简史

从地基起步 蝙蝠,虽然像人一样拥有双眼,但它看起东西来,用到的却不是眼睛。蝙蝠从鼻子里发出的超声波在传输过程中遇到物体后会立刻反弹,根据声波发射和回波接收之间的时间差,蝙蝠就可以轻易地判断出物体的位置。这一工…

解读:“出境标准合同”与“出境安全评估”要点与异同

《数据安全法》第四条及《个人信息保护法》第三章对数据出境、个人信息跨境提出明确要求,《数据安全法》与《个人信息保护法》存在互相包含、被包含、衔接、特性、独立性、相互补充等内涵。本文通过上位法互相衔接、关联、特性的思路,去观察《个人信息出…

2018年MathorCup数学建模C题陆基导弹打击航母的数学建模与算法设计解题全过程文档及程序

2018年第八届MathorCup高校数学建模挑战赛 C题 陆基导弹打击航母的数学建模与算法设计 原题再现: 火箭军是保卫海疆主权的战略力量,导弹是国之利器。保家卫国,匹夫有责。为此,请参赛者认真阅读"陆基反舰导弹打击航母的建模示意图"。(附图 1 )参考图中的…

【MyBatis-Plus】实现字段自增的5种实现方式 setSql @TableField @Version

在使用mybatis-plus的时候,我们需要对某条数据的单一字段进行操作,又不想查出整条数据拿到字段值再加一赋值,此时可以用下面5种方式来实现。 方式一:setSql 官网文档Mybatis-Plus:setSql 官方文档示例: i.标准setSql 使用setS…

好的提高代码质量的方法有哪些?有什么经验和技巧?

用于确保代码质量的6个高层策略: 1 编写易于理解的代码 考虑如下这段文本。我们有意地使其变得难以理解,因此,不要浪费太多时间去解读。粗略地读一遍,尽可能吸收其中的内容。 〓ts〓取一个碗,我们现在称之为A。取一…

《实践论》笔记及当下反思(一)

目录 一句话概括核心观点 笔记 1、人的认识,主要地依赖于物质的生产活动 2、只有人们的社会实践,才是人们对于外界认识的真理性的标准 3、强调理论对于实践的依赖关系,理论的基础是实践,又转过来为实践服务 4、你要知道梨子…

浅析三款大规模分布式文件系统架构设计

什么是文件系统 当提到文件系统,大部分人都很陌生。但我们每个人几乎每天都会使用到文件系统,比如大家打开 Windows、macOS 或者 Linux,不管是用资源管理器还是 Finder,都是在和文件系统打交道。如果大家有自己动手装过操作系统的…

Nacos开机自动启动(不用手动shutdown.cmd)

目录 一.前言 二.利用win服务自动启动nacos 1.1下载WinSW 1.2.准备工作和测试 三.利用脚本启动 21.编写一个bat文件,建议放在nacos的根目录下 四.总结: 一.前言 在实际开发中我们的项目配置nacos时, 每次本机重启电脑和更换网络ip时nacos就会挂机(death), 我们还要手动再去…