详解TCP,三次握手,四次挥手

2023-11-06

前言:TCP是非常常见的面试题,是必会的知识点,记录一下与各位共同学习。

三次握手

问:为什么要三次握手?

因为三次握手才能保证双方具有接收和发送的能力

  • 第一次握手:客户端发送带有 SYN 标志的连接请求数据包给服务端

  • 第二次握手:服务端发送带有 SYN+ACK 标志的连接请求和应答数据包给客户端

  • 第三次握手:客户端发送带有 ACK 标志的应答数据包给服务端(可以携带数据了)

  • 简单比喻:

    • 发送方:小明,接收方:小红
    • 小明给小红打电话,小红接听了并回复(确认小红的接受能力),小明收到回复(确认小明的接受能力和发送能力)。
    • 这时小明已经确认了小红的发送能力,但是小红自己不能确认,所以需要小明回复一次,小红接收消息(确认小红的发送能力),到此双方的收发能力确认完毕,接下来就可以进行数据传输。

四次挥手

问:为什么挥手需要四次?

等到收发双发数据传输完毕,并不是发送方传输完毕整个传输过程就结束,还需等待接收方发送数据和接收数据

  • 客户端打算关闭连接,此时会发送一个 TCP 首部 FIN 标志位被置为 1 的报文,也即 FIN 报文,之后客户端进入 FIN_WAIT_1 状态。

  • 服务端收到该报文后,就向客户端发送 ACK 应答报文,接着服务端进入 CLOSED_WAIT 状态。

  • 客户端收到服务端的 ACK 应答报文后,之后进入 FIN_WAIT_2 状态。

  • 等待服务端处理完数据后,也向客户端发送 FIN 报文,之后服务端进入 LAST_ACK 状态。

  • 客户端收到服务端的 FIN 报文后,回一个 ACK 应答报文,之后进入 TIME_WAIT 状态

  • 服务器收到了 ACK 应答报文后,就进入了 CLOSE 状态,至此服务端已经完成连接的关闭。

  • 客户端在经过 2MSL 一段时间后,自动进入 CLOSE 状态,至此客户端也完成连接的关闭。

  • 简单比喻:

    • 发送方:小明,接收方:小红
    • 小明给小红打电话,小明说没有什么要说的了,小红收到后回复(确认小明关闭发送功能,小红关闭接收功能)
    • 小红的话说完了,告知小明,小明收到后回复(确认小红关闭发送功能,小明关闭接收功能)

其他

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

详解TCP,三次握手,四次挥手 的相关文章

  • S-DES

    S DES即simplifed DES S DES算法的输入是一个8位的明文或者密文组和一个10位的密钥 输出是一个8位的密文或者明文组 以下是S DES所需的几个置换表 P10 3 5 2 7 4 10 1 9 8 6 P8 6 3 7
  • 去掉 Powered by Discuz! 6.0.0 © 2001-2007 Comsenz Inc.

    去掉 Powered by Discuz 6 0 0 2001 2007 Comsenz Inc templates default footer htm 倒数第15行 16行删除 即下面的代码 Powered by Discuz vers
  • 图形学数学基础之重要性采样(Importance Sampling)

    作者 i dovelemon 日期 2017 08 06 来源 CSDN 主题 Importance Sampling PDF Monte Carlo 引言 前面的文章 图形学数学基础之基本蒙特卡罗尔积分 Monte Carlo Integ

