一、HTTP协议
HTTP(HyperText Transfer Protocol,超⽂本传输协 )的协议。
HTTP是⽆连接, ⽆状态, ⼯作在应⽤层的协议。
⽆连接理解为: http协议本身是没有维护连接信息的, http的数据会交给⽹络协议栈传输层的TCP协议, ⽽TCP是⾯向连接的。 ⼤家注意区别。
⽆状态: HTTP 协议⾃身不对请求和响应之间的通信状态进⾏保存。也就是说在 HTTP 这个级别,协议对于发送过的请求或响应都不做持久化处理。
HTTP是可靠传输的,虽然HTTP无连接,自身不会维护连接信息,但是,它的数据最终会交给传输层的TCP协议,而TCP协议是可靠传输的,因此HTTP协议是可靠传输的。
二、URL的解释
万维网的内核部分是由三个标准构成的:
1)统一资源定位符(URL)。 负责标识万维网上的各种文档,并使每个文档在整个万维网的范围内具有唯一的标识符URL。
2)超文本传输协议(HTTP)。 一个应用层协议,它使用TCP连接进行可靠的传输,HTTP是万维网客户程序和服务器程序之间交互所必须严格遵守的协议。
3)超文本标记语言(HTML)。 一种文档结构的标记语言,它使用一些约定的标记对页面上的各种信息(包括文字、声音、图像、视频等)、格式进行描述。
三、HTTP与HTTPS
区别
对称加密和非对称加密
四、HTTP协议格式
在浏览器和服务器之间的请求与响应的交互,必须遵循规定的格式和规则,这些格式和规则就是HTTP。 因此HTTP有两类报文:
> 请求报文(从Web客户端向Web服务器发送服务请求)
> 响应报文(从Web服务器对Web客户端请求的回答)。
HTTP请求报文和响应报文都由三个部分组成。
五、HTTP协议版本
① HTTP/0.9(不常用)
② HTTP/1.0 (常用)
③ HTTP/1.1(常用)
④ HTTP/2.0(不常用)
HTTP的长链接和短链接
HTTP1.0默认使用的是短连接。浏览器和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接。
HTTP/1.1起,默认使用长连接。要使用长连接,客户端和服务器的HTTP首部的Connection都要设置为keep-alive,才能支持长连接。
HTTP长连接,指的是复用TCP连接。多个HTTP请求可以复用同一个TCP连接,这就节省了TCP连接建立和断开的消耗。
HTTP1.0和HTTP1.1的区别
HTTP1.1和 HTTP2.0的区别
六、HTTP协议请求方法
1. GET:获取资源
GET 方法用来请求访问已被 URI 识别的资源。指定的资源经服务器端解析后返回响应内容。也就是说,如果请求的资源是文本,那就保持原样返回;(GET既能从服务器中去获取数据,也能向服务器中提交少量数据,提交的数据在URL中)
2.POST:传输实体主体
虽然用 GET 方法也可以传输实体的主体,但一般不用 GET 方法进行传输,而是用 POST 方法。虽说 POST 的功能与 GET 很相似,但 POST 的主要目的并不是获取响应的主体内容。(给服务器提交某些数据,提交的数据在正文中)
3.PUT:传输⽂件
PUT ⽅法⽤来传输⽂件。就像 FTP 协议的⽂件上传⼀样,要求在请求报⽂的主体中包含⽂件内容,然后保存到请求 URI 指定的位置。 但是,鉴于 HTTP/1.1 的 PUT ⽅法⾃身不带验证机制,任何⼈都可以上传⽂件 , 存在安全性问题,因此⼀般的 Web ⽹站不使⽤该⽅法。
4.HEAD:获得报文首部
HEAD方法和GET方法一样,只是不返回报文主体部分,用来确认资源的有效性。HEAD方法是不需要服务端返回响应正文的,使用HEAD方法,服务器只会返回响应首行、响应报头、空行。
5.OPTIONS:询问⽀持的⽅法
OPTIONS方法用来查询针对请求URL指定的资源支持的方法。即客户端询问当前服务器都支持哪些方法。
Get与POST的区别
七、HTTP状态码
1xx:表示通知信息,例如表示收到或者是正在处理
2xx:表示成功,例如表示接受或知道了
3xx:表示重定向,例如表示完成请求还需要采取进一步的行动
4xx:表示客户端的差错,例如表示请求中有语法错误或不能完成
5xx:表示服务器端的差错:例如表示服务器失效无法完成请求
① 200(OK):表示从客户端发来的请求在服务器端被正常处理了。
② 204(No Content):请求处理成功了,但没有资源要返回(没有正文)
③ 206(PartialContent):客户端进行了范围请求,服务器成功执行这一请求,
① 301(Moved Permanently) 永久性重定向 告诉服务器某一资源已被永久放在另一个URL中,以后访问需访问新的URL
② 302(Found) 临时性重定向 客户端要请求的资源临时被放到新的服务器中,以后访问此资源还是访问这个旧服务器
③ 303(See Other)要访问的资源已经更新
① 400(Bad Request):服务端无法理解客户端发送的请求:请求格式错误
② 401(Unauthorized):认证失败
③ 403(Forbidden):客户端请求访问某一资源被服务器拒绝了,即没有资格(权限)访问某一资源
④ 404(Not Found)服务器无法找到客户端请求的资源
① 500(Internal Server Error)
该状态码表明服务器端在执行请求时发生错误,也有可能是Web应用存在的bug或某些临时的故障
② 503(Service Unavailable)服务器繁忙
八、HTTP常见Header
cookie
cookie和session
cookie和session都是用来跟踪浏览器用户身份的会话方式。
> 区别:
1)cookie数据存放在客户的浏览器上,session数据放在服务器上。
2)cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗,如果主要考虑到安全应当使用session。
3)session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,如果主要考虑到减轻服务器性能方面,应当使用COOKIE。
因此,将登陆信息等重要信息存放为SESSION;其他信息如果需要保留,可以放在COOKIE中。
九、HTTP操作过程
用户单击鼠标后所发生的事件按顺序如下(以访问清华大学的网站为例):
1)浏览器分析链接指向页面的URL (http://www.tsinghua edu.cn /chn/index.htm)。
2)浏览器向DNS请求解析www.tsinghua.edu.cn的IP地址。
3)域名系统DNS解析出清华大学服务器的IP地址。
4)浏览器与该服务器建立TCP连接(默认端口号为80)。
5)浏览器发出HTTP请求: GET /chn/index.htm.
6)服务器通过HTTP响应把文件index.htm 发送给浏览器。
7) TCP连接释放。 8)浏览器解释文件index.htm,并将Web页显示给用户。