B/S架构的网络流程

B/S架构

B/S架构
Browser/Server 模式是从传统的 C/S 发展起来的计算方式。C/S 是松散耦合系统通过消息传递机制进行对话由客户端发出请求给服务器服务器进行相应处理后经传递机制送回客户端;B/S 模式则把C/S 模式的服务器端进一步深化分解成应用服务器(Web 服务器)和多个数据库服务器同时简化 C/S 中的客户端将客户端的计算功能移至 Web 服务器仅保留其表示功能从而成为一种由表示层(Browser)、功能层(Web Server)与数据库服务层(DATABASE Server)构成的三层分布式结构。

浏览器功能组件

浏览器
各部分的功能及意义:

  • 用户界面:
    浏览器的界面,有标签页、地址栏、前进、后退、刷新、收藏等。除了请求到的内容页面。
  • 浏览器引擎:
    用来查询和操作渲染引擎的接口。
  • 渲染引擎:
    也叫做 “浏览器内核” ,用来解析 html、css 并将结果以网页的形式显示,不同浏览器内核不同,同理渲染引擎也不同。
  • 网络:
    用来网络调用,如前后端数据交互中的http请求。
  • js 解释器:
    用来解释执行js代码。
  • UI 后端:
    绘制基础原件,如组合框与窗口,提供平台无关的接口,内部使用操作系统的相应实现。
  • 数据存储:
    属于持久层。浏览器需要把所有数据存到硬盘上,如 cookie、图片、css 等。

DNS

DNS(Domain Names System),域名系统,是互联网一项服务,是进行域名和与之相对应的 IP 地址进行转换的服务器
简单来讲,DNS相当于一个翻译官,负责将域名翻译成ip地址
IP 地址:一长串能够唯一地标记网络上的计算机的数字
域名:是由一串用点分隔的名字组成的 Internet 上某一台计算机或计算机组的名称,用于在数据传输时对计算机的定位标识,域名是一个具有层次的结构,从上到下一次为根域名、顶级域名、二级域名、三级域名…。
域名
例如www.xxx.com,www为三级域名、xxx为二级域名、com为顶级域名,系统为用户做了兼容,域名末尾的根域名.一般不需要输入。
域名
在域名的每一层都会有一个域名服务器,除此之外,还有电脑默认的本地域名服务器。
DNS 查询的方式有两种:
递归查询描述
递归查询:如果 A 请求 B,那么 B 作为请求的接收者一定要给 A 想要的答案。

迭代查询描述
迭代查询:如果接收者 B 没有请求者 A 所需要的准确内容,接收者 B 将告诉请求者 A,如何去获得这个内容,但是自己并不去发出请求。
在域名服务器解析的时候,使用缓存保存域名和IP地址的映射,计算机中DNS的记录也分成了两种缓存方式:
浏览器缓存:浏览器在获取网站域名的实际 IP 地址后会对其进行缓存,减少网络请求的损耗
操作系统缓存:操作系统的缓存其实是用户自己配置的 hosts 文件(欢迎关注公众号:网络技术联盟圈)

网络流程
1、构建请求:
浏览器开启网络请求线程,向服务器发送完整的http请求
2、查找缓存:
真正发起网络请求之前,浏览器会先在数据存储中查询是否有需要请求的文件。如果没有任何缓存,说明第一次请求,则进入网络请求过程。当浏览器有缓存的时候,会拦截请求,返回缓存,拦截请求。缓存优点:缓解服务器压力,提升性能,实现快速加载资源。
3、准备IP地址和端口:
通过 URL 地址获取 ip 地址和端口信息,通过 DNS 解析返回域名对应的 ip 和 port ,浏览器也提供了 dns 数据缓存,通常 url 没有指明端口号,则默认80。

  • 首先搜索浏览器的 DNS 缓存,缓存中维护一张域名与 IP 地址的对应表
  • 若没有命中,则继续搜索操作系统的 DNS 缓存
  • 若仍然没有命中,则操作系统将域名发送至本地域名服务器,本地域名服务器采用递归查询自己的 DNS 缓存,查找成功则返回结果
  • 若本地域名服务器的 DNS 缓存没有命中,则本地域名服务器向上级域名服务器进行迭代查询
    • 首先本地域名服务器向根域名服务器发起请求,根域名服务器返回顶级域名服务器的地址给本地服务器
    • 本地域名服务器拿到这个顶级域名服务器的地址后,就向其发起请求,获取权限域名服务器的地址
    • 本地域名服务器根据权限域名服务器的地址向其发起请求,最终得到该域名对应的 IP 地址
  • 本地域名服务器将得到的 IP 地址返回给操作系统,同时自己将 IP 地址缓存起来
  • 操作系统将 IP 地址返回给浏览器,同时自己也将 IP 地址缓存起
  • 至此,浏览器就得到了域名对应的 IP 地址,并将 IP 地址缓存起

4、等待TCP队列:
chrome 有个机制,同一域名下同时最多只能建立6个TCP连接,如果同时有10个请求发生,其中4个就会进入等待队列,直至进行中的请求完成,如果小于6个,则直接进入TCP 连接。
5、建立TCP连接:
浏览器与服务器之间通过 TCP 建立连接。TCP协议提供可靠的连接服务,采用三次握手建立一个连接。6、发送http请求:
连接建立成功之后,浏览器就可以与服务器之间通讯了。浏览器会向服务器发送请求信息,包括请求方法、请求 URL、http 版本协议。
7、服务器处理请求:
服务端收到请求信息以后,会根据浏览器的请求信息返回结果,返回结果中包含三部分:响应行、响应头、响应体。响应行内包含状态码,告诉浏览器处理结果,http状态码有很多。响应头包含服务器自身的一些信息,响应体就包含了网页的 html 实际内容。
8、服务器响应和断开连接:
通常服务器向浏览器返回请求数据之后,就会关闭连接,经过四次分手之后,就断开连接了。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>