域名:就是给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文件