浏览器与服务器通信之http协议
前端面试题常问的一个题目是:浏览器输入一个地址到访问成功浏览器做了哪些事?完成这一过程的主力就是http协议。
1、浏览器搜索自己dns查找域名对应ip。(找到即使用)
2、没找到就查找操作系统的dns缓存。(找到即使用)
3、再没找到就查找硬盘中的host文件。
4、自身电脑中如果不存在对应的ip地址,就向域名服务器请求获取到域名对应的ip。
5、拿到ip后,与服务器建立tcp连接。(三次握手)
6、tcp连接成功后,浏览器就根据http协议向服务器发送http请求。域名访问都是http协议中get方法请求。
7、服务器返回浏览器需要的数据。
8、浏览器根据html文件渲染页面: 浏览器内核和js引擎解析和渲染页面,html文件需要的css文件,js文件,图片等静态资源也是通过http请求获取。
9、浏览器无后续请求就断开连接。(四次挥手)
http协议
http即超文本传输协议,是互联网应用最广泛的一种协议。所有www文件都需要遵守它,
它规定了客户端和服务端之间交互的内容和步骤。端口为40。
http协议请求和响应分别是以请求报文和响应报文的形式进行。
请求报文
请求报文常用的请求方式有get、post、put、delete方法,请求报文含有状态行、请求头、请求正文三部分。
- 状态行会包括请求方式、http协议版本、请求路径
- 请求头是一些健值对(cookie:xxx,主机名:xxx,用户代理:xxx)
- 请求体包含传输的数据(get请求报文的请求体为空,它发送请求时参数会在它的url中)
注意:get请求默认当作get请求报文简写
get请求和post请求的区别:
1、get请求的参数会放在url中,post请求发送的数据都是放在请求体中,当然get请求也可以将数据放在请求体里,当然规范不允许不建议
2、url的长度是有限制的,请求体中长度没有限制,即get请求发送数据有长度限制,post请求没有长度限制。
3、get请求发送数据在url中,是可见的。相比放在请求体的post不够安全。
响应报文
http响应报文是服务器接受客户端http请求后作出的响应。同请求报文一样,由三部分组成:状态行,响应头,响应体。
状态行中有一个状态码,常见404便是一个状态码,意味着找不到请求的服务器资源。
2xx意味着服务器已经处理,3xx表示重定向,5xx意味着服务器错误。
完整的http请求响应流程:
客户端发送一个请求与服务器端口建立tcp连接(默认端口为80),服务器接收到http请求报文后就响应发送一个http响应报文。
本文来自博客园,作者:xzjeff,为个人学习笔记。

浙公网安备 33010602011771号