目录
超文本传输协议(Hyper Text Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。
#############################################################
包含有超链接(Link)和各种多媒体元素标记(Markup)的文本。这些超文本文件彼此链接,形成网状(Web),因此又被称为网页(Web Page)。这些链接使用URL表示。最常见的超文本格式是超文本标记语言HTML。
#############################################################
URL即统一资源定位符(Uniform Resource Locator),用来唯一地标识万维网中的某一个文档。URL由协议、主机和端口(默认为80)以及文件名三部分构成。
#############################################################
HTTP协议是一种按照URL指示,将超文本文档从一台主机(Web服务器)传输到另一台主机(浏览器)的应用层协议,以实现超链接的功能。
#############################################################
即浏览器每请求一个Web文档,就创建一个新的连接,当文档传输完毕后,连接就立刻被释放。
> HTTP1.0、HTTP0.9采用此连接方式。
> 对于请求的Web页中包含多个其他文档对象(如图像、声音、视频等)的链接的情况,由于请求每个链接对应的文档都要创建新连接,效率低下。
即在一个连接中,可以进行多次文档的请求和响应。服务器在发送完响应后,并不立即释放连接,浏览器可以使用该连接继续请求其他文档。连接保持的时间可以由双方进行协商。
是指同一个客户端(浏览器)第二次访问同一个Web服务器上的页面时,服务器无法知道这个客户曾经访问过。HTTP的无状态性简化了服务器的设计,使其更容易支持大量并发的HTTP请求。
#############################################################
1、浏览器首先分析url
2、解析url里面的域名,首先会去浏览器缓存里面找,看有没有与域名相对应的映射关系,如果没有的话,然后会去/etc/hosts文件里面查找域名映射关系,如果没有的话就
去/etc/resolv.conf文件里面查找域名解析
3、DNS解析出来IP地址为202.2.16.21并将其返回给浏览器
4、浏览器与服务器建立TCP连接(80端口)
5、浏览器请求文档:GET /index.html
6、服务器给出响应,将文档index.html发送给浏览器
7、浏览器渲染index.html中的内容
8、释放TCP连接
如果是1.0版本的HTTP协议,会先断开TCP连接
#############################################################
HTTP代理又称Web缓存或代理服务器(Proxy Server),是一种网络实体,能代表浏览器发出HTTP请求,并将最近的一些请求和响应暂存在本地磁盘中,当请求的Web页面先前暂存过,则直接将暂存的页面发给客户端(浏览器),无须再次访问Internet。
#############################################################
常见首部字段名:
Host:服务器的DNS名称
Connection:连接方式
User-Agent :用户代理信息
Accept:告诉服务器客户端浏览器所能接受的响应类型
常见首部字段:
Data:表示访问时间
Server:表示服务器信息
Content-length:页面长度
Content-Type:页面类型
#############################################################
要了解这两种刷新页面的区别就首先要了解200和304这两种状态码
200:表示访问成功
304:表示服务器里的数据和浏览器缓存里的数据是一致的,所以无需从服务器发送新的数据
当我们访问以前访问过的nginx服务器,这时候状态码会是304
这个时候我们使用F5来刷新页面,状态码依旧不会发送改变,因为F5刷新页面还是从浏览器缓存里面拿的数据,所以状态码依旧是304
而使用Ctrl + F5 则会强制浏览器向服务器发送新的请求,要求服务器重新发送数据,不使用缓存。
#############################################################
方法(Method)是对所请求对象所进行的操作,也就是一些命令。请求报文中的操作有:
#############################################################
状态码(Status-Code)是响应报文状态行中包含的一个3位数字,指明特定的请求是否被满足,如果没有满足,原因是什么。状态码分为以下五类:
200:表示服务器成功响应了客户机的请求报文
301:Moved Permanently 永久重定向,表示请求资源的URL已经永久更改,并在响应中给出了新的URL
302:Moved Temporarily 临时重定向
304:not Modified 浏览器缓存里面的内容和服务器里面的内容是一样的
401:认证失败,例如:要提交的用户名和密码不正确
403:Forbidden 浏览器不能访问某个文件(在linux服务器设置了权限的限制)
404:not found 网页不存在
405:请求方法不对,例如:可能某个接口只支持get方法,但是访问的时候用的是post方法,就会返回405状态码
500:Inter Server Error 内部服务器错误,出现bug,服务器崩溃
502:Bad Gateway 网关故障,就是负载均衡器是好的,但是后面的real Server 挂了
503:Service Temporarily Unavailable 服务器临时不可用,由于临时的服务器维护或者过载,服务器无法处理请求,这个状况是临时的,并且在一段时间以后恢复,限制了在某个时间段内只能访问多少次,限制了并发数
504:Gateway Time-out 服务器访问超时