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

参考资料:浏览器加载和渲染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文件
  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值