计算机网络:HTTP协议

 

1、HTTP协议的基本概念

    超文本传输协议HTTP协议,定义了浏览器怎样向万维网服务器请求万维网文档,以及万维网服务器怎样把文档传送给浏览器。从层的角度,HTTP协议是面向事务的应用层协议,是万维网能够可靠地交换文件的重要基础。

2、HTTP协议的主要特点

    HTTP使用了面向连接的TCP协议作为运输层协议,保证了数据的可靠性传输;

    HTTP不考虑数据在传输过程中的数据丢失和重传的问题;

    HTTP协议本身是无连接的,也就是说,通信双方在交换HTTP报文之前不需要先建立HTTP连接;

    HTTP协议是无状态的,也就是说,客户端第二次访问服务器时,服务器的反应和第一次访问是一样的;

    浏览器发起的TCP连接建立的三次报文握手中,第三次握手中就会传递HTTP的请求报文,而服务器会在三次握手之后,响应HTTP报文请求,发送HTTP响应报文,包含客户端需要的数据;

3、HTTP的持续连接

3.1 背景

    HTTP 1.0有一个明显的缺点,就是每次请求文档都会建立TCP连接,这带来了一些不必要的开销:

  1. 每次请求一个文档,就需要两倍的RTT时延,一个用于TCP连接建立的前两次报文握手,一个用于HTTP报文的请求和响应的发送;
  2. 万维网服务器和客户端(浏览器)每次建立TCP连接,都要分配缓存和变量,这也带来一些开销。、
请求一个万维网服务器的文档

3.2 解决方案

    HTTP 1.1使用了持续连接,即服务器在发送响应后仍然在一段时间内保持这条连接,是同一个客户端和该服务器在一定时间内仍然可以继续发送HTTP的请求报文和响应报文。

3.3 持续连接的工作方式

    HTTP 1.1的持续连接有两种工作方式:非流水线方式和流水线方式。

工作方式 特点描述 特点
非流水线方式 客户端在收到前一个响应后才能发出下一个请求,即客户端每访问一个对象都要消耗一个RTT时延 1)比非持续连接节省了一个RTT;
2)服务器发完一个对象后就处于空闲状态,浪费了服务器资源
流水线方式 客户端在收到响应报文之前就能发送新的请求报文 减少了TCP连接的空闲时间,提供了文档下载效率

4、HTTP报文结构

4.1 报文结构

    请求报文和响应报文都是由三部分组成的:

  • 开始行:用于区分请求报文和响应报文,在请求报文中的开始行叫做请求行,响应报文中的开始行叫做状态行。开始行的三个字段都以空格隔开,最后一回车换行CR和LF进行分隔。
  • 首部行:用来说明浏览器、服务器和报文主体的一些信息。首部可以有好几行,但也可以不使用。在每一个首部行中都有首部字段名和它的值,每一行在结束的地方都要有回车和换行。整个首部结束时,还有一空行将首部行和后面的实体主体分开。
  • 实体主体:在请求报文中一般都不用这个字段,而在响应报文中也有可能没有这个字段。

    一个完整报文的例子:

4.2 方法

    方法就是对所请求的对象进行操作,所谓的方法,实际上就是一些命令。因此,请求报文的类型就是由它的方法来决定的。常用的方法包括:

方法 作用
GET 请求读取有URL所标注的信息
POST 给服务器添加信息
PUT 在指明的URL下存储一个文档
DELETE 删除指明的URL所指示的文档
CONNECT 用于代理服务器
HEAD 请求读取有URL所标志的信息的首部
OPTION 请求一些选项的信息
TRACE 用来进行环回测试的请求报文

    这里最常用的就是GET/POST/PUT/DELETE方法。

4.3 URL

    URL是统一资源定位符,用来表示从互联网上得到的资源位置和访问这些资源的方法。URL给资源的位置提供一种抽象的识别方法,并用这种方法给资源定位。实际上,URL就是资源在互联网上的地址,互联网上的所有资源都有一个唯一确定的URL。

URL的格式

    URL的一般形式由4个部分组成: <协议>://<主机>:<端口>/<路径>

  • 协议:使用什么协议来获取该万维网文档。可用的协议包括HTTP协议、ftp协议等;
  • 主机:该主机在互联网的域名或者IP;
  • 端口和路径:这两个有时候可以省略

4.4 HTTP状态码

    状态码都是三位数,分为5大类,分别以不同的数字开头:

状态码分类 意义
1xx 表示通知信息,例如请求收到了,或者正在进行处理
2xx 表示成功,例如接受或知道了
3xx 表示重定向,例如要完成请求还必须采取进一步的行动
4xx 表示客户端的差错,例如请求中有错误的语法或不能完成
5xx 表示服务器的差错,例如服务器失效无法完成请求

    常见的状态行:

状态行 意义
HTTP/1.1 202 Accepted 接受
HTTP/1.1 400 Bad Request 错误的请求
HTTP/1.1 404 Not Found 找不到目标
HTTP/1.1 301 Moved Permanently 永久性迁移

4.5 状态码总结

    整理了一下主要的状态码和状态码的作用,参考文章:HTTP状态码

5、Cookie

    Cookie表示在HTTP服务器和客户端之间传递的状态信息。

Cookie的工作原理

    当用户浏览某个使用Cookie的的网站时,该网站服务器就为用户产生一个唯一标识码,并以此作为索引在服务器的后端数据库中产生一个项目。接着在给客户端的HTTP响应报文中添加一个叫做Set-cookie的首部行。

    当客户端收到这个响应,其浏览器就在它管理的特定Cookie文件中添加一行,包括这个服务器的主机名和Set-cookie后面给出的识别码。当客户端继续浏览这个网站时,每发送一个HTTP请求报文,其浏览器就会从Cookie文件中取出这个网站的识别码,并防到HTTP请求报文的Cookie首部行中。当服务器再次收到客户端的请求消息后,就可以根据这个Cookie信息跟踪用户在该网站的活动。

    如果客户端几天后再次访问这个网站,那么浏览器会在其HTTP请求报文中继续使用这一Cookie首部行,而网站根据cookie信息可以找到用户的访问记录,包括浏览的网页、查看的商品,以及用户的姓名、邮件、银行卡号等在这个网站使用过的信息。

发布了93 篇原创文章 · 获赞 13 · 访问量 5万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览