三次握手与四次挥手

三次握手

三次握手是指在建立TCP连接时,需要client端和server端共进行三次信息确认。

第一次握手:建立连接。client发送连接请求报文段(SYN位置为1,Sequence Number为x),然后,client端进入SYN_SEND状态,等待server端的确认;
第二次握手:server端收到client端的SYN报文段,需要对这个SYN报文段进行确认,若同意连接,将ACK位置为1,Acknowledgment Number为x+1(Sequence Number+1);同时,自己自己还要发送SYN请求信息,将SYN位置为1,Sequence Number为y;服务器端将上述所有信息放到一个报文段(即SYN+ACK报文段)中,一并发送给client端,此时server端进入SYN_RCVD状态;
第三次握手:client端收到server端的SYN+ACK报文段,向服务器发送ACK报文段(ACK位置为1,Acknowledgment Number设置为y+1,Sequence Number为x+1),这个报文段发送完毕以后,client端和server端都进入ESTABLISHED状态,完成TCP三次握手。
在这里插入图片描述

四次挥手

四次挥手是指在释放TCP连接时,需要client端和server端共进行四次信息确认。

第一次挥手:client端数据传输完毕需要断开连接,client端通过TCP向server端发出连接释放报文段(FIN位置为1,Sequence Number为u),并停止再发送数据,主动关闭TCP连接,进入FIN-WAIT-1状态,等待server端的确认;
第二次挥手:server端收到连接释放报文段后即发出确认报文段(ACK位置为1,Acknowledgment Number为u+1,Sequence Number为v),server端进入CLOSE-WAIT关闭等待状态,此时的TCP处于半关闭状态,client端到server端的连接释放。而client端收到server端的确认后,进入FIN-WAIT-2状态,等待server端发出的连接释放报文段;
第三次挥手:当server端数据传输完毕后,server端发出连接释放报文段(FIN位置为1,ACK位置为1,Sequence Number为w,Acknowledgment Number为u+1),server端进入LAST-ACK(最后确认)状态,等待client端的最后确认;
第四次挥手:client端收到server端的连接释放报文段后,对此发出确认报文段(ACK位置为1,Sequence Number为u+1,Acknowledgment Number为w+1),client端进入TIME-WAIT(时间等待)状态。此时TCP未释放掉,需要经过时间等待计时器设置的时间2MSL后证明server端进入CLOSED状态,client才进入CLOSED状态。
在这里插入图片描述

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

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

相关文章

leetcode619. 只出现一次的最大数字(SQL)

表 my_numbers 的 num 字段包含很多数字,其中包括很多重复的数字。 你能写一个 SQL 查询语句,找到只出现过一次的数字中,最大的一个数字吗? --- |num| --- | 8 | | 8 | | 3 | | 3 | | 1 | | 4 | | 5 | | 6 | 对于上面给出的样例…

socket入门

socket 简介 Socket即套接字,就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。一个套接字就是网络上进程通信的一端,提供了应用层进程利用网络协议交换数据的机制。从所处的地位来讲,套接字上联应用进程,下联网络…

SPI、I2C、UART 三种串行总线对比介绍

转载自https://blog.csdn.net/oqqHuTu12345678/article/details/65445338 参考博客 https://blog.csdn.net/xiaodingqq/article/details/80342459 https://blog.csdn.net/weiqifa0/article/details/8845281 https://www.zhihu.com/question/22632011 http://www.360doc.cn/…

栈与堆的区别(内存分配与数据结构)

参考自https://blog.csdn.net/K346K346/article/details/80849966/ 堆(Heap)与栈(Stack)包含两层含义: 程序内存布局场景下的内存管理方式数据结构中的两种常见的数据结构 1. 程序内存分配中的堆与栈 1.1 栈介绍 …

深入学习卷积神经网络(CNN)的原理知识

转载自https://www.cnblogs.com/wj-1314/p/9754072.html 在深度学习领域中,已经经过验证的成熟算法,目前主要有深度卷积网络(DNN)和递归网络(RNN),在图像识别,视频识别,语…

C/C++中static的用法全局变量与局部变量

转载自C/C中static的用法全局变量与局部变量 1.什么是static? static 是C/C中很常用的修饰符,它被用来控制变量的存储方式和可见性。 1.1static的引入 我们知道在函数内部定义的变量,当程序执行到它的定义处时,编译器为它在栈上分配空间&…

李牛(Linux)脚本

Linux课堂笔记day01 主要总结内容: 一:Linux背景介绍 二:系统操作 三:服务管理 四:shell脚本 五:文本操作 六:常用服务搭建 01:初识linux 收获:可以熟练应对运维和开发 对以后的生…

李牛(Linux)打包

15:打包压缩以及解压缩 接下来我们来介绍打包压缩以及解压缩命令 首先我们要在脑海里想几个问题: 1.打包压缩以及解压缩在字面上理解到底是什么意思? 是不是像我们生活见到的事例那样 比如说:生产酒的厂商一般都是按照规则将12瓶…

jquery实现页面提示,数据正在加载中。(

简单代码&#xff1a; jsp中代码如下&#xff1a;<wbr> <div id"dataLoad" style"display:none"><!--页面载入显示--></wbr><wbr><wbr><table width100% height100% border0 aligncenter valignmiddle></wbr…

李牛(Linux)vi

16&#xff1a;强大的vi 引言&#xff1a;提到vi我们不得不提到vim 这两种编辑器就先当于我们Windows操作系统当中的记事本 不过vi以及vim编辑器熟练掌握之后是不需使用鼠标进行操作的 完全都是由键盘来进行控制 那为什么可以不用鼠标呢 就是因为我们的vi编辑器是基于多模式的…

李牛(Linux)

20&#xff1a;用户和用户组管理 引言&#xff1a; 新思维1&#xff1a;用户&#xff1f;用户是什么&#xff1f;能不能吃&#xff1f;好吃不&#xff01;哈哈 不开玩笑了 我们平常接触的用户就是window系统下的用户 用户名叫啥来着 哦 user 但是对于Windows操作系统来说 好像…

Date类(日期时间类)219

219节课堂笔记 1.概述&#xff1a;表示特定的时间 2.所在的类&#xff1a;java.util.Date(表示时间和日期的类) 类date标识特定的瞬间&#xff0c;精确到毫秒 3.毫秒的换算&#xff1a;1秒1000毫秒 tips&#xff1a;不可以认为是1秒等于60毫秒&#xff0c;与时钟换算是不一样的…

MYSQ产品

前言&#xff1a;MySQL数据库&#xff0c;隶属于MySQLAB公司&#xff0c;总部位于瑞典&#xff0c;后被Oracle收购 MySQLAB公司是由monky及他的两位好朋友创建的&#xff0c;先是被sun公司收购然后被偶尔甲骨文公司收购 MySQL的优点&#xff1a; 1.它的成本是比较低的&#xff…

DateFormat(炸窝)

222&#xff1a;DateFormat方法的使用以及功能&#xff1a; java.text.DateFormat是日期或者时间格式化子类的抽象类&#xff0c;作用&#xff1a;可以帮我们完成日期和文本之间的转换&#xff0c;也就是可以在Date对象与String对象之间进行来回转换 格式化&#xff1a; 按照指…

剑指offer:8-11记录

用两个栈实现一个队列。队列的声明如下&#xff0c;请实现它的两个函数 appendTail 和 deleteHead &#xff0c;分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素&#xff0c;deleteHead 操作返回 -1 ) 示例 1&#xff1a; 输入&#xff1a; ["…

剑指offer:26-30记录

输入两棵二叉树A和B&#xff0c;判断B是不是A的子结构。(约定空树不是任意一个树的子结构) B是A的子结构&#xff0c; 即 A中有出现和B相同的结构和节点值。 例如: 给定的树 A: 3 / \ 4 5 / \ 1 2 给定的树 B&#xff1a; 4 / 1 返回 true&#xff0c;因为…

Calendar类 set方法 get方法 add方法

Calendar类 set方法 get方法 add方法 package asd; import java.util.*; public class zixue { public static void main(String[] args) { demo01();//实验的是get()方法&#xff1b; demo02();//实验的是set()方法&#xff1b; } //---------------------------------------…

剑指offer:33-37记录

输入一个整数数组&#xff0c;判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true&#xff0c;否则返回 false。假设输入的数组的任意两个数字都互不相同。 参考以下这颗二叉搜索树&#xff1a; 5 / \ 2 6 / \ 1 3 示例 1&#xff1a; 输入: [1,6,…

剑指offer:45-48记录

输入一个正整数数组&#xff0c;把数组里所有数字拼接起来排成一个数&#xff0c;打印能拼接出的所有数字中最小的一个。 示例 1: 输入: [10,2] 输出: "102" 示例 2: 输入: [3,30,34,5,9] 输出: "3033459" 提示: 0 < nums.length < 100 说明:…

剑指offer:50-53记录

在字符串 s 中找出第一个只出现一次的字符。如果没有&#xff0c;返回一个单空格。 示例: s "abaccdeff" 返回 "b" s "" 返回 " " 限制&#xff1a; 0 < s 的长度 < 50000 思路&#xff1a;map记录次数&#xff0c;再…