浏览器向服务器发送请求报文

参考资料:浏览器加载和渲染html的顺序

域名:就是给IP起了一个别名,域名的作用就是方便人的记忆

1>浏览器向服务器发送请求报文

http:/www/baidu.com:80/login.aspx

当我在浏览器中输入一个这样以一个url地址:浏览器第一步做的事情就是根据这个www/baidu.com的域名来找DNS服务器,解析成对应的IP地址。

例如解析成:http://202.108.22.5 :80/login.aspx

浏览器在解析到IP地址后,做的第二步就是对指定的URL进行HTTP封装,把URL封装成http报文

浏览器把URL封装成HTTP报文后,第三步做的事情就是将这个HTTP请求报文发送到服务器

(注:浏览器是如何把http请求报文发送到服务器的呢? 答案:浏览器会在内部建立一个Socket对象,把http请求报文转变成byet[]字节,然后调用Socket.Sent()方法把这些数据发送到服务器的)

2>服务器向浏览器响应

在服务器端:

第一:服务器获取到浏览器发送火来的HTTP请求报文

(注:服务器是如何获取到浏览器发送过来的http请求报文的呢?答案:服务器也是通过Socket.Receive()方法接收到了浏览器发送过来的http请求报文数据)

第二步:服务器对接收到的http请求报文数据进行处理:

怎么处理呢? 1>先解析http请求报文

2>根据解析好的报文,在服务器端查找用户请求的资源(如果用户请求的是静态资源,则服务器直接通过文件操作读取这些资源然后把资源通过调用服务器端Socktet的Send()方法直接发送给浏览器(客户端),如果浏览器(客户端)请求的是动态网页则web服务器(IIS)会调用对应的.NET FreameWork来执行对应的动态网页中的代码,执行完毕以后把执行后生成的HTML代码再通过调用Socket.Sent()发送给浏览器(客户端))

3>浏览器解析渲染服务器响应的报文(HTML代码)

客户端:

浏览器通过Scocket.Receive()方法接收到服务器发送过来的HTML代码,然后对这些HTML代码进行渲染

浏览器怎么解析这些HTML代码呢?答案:浏览器接收到服务器发送过来的html代码,然后浏览器会对这些HTML代码从上到下一句一句的解析,遇到一些标签,比如<div>,<a> ,<span> ,<p>等标签,浏览器会调用渲染引擎对这些标签进行渲染,然后把结果显示到页面。如果遇到语义解释性的标签嵌入文件(image,JS脚本,CSS样式)例如:遇到<img src="123.png" />的时候浏览器会首先显示一个图片的框(窗口),如果img标签里设置了宽度和高度,它会立即将这个框(窗口)的大小给固定,如果没有宽度和高度,就显示一个小的默认大小的的框(窗口),然后再次通过Socket向服务器发送请求报文,来请求123.png这张图片,请求到123.png这张图片后,如果img之前没有设置过宽度和高度,这个时候才重新渲染它
的高度和宽度,如果img之前已经设置过高度和宽度了,这时候只要把123.png这张图片填到框里就可以了。

当遇到 <link href="StyleSheet1.css" rel="stylesheet" />的时候浏览器会再次通过Socket向服务器发送请求报文发送请求报文,来请求这个StyleSheet1.css文件

当与到<script src="jquery-1.11.2.js"></script>的时候,浏览器又会像服务器发送请求报文,来请求这个jquery-1.11.2.js文件

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-29 06:21:30

浏览器向服务器发送请求报文的相关文章

浏览器向服务器发送请求的请求头解析

1.笔者用chrome浏览器向百度主页发送的请求 请求头第一行是请求行, GET是请求方式 ,"/" 是请求的百度的根目录  HTTP是请求协议 /1.1 是协议的版本号 下图是请求头截图 2.通过一个表格的形式将请求头中的键值对呈现更加直观和清晰 下图是每一行(键值对)所代表的意思 原文地址:https://www.cnblogs.com/aydenwang/p/9404557.html

AJAX向服务器发送请求

