HTTP协议

HTTP协议(超文本传输协议)是网络层中很重要的一个协议。                                     

如General图:将以如下的内容梳理HTTP协议。

                        

        我们上网用到最多的就是网址,而它的学名叫URL:统一资源定位符。通常上网输入一个网站的域名,就可以连接获取想要的资源,而我们知道在互联网中的通信是用IP+port来确定的,HTTP协议的默认端口号是80,但是因为用来表达IP的点分十进制(123.123.123.123)不利于记忆,所以就提出了为每个IP取一个让人便于记忆(www.    .com)的方式,通过DNS服务将两者相关联。输入网址通过DNS服务获取到IP后进行上网的。

                             

   HTTP请求:由首行、请求报头、空行、正文组组成的。

                                 

General图中的Request Method就是首行中的请求方法(method)有多种:

GET: 请求指定的页面信息,并返回实体主体。 (获取资源)
HEAD: 只请求页面的首部。 (获得报文首部)
POST: 向指定资源提交数据进行处理请求(传输实体主体) 
PUT: 从客户端向服务器传送的数据取代指定的文档的内容。(传输文件) 
DELETE: 请求服务器删除指定的页面。 (删除文件)
OPTIONS: 允许客户端查看服务器的性能。 (询问服务器支持的方法)
TRACE: 请求服务器回送收到的请求,主要用于测试或诊断。 
LINK: 请求服务器建立链接关系。 
UNLINK: 断开链接关系。 

请求报头(header)是由  名字+冒号+空格+值构成的。下图是在浏览器中抓取的Request Header:

空行起到的作用就是将消息报头和正文有效的分隔。

 

 HTTP响应:与请求的组成原理相同,由状态行,响应报头,空行,响应正文组成

        状态行由版本号+状态码+状态码解释组成,在General图中的Status Code可以看出    

 常见状态码\            类别                 解释
       200             OK      请求正常处理完毕
       403        Forbidden  服务器收到请求,但拒绝提供服务
       404       Not Found  请求资源不存在,错误的URL
       503Server Unavailable   服务器当前不能处理请求
       504Gateway Time-out               网关超时

     响应报头(Response Headers)的内容与Request Headers中的组成是相同的。

 

HTTP协议的特点:

传输数据类型的多样性:由Connect-Type就可以区分传输数据的类型

长链接:在HTTP初始的版本中限制每次连接只处理一个请求,服务器处理完请求后,客户端ACK后断开连接。减少传输      时间,但随着一个网页中的内容较多,大量的TCP建立、释放链接,会浪费大量的事件。所以从1.1版本之后,默认Connection为keep-alive。但是维护长链接又需要消耗资源。所以在对于要频繁请求资源的用户,适用长链接。

无状态:指对事物的处理没有记忆能力。意味着后续的处理需要之前的信息,则必须重传,导致每次连接传输的数据量增大。但随着需求的变化,需要记录用户的一些信息,比如用户登录到一家购物网站,即使他跳转到该站的其他页面后,也需要能继续保持登录状态。为此,有了Cookie来记录一些信息。

 

HTTP协议从最早的0.9版本到1.0再到1.1,目前已经有了2.0版本,各个版本HTTP的区别:

HTTP/0.9:仅支持请求方式GET,仅能请求访问HTML格式的资源

 

HTTP/1.0:增加了请求方式POST和HEAD;不再局限于0.9版本的HTML格式,根据Content-Type可以支持多种数据格式,同时也支持了cache(缓存),用户可以直接访问其中的内容,这时还是短链接,客户端TCP发送请求,服务器响应后就会关闭。

 

HTTP/1.1: ①引入了长链接(Connection:keep-alive),使一个TCP连接不关闭允许多个HTTP请求。客户端在最后一个请求时,发送Connection: close,明确要求服务器关闭TCP连接。建立一条连接,传输一个请求,过会儿,又传输若干个请求,最后再关闭连接。长连接的好处是显而易见的,多个请求可以复用一条连接,省去连接建立和释放的时间开销和系统调用,但也意味着服务器的一部分资源会被长时间占用着。

       ②引入管道机制,使得客户端可以同时发送多个请求,而不必等到服务端响应了第一个请求才能发送第二个请求。

       ③对于一些很耗时的动态操作来说,这意味着,服务器要等到所有操作完成,才能发送数据,显然这样的效率不高。更好的处理方法是,产生一块数据,就发送一块,1.1版规定可以不使用Content-Length字段,而使用分块传输编码”。

       ④支持了断点续传、身份认证机制、增加了PUT、PATCH、OPTIONS、DELETE

 

HTTP/2.0:增加双工模式,即不仅客户端能够同时发送多个请求,服务端也能同时处理多个请求,解决了队头堵塞的问题(HTTP2.0使用了多路复用的技术,做到同一个连接并发处理多个请求,而且并发请求的数量比HTTP1.1大了好几个数量级)

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值