前端八股之HTTP
一,负责域名解析的DNS服务
应用层。提供域名到IP地址之间的解析服务。计算机擅长解数字,人类擅长字母配合数字的表达方式
各种协议与HTTP协议的关系
客户端已知http://haker,问DNS这个网址对应的IP地址是什么。得到IP地址后,http协议生成针对web服务器的HTTP请求报文,TCP协议把http请求报文分成多个小段。IP协议搜索对方的地址,一边中转一边传送。TCP协议从对方那里接受到报文合并重组报文段,按照序号以原来的顺序重组请求。HTTP协议对web服务器请求的内容处理。然后服务器请求的处理结果也按照TCP/IP协议向用户进行回传
URI和URL
统一资源标识符,统一资源定位符。url是使用web浏览器等访问web页面时需要输入的网页地址
不是所有的应用程序都符合RFC
二,HTTP/1.1版本
HTTP协议用于客户端和服务器端之间的通信
通过请求和响应的交换达成通信,请求必定由客户端发出,而服务器回复响应
GET表示请求访问服务器的类型,方法。
请求报文:请求方法,请求URI,协议版本,可选的请求首部字段和内容实体构成
响应报文:协议版本,状态码(表示请求成功或失败的数字代码),用以解释状态码的原因短语,可选的响应首部字段以及实体主体构成
接收到请求的服务器,将请求内容的处理结果以响应的形式返回。
状态码,资源实体的主体
HTTP是不保存状态的协议
无状态协议,它不会对发送过的请求和响应做持久化处理
为了保存用户的状态,引入cookie技术
请求URI定位资源
URI特定功能,在互联网任意位置都能访问到(?)
如果不是针对特定资源而是对服务器本身发起请求,用*来代替请求URI
告知服务器意图的HTTP方法
GET:获取资源
POST:传输实体主体
PUT:传输文件
因为http没有验证机制,所以一般也不用,除非Web验证机制配合
HEAD:获得报文首部。
类似与GET,只是不返回报文主体
DELETE:删除文件
与put相反,一般不用
OPTIONS:询问支持的方法
TRACE:追踪路径
不常用,还容易引发XST(跨站追踪)攻击
CONNECT:要求用隧道协议连接代理
使用SSL(安全套接协议)TLS(传输层安全)协议把通信内容加密后经网路隧道传输
使用方法下达命令
方法区分大小写,需要用大写
持久连接节省通信量
持久连接:
只要一端没有明确提出断开连接,则保持TCP连接状态(便于连接后多次请求和响应的交互)
管线化
持久连接使得多数请求以管线化方式发送成为可能
使用Cookie的状态管理
Cookie技术通过在请求和响应报文中写入Cookie信息来控制客户端的状态。
Cookie会根据从服务端发送的响应报文内的一个叫做Set-Cookie的首部字段信息,通知客户端保存Cookie。当下次客户端在向服务端发请求时,客户端会自动在请求报文中加入Cookie值后发送出去
三,HTTP报文内的HTTP信息
HTTP报文
报文首部+报文主体。两者中间用空行连接
请求报文及响应报文的结构
请求行,状态行,首部字段,其他(如Cookie)
编码提升传输速率
报文主体和实体主体的差异
报文message:http基本通信中的基本单位,通过HTTP通信传输
实体entity:作为请求或响应的有效荷载数据(补充项)被传输
压缩传输的内容编码
分割发送的分块传输编码
分块传输编码会将实体主体分成多个部分(块),Transfer Coding
发送多种输入的多部份对象集合
MIME多用途因特网邮件扩展机制
获取部分内容的请求范围
指定范围发送的请求叫做范围请求,针对范围请求,响应会返回状态码为206的响应报文
如果服务器端无法响应范围请求,则会返回状态码200 OK和完整的实体内容
内容协商返回最合适的内容
内容相同但语言不太一样,中文和英文。
内容协商机制:
服务器驱动协商,客户端驱动协商,透明协商(结合两端)
四,返回结果的HTTP状态码
状态码告知从服务器端返回的请求结果
1xx正在处理接受的请求
2xx请求正常处理完毕
3xx需要进行附加操作以完成请求
4xx服务器无法处理请求
5xx服务器处理请求出错
2xx成功
200ok正常处理
204 no content
206 客户端进行了范围请求,而服务器成功执行了这部分GET请求
3xx重定向
浏览器需要执行某些特殊的处理以正确处理请求
301