原生的: 1.>:GET请求 $(function () { $("#btnGetDate").click(function () { //开始通过AJAX向服务器发送请求. var xhr; if (XMLHttpRequest) {//表示用户使用的高版本IE,谷歌,狐火等浏览器 xhr = new XMLHttpRequest(); } else {// 低IE xhr=new ActiveXObject("Microsoft.XMLHTTP"); }

在向服务器发送请求时发生传输级错误。 (provider: TCP 提供程序, error: 0 -

作为总公司IT部门,自然承担着各个分公司的运维技术支持工作,由于公司的性质,分公司经常负责维护这各家官老爷的服务器,同时这些服务器也作为和官老爷数据之间的连接......此处省略一万字. 今天分公司就有个负责人发过来一段服务器的报错信息,大致如下" FireF|y゛ 2016/5/23 15:36:19日志名称:          Application来源:            XXXXX 日期:            2016/5/23 11:47:30事件 ID:         0任务

向服务器发送请求

向服务器发送请求 1.向服务器发送请求 如需要将请求发送到服务器,我们使用XMLHttpRequest对象的open()和send()方法: xmlhttp.open("GET","test1.txt",true); xmlhttp.send(); 方法解释: (1)open(method,url,async): 规定请求的类型.URL以及是否异步处理请求: method:请求的类型,可以是GET或者POST: url:文件在服务器上的位置: async:true(

在向服务器发送请求时发生传输级错误。 (provider: 共享内存提供程序, error: 0 - 管道的另一端上无任何进程。

作者:卿笃军 原文地址:http://blog.csdn.net/qingdujun/article/details/36425825 SQL Server 2008 + VS2010 用C#编写的代码,进行数据库还原的时候,出错: 错误内容: 在向服务器发送请求时发生传输级错误. (provider: 共享内存提供程序, error: 0 - 管道的另一端上无任何进程. 解决方法: 将SQL链接语句构造成如下: string strLink = @"server=.;database=Data

学习-【前端】-angularjs基本框架以及向服务器发送请求的方法

昨天写了个跨域的东西,自己琢磨了下,想到这种方式正好也是之前想的混合app如何交互服务器的解决办法.心里还是蛮开心的.今天又花时间把前端客户端部分的框架做了出来,整合的思路是参照node社区移动端的设计方案,把所有controllers和所有services放到一起,不过请求数据未用$resource也没有用原生的$http,而是使用了restangular,用完这个再把配置文件单独整合到一个文件夹里.整个框架看起来都十分的整洁了. 先给个结构图: 因为是由产品驱动的架构,所以最开始没有使用bo

【03】AJAX 向服务器发送请求

AJAX 向服务器发送请求 创建 XMLHttpRequest 对象后,就可以向服务器发送请求了. XMLHttpRequest 对象的 open() 方法和 send() 方法用来向服务器发送请求. 注意:AJAX 向服务器发送的是 http 请求,与我们浏览网页时发送的 http 请求一样.我们可以右键查看当前网页的源代码,由很多 HTML.CSS和JavaScript 组成,如果我们使用 AJAX 请求当前的 URL ,返回的内容是一样的.(魔芋:也就是说ajax发送的,和我们平时输入网址

在向服务器发送请求时发生传输级错误。

遇到的问题和原帖差不多,不过是另一种状况,提出来,希望能帮助其他的小伙伴,俺是菜鸟,有不对的地方请多多包涵. 问题状况:恢复数据库的时候,将数据库给脱机 而后联机.再点击其他功能页面的时候,报错提示:在向服务器发送请求时发生传输级错误. (provider: 共享内存提供程序, error: 0 - 管道的另一端上无任何进程) 下面的解决方法,解决了问题. 在向服务器发送请求时发生传输级错误. (provider: 共享内存提供程序, error: 0 - 管道的另一端上无任何进程) 开始一直以

ajax-向服务器发送请求

ajax-向服务器发送请求 1.将请求发送到服务器,使用XMLHttpRequest对象的 open() 和 send() 方法.     xmlhttp. open(method,url,async) 方法:     method:请求的类型:get 或者 post: url:文件在服务器上的位置(该文件可以是任何类型的文件,比如:.txt,.xml,.asp,.PHP): async: true(异步)或 false(同步)                  注:XMLHttpRequest