zoukankan      html  css  js  c++  java
  • 从输入url到显示页面,都经历了什么?

    我们在打开浏览器访问一个网站时 究竟都发生了什么

    • 第一步:我们会在浏览器地址栏中输入一个url

    • 第二步:浏览器会先查看浏览器缓存
      系统缓存 -> 路由器缓存

    如果缓存中存有先前访问过的数据,则会直接显示在屏幕中;没有的话,则进行第三步操作
    
    • 第三步:在发送http请求前,需要域名解析(DNS解析)【DNS域名系统】[可以将域名和IP地址相互映射的一个分布式数据库],解析获取相应的IP地址

    • 第四步:浏览器向服务器发起TCP连接,与浏览器建立TCP三次握手。(TCP即传输控制协议。TCP连接是互联网连接协议集的一种)

    三次握手:(TCP建立连接的过程,称为三次握手)
          第一次,客户端向服务器发送SYN同步报文段,请求建立连接
    
          第二次,服务器确认收到客户端的连接请求,并向客户端发送SYN同步报文,表示要向客户端建立连接
    
          第三次,客户端收到服务器端的确认请求后,处于建立连接状态,向服务器发送确认报文
    
    客户端是在收到确认请求后,先建立连接
    服务器是在收到最后客户端的确认后,建立连接
    发起连接请求的一定是客户端
    
    注意:
          两次握手的话,服务器方不确定客户端有没有收到报文,中途可能导致报文丢失而服务器不知,客户端可能就会不断发送报文,而服务器处理连接的数量是有限的,此时建立的连接会消耗大量的资源,可能会导致服务器崩溃
    
    有连接就会有断开,那么连接是三次握手,断开就是四次挥手
    
    什么是四次挥手呢?
          第一次,A端像B端发送FIN结束报文段,准备关闭连接
    
          第二次,B端确认A端的FIN,表示自己已经收到对方关闭连接的请求中间这段时间,A端停止向B端发送数据,但是B端可以向A端发送数据,要将自己未处理完任务处理完
    
          第三次,B端向A端发送FIN结束报文段,准备关闭连接
    
          第四次,A端确认B端的FIN,进入TIME_WAIT状态,此时A端进程已经退出,但是连接还在
    
          当B端收到A端的ACK之后,先断开连接
          当A端等待2 MSL之后,确认的B端接收到ACK后,再断开连接
          发起断开连接请求的一端最后要进入有一个TIME_WAIT状态
          发起连接请求的可以是客户端也可以是服务器端
    
    • 第五步:握手成功后,浏览器向服务器发送 http 请求,请求数据包

    • 第六步:服务器处理收到的请求,将数据返回至浏览器

    • 第七步:浏览器收到 HTTP 响应

    • 第八步,读取页面内容,浏览器渲染,解析 HTML 源码

    • 第九步:生成DOM树,解析CSS样式,js交互

    • 第十步:客户端和服务器交互

    • 第十一步:Ajax查询

  • 相关阅读:
    技术分享:unity3d基础问题
    转载》【3个免费名额】爱加密TFC大会15万手游保护服务免费送!速来报名!
    Android APP通用型拒绝服务、漏洞分析报告
    493万Gmail用户的账号密码遭泄露,疑从其他网站数据库提炼而成
    转载:在 android dialog中使用Autocompletetext
    转载 iOS工程适配64-bit 经验分享
    爱加密联合应用之星(APPSTAR)为开发者提供免费云加密服务
    魔学院_部门课程笔记1_LoadRunner性能测试
    Jmeter学习笔记12-监听器以及测试结果的分析
    Jmeter学习笔记11-分布式性能测试
  • 原文地址:https://www.cnblogs.com/hleisurely/p/12944866.html
Copyright © 2011-2022 走看看