阅读文本大概需要3分钟。

PPT: Jenkins与项目构建部署工具集成

0x01:tcp三次握手,四次挥手

  • 三次握手(Three-way Handshake),是指在建立一个TCP连接时候,需要客户端和服务器总共发送3个数据包。

第一次握手([SYN], Seq = x)

客户端发送一个SYN标记的数据包、Seq(Synchronize Sequence Numbers)同步序列编号x;发送完成后客户端进入SYN_SEND状态。

第二次握手([SYN,ACK], Seq = y, ACK = x + 1)

服务器收到请求后,返回确认包(ACK)应答,同时还要发送一个SYN数据包给客户端。ACK = x + 1,表示确认收到数据(客户端发来的Seq值 + 1),Seq = y, 表示让客户端确认是否能收到。发送完成后服务端进入SYN_RCVD状态。

第三次握手([ACK], ACK = y + 1)

客户端再次发送确认包(ACK),ACK = y + 1, 表示确认收到服务器的数据包(服务端发来的Seq值 + 1)。客户端发送完毕后,进入ESTABLISHED状态,服务端接收到这个数据包,也进入ESTABLISHED状态, TCP握手结束。

  • 断开TCP连接需要一共发送四个数据包,因此称为四次挥手(four-way handshake)。客户端或服务器均可主动发起挥手动作(即断开连接操作),在socket编程中,无论客户端,还是服务器端执行close()操作,都可以产生挥手操作。

第一次挥手([FIN], Seq = x)

客户端发送一个FIN标记的数据包,告诉服务器需要关闭连接,表示自己不用发送数据了,但是还可以接收数据。发送完成后,客户端进入FIN_WAIT_1状态。

第二次挥手 ([ACK], ACK = x + 1)

服务端发送一个ACK的确认数据包,告诉客户端接收到关闭的请求,但是还没有准备好。发送完成后,服务端进入CLOSE_WAIT状态,客户端收到这个包后,进入FIN_WAIT_2,等待服务器关闭连接。

第三次挥手 ([FIN], Seq = y)

服务端准备好关闭连接时,发送FIN标记的数据包,告诉客户端准备关闭了。发送完成后,服务端进入LAST_ACK状态,等待客户端确认。

第四次挥手 ([ACK], ACK = y + 1)

客户端接收到服务端的关闭请求,再发送ACK标记的确认包,进入TIME_WAIT状态,等待服务端可能请求重传的ACK包。服务端接收到ACK包后,关闭连接,进入CLOSED状态。客户端在等待固定时间(两个最大段生命周期)后,没有接收到服务的ACK包,认为服务器已关闭连接,客户端自己也关闭连接,进入CLOSED状态。

0x02:https证书验证阶段和数据传输阶段

HTTP是明文传输的,也就意味着,介于发送端、接收端中间的任意节点都可以拦截传输的内容。这些节点可能是路由器、代理等。而HTTPS其实就是secure http的意思,也就是HTTP的安全升级版。HTTPS相对于HTTP有哪些不同呢?HTTPS其实就是在HTTP和TCP中间加多了一层加密层TLS/SSL。

https通讯的主要步骤:

证书验证阶段:

  • 1、客户端通过发送client hello报文开始SSL通信。报文中包含客户端支持的SSL的指定版本、加密组件(cipher suite)列表,所使用的加密算法及秘钥长度等。

  • 2、服务器可进行SSL通信时,会以server hello报文作为应答。和客户端一样,在报文中包含SSL版本以及加密组件。服务器的加密组件内容是从接收到的客户端加密组件内筛选出来的。

  • 3、服务器发送certificate报文,报文中包含了公开的秘钥证书(公钥)。

  • 4、服务器发送server hello done报文通知客户端,最初阶段的SSL握手协商部分结束。

  • 5、SSL第一次握手结束之后,客户端已client key exchange报文作为回应。报文中包含通信加密中使用的一种被称为pre-master secret的随机密码串。该报文已使用步骤3中的公开秘钥进行加密处理。

  • 6、接着客户端继续发送change cipher spec报文。该报文会通知服务器端,在此报文之后的通信会采用pre-master secret秘钥加密。

  • 7、客户端发送finished报文。该报文包含连接至今报文的整体校验值。这次握手协商是否能够成功,要以服务器是否能够正确解密该报文作为判定标准。

  • 8、服务器发送change cipher spec报文。

  • 9、服务器发送finished报文。

  • 10、服务器和客户端的finished报文交换完毕之后,SSL连接就算建立完成。当然通信会受到SSL的保护。从此处开始进行应用层协议的通信,即发送http请求。

数据传输阶段

  • 11、应用层协议通信,即发送http响应。

  • 12、最后由客户端断开连接。断开连接时发送close_notify报文。之后会再发送tcp fin报文来关闭与tcp的通信。

往期精彩

01 【吊打面试,击中要害】分布式事务解决方案

02 【吊打面试,击中要害】缓存穿透、缓存击穿和缓存雪崩

03 精讲Spring Boot—入门+进阶+实例

04 优秀的Java程序员必须了解的GC哪些

05 互联网支付系统整体架构详解

关注我

每天进步一点点

喜欢!在看☟

