输入网址后,会经历哪些步骤
一.域名解析,DNS解析
- 通过主机名,最终得到该主机对应的IP地址的过程,叫做域名解析
DNS的解析步骤?
参考文章:https://blog.****.net/Lammonpeter/article/details/81358387
- 1、检查浏览器缓存是否缓存过该域名对应的IP地址
- 用户通过浏览器浏览过某网站之后,浏览器就会自动缓存该网站域名对应的IP地址,当用户再次访问的时候,浏览器就会从缓存中查找该域名对应的IP地址,因为缓存不仅是有大小限制,而且还有时间限制(域名被缓存的时间通过TTL属性来设置),所以存在域名对应的IP找不到的情况。当浏览器从缓存中找到了该网站域名对应的IP地址,那么整个DNS解析过程结束,如果没有找到,将进行下一步骤。
- 2、检查本机系统是否缓存过IP
- 本机如果没有缓存过IP,则开始向远程DNS服务器发起解析域名请求
- 3、向本地域名解析服务器发起域名解析请求
- 本地域名服务器如校园网、本地区的运营商等,基本上LDNS(local DNS)负责了大部分解析工作
- 4、向根域名解析服务器(root Server)发起域名解析请求,根域名服务器返回gTLD域名解析服务器地址
- 返回的是所查域的通用顶级域地址,常见的有.com、.cn、.org、.edu等
- 5、向gTLD服务器发起解析请求,返回Name Server服务器
- 返回的是该域名的Name Server域名服务器,通常情况下是注册的域名服务器
- 6、Name Server服务器查找域名对应的IP地址,将IP地址返回给本地域名服务器
- 7、本地域名服务器缓存解析结果,并将解析结果给用户
二.发起TCP连接的三次握手
TCP/IP协议簇的四个层
TCP的六个标志位
- TCP共有6个标志位,分别是:
- SYN(synchronous),建立联机
- ACK(acknowledgement),确认
- PSH(push),传输
- FIN(finish),结束
- RST(reset),重置
- URG(urgent),紧急
三次握手的过程
- 第一次握手:主机A发送位码为syn=1,随机产生seq number=1234567的数据包到服务器,主机B由SYN=1知道,A要求建立联机
- 第二次握手:主机B收到请求后要确认联机信息,向A发送ack number=(主机A的seq+1),syn=1,ack=1,随机产生seq=7654321的包;
- 第三次握手:主机A收到后检查ack number是否正确,即第一次发送的seq number+1,以及位码ack是否为1,若正确,主机A会再发送ack number=(主机B的seq+1),ack=1,主机B收到后确认seq值与ack=1则连接建立成功。
为什么需要三次握手?
- 客户端发出去的第一个连接请求由于某些原因在网络节点中滞留了导致延迟,直到连接释放的某个时间点才到达服务端,这是一个早已失效的报文,但是此时服务端仍然认为这是客户端的建立连接请求第一次握手,于是服务端回应了客户端,第二次握手。
- 因此,如果是两次握手的话,会导致一些延迟信息带来无效的连接
三.建立TCP连接(三次握手成功)后发起http/https请求
http(port:80)和https(port:443)的区别
- https是以安全为目标的http通道,即SSL/TLS+HTTP的网络协议
- https方式与服务器通信的步骤:
- 1、客户使用https的URL访问Web服务器,要求与Web服务器建立SSL连接
- 2、Web服务器收到客户端请求后,将网站的证书信息(包含公钥)传送一份给客户端
- 3、客户端验证证书的有效性,无效中断连接,有效则建立会话**,然后利用网站的公钥将会话**加密,传送给网站
- 4、Web服务器利用自己的私钥,解密出会话**
- 5、Web服务器利用会话**加密与客户端之间的通信
四.服务端响应http请求,返回响应报文
五.浏览器页面渲染
六.断开TCP连接
四次挥手
转载自https://www.jianshu.com/p/cd801d1b3147
-
第一次挥手:客户端发送一个FIN=M,用来关闭客户端到服务器端的数据传送,客户端进入FIN_WAIT_1状态。意思是说"我客户端没有数据要发给你了",但是如果你服务器端还有数据没有发送完成,则不必急着关闭连接,可以继续发送数据。
-
第二次挥手:服务器端收到FIN后,先发送ack=M+1,告诉客户端,你的请求我收到了,但是我还没准备好,请继续你等我的消息。这个时候客户端就进入FIN_WAIT_2 状态,继续等待服务器端的FIN报文。
-
第三次挥手:当服务器端确定数据已发送完成,则向客户端发送FIN=N报文,告诉客户端,好了,我这边数据发完了,准备好关闭连接了。服务器端进入LAST_ACK状态。
-
第四次挥手:客户端收到FIN=N报文后,就知道可以关闭连接了,但是他还是不相信网络,怕服务器端不知道要关闭,所以发送ack=N+1后进入TIME_WAIT状态,如果Server端没有收到ACK则可以重传。服务器端收到ACK后,就知道可以断开连接了。客户端等待了2MSL后依然没有收到回复,则证明服务器端已正常关闭,那好,我客户端也可以关闭连接了。最终完成了四次握手。