网络:HTTP协议

目录

1、HTTP协议的基本概念

2、HTTP协议的主要特点

3、HTTP的持续连接

3.1 背景:

3.2 解决方案:

3.3 持续连接的工作方式:

4、HTTP报文结构

4.1 报文结构

4.2 方法:

4.3 URL

4.4 HTTP状态码

4.5 状态码总结

5、Cookie


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信息可以找到用户的访问记录,包括浏览的网页、查看的商品,以及用户的姓名、邮件、银行卡号等在这个网站使用过的信息。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值