http三次握手_【吊打面试,击中要害】http三次握手四次挥手,https证书验证阶段和数据传输阶段...相关推荐

  1. 重复订单号校验_吊打面试官系列重复消费、顺序消费、分布式事务

    你知道的越多,你不知道的越多 前言 消息队列在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在消息队列的使用和原理方面对小伙伴们进行360°的刁难. 作为一个在互联网公司面一次拿一次Of ...

  2. 被面试官问懵:TCP 四次挥手收到乱序的 FIN 包会如何处理?

    摘要:收到个读者的问题,他在面试的时候,被搞懵了,因为面试官问了他这么一个网络问题. 本文分享自华为云社区<TCP 四次挥手收到乱序的 FIN 包会如何处理?>,作者:小林coding . ...

  3. qt定时器是阻塞的吗_吊打面试官 | 面试官:TCP真的可靠吗

    点击蓝字关注我哦 以下是本期干货视频视频后还附有文字版本哦 ▼<面试官:TCP真的可靠吗>▼ ps:请在WiFi环境下打开,如果有钱任性请随意 TCP真的可靠吗 面试官经常会问的一个问题是 ...

  4. c调用其他类的方法_吊打面试官-类加载器

    1. 什么是类加载器? 类加载器(class loader)用来加载 Java 类到 Java 虚拟机中.一般来说,Java 类的虚拟机使用 Java 方式如下:Java 源程序(.java 文件)在 ...

  5. 如何查找历史线程阻塞原因_吊打面试官!Java多线程并发 108 道题,你能答对多少?...

    多线程并发108题 1.Java中实现多线程有几种方法 2.继承Thread 类 3.实现Runnable 接口. 4.ExecutorService. Callable. Future 有返回值线程 ...

  6. atoi函数_吊打面试官 | 腾讯经典考点写代码实现atoi函数

    点击蓝字关注我哦 以下是本期干货视频视频后还附有文字版本哦 ▼<腾讯经典考点-写代码实现atoi函数>▼ ps:请在WiFi环境下打开,如果有钱任性请随意 在腾讯面试时,经常会被问到如何用 ...

  7. vb6 判断打印机是否有效_吊打面试官 | 算法之如何判断括号是否有效?

    今天要讲的这道题是 bilibili 今年的笔试真题,也是一道关于栈的经典面试题. 经过前面文章的学习,我想很多朋友已经看出来了,我接下来要写的是一个关于「算法图解」的系列文章,中间可能会穿插少量的其 ...

  8. redis 亿级查询速度_吊打面试官系列:Redis 性能优化的 13 条军规大全

    我的官方群点击此处. 1.缩短键值对的存储长度 键值对的长度是和性能成反比的,比如我们来做一组写入数据的性能测试,执行结果如下: 从以上数据可以看出,在 key 不变的情况下,value 值越大操作效 ...

  9. mabatisplus怎么给实体类自定义属性_吊打面试官之:当实体类中的属性名和表中的字段名不一样 ,怎么办 ?...

    第1种: 通过在查询的sql语句中定义字段名的别名,让字段名的别名和实体类的属性名一致. <select id="selectorder" parametertype=&qu ...

最新文章

  1. 亿级浏览型网站静态化架构演变
  2. Spring Bean 装配和依赖注入
  3. linux进程隐藏 hook readdir函数 挂载覆盖/proc/pid 目录
  4. 终于解决SQL Server 2008 64位系统无法导入Access/Excel的问题 2012/08/01
  5. android的单选按钮xml语法,android-通过数组而不是xml布局中的单独字符串设置单选按钮组中单选按钮的文本...
  6. Tomcat启动报错整理
  7. ngrx心得体会总结
  8. 文本挖掘(part3)--词袋模型
  9. 20220129--CTF刷题--disabled_button
  10. 什么是商业智能(BI),以及其与数据分析的区别?
  11. python 解方程 sympy_Python数据处理篇之Sympy系列(五)---解方程
  12. mac 内核调试环境搭建
  13. mac: brew的删除
  14. oracle+查表物理块数,查询Oracle表实际物理使用大小
  15. POJ3991 HDU3351 UVALive4733 Seinfeld【水题】
  16. 随机字符 php,PHP生成随机字符
  17. Xilinx FPGA bit 文件加密
  18. php函数中pdf文件文字转曲,indesign使文字转曲的三种方法
  19. 视频教程-【深入理解计算机网络】入门计算机网络基础视频课程(下)-计算机网络
  20. 27.(cesium篇)cesium接入百度影像地图

热门文章

  1. 大前端学习2-1__脚手架工具
  2. 用COSMIC方法帮助澄清需求的案例
  3. windows查看进程信息
  4. java中jquery怎么学,Jquery的基础学习
  5. PE头解析-字段说明
  6. 网游惊现钓鱼式外挂 瑞星提醒玩家暑期多注意
  7. 算法014:判定字符串中字符是否唯一:实现一个算法,确定一个字符串 s 的所有字符是否全都不同。
  8. 移动APP服务端API设计应该考虑到的问题
  9. ufs 固态硬盘_手机机身存储到底有多快?UFS闪存和电脑固态硬盘谁更强?
  10. Android 在线预览PDF