HTTP请求的三次握手和四次挥手,以及DNS流程解析
前言:http的交互现在无论是平时自己做项目还是面试,理解他底层连接的原理都至关重要。
前置知识(已知请略过)
IP地址(internet Protocol Address)
互联网协议地址
作用:分配给用户上网使用的互联网
一个域名只能对应一个IP,一个IP可以对应多个域名
分类:IPv6,IPv4
IPv4:十进制 ,4组32位
IPv6空间更大,8组128位,更高的安全性,十六进制,相对来说多了abcdef
port:端口号
例子:
IP地址:上海市浦东新区
port:乐园中的不同游乐设施
域名:上海迪士尼乐园
默认端口:http:90, https:443, FTP:20/21
TCP:传输控制协议
http是基于TCP协议的
特点:面向连接,必须要有连接才可以传输数据
优点
:稳定,重传机制,拥塞控制机制,实时断开连接
缺点
:速断慢(因为需要建立可靠的连接还有其他的一些处理),效率低,容易被攻击(三次握手=
DOS,DDOS攻击)
TCP/IP协议组(联合使用):提供点对点的连接机制
对比:
UDP(User Data Protocol:喇叭喊人)
用户数据报协议
特点:面向无连接(不可靠的协议,无状态传输机制)
可以进行无连接信息发送
例:语音消息,qq发消息,直播
优点
:安全,快速(因为他没有那些连接处理),漏洞少(UDP flood攻击)
缺点
:不可靠,不稳定,容易丢包
只要目的源地址,端口号,地址,确定,则直接可以进行发送信息报文,但是不能保证一定能收到完整的数据
游戏是UDP和TCP相辅的
文件什么的肯定是TCP
http与https
:超文本传输协议,超文本传输安全协议
https是http的安全版(安全基础是SSL/TLS,会套出http,让http变得不那么透明)
http:先建立TCP,然后再进行发送http请求,直接在TCP连接上运行,客户端和服务端都无法验证对方身份
https:先建立TCP,然后再进行发送http请求,在请求发送数据时先运行在SSL/TLS上进行加密保存后,SSL/TLS运行再TCP连接上进行请求
正文
首先模拟一个场景:你在浏览器输入自己想要访问的地址,浏览器发送请求到服务端,服务端进行响应,浏览器进行数据页面渲染,从而你得到自己想要访问地址的页面,这个流程的原理是怎么样的呢?
总体流程图:
1:DNS
解析:
可以认为域名与对应的ip转化的服务器
DNS解析流程:在输入框回车请求,客户端会向本地服务器缓存中
请求这个域名的IP是多少,如果没有,DNS就会去根服务器
(美国有,英国有,但是根服务器中的缓存也很少),他会让DNS去找.com域服务器
,如果还是没查到他会让DNS去查域名(jsplusplus)服务器
(如果在中国进行备案了, 就一定会有),找到并返回给浏览器。并且每一次DNS在根,或者com,或者域名(jsplusplus)中找到的话,DNS是会先将该次查询的IP对应表数据缓存
到本地,下次再进行访问这个的时候就可以直接找到,图解如下
DNS查询完后,就是进行TCP
的三次握手了
2:三次握手
前置知识:
标志位:
SYN
:同步序列编号
ACK
:Acknowledgement 确认字符
状态:
LISTEN
:侦听TCP端口的连接请求(我在等你发请求哦)
SYN-Send
:发送连接请求等待回复状态(我发了请求了,等你回复哦)
SYN-RECELVED:
在收到或者发送一个连接请求后等待对连接请求的确认,接收请求并确认状态(我收到你的连接请求了哈,我等你回复)
ESTABLISHED
:代表一个打开的连接,数据可以传送给用户,连接建立状态(连接已经建立了哈,我跟你说一下)
首先,你输入url地址,DNS将其转换为IP地址,服务端那边的端口是一直开着的(LISTEN是进行的),
开始进行握手
1、第一次握手:客户端给服务端发一个 SYN 报文(SYN-SENT),并指明客户端的初始化序列号 ISN(J)。此时客户端处于 SYN_Send 状态。
2、第二次握手:服务器收到客户端的 SYN 报文之后,会以自己的 SYN 报文作为应答,并且也是指定了自己的初始化序列号 ISN(K),同时会把客户端刚刚传过来的 ISN(J) + 1 作为 ACK 的值,表示自己已经收到了客户端的 SYN,此时服务器处于 SYN_REVD 的状态。
3、第三次握手:客户端收到 SYN 报文之后,会发送一个 ACK 报文,当然,也是一样把服务器的 ISN(K) + 1 作为 ACK 的值,表示已经收到了服务端的 SYN 报文,此时客户端处于 establised 状态,
图解如下:
3: 四次挥手
1、第一次挥手:客户端发送一个 FIN 报文,报文中会指定一个序列号。此时客户端处于FIN_WAIT1状态。
2、第二次握手:服务端收到 FIN 之后,会发送 ACK 报文,且把客户端的序列号值 + 1 作为 ACK 报文的序列号值,表明已经收到客户端的报文了,此时服务端处于 CLOSE_WAIT状态。
3、第三次挥手:如果服务端也想断开连接了,和客户端的第一次挥手一样,发给 FIN 报文,且指定一个序列号。此时服务端处于 LAST_ACK 的状态。
4、第四次挥手:客户端收到 FIN 之后,一样发送一个 ACK 报文作为应答,且把服务端的序列号值 + 1 作为自己 ACK 报文的序列号值,此时客户端处于 TIME_WAIT 状态。需要过一阵子以确保服务端收到自己的 ACK 报文之后才会进入 CLOSED 状态
图解如下:
本文章如有错漏,欢迎指正
HTTP请求的三次握手和四次挥手,以及DNS流程解析相关推荐
- postman发送报文时请求时间超时因为什么_面试官说不要再问我三次握手和四次挥手是什么了...
三次握手和四次挥手是各个公司常见的考点,也具有一定的水平区分度,也被一些面试官作为热身题.很多小伙伴说这个问题刚开始回答的挺好,但是后面越回答越冒冷汗,最后就歇菜了. 见过比较典型的面试场景是这样的: ...
- Linux网络编程--TCP中的三次握手和四次挥手
服务器编程和客户端编程的大致流程如下: 三次握手是在客户端中的connect中完成的,具体如下: 那么上述说到的SYN ACK这些是什么东西呢? 上述的截图取自<Linux高性能服务器编 ...
- 一文搞懂TCP的三次握手和四次挥手
目录 1.三次握手 2.四次挥手 3.11种状态名词解析 TCP的三次握手和四次挥手实质就是TCP通信的连接和断开. 三次握手:为了对每次发送的数据量进行跟踪与协商,确保数据段的发送和接收同步,根据所 ...
- 硬不硬你说了算!近 40 张图解被问千百遍的 TCP 三次握手和四次挥手面试题
来自:小林coding 每日一句英语学习,每天进步一点点: 前言 不管面试 Java .C/C++.Python 等开发岗位, TCP 的知识点可以说是的必问的了. 任 TCP 虐我千百遍,我仍待 T ...
- “三次握手,四次挥手”你真的懂吗?
来源:码农桃花源 解读:"拼多多"被薅的问题出在哪儿?损失将如何买单? 之前有推过一篇不错的干货<TCP之三次握手四次挥手>,前几天有兄弟投稿,开始还以为是同一篇,后经 ...
- TCP 三次握手与四次挥手
文章目录 1. 三次握手 1.1 为什么需要三次握手,两次不行吗? 1.2 什么是半连接队列? 1.3 ISN(Initial Sequence Number)是固定的吗? 1.4 三次握手过程中可以 ...
- 握手失败_拜托了,看完这篇别再问我什么是TCP三次握手和四次挥手
TCP三次握手和四次挥手的问题在面试中是最为常见的考点之一.很多读者都知道三次和四次,但是如果问深入一点,他们往往都无法作出准确回答. 三次握手如何建立连接? 三次握手建立链接 从图中可以清楚的看到, ...
- 以女朋友为例讲解 TCP/IP 三次握手与四次挥手
来自:开源中国,作者:Champin 链接:https://my.oschina.net/u/3708120/blog/1581023 背景 和女朋友异地恋一年多,为了保持感情我提议每天晚上视频聊天一 ...
- 第五章 运输层(UDP和TCP三次握手,四次挥手分析)
序言 通过这章,可以知道其实三次握手和四次挥手其实真的好简单,通过这章的学习,我相信你也会同样的认为,以后在也不需要听到别人问三次握手的过程而自己一脸懵逼了,觉得人家好屌,其实也就是他懂你不懂,仅 ...
最新文章
- Ubantu下hadoop运行第一个例子wordcount过程
- latex写文章的一些细节问题
- 网站SEO优化该如何提高用户粘度?
- 用WINHEX合并两个或多个BIN文件
- 两点C#的propertyGrid的使用心得
- 【Qt】Qt5.12编译MySQl5.7驱动(亲自测试成功)
- Spring Boot 入门之缓存和 NoSQL 篇(四)
- 有关OPenCV的几个库函数的使用
- [bug解决] TensorFlow安装错误:ERROR Cannot uninstall ‘wrapt‘
- 设计模式学习五、代理模式
- Git 操作实战示例
- Qt 中使用librdkafka librdkafka++ 创建消费者
- 【电脑讲解】电脑知识入门大全,超详细电脑基础知识讲解
- Module ‘“xx.vue“‘ has no default export.Vetur(1192)
- 计算机二级c语言考点解析,2017年计算机二级C语言考点解析
- Excel.Application使用手册(API)
- CH344是一款USB总线的转接芯片
- Python——>字典类型和操作
- 计算机应用模块等级考试大纲,计算机等级考试大纲最新.doc
- word2003流程图变成图片_用Word2003绘制流程图的方法
热门文章
- 2023年宜昌市中职组“网络安全”赛项竞赛任务书-2
- ffmpeg图片与视频命令笔记
- 一文详解跨链的技术点及难点:从完美跨链谈起
- Java集合工具类Collections(一)
- opencv图片矩形网格边线_OpenCV C++(九)----几何形状的检测和拟合
- 符号测执行软件测试,基于符号执行与模糊测试的混合测试方法
- 原来是这样查快递单号的
- 【渝粤教育】国家开放大学2019年春季 1323内科护理学(本) 参考试题
- flash站的seo
- M201: MongoDB Performance chapter 2 Mongodb Indexes学习记录