http协议的理解

来源:互联网 发布:mac标记颜色快捷键 编辑:程序博客网 时间:2024/05/16 10:36
http 协议就是浏览器(客户端)和服务器之间通信的一种数据交换格式规范。
在http协议中,始终是以一种一问一答的形式进行,且服务器永远不会主动向客户端发送响应消息。
最简单的模型如下: 
- 浏览器发送请求数据到服务器
- 服务器解析浏览器发送的请求数据
- 服务器响应数据到客户端浏览器


B(browser)/S(server) 网络架构,就是浏览器和服务器的交互模型。
 
那么我们在浏览器输入网址后到页面响应之间到底发送了什么呢?


开始之前,我们要明白,计算机是无法识别域名的,计算机与计算机之间要想进行通信,必须通过
ip地址来定位计算机所在的位置。


比如: 


1、 你输入www.baidu.com 按下回车开始,浏览器会先在本机的host 文件找是否有域名对于的ip地址
如果有,则带着ip,访问。如果没有,则会通过向DNS域名解析服务器那拿到域名一一映射的ip地址,浏览器会自动的在拿到ip后
默认加上80端口号。
2、客户端和服务器之间建立TCP连接: 须三次握手 。(为了保证通信的可靠性)保证两台计算机之间两者都能收到信息。
3、拿到ip地址后,浏览器按照HTTP协议,将信息封装成 http 请求报文(请求头+请求行+请求主体);该请求报文本质是
具有特定格式的字符串,不过最终都要被转成二进制数据形式再进行发送。因为计算机与计算机之间只设别0,1二进制数据。
4、后台服务器接收到请求报文之后,按照http 协议对接收到的请求报文(可以是get ,post url等),进行解析,根据用户的
特定请求数据进行特定的处理,得到相应的响应结果数据。
5、同样的后台服务器也将响应的结果,按照HTTP协议,封装成 http 响应报文(响应头、响应字段、响应体、字符串编码格式等))
发送给客户端,也是通过ip 和端口号来确定是哪一台计算机。(这些信息已经在相应报文中了);
6、用户浏览器接收到响应后先解析从服务器发送过来的二进制数据,客户端浏览器也会将 二进制数据 根据编码类型解析成 字符串
然后根据 HTTP 协议,解析服务器发送过来的 响应报文,接着开始渲染html、css解析和执行 JavaScript 代码


- 当浏览器在解析的过程中遇到 一些静态资源时,会再次重复上面的步骤

2 0