超文本传送协议HTTP
我们每天使用的http到底是什么呢?本篇就学习一下超文本传送协议HTTP~-~
1、HTTP协议的特点:
(1)HTTP是面向事务的应用层协议,它是万维网上能够可靠地交换文件(包括文本、声音、图像等各种多媒体文件)的重要基础。
(2)HTTP协议是无连接的。HTTP使用了面向连接的TCP作为运输层协议,保证了数据的可靠传输。HTPP不必考虑数据在传输过程中被丢弃又怎样被重传。
(3)HTTP协议是无状态的。同一个客户第二次访问同一个服务器上的页面,服务器的响应与第一次被访问时的相同。HTTP的无状态特性简化了对服务器的设计,使服务器更容易支持大量并发的HTTP请求。
2、HTTP的报文结构
由于HTTP是面向文本的,因此在报文中的每一个字段都是一些ASCII码串,因而各个字段的长度都是不确定的。
《1》请求报文——从客户向服务器发送请求报文
HTTP常用的请求方法有:
GET:申请获取资源,而不对服务器产生任何其他影响
HEAD:仅要求服务器返回头部信息,而不需要传输任何实际内容
POST:客户端向服务器提交数据的方法。这种方法会影响服务器,服务器可能根据收到的数据创建新的资源,也可能更新原有资源。
PUT:上传某个资源
DELETE:删除某个资源
TRACE:要求目标服务器返回原始HTTP请求的内容。它可用来查看中间服务器对HTTP请求的影响。
OPTIONS:查看服务器对某个特定的URL都支持那些请求方法
CONNECT:用于某些代理服务器,它们能把请求的连接转化成一个安全隧道
下面是一个请求报文的例子:
短连接:同一个客户的多个连续的HTTP请求不能共用同一个TCP连接
长连接:同一个客户的多个连续的HTTP请求可以使用同一个TCP连接
"Connection"头部字段就是用来告诉对方一个请求完成之后该如何处理连接的,比如立即关闭连接(close)或者保持一段时间以等待后续连接(keep-alive)
HTTP请求可以包含可选的消息体,如果消息体非空,则HTTP请求的头部字段必须包含描述该消息体长度的字段。
《2》响应报文——从服务器到客户的回答
常见的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的地址在此去向因特网访问该资源。代理服务器可在用户端或服务器端工作,也可在中间系统工作。
使用代理服务器后访问因特网的过程是这样的:
(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的通信过程:
https通信的特点:
(1)客户端产生的**只有客户端和服务器能得到
(2)加密的**只有客户端和服务器端能得到明文
(3)客户端到服务器端的通信是安全的。
如果想更加深入的理解HTTP协议,可以参考《深入理解HTTP协议》~~