超文本传送协议HTTP

我们每天使用的http到底是什么呢?本篇就学习一下超文本传送协议HTTP~-~

1、HTTP协议的特点:

(1)HTTP是面向事务的应用层协议,它是万维网上能够可靠地交换文件(包括文本、声音、图像等各种多媒体文件)的重要基础。

(2)HTTP协议是无连接的。HTTP使用了面向连接的TCP作为运输层协议,保证了数据的可靠传输。HTPP不必考虑数据在传输过程中被丢弃又怎样被重传。

(3)HTTP协议是无状态的。同一个客户第二次访问同一个服务器上的页面,服务器的响应与第一次被访问时的相同。HTTP的无状态特性简化了对服务器的设计,使服务器更容易支持大量并发的HTTP请求


2、HTTP的报文结构

由于HTTP是面向文本的,因此在报文中的每一个字段都是一些ASCII码串,因而各个字段的长度都是不确定的。


1》请求报文——从客户向服务器发送请求报文


超文本传送协议HTTP

HTTP常用的请求方法有:

GET:申请获取资源,而不对服务器产生任何其他影响

HEAD:仅要求服务器返回头部信息,而不需要传输任何实际内容

POST:客户端向服务器提交数据的方法。这种方法会影响服务器,服务器可能根据收到的数据创建新的资源,也可能更新原有资源。

PUT:上传某个资源

DELETE:删除某个资源

TRACE:要求目标服务器返回原始HTTP请求的内容。它可用来查看中间服务器对HTTP请求的影响。

OPTIONS:查看服务器对某个特定的URL都支持那些请求方法

CONNECT:用于某些代理服务器,它们能把请求的连接转化成一个安全隧道


下面是一个请求报文的例子:

超文本传送协议HTTP


短连接:同一个客户的多个连续的HTTP请求不能共用同一个TCP连接

长连接:同一个客户的多个连续的HTTP请求可以使用同一个TCP连接

"Connection"头部字段就是用来告诉对方一个请求完成之后该如何处理连接的,比如立即关闭连接(close)或者保持一段时间以等待后续连接(keep-alive)


HTTP请求可以包含可选的消息体,如果消息体非空,则HTTP请求的头部字段必须包含描述该消息体长度的字段。


《2》响应报文——从服务器到客户的回答

超文本传送协议HTTP

常见的HTTP的状态码及状态信息以及含义

超文本传送协议HTTP

HTTP协议是一种无状态的协议,即每个HTTP请求之间没有任何上下文关系。如果服务器处理HTTP请求时需要用到前面HTTP请求的相关信息,客户端必须重传这些信息。这样就导致HTTP请求就要传输更多的数据。常见的解决方法就是Cookie.Cookie是服务器发送给客户端的特殊信息(通过HTTP应答的头部字段“Set-Cookie”),客户端每次向服务器发送请求的时候都需要带上这些信息(通过HTTP请求的头部字段“Cookie”).这样服务器就可以区分不同的客户了。基于浏览器的自动登录就是用Cookie实现的。


Cookie的工作原理:当用户浏览某个使用Cookie的网站时,该网站的服务器就为该用户产生一个唯一识别码,并以此作为一个索引在服务器的后端数据库中产生一个项目。接着再给用户的HTTP的响应报文中添加一个叫做Set-Cookie的首部行。当用户收到这个响应时,其浏览器就在它管理的特定的Cookie文件中添加一行,其中包括这个服务器的主机名和Set-Cookie后面给出的识别码。当该用户继续浏览这个网站时,每发送一个HTTP请求报文,其浏览器就会从Cookie文件中取出这个网站的识别码,并放到HTTP请求报文的Cookie首部行中。于是,这个网站就能跟踪该用户在该网站的活动。


3、代理服务器

代理服务器是一种网络实体,又称为万维网高速缓存。代理服务器把最近的一些请求和响应暂存在本地磁盘中。当新请求到达时,若代理服务器发现这个请求与暂时存放的请求相同,就返回暂存的响应,而不需要按URL的地址在此去向因特网访问该资源。代理服务器可在用户端或服务器端工作,也可在中间系统工作。超文本传送协议HTTP


使用代理服务器后访问因特网的过程是这样的:

(1)校园网PC中的浏览器向因特网的服务器请求服务时,就先和校园网的代理服务器建立TCP连接,并向代理服务器发送HTTP请求报文。

(2)若代理服务器已经存放了所请求的对象,代理服务器就把这个对象放入HTTP响应报文中返回给PC浏览器。

(3)否则,代理服务器就与因特网上的源点服务器建立TCP连接,并发送HTTP请求报文。

(4)源点服务器把所请求的对象放入HTTP响应报文中返回给校园网的代理服务器。

(5)代理服务器收到这个对象后,先复制在自己的本地存储器中(留待以后用),然后在把这个对象放入HTTP响应报文中,通过已经建立的TCP连接,返回给请求该对象的浏览器。


4、什么是HTTPS?

HTTPS是以安全为目标的HTTP通道,简单讲是HTTP的安全版。


HTTPS的实现原理:有两种基本的加解密类型:

(1)对称加密:**只有一个,加密解密为同一个**,加解密速度快,典型的加密算法有DES,AES等;

(2)非对称加密:**成对出现(且根据公钥无法推知私钥,根据私钥无法推知),加密解密使用不同**(公钥加密需要私钥解密,私钥加密需要公钥解密)相对对称加密速度较慢,典型的非对称加密算法有RSA,DSA等。

https的通信过程:

超文本传送协议HTTP

https通信的特点:

(1)客户端产生的**只有客户端和服务器能得到

(2)加密的**只有客户端和服务器端能得到明文

(3)客户端到服务器端的通信是安全的。


如果想更加深入的理解HTTP协议,可以参考《深入理解HTTP协议》~~