HTTP协议即为HTTP/IP协议,其中HTTP为网络七层中的应用层,IP为网络层。
组成
无论请求还是响应,都会有首行
、HTTP头
和正文信息
,而HTTP头发送的就是内容类型、日期、HTTP状态码等。正文就是表单数据。
请求首行基本格式为方法 路径 版本
,举例:GET /simple.html HTTP/1.1
。
响应首行基本格式为版本号 状态码 状态文本
,举例:HTTP/1.1 200 OK
。
一个HTTP请求体应该包括:
1、请求方式:(POST/GET);
2、path(请求的路径);
3、search(请求的参数,?后面的内容 );
4、Host(主机名+端口);
5、protocol(请求协议,一般为HTTP/1.1);
【(仅POST才有的部分)
6、Content-Type(请求内容加密方式):application/x-www-form-urlencoded;
7、Content-Length(请求内容长度):如id=2的长度为4】
在一个请求中,可以既包括请求参数,也包括请求内容,如:
POST/index.jsp?id=3 HTTP/1.1 Host:taobao.com Content-Type:application/x-www-form-urlenconded Content-Length:9
name=bear
特点
- 无状态:对传输的数据不具备任何记忆存储功能;
- 传输完毕,即断开连接。http 1.1及以后都保持连接。
HTTPS=HTTP+SSL信任证书。
问答部分
-
提问:一用户访问www.baidu.com,会经过哪些流程?
答:1、会先去浏览器中搜寻自身DNS缓存,找到后看是否过时效。未过时效就用;
过了时效或未找到就重新继续下面的请求。查看chrome的DNS缓存:chrome://net-internals#DNS
2、浏览器搜寻操作系统的缓存,同1;
3、读取本地host文件;
4、浏览器发起一个DNS的一个系统调用;
向本地主控域名服务器(宽带运营商提供)发起一个域名解析请求:
◦ 宽带运营商服务器查看本身缓存;
◦ 运营商发起一个迭代DNS解析的请求;
5、浏览器获得域名对应的IP后,发起HTTP“三次握手”,TCP/IP连接请求,经过TCP/IP协议站,防火墙等;
6、TCP/IP连接建立后,浏览器开始向服务器发送HTTP请求;
7、服务器接收请求,根据路径参数等,经过后台处理,返回处理结果(如HTML代码);
8、浏览器拿到页面代码后,其中的静态资源(如:css,js,图片等)会经历上7步;
9、浏览器渲染结果。
运营商迭代DNS解析的请求:
1)向顶级服务器发起一个请求,然后顶级服务器发现这是一个com域的服务器请求,向其返回com域的顶级域的IP地址;
2)向com域的IP地址发起请求,然后返回baidu.com域的IP地址;
3)向baidu.com域的IP地址(如万网、新网等)发起请求,拿到baidu.com的IP地址。
4)运营商服务器把结果(IP地址)返回给内核并缓存起来(有一定时效)。
5)操作系统内核把结果返回给浏览器。
参考:https://www.imooc.com/article/1851。
XXX(imooc某一前端课程,后期补充)。