当前位置: 首页 > news >正文

输入网址到网页显示

输入网址到网页显示

浏览器解析URL:

根据URL解析请求协议(http),请求的Web服务器(www.baidu.com),请求的文件路径(可以省略),解析完毕后生成HTTP请求信息

DNS(Domain Name System)解析:

根据服务器域名查询对应的IP地址,域名层级关系分为:

  • 根DNS服务器(.)
  • 顶级域DNS服务器(.com .cn)
  • 权威DNS服务器(baidu.com bilibili.com)

根DNS服务器的信息保存在所有DNS服务器中,DNS解析流程:

  1. 客户端向本地DNS服务器询问www.baidu.com的ip
  2. 本地DNS有缓存www.baidu.com的ip,直接返回,否则询问根域名服务器(.)
  3. 根域名服务器发现后置是.com,将.com顶级域DNS服务器地址告诉本地DNS
  4. 本地DNS再去.com服务器询问www.baidu.com的地址,.com服务器将baidu.com的地址告诉本地DNS
  5. 本地DNS再去baidu.com服务器询问www.baidu.com的地址,baidu.com发现自己有www.baidu.com的IP地址,将其返回

TCP封装:

拿到域名的IP地址后,就去传输层进行协议封装,比如说使用TCP进行分装,这里就涉及到数据拆分,TCP报文头生成等等

IP封装:

传输层封装完毕后交给网络层IP模块进行IP封装,生成IP报文,包括源IP地址,目标IP地址,传输层是采取了什么协议等信息

MAC封装:

IP生成完毕后还需要在IP头部添加MAC头部,添加发送方和接收方的MAC地址,接收方的MAC地址是通过ARP协议获取的,ARP存在缓存,这时候的接收方的MAC并不是www.baidu.com的MAC,而是子网网关的MAC,然后由子网网关再发送给他的网关,MAC是不断变化的

网卡:

MAC生成完毕后就将这些二进制数据复制到网卡的缓存区,在数据头部加上包头和起始帧分界符,数据尾部加上帧检验序列,然后网卡将包转为电信号,顺着网线发出去

交换机:

电信号顺着网线被交换机接收,又把电信号转为数字信号,交换机检验数据包没损坏后放入缓冲区,然后查询接收方MAC地址是否有记录过,如果能查到,就将数据包发往对应的端口,如果查不到,就发往除了源端口之外的全部端口

路由器:

网络包经过交换机后到达了路由器,当然现在家用网络基本都没交换机了,路由器已经包含了交换机的功能,路由器接受到网络包后,跟交换机一样,检查包是否损坏,然后根据接收方MAC地址看看是不是发给自己的包,不是的话就丢弃,是的话放入接受缓冲区

接收了包之后会将包的MAC头部去掉,然后根据包的IP内容进行包的转发,根据自己的路由表及目标IP进行转发。

经过路由器在互联网的层层转发,最终到达服务器

服务器拆包:

​ 服务器层层拆包,先看目标MAC地址是否是自己的,不是的话则丢弃此包,再检验目标IP地址是否符合,根据IP中的协议项,知道这是个TCP协议的包,如果是双方的第一个包的话,就进行TCP三次握手,先建立连接,然后再进行数据通信。根据TCP报文头还知道这应该是哪个端口的应用需要的包,将这个包转交给占用该端口的进程,进程获取到该包,发现是个HTTP请求,就将请求的资源封装到HTTP响应报文中,和客户端一样,经过层层包装,将数据包发送给客户端

客户端渲染:

​ 客户端收到响应报文后,浏览器根据响应数据进行渲染,页面就展示出来了

相关文章:

  • 设计模式-开闭原则(Open/Closed Principle, OCP)
  • FastAPI:(1)并发async与await
  • 用Keil调试出现 “not in scope“ 问题解决
  • 时序数据库的起源与基础概念简介
  • 数据结构第八章(三)-选择排序
  • 如何用div手写一个富文本编辑器(contenteditable=“true“)
  • AT_abc410_f [ABC410F] Balanced Rectangles 题解
  • 远程桌面连接 - 允许电脑从网络外部访问计算机
  • 视频设备:直联正常,通过卫星无画面,因为延迟太大
  • Flutter动画全解析:从AnimatedContainer到AnimationController的完整指南
  • 从源码出发:全面理解 Kafka Connect Jdbc与Kafka Connect 机制
  • 基于RISC-V架构的服务器OS构建DevOps体系的全方位方案
  • 神经网络课设
  • 关于 常见 JavaScript 混淆类型
  • 八股---9.消息中间件
  • Redis中的分布式锁之SETNX底层实现
  • 资深Java工程师的面试题目(一)并发编程
  • Agent开发相关工具
  • 迭代器模式:集合遍历的统一之道
  • 【web应用】在 Vue 3 中实现饼图:使用 Chart.js实现饼图显示数据分析结果
  • 池州网站建设公司/企业营销策划论文
  • 没有备案的网站可以做淘宝客/网站排名查询
  • 求人做网站的网站/seo快速排名软件推荐
  • 仿阿里百秀网站模板/网站开发框架
  • 网站 建设初步/济南百度竞价代运营
  • lamp 网站建设论文/制作自己的网页