随机推荐

  • 数组访问越界问题

    1 什么是数组访问越界 我们通过数组的下标来得到数组内指定索引的元素 这称作对数组的访问 如果一个数组定义为有n个元素 那么 对这n个元素 下标为0 到 n 1的元素 的访问都合法 如果对这n个元素之外的访问 就是非法的 称为 越界 数组占
  • Customplot画多条折线图,同时可以控制每条曲线的隐藏和显示

    Customplot多条曲线的控制 前言 开始使用Qcharts画图 大数据性能极差 于是转用Customplot画图 主要进行数据的实时更新和大量数据的加载 一 模拟数据 采用子线程创建模拟数据 采用队列存储 pragma once in
  • PostgreSQL简单使用介绍

    之前没怎么接触各类数据库 现在对新上手的数据库都来学习一番 项目组经常用到的数据库和新使用的数据库都会做个笔记 本篇讲讲postgresql 1 安装配置postgresql 参考网址 https blog csdn net DaSo CS
  • LINUX驱动开发学习笔记---GCC编译器

    一 GCC编译器基础使用 Q 为什么需要GCC编译器 A 在Windows下我们 可以 使用各种各样的 IDE进行编程 比如强大的 Visual Studio 它既可以编辑也可以编译 但是linux下vi或vim编辑器只能用于编辑 不能编译
  • 【机器学习】最大熵算法 整理

    最大熵模型由最大熵原理推导实现 1 最大熵原理 最大熵原理认为 学习概率模型时 在所有可能的概率模型 分布 中 熵最大的模型是最好的模型 通常用约束条件来确定概率模型的集合 所以 最大熵原理也可以表述为在满足约束条件的模型集合中选取熵最大的
  • Python如何把 dict 快速转换为namedtuple

    下面的代码可能让你更容易理解
  • Maven实战(三)Eclipse构建Maven项目

    1 Eclipse安装m2eclipse插件 见eclipse maven plugin 插件 安装 和 配置 2 构建Maven项目 2 1 创建简单Maven项目 点击Eclipse菜单栏File gt New gt Ohter gt
  • FastApi-21-APIRouter

    Part1背景 通常在我们开发 app 时都会用到路由 像 Flask 有 blueprint Django 有 urls 等 其目的都是为了路由汇总管理 FastApi 也不例外 其拥有 APIRouter 今天我们就一起来了解 APIR
  • vue分层项目架构搭建过程与踩过的坑

    项目介绍 公司已有saas项目 因为需求变动前后端都相应的做出架构调整 后端采用分层模式开发 要求每个模块可单独发布 可按客户需求单模块部署到客户服务器 所以前端的框架要求也要符合这个需求 前端具体需求 1 客户有自己的系统需要引入我们产品
  • 【Unity实用小知识点】EventTrigger在3D物体或UI上应用

    Event Trigger Event Trigger可以在一些简单交互上非常方便的使用 废话比较多 想直接看UI和3D区别的直接跳到总结 官方API 描述 从 EventSystem 接收事件并为每个事件调用注册函数 EventTrigg
  • 这几天来重学Java的感受

    拿出课本重新开始看 最大的感受就是以前学的太浅显了 而且缺少练习 才过了不到一年就忘得差不多了 已经下定决心要好好学习Java 不会轻言放弃 我不知道大家选择开发选择敲代码是不是真的喜欢 反正我并不是特别喜欢 不过也不算讨厌 我总觉得不管哪
  • Matlab使用CUDA--利用cudamex

    目录 一 编写可供Matlab编译的CUDA代码 1 待编译的程序需要包含的头文件 2 待编译程序的程序入口函数mexFunction 3 参数传递方法 二 使用Matlab编译CUDA工程并调用 1 mexcuda编译指令 2 参考文章
  • centos7 安装gitlab 之 被502支配的恐惧

    之前重装了下gitlab 本以为很轻松 结果pp打脸 一直就是下面这个页面 看到这个502都有阴影了 看了网上各位兄dei的写的相关问题解决办法 总结了下 1 端口被占用 etc gitlab gitlab rb 这个文件里面 有3个地方需
  • 【Step1】Java SE Development Kit 17.0.6

    点击下方链接 Java SE 17 Archive Downloads 选择下载文件 以windows x64 installer为例 运行安装文件 点下一步 可选 更改安装文件夹 点下一步 可选 点击后续步骤 JDK 17 Documen
  • Python反转输出正整数

    题目 获得输入正整数 N 反转输出该正整数 不考虑异常情况 输入格式 输入一个正整数 输出格式 输出一个正整数 疑问 为什么我的两个答案都没通过Python二级在线评阅的测试 我
  • 【数据库】--- Redis

    Redis 概述 Redis 简介 下载与安装 基本使用 基本知识 数据结构 字符串类型 String 列表类型 List 集合类型 Set 哈希类型 hash 有序集合 zset srted set 关于key的指令 1 查询符合条件的
  • js逆向-某动网演出数据获取

    声明 本文仅供学习参考 如有侵权可私信本人删除 请勿用于其他途径 违者后果自负 如果觉得文章对你有所帮助 可以给博主点击关注和收藏哦 前言 目标网站 aHR0cHM6Ly93d3cuc2hvd3N0YXJ0LmNvbS9ldmVudC9sa
  • 爆改闲置主机为nas

    目录 一 工具准备 1 工具 2 下载需要安装的文件 二 进行实操 1 刷U盘或者硬盘的引导 2 上x86主机 3 连接x86主机 4 安装群辉 三 进入系统 1 存储池的设置 2 共享文件夹的设置 3 用户的设置 4 IP地址的固定 作者
  • 轿车双横臂式独立前悬架及多连杆式独立后悬架设计(毕业论文+7张CAD图纸)

    轿车双横臂式独立前悬架及多连杆式独立后悬架设计 摘 要 悬架是汽车重要的组成部分 是传递车轮与车身之间的各种力和力矩的连接装置 轿车的前悬架采用的双横臂式独立悬架 其后悬采用的是多连杆式独立悬架 双横臂式的独立悬架是常见的悬架形式之一 由于
  • 详解TCP,三次握手,四次挥手

    前言 TCP是非常常见的面试题 是必会的知识点 记录一下与各位共同学习 三次握手 问 为什么要三次握手 因为三次握手才能保证双方具有接收和发送的能力 第一次握手 客户端发送带有 SYN 标志的连接请求数据包给服务端 第二次握手 服务端发送带