WEB请求过程

学JavaWeb了解一个网站的访问流程 网站的访问流程 阅读详情

WEB请求过程

一次完整的WEB请求过程

一次完整的web访问流程

前言:当我们在浏览器输入一个网址,然后按下回车,接下来浏览器显示了页面。网速好的话这之间可能就一秒,但在这一秒内到底发生了什么?

大致过程如下:

一次完整的web访问流程简析:

  • client:输入网址–>发起http request–>等待web server响应.
  • server:收到client请求–>加载资源–>构建响应报文,发给client.
  • 注:以下分析不考虑缓存问题.

client发起http请求:

  • ①client将键入的域名解析为server端的IP地址(DNS解析).

  • ②client与server进行TCP连接(三次握手).

  • ④client与web server数据传输.

  • ④client与web server断开TCP连接(四次挥手).

  • ⑤client解释HTML文档,浏览器渲染,将在屏幕上显示渲染后的图形结果。

server收到client请求时:

  • ①http request请求首先到达server端的公网ip上(公网ip一般配置在硬件防火墙上).

  • ②经过防火墙过滤之后,到达负载均衡层(可能涉及四层负载均衡和七层负载均衡),负载均衡将请求报文往后端Real Server调度.

  • ③经过lvs调度至后端RS上,此时后端提供web服务的一般是Nginx(Apache也可能),Nginx判断请求报文是动态资源还是静态资源(动静分离).

  • ④静态资源:由Nginx发起系统调用,请求内核从磁盘加载相应的资源文件,可能涉及存储服务器(资源的保存的服务器).
    动态资源:由Nginx代理给能处理动态资源的服务器(Tomcat、PHP等),还可能涉及访问数据库服务器.

  • ⑤web server将请求的资源加载完成之后,构建响应报文发送给client.

client端

浏览器访问某个网址

​ 当用户在浏览器输入一个域名然后回车,至服务器给予响应的整个过程,即一次web访问过程

  • 一般的情况是发起一个http request请求(此处以访问服务器某个资源为例,没有考虑上传博客文章等上传请求~)

  • 此处以访问百度首页为例:[http://]www.bai.com

DNS解析

  • DNS解析:比如现在访问百度的首页:[http://]www.bai.com, DNS解析主要功能是将www.bai.com这个域名解析成ip地址。

◆ DNS解析的过程:

  • 1)浏览器首先搜索浏览器自身缓存的DNS记录,浏览器自身也带有一层DNS缓存。比如:Chrome 缓存1000条DNS解析结果,缓存时间大概在一分钟左右。

  • 2)如果浏览器缓存中没有找到需要的记录或记录已经过期,则搜索hosts文件和操作系统缓存。

    • 操作系统缓存:
      在Windows操作系统中,可以通过 ipconfig /displaydns 命令查看本机当前的缓存。
    • windows的hosts文件解析:
      windows:主机的hosts文件路径:C:\Windows\System32\drivers\etc\hosts。hosts文件解析的结果一旦被使用,同样会被缓存到操作系统缓存中。
  • 3)如果在hosts文件和操作系统缓存中没有找到需要的记录或记录已经过期,则向域名解析服务器发送解析请求。

    • 此处涉及域名解析服务的工作原理:迭代查询?递归查询?还涉及CDN等等,详情见DNS,下面简述:
      • 首先是DNS服务器有对应记录?
        有缓存,直接返回对应的IP地址。
        无缓存,(.)根域服务器–>(com)DNS服务器–>(baidu)DNS服务器–>回复一一开始访问的DNS服务器www主机的ip地址—>DNS服务器响应给浏览器。
  • 图示过程:

​ 递归查询:返回的最终结果ip查询。
​ 迭代查询:返回的不是最终结果的ip,返回的是让你问别的dns服务器。

  • 4)获取域名对应的IP后,返回给浏览器。

  • 5)浏览器获取IP地址之后,将http request发送给IP地址(server ip)对应的服务器。

与访问的目标主机进行TCP连接

1)、浏览器会选择一个随机端口(大于1024)向server ip的80端口发起TCP连接请求.

  • TCP连接(三次握手)建立过程

  • Wireshark抓取通信过程,报文如下:

  • 网络通信的具体过程,详情见网络章节

2)、TCP连接建立之后,浏览器会将http请求报文发送给server.

3)、然后服务器会发送响应报文给client(即浏览器).

浏览器渲染页面的过程

详情见文章:浏览器渲染原理及流程

server端

server端响应web请求图示:

