HTTP—超文本传输协议
80端口
超文本传输协议,基于传输层的TCP协议进行通信,通用无状态的应用层协议。
HTTP是一个客户端终端(用户)和服务器端(网站)之间,请求和应答之间的一个标准TCP连接。
HTTP是以明文方式传输的。
HTTPS—安全的超文本传输协议
443端口
HTTPS是以安全为目标的HTTP通道,即是在HTTP的基础之上加入了SSL层,因此加密的详细内容就需要SSL。
HTTPS是由位于TCP/IP协议与各应用层之间的SSL协议加密的协议。
HTTPS协议需要CA认证,申请证书。
客户端与服务端传输数据之前,会通过基于X.509证书进行双方的身份验证。
HTTP与HTTPS区别
1、https协议需要到ca申请证书,一般免费证书很少,需要交费
2、http是超文本传输协议,信息是明文传输的;https则是具有安全性的ssl加密传输协议
3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443
4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全
HTTP的请求方式
请求方式 | 作用 |
---|---|
get | 发送一个请求来取得服务器上的某一资源。 |
post | 向 url 指定的资源提交数据或附加新的数据。 |
put | put 方法跟 post 方法很像,也是向服务器提交数据,但是 put 方法指向了资源在服务器上的位置,而 post 方法没有。 |
head | 只请求页面的首部。 |
delete | 删除服务器上的某资源。 |
options | options 方法用于获取当前 url 所支持的方法。如果请求成功,会有一个 allow 的头包含类似 get、post 这样的信息。 |
trace | trace 方法被用于激发一个远程的,应用层的请求消息回路。 |
connnect | 把请求连接转换到透明的 tcp/ip 通道。 |
HTTP的状态码
状态码 | 状态 |
---|---|
200 | 状态码200表示服务器响应成功,也就是服务器找到了客户端请求的内容,并且将内容返回给客户端。 |
301 | 状态码301代表临时跳转。例如:URL地址A可以向URL地址B上跳转,但这并不是永久性的,在经过一段时间后,URL地址A还可能向URL地址C上跳转。 |
302 | 状态码302和状态码301相似,不同的是状态码302往往代表的是永久性的重定向,值得注意的是,这种重定向跳转,从严格意义来讲不是服务器跳转,而是客户端跳转的。这个“跳”的动作是服务器是通过回传状态码302来下达给客户端的,让客户端完成跳转。 |
304 | 服务器通过返回状态码304可以告诉客户端请求资源成功,但是这个资源不是由服务器提供返回给客户端的,而是客户端本地浏览器缓存中就有的这个资源,因为可以从缓存中获取这个资源,从而节省传输的开销。 |
403 | 状态码403代表请求的服务器资源权限不够,也就是说,没有权限去访问服务器的资源,或者请求的IP地址被封掉了。 |
404 | 状态码404代表服务器上没有该资源,或者说服务器找不到客户端请求的资源,是最常见的请求错误码。 |
500 | 状态码500代表程序错误,也就是说请求的网页程序本身报错了。在服务器端的网页程序出错。由于现在的浏览器都会对状态码500做一定的处理,所以在一般情况下会返回一个定制的错误页面。 |
HTTP请求过程
简述:
1、域名解析:使用DNS协议进行域名解析
2、建立连接:发起TCP三次握手
3、发起http请求:建立TCP连接成功后,浏览器发起http请求
4、响应http请求:服务端响应http请求,浏览器得到返回response
5、解析response:浏览器解析response,并请求其它的资源(如js、css等)
6、浏览器渲染展示页面:浏览器根据内核对页面进行渲染展示
7、断开连接:TCP四次挥手