一、什么是HTTP协议
http协议是Hyper Text Transfer Protocol(超文本传输协议),是用于万维网服务器传输超文本到本地浏览器的传输协议,http协议是基于TCP/IP通信协议来传送数据。http协议工作于B/S架构的系统时,浏览器作为http的客户端通过URL向http服务端即WEB服务器发送访问请求,WEB服务器收到请求后再将相应的请求内容返回到客户端。
二、HTTP的主要特点
1.无状态性
http是没有状态的,即协议对事务处理是没有记忆的,同一个客户端第二次访问位于同一服务器上的页面时,服务器是不认识不记得这个客户端的,它并不知道这个客户端曾经访问过它。这样的好处是简化了服务端的设计,能够更加容易的支持大并发量的http请求。
2.灵活
http允许传输任意类型的数据对象
3.无连接
即限制每次连接只响应一个请求,服务端回应了客户端的请求并得到客户端的回应后,断开连接,采用这种方式可以节省传输时间。
三、请求和响应的过程
1.在浏览器中输入网址
2.浏览器根据用户输入的网址来解析出相应的IP地址(DNS查找过程)
(1)浏览器缓存
如果在一定的时间内已经访问过这个网址,那么浏览器缓存DNS记录一段时间(不同的浏览器保存缓存的时间也不一样)
(2)系统缓存
如果在浏览器缓存中没有查找到相应的域名,那么就会在操作系统的缓存中进行查找(浏览器会做一个系统调用)
(3)路由器缓存
如果在系统缓存中也没有查找到相应的域名,那么就是在路由器的缓存中来进行查找
(4)ISP DNS缓存
如果在路由器缓存中还是没有查找到相应的域名,那么就需要到ISP(Internet Service Provider即网络服务提供商)的DNS缓存中进行查找,这里一般都可以查到对应的缓存记录
3.浏览器与服务器建立一个TCP连接
4.浏览器给WEB服务器发送一个http请求
http请求的常见请求方法有GET、POST、HEAD
GET和POST的区别
5.服务器永久重定向响应
服务器会给浏览器一个301永久重定向响应,这样的话样浏览器就会访问"http://www.baidu.com/" 而非"http://baidu.com/",服务端一定要重定向而不是直接把用户想看的内容直接返回客户端是为什么呢?其中一个原因是和搜索引擎的排名有关,例如"http://www.baidu.com/"和"http://baidu.com/",服务端会将它们看成是两个网页,这样的话就降低了两个域名的搜索排名,搜索引擎明白301状态码的意思是什么,就会把带有www和不带有www的两个地址归到同一个网站名下。另一个原因是会造成缓存友好性变差,如果一个页面有好几个名字的话,在缓存中会出现好几次。
6.浏览器跟踪重定向的地址,并向改地址发送http请求
7.服务器处理请求
8.服务器发回一个html响应
9.释放TCP连接
10.客户端将接到的HTML文本解析并显示出来
11.浏览器获取嵌入在HTML中的其他对象
在浏览器显示HTML时,这个HTML文本中可能会包含一些其他地址的资源,这个时候浏览器就要再向这些地址发送http请求来获得相应的资源。