server收到client请求时:

  • ①http request请求首先到达server端的公网ip上(公网ip一般配置在硬件防火墙上).

  • ②经过防火墙过滤之后,到达负载均衡层(可能涉及四层负载均衡和七层负载均衡),负载均衡将请求报文往后端Real Server调度.

  • ③经过lvs调度至后端RS上,此时后端提供web服务的一般是Nginx(Apache也可能),Nginx判断请求报文是动态资源还是静态资源(动静分离).

  • ④静态资源:由Nginx发起系统调用,请求内核从磁盘加载相应的资源文件,可能涉及存储服务器(资源的保存的服务器).
    动态资源:由Nginx代理给能处理动态资源的服务器(Tomcat、PHP等),还可能涉及访问数据库服务器.

  • ⑤web server将请求的资源加载完成之后,构建响应报文发送给client.

server如何处理用户请求

☆ 从防护墙到达server的详情具体不阐述,此处主要说明server处理用户请求的过程(收到数据报文–>加载资源–>构建响应报文)

  • ①client的数据报文到达真正处理请求的服务器(图示的1.网络请求).

  • ②server收到用户的请求时,会将数据报文从socket上拷贝到内核上,虽然数据报文发送至网卡上,但是网卡绑定在内核上(图示中2.Copy到内核空间)

  • ③内核收到请求的数据报文后,先将数据报文放到内核空间,然后Copy到用户空间的对应进程内存中(Nginx监听的进程内存中).(图示中3.Copy到用户空间)

  • ④至此Nginx收到用户的请求数据报文,然后对数据报文进行拆开,拆开之后,Nginx主要分析数据报文的应用层协议(请求什么资源,或者…).(图示中4.web处理用户请求)

  • ⑤(承前,client请求的一些静态资源,而且不考虑缓存),则Nginx将发起系统调用,向内核申请请求的资源文件。

    • 此时一般的资源文件是放在远程的存储服务器上的,然后通过网络协议拷贝至本地,然后拷贝至Nginx进程内存。
    • 如果资源文件存放在本地,内核通过读取本地磁盘,将资源文件加载至内核,然后再从内核空间拷贝至Nginx进程内存。
  • ⑥资源加载至Nginx运行内存中时,Nginx将构建响应报文,然后将数据包发给内核(图示中5.响应报文Copy到内核空间)

  • ⑦内核再对响应报文进行封装,构建成一个完整的响应报文数据包,然后通过网卡返回给client.
    资源文件加载至内核,然后再从内核空间拷贝至Nginx进程内存。

  • ⑥资源加载至Nginx运行内存中时,Nginx将构建响应报文,然后将数据包发给内核(图示中5.响应报文Copy到内核空间)

  • ⑦内核再对响应报文进行封装,构建成一个完整的响应报文数据包,然后通过网卡返回给client.

Transformers 中的 Softmax 可以并行加速么? 通过融合前两个计算步骤,降低执行Reduce_max和Reduce_sum等操作的通信开销。利用共享内存来存储临时数据,以减少对全局内存的访问成本。 阅读详情

相关推荐

开源 AHB不对称半桥反激电路设计(六)死区时间,谐振腔电流,谐振电感函数表达式

电流跌落可以使副边电流峰值和有效值降低,减小损耗,但如果开关管 S2 导通期间,谐振电流谐等于励磁电流,即副边电流A 点降至 0,会在原边变压器内形成环流,产生损耗,同时也不利于副边同步整流管驱动的正常工作,为了保证开关管 S2 导通期。在开关管 S1 和开关管 S2 均关断的死区时间内,谐振电流给原边开关管结电容和副边整流管结电容充放电,因此会引起开关 S1 关断瞬间电流跌落与开关 S2 关断瞬间电流震荡现象,受寄生参数影响原边谐振电流波形和副边电流波形如图。降到最低,变压器以最高效率向副边传递能量。

【Simon】的博客 1228

WEB 网络请求初探

网络请求 超文本传输协议 (HTTP) HTTP 是一种应用层协议,用于通过万维网访问资源。超文本一词代表包含指向其他资源的链接的文本以及读者可以轻松解释的文本。 HTTP 通信由客户端和服务器组成,客户端向服务器请求资源。服务器处理请求并返回请求的资源。 HTTP 通信的默认端口是 80;但是,这可以更改。这些是我们在使用 Internet 访问不同网站时所知道的对 Web 服务器的请求。我们输入完全限定域名 (FQDN) 作为统一资源定位符 (URL) 以访问所需的...

walker_6的博客 862

别再手动巡检了!vRealize Operations Manager 8.x 自动化报告配置全攻略(附模板下载)

本文详细介绍了如何利用vRealize Operations Manager 8.x实现自动化巡检报告配置,大幅提升虚拟化运维效率。通过模板定制、智能调度和自动分发等功能,帮助运维团队告别手动生成报告的繁琐工作,实现90%以上的时间节省。文章还提供了实用的配置技巧和最佳实践,助力企业构建高效的自动化报告系统。

