
超文本传输协议,用于从万维网服务器传输超文本到本地浏览器的传送协议。
统一资源标识符,用于识别互联网资源名称的字符串,HTTP使用统一资源标识符来传输数据和建立连接,web上的各种资源,比如HTML文档、视频、图片等都是由统一资源标识符进行定位。具体的格式如下:
格式:[协议名]: //[用户名]:[密码]@[服务器地址]:[服务器端口号]/[路径]?[查询字符串]#[片段ID]。
统一资源定位符,用于识别互联网上某一处资源的地址。
基本规则:
http: //< host>:< port>/< path>?< searchpart>
比如:https://baike.baidu.com/item/8937042?fromtitle=URL&fromid=110640&fr=aladdin。
URL是URI的子集,URL都是URI,但是URI并不都是URL。URI中还有URN(统一资源名称),所以有些URI只是表示符,没有办法定位任何资源。
一般来讲,服务端将客户端的请求数据返回之后就要关闭TCP请求,但是如果在头信息中使用了Connection:keep-alive,TCP连接会继续保持打开状态,服务端和客户端可以持续进行HTTP通信,这样做节约时间,节省带宽。
| 方法 | 描述 |
|---|---|
| GET | 请求指定信息,并返回实体主体,且不对资源进行操作 |
| HEAD | 返回中没有具体内容的GET,用于获取报头 |
| POST | 对指定资源进行处理,请求数据包在请求体中,不是明文,安全性高于GET,可对资源进行创建和修改 |
| PUT | 取代指定内容 |
| DELETE | 删除指定内容 |
| CONNECT | HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器 |
| PATCH | PUT的补充方法,用于对已知资源的局部更新 |
| OPTIONS | 允许客户端查看服务器的性能 |
| TRACE | 回显服务器收到的请求,主要用于测试或诊断 |
请求消息包括:请求行,请求头,空行,请求数据。

响应消息保包括:状态行,消息报头,空行,响应数据。
状态码,我们常用的就四种:200,404,500,301。
| 状态码 | 描述 |
|---|---|
| 200 | 请求成功 |
| 404 | 找不到资源,404页面可定制 |
| 500 | 服务器错误 |
| 301 | 请求的资源被移动到其他位置了 |
| 100 | 客户端应继续其请求 |
| 101 | 切换协议 |
| 201 | 成功请求并创建了新的资源 |
| 202 | 已经接受请求,但未处理完成 |
| 203 | 请求成功,但返回的meta信息不在原始的服务器,而是一个副本 |
| 204 | 服务器成功处理,但未返回内容 |
| 205 | 服务器处理成功,用户终端(例如:浏览器)应重置文档视图。可通过此返回码清除浏览器的表单域 |
| 206 | 服务器成功处理了部分GET请求 |
| 300 | 请求的资源可包括多个位置,相应可返回一个资源特征与地址的列表用于用户终端(例如:浏览器)选择 |
| 302 | 请求资源只是临时被移动,客户端应继续使用原有URI |
| 303 | 使用GET和POST请求查看其它地址 |
| 304 | 所请求的资源未修改,服务器返回此状态码时,不会返回任何资源,告诉客户端资源没有被修改 |
| 305 | 所请求的资源必须通过代理访问 |
| 307 | 临时重定向,与302类似,使用GET请求重定向 |
| 400 | 客户端请求的语法错误 |
| 401 | 请求要求用户的身份认证 |
| 402 | 保留,将来使用 |
| 403 | 服务器理解请求客户端的请求,但是拒绝执行此请求 |
| 405 | 客户端请求中的方法被禁止 |
| 406 | 服务器无法根据客户端请求的内容特性完成请求 |
| 407 | 请求要求代理的身份认证,与401类似,但请求者应当使用代理进行授权 |
| 408 | 服务器等待客户端发送的请求时间过长,超时 |
| 409 | 服务器完成客户端的 PUT 请求时可能返回此代码,服务器处理请求时发生了冲突 |
| 410 | 客户端请求的资源已经不存在,410不同于404,如果资源以前有现在被永久删除了可使用410代码,网站设计人员可通过301代码指定资源的新位置 |
| 411 | 服务器无法处理客户端发送的不带Content-Length的请求信息 |
| 412 | 客户端请求信息的先决条件错误 |
| 413 | 由于请求的实体过大,服务器无法处理,因此拒绝请求 |
| 414 | 请求的URI过长(URI通常为网址),服务器无法处理 |
| 415 | 服务器无法处理请求附带的媒体格式 |
| 416 | 客户端请求的范围无效 |
| 417 | 服务器无法满足Expect的请求头信息 |
| 501 | 服务器不支持请求的功能,无法完成请求 |
| 502 | 作为网关或者代理工作的服务器尝试执行请求时,从远程服务器接收到了一个无效的响应 |
| 503 | 由于超载或系统维护,服务器暂时的无法处理客户端的请求。延时的长度可包含在服务器的Retry-After头信息中 |
| 504 | 充当网关或代理的服务器,未及时从远端服务器获取请求 |
| 505 | 服务器不支持请求的HTTP协议的版本,无法完成处理 |
DNS是域名系统,将域名与其具体的IP地址相互映射成一个分布式数据库,可以让用户更加方便进行访问,不然,每次访问都输入IP地址,谁记得住呀。比如:www.baidu.com是可以输入的,但是百度的IP是多少很多人都不知道,所以需要DNS将www.baidu.com解析成具体的IP地址。
DNS劫持就是将劫持DNS服务器,将映射表改掉,导致输入的正确的域名,但访问的却是其他的网站,就是返回一个不匹配的,错误的IP让用户访问。DNS劫持一般有三种情况。
DNS劫持发生在请求中,而HTTP劫持更像是发生在返回中。通过向返回的数据中插入JS或其他的东西,导致正确的页面出现很多小广告,小弹窗,当然也有像DNS劫持那样直接对请求进行拦截返回错误信息。
一般防止HTTP劫持有两种方法: