」。没错TCP 协议的设计就是为了能够在客户端和服务器之间建立起一个可靠连接。
标志位虽然很多但是如果放到具体场景里来看的线c;就很容易理解他们的作用了。
三次握手就是为了在客户端和服务器间建立连接这个过程并不复杂但里面有很多细节需要注意。
这张图就是握手的过程可以看到客户端与服务器之间一共传递了三次消息这三次握手其实就是两台机器之间互相确认状态我们来一点一点看。
首先是客户端发起连接第一个数据包将 SYN 置位也就是 SYN 1表明这个数据包是 SYN 报文段也被称为段 1。这一次发送的目的是告诉服务器自己的初始序列号是client_isn还有一个隐含的信息在图里没有表现出来那就是告知服务端自己想连接的端口号。除了这些客户端还会发送一些选项不过这跟三次握手没多大关系暂且按下不表。
所以为了让初始序列号更难预测现代系统常常使用半随机的方法选择初始序列号详细的方法就不在这里展开了。
当服务器接收到客户端的连接请求后就会向客户端发送ACK表示自己收到了连接请求而且服务器还得把自己的初始序列号告诉客户端这其实是两个步骤但是发送一个数据包就可以完成用的就是前面说的捎带技术。图里的ACK client_isn 1是指确认号字段的值要注意和ACK 标志位区分开。
ACK 字段其实也有不少需要注意的点不过这个跟滑动窗口一块讲比较直观这里就先不提了。
这是因为服务器虽然把数据包发出去了但他还不知道客户端是否收到了这个包所以服务器需要等待客户端返回一个 ACK表明客户端收到了数据至此连接完成。
连接建立后进入传输数据的阶段这里就涉及到很多很多技术我会另写文章。
有了三次握手的基础四次挥手就比较容易理解了
四次挥手的过程其实很简单就是服务器和客户端互相发送 FIN 和 ACK 报文段告知对方要断开连接。
四次挥手里值得关注的一点就是TIME_WAIT状态也就是说主动关闭连接的一方即使收到了对方的 FIN 报文也还要等待 2MSL的时间才会彻底关闭这条连接。这里面的 MSL 指的是最大段生成期指的是报文段在网络中被允许存在的最长时间。可为什么不直接关闭连接呢
另一个原因是经过 2MSL 之后网络中与该连接相关的包都已经消失了不会干扰新连接。我们来看一个例子假如客户端向服务器建立了新的连接旧连接中某些延迟的数据坚持到了新连接建立完毕而且序列号刚好还在滑动窗口内服务器就误把它当成新连接的数据包接收如下图所示
2021第一次Java面试,我去了快手。快手的面试挺有挑战性的,而且还特别有意思,感觉啥都能问到。(二面是10天前约的面试,差点要忘了)然后是HR面,前天我就收到offer。TCP 报文段结构一谈到 TCP 协议,大家最先想到的词就是「面向连接」和「可靠」。没错,TCP 协议的设计就是为了能够在客户端和服务器之间建立起一个可靠连接。在讲连接过程之前,我们先来看看 TCP 的报文段结构,通过这个结构,我们可以知道 TCP 能够提供什么信息:这里有几点是需要注意的:TCP 协议需要一个四元组(
导读: 作者:高鹏(网名八怪),《深入理解MySQL主从原理32讲》系列文的作者。2008年开始至今一直从事Oracle/MySQL相关工作,现任易极付高级DBA,Oracle Ocm。有丰富的数据库性能调优,故障诊断
,并且对MySQL源码有一定的研究。 《深入理解MySQL主从原理32讲》专栏包含GTID部分、Event部分、主库部分、从库部分四大块来详细讲解主从原理。希望能帮助读者朋友们解决关于主从同步中的一些疑问。八怪写作风格很是严谨,几乎每篇都是从源码入手去剖析MySQL主从复制相关的知识点。 强烈推荐大家订阅本专栏 业界大咖推荐序 从2016年开始八怪(本名高鹏)经常向我请教一
《深入理解MySQL》深入源代码,剖析了MySQL数据库系统的架构,并提供了分析、集成和修改MySQL源代码的专家级建议。《深入理解MySQL》分三个部分:部分介绍
和修改开源系统的概念,提供探讨更数据库概念所需的工具和资源;第二部分讨论MySQL系统,阐明如何修改MySQL源码,如何将MySQL系统作为嵌入式数据库系统;第三部分更深入地探讨了MySQL系统,讲述数据库工作的内部机理。 《深入理解MySQL》面向MySQL数据库
TCP 的三次握手,四次挥手和重要的细节干货满满,建议细读
上一次讲了 UDP 协议,从这次开始,就要讲 TCP 协议了,因为 TCP 协议涉及到的东西很多,一篇文章概括不完,所以我把 TCP 协议的内容分成好几个部分,逐个击破。 TCP 报文段结构 一谈到 TCP 协议,大家最先想到的词就是「面向连接」和「可靠」。没错,TCP 协议的设计就是为了能够在客户端和服务器之间建立起一个可靠连接。 在讲连接过程之前,我们先来看看 TCP 的报文段结构,通过这个结...
1 前言 在上文Docker初体验中我们介绍了Docker的一些基本概念和常用命令,但因为Docker是在Linux系统下创建的资源分离机制,所以它无法在Windows系统下直接运行。这次我们将用3分钟的时间介绍一下如何在Win10系统下运行Docker。 2 下载Docker 用户可以根据自己的系统在Docker官网选择Mac[1]或Windows[2],因为Docker可以在Mac系统中安装后可以直接运行,这里就不再赘述。 安装完Docker,并注册个人账号,再双击启动它,你会发现并不像你想的那
阿里P8大牛用342页PDF剖析MySQL主从原理,图文并茂,一气呵成
前言: 在超大规模流量的分布式系统环境下,无论是从系统性能的角度,还是从数据安全性的角度,掌握MySQL主从原理,都是当下技术人员的必备基本功。MySQL主从原理是高可用架构的基石,即便是在MGR这种集群架构中也可以看到主从的影子。要解决一个问题或者故障,最快的方式就是了解它的原理,快速定位问题。本书从源码层面抽丝剥茧般地描述MySQL主从原理,全面地介绍了GTID相关的知识点,并解析了主要Event的生成、作用和格式,以及线程的初步知识、MDLLOCK、排序等热门话题和主从相关的案例。 无论是MySQ
package j2se; public class little { public static void main(String[]args){ Fulei.main(args); HelloWorld.main(args); } } class Fulei{ public static void main(String[] args){ int b = 1; System.o
类有两种方法一种是类方法就是用static修饰的,一种是实例方法,就是没有static修饰的方法。类方法可以同时类名,方法名的方式调用。而实例方法必须先生存类的实例在通过实例.方法名的方式调用。例如:publicclassMethodCall{publicstaticvoidmain(String[]args){Tes...
这里我有三种:1、直接new 出另一个类的实例,通过实例来调用方法2、使用static修饰,通过类名.方法前两种我就省略了3、在本类返回一个返回类型为对象的方法这里以设置私有化属性,生成set和get方法举例:本类:调用B类的s()方法public class A(){1、B b = new B();b.s(); ----------------------------- 第一种方法2、B...
SecondaryNamenode (作为Namenode 的热备) 基础的了解 SecondaryNamenode永远无法取代Namenode (主结点)的位置,他只是Namenode的一个热备 Namenode(主节点)掌握第一批 元数据(描述数据的数据) 内存:存储量小、贵、但是快 硬盘: 存储量大、便宜、但是慢 为了保证元数据的安全 将内润茶中的数据存放到磁盘...
2019独角兽企业重金招聘Python工程师标准 ...
一、win10专业版系统首先需要开启硬件虚拟化及Hyper-V功能,才能进行Docker for Windows软件安装。 如何开启硬件虚拟化,自行百度。可在任务栏中查看虚拟化是否开启。 win10系统,打开控制面板-“应用”-“程序和功能”,开启Hyper-V,按照提示重启系统即可,如下图: 二、Docker下载和安装 Docker默认安装在C盘中,这样慢慢会导致C盘空间越来越小,建议把Docker安装到D盘。 Windows中更改Docker默认安装路径方法: 1.先创建 D:\Program
mysql复制技术与生产实践_雍正荐书第十六期 数据生态:MySQL复制技术与生产实践...
数据复制技术是实现数据库水平扩展、高可用性和高可靠架构的基础。本书中的案例都是从生产实践中提炼和总结的,体现了两位作者丰富的MySQL运维和咨询
。林晓斌(丁奇)“MySQL实战45讲”专栏作者MySQL主从复制技术一直都是一个热门的话题,这当然是有道理的,可以说主从复制技术是各种MySQL高可用架构的基石。除了理论,本书还包含大量实践内容,相信仔细阅读定会收获颇丰。高鹏(八怪)“深入理解...
为了更好的梳理相关知识,咱们先看纯手绘知识体系图 1.1 Kafka知识体系大纲 由于我手绘这些知识体系大纲是用的xmind软件,无法上传,所以都以截图的形式展示,细节处不清楚(毕竟图片形式有限) 1.2 RabbitMQ知识体系大纲 1.3 RocketMQ知识体系大纲 看完知识大纲,该刷
Kafka的用途有哪些?使用场景如何? Kafka中的ISR、AR又代表什么?ISR的伸缩又指什么 Kafka中的HW、LEO、LSO、LW等分别代表什么? Kafka中
win10家庭版安装最新版本docker,已经不再需要hyper-v虚拟机,也不用修改windows版本注册表,最新版windows docker采用了wsl容器(适用于 Linux 的 Windows 子系统)。 安装步骤如下: 一、下载,浏览器访问,点击Download for Windows按钮下载docker desktop安装文件 二、双击“Docker Desktop Installer.exe”安
oledb 访问接口sqlncli10返回了消息 没有活动事务_这样理解分布式事务你是不是就会懂了?...
分布式事务主要解决分布式一致性的问题。说到底就是数据的分布式操作导致仅依靠本地事务无法保证原的性。与单机版的事务不同的是,单机是把多个命令打包成一个统一处理,分布式事务是将多个机器上执行的命令打包成一个命令统一处理。常见的分布式事务场景#分布式事务其实就在我们身边,你一直在用,但是你却一直不注意它。转账扣你账户的余额,增加别人账户余额,如果只扣了你的,别人没增加这是失败;如果没扣你的钱别人也增加了...
小白翻身教程-包的作用 现在StringUtil已经写好了,我们希望在Demo里面引用它,有两种方法。 步骤 1 全限定名 为了简单起见,我们就不给Demo加package了,这样可以直接在Editplus里面快速运行。 全限定名,就是除去CLASSPATH,剩下的路径全给它写上,就像这样: class Demo { public static void main(String[] args){ tool.StringUtil.newLine(StringUtil -&g
集合中ArrayList和LinkedList的源码,这次说一下另一个常用的集合:HashMap。 一 、HashMap的特点 (1)属于Map下的集合,用KV键值对存储元素,元素是无序的,key不允许重复,value允许重复,允许存储null。 (2)底层数据结构是哈希表,实现是链表+数组,JDK 8 后又加了红黑树。 (3)多线程环境下不安全,解决方法: 使用Hashtable; 调用Collections类的synchronizedMap方法; 使用juc包下的Concurrent
普通网友:2022全新版-Java分布式架构设计与开发实战(13章全) 下载地址:
图解清晰,文章细节满满,无不体现佬的用心❤️和细节!必须三连支持期待博主也来我这指点一二呀!
- 本文固定链接: https://douyinkuaishou.cc/?id=51603
- 转载请注明: admin 于 抖音快手 发表
《本文》有 0 条评论