weixin_33806859的博客 297

web请求过程

一次完整的web请求过程 一次完整的web访问流程 前言:当我们在浏览器输入一个网址,然后按下回车,接下来浏览器显示了页面。网速好的话这之间可能就一秒,但在这一秒内到底发生了什么? 大致过程如下: 一次完整的web访问流程简析: client:输入网址–>发起http request–>等待web server响应. server:收到client请求–>加载资源–>...

wdirdo的博客 2729

docker配置国内镜像源

【代码】docker配置国内镜像源。

愿听风成曲 9614

【黑马点评优化】3-压测秒杀接口,算出性能塌陷区,之后用sentinel实现秒杀接口限流

【黑马点评优化】3-压测秒杀接口,算出性能塌陷区,之后用sentinel实现秒杀接口限流

m0_52031708的博客 3567

web页面的请求过程

前言:整体过程 **一句话过程:打开浏览器,输入URL,连接服务器,渲染服务器返回的结果。 *本地主机与服务器间的通信是两个进程间相互发送报文,而进程是通过socket套接字发送和接收报文的,想要收发socket,首先主机与服务器需要通过TCP三次握手建立TCP连接,连接建立之后,把请求报文放入套接字,然后经过传输层、网络层、数据链路层,层层封装,最终经过以太网路由转发给目的服务器; 服务器收到请求后,返回响应报文,本地主机接收到响应报文之后,经由浏览器渲染展示。 那在这个过程中首先我们需要建立连接,也就是

一天不学习,就浑身难受 990

ASF-YOLO:一种基于注意尺度序列融合的细胞实例分割YOLO模型

随着样本制备技术和显微成像技术的快速发展,细胞图像的定量处理和分析在医学、细胞生物学等领域发挥着重要作用。基于卷积神经网络(CNN),可以通过神经网络训练学习不同细胞图像的特征信息,具有很强的泛化性能。两阶段的R-CNN系列[1,2,3]及其一阶段变体[4,5]是实例分割任务的经典CNN基础框架。在最近的研究中,You Only Look Once(YOLO)系列[6,7,8,9]已经成为实时实例分割中速度最快、最准确的模型之一。

m0_47867638的博客 9796

HTTP的8种请求

转自:https://blog.youkuaiyun.com/qq_23853273/article/details/51955945 1.  GET:向服务器请求资源,服务器返回请求对象  2.  POST:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在实体主体中。POST请求可能会导致新的资源的创建和/或已有资源的修改。 也可以请求页面,通过实体主体的数据对请求的页面进行约束...

qq_35109640的博客 817

基于STM32L4XX、HAL库的RTL8201F 以太网收发器(PHY)驱动程序设计

define PHY_RESET_DELAY 1000 // PHY复位延迟(ms)#define PHY_AUTONEGO_DELAY 3000 // 自动协商延迟(ms)/* 检查PHY ID (RTL8201F的ID为0x001CC816) *//* 系统时钟配置,确保ETH有50MHz时钟 *//* 初始化CPU, AHB和APB总线时钟 */

zhusl6688的博客 804

如何正确理解和获取S参数

差分四端口的S参数是由双端口S参数逐步演化而来,因此,在数学中,其各分量均可以从单端S参数推导而来,在实际的仿真和测试中,软件和测量设备也是通过获取单端S参数矩阵再进行运算得到混合S参数矩阵的,并非直接获取。

一只豌豆象的博客 5150

Web 页面请求过程

一、从输入一个网址开始 当我们在浏览器输入一个网址,然后按下回车,接下来浏览器显示了页面。网速好的话这之间可能就一秒,但在这一秒内到底发生了什么? 本文主要内容是试图记录一个完整 Web 请求的详细过程,从用户在浏览器中输入 URL 地址说起,然后浏览器如何找到服务器地址的过程,并发起请求;分析请求在达反向代理服务器内部处理过程;最后到请求在服务器端处理完成后,浏览器渲染响应页面过程。 大致过程如...

杨杨子江的博客 921

使用 Python 爬虫获取中国证券市场公司公告数据

本文详细介绍了如何使用 Python 爬虫技术从中国证券市场(如巨潮资讯网)爬取公司公告数据。通过分析网页结构,编写爬虫脚本,抓取并存储公告信息,我们实现了从网页抓取数据的全过程。此外,本文还展示了如何应对反爬虫机制,并介绍了数据分析与可视化的基本方法。未来,我们可以通过机器学习等技术进一步挖掘公告中的潜在信息,例如,通过情感分析对公告内容进行情绪分类,或者预测某些公告类型对股市走势的影响等。希望本文能帮助你理解如何使用 Python 爬虫技术获取和处理证券市场的数据,并为你的数据分析项目提供帮助。

2201_76125261的博客 1887

一次web请求过程

一次 Web 请求到底发生了什么 一、从输入一个网址开始 当我们在浏览器输入一个网址,然后按下回车,接下来浏览器显示了页面。网速好的话这之间可能就一秒,但在这一秒内到底发生了什么? 本文主要内容是试图记录一个完整 Web 请求的详细过程,从用户在浏览器中输入 URL 地址说起,然后浏览器如何找到服务器地址的过程,并发起请求;分析请求在达反向代理服务器内部处理过程;最后到请求在服务器端处...

wang13342322203的博客 425

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

深入Web请求过程

深入Web请求过程 学习《深入分析Java Web技术内幕》第1章的笔记 浏览器输入URL发生的操作 域名解析:DNS服务把域名解析为IP地址 向找到IP地址的服务器发送一个get请求 服务器返回默认的数据资源给访问的用户 注意事项 服务器可能有多台,需要通过负载均衡来确定哪一台服务器来接受请求 请求数据可能储存在分布式缓存/静态文件/数据库 当数据返回给浏览器时,浏览器解析数据发现有一些...

qq_37993487的博客 688

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Web请求过程总结

Web请求过程总结 1、CND架构图          图片来源:深入分析JavaWeb技术内幕(许令波著) 2、发起HTTP请求   发起一个HTTP请求就是浏览器建立socket通信的过程,HttpClient开源的通过程序实现的处理HTTP请求的工具包。   Linux中的curl命令可简单的发送HTTP请求; 3、HTTP解析   HTTP请求头、HTTP响应头、HTTP状

d9hfdl73的专栏 642

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

深入 Web 请求过程

前言 随着 Web 2.0 时代的到来,互联网的网络架构已经从传统的 C/S 架构转变为更加方便、快捷的 B/S 架构,B/S 架构大大简化了用户使用网络应用的难度,提高了用户体验。 B/S 架构带来了以下两方面的好处: 客户端使用统一的浏览器(Browser)。由于浏览器具有统一性,不需要特殊的配置和网络连接。另外浏览器的交互特性使得用户使用它非常简便,且用户行为的可继承性非常强,也就是用户只...

彭楷淳在 优快云 623

Web页面请求过程

Web页面请求的过程 一名学生鲍勃将他的计算机与学校的以太网交换机相连,下载一个Web页面(比如说www.google.com的主页)。 准备:DHCP、UDP、IP和以太网 假定鲍勃启动他的计算机,然后将其用一根以太网电缆连接到学校的以太网交换机,交换机又与学校的路由器相连。如图所示。学校的这台路由器与一个ISP连接,本例中ISP为comcast.net。在本例中,comcast.next为学校提供了DNS服务;所以,DNS服务器驻留在Comcast网络中而不是学校网络中。我们假设DHCP服务器运行在路

qq_36553387的博客 354

Web请求响应的过程

WEB请求响应的过程 简单来说,服务端接收到用户访问网站的请求时,无非就是将用户发来的请求信息进行分析(请求头+请求体)。 再根据用户请求信息中内容在服务端做对应的处理后,将处理后的结果(字符串)作为响应体,再加上响应头后构建成完整的响应报文返回给客户端。 如我们可以根据请求头中的URL来加载对应的文件进行响应,而这个加载对应文件的过程我们可以做成一个函数,从而可以根据请求头中URL信息来执行不同的函数进行处理。 而对于处理的过程,我们可以是直接加载一个html文件后,将整个html文件中的内容作为

csjsz的博客 1093

WEB请求的过程

1、首先我们客户端发送一个请求到WEB服务器,请求首先是到网卡。 2、网卡将请求报文交由内核空间的内核处理,起始就是拆包了,发现请求的套接字是80端口。 3、内核便将请求发给了在用户空间的WEB应用程序,web服务器发现客户端请求的是index.html页面。 4、WEB服务进程发起系统调用将...

chimangwan3067的博客 142

Web 请求过程

Web 请求过程

abc5232033的博客 499

Java Web请求过程

Web请求过程 1. http请求工具 linux下的 curl 命令、谷歌浏览器的Restlet插件、postman 2. 缓存机制 包括浏览器本地缓存和服务器前端部署缓存服务器(比如Varnish代理)。可以用Ctrl+F5请求最新页面,首先会访问给定url,不使用浏览器缓存,其次会在请求头中添加字段:Pragma:no-cache和Cache-Control:no-cache告诉服务器端不使...

qq_24395625的博客 470
上一篇: 长连接和短连接
下一篇: lnmp部署
在你书包里拉屎
博客等级 码龄5年 149粉丝 100原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值