网络学习之了解HTTP协议第一篇

目录

一,Web与网络基础

二,http的用途与特点

三,报文内的http信息

四,http状态码

五,其他问题


一,Web与网络基础

我们经常使用网页浏览器(web browser),而web是建立在一种名为HTTP(HyperText Transfer Protocol,超文本传输协议)的协议上通信的。
WWW(world wide web万维网)这一名称是web浏览器当年用来浏览超文本客户端应用程序时的名称,现在用来表示这一系列的集合,也可简称为web.构建WWW的三大技术分布是HTML(超文本标记语言),文档的传递协议HTTP,和指定文档所在地址的URL(统一资源定位符)。HTTP技术正是其中之一。

当我们在客户端发送一个想看web页面的HTTP请求时,在传输层(TCP协议)把从应用层收到的数据(HTTP请求报文)进行分割,并在各个报文上打上标记序号及端口号后转发给网络层。
在网络层(IP协议),增加作为通信目的地的MAC地址(借助ARP协议)后转发给链路层。
接收端的服务器在链路层收到数据按序向上层发送,一直到应用层。发送端在层与层之间传输数据时,每经过一层时必定会被打上一个首部信息,反之,接收端在层与层传输数据时,每经过一层时会把对应的首部消去,这种把数据信息包装起来的做法称为封装。

URI和URL

最后提一下URI和URL,
URL(Uniform Resource Locator统一资源定位符)是使用Web浏览器访问网页时需要输入的网页地址,如https://blog.csdn.net/wannuoge4766就是URL。
URI(Uniform Resource Identifier统一资源标识符)是由某个协议方案表示的资源定位标识符,协议方案是指访问资源时所使用的协议类型名称。采用HTTP协议时,协议方案是http,除此之外还有ftp,malito,telnet,file等。
URI用字符串标识某一互联网资源,而URL表示资源的地点位置。可见URL是URI的子集。

                                                                                        绝对URI格式

二,http的用途与特点

HTTP协议用于客户端和服务器端之间的通信,而客户端和服务器通过请求和响应的交换达成通信。

其中请求报文头部由方法,URI,协议版本,请求首部字段组成;响应报文基本上由协议版本,状态码,用以解释状态码的原因短语,可选的响应首部字段以及实体主体构成。

一些告知服务器意图的HTTP方法

 

HTTP的持久连接
HTTP协议的初始版本中,每进行一次HTTP通信就要断开一次HTTP连接,增加通信量的开销。为解决上述TCP连接的问题,HTTP1.1提出持久连接的方法。持久连接的特点是只要任意一端没有明确提出断开连接,则保持TCP连接状态。
管线化
持久连接使得多数请求以管线化方式发送成为可能,可以做到同时并行发送多个请求,而不需要一个一个等。
使用cookie的状态管理

另外,HTTP是一种不保存状态,即无状态协议。HTTP协议自身不对请求和响应之间的通信状态进行保存。HTTP/1.1虽然是无状态协议,但为了实现期望的保持状态功能,于是引入了Cookie技术,有了Cookie再用HTTP协议通信,就可以管理状态了。
如果每次跳转新页面不是要再次登陆,就是要在每次请求报文中附加参数来管理登陆状态。

三,报文内的http信息

用于HTTP协议交互的信息被称为HTTP报文。请求端的HTTP报文叫请求报文,响应端的叫响应报文。HTTP报文本身是由多行(回车符+换行符分隔)数据构成的字符串文本。

请求行(请求报文):包含用于请求的方法,请求URI和HTTP版本
状态行(响应报文):包含表明响应结果的状态码,原因短语和HTTP版本
首部字段:包含表示请求和响应的各种条件和属性的各类首部,一般分为:通用首部,请求首部,响应首部和实体首部
其他:可能包含HTTP的RFC里未定义的首部(Cookie等)

可以自己用抓包工具抓一个http报文分析一下。

四,http状态码

首先,状态码的类别需要记一下,一个状态码出现,只要知道它的开头数字就可以对类别进行分类。

详细常用的分类有:

====================================

200 OK 客户端请求被服务器正常处理
204 No Content 服务器接收的请求已成功处理,但返回响应的报文不含实体的主体部分,即没有资源可更新。
206 Partitial Content 顾名思义,客户端进行范围请求,服务器成功执行

===================================

301 Moved Permanently 永久性重定向 该状态码表示请求的资源已被分配了新的URI,以后重定向现在所指的URI
302 Found 临时性重定向 该状态码表示请求的资源已被分配了新的URI,希望用户本次使用新的URI访问
303 See Other 该状态码表示由于请求对应的资源存在着另一个URI,应使用GET方法定向获取请求的资源(就是和302其实一样,只不过人家想你用GET方法)
304 Not Modified 资源找到了,但客户端发送的是附带条件的请求,这个资源不符合条件(和重定向没太大关系)
307 Temporary Redirect 临时重定向
与302的区别是307会遵循浏览器标准,不会从POST变成GET。

=====================================

400 Bad Request
服务器端无法理解请求报文,或存在语法错误
401 Unauthorized
该状态码表示发送的请求需要有HTTP认证的认证信息
403 Forbidden
请求资源的访问被服务器拒绝了。。。
404 Not Found
没找到(下个VPN吧)

=====================================

500 Internal Server Error
服务器内部资源故障或者web应用有bug
503 Service Unavailable
服务器忙,用不了可能是超负载或者停机维护

五,其他问题

HTTP中GET方法和POST方法的区别(摘自W3school):

  • GET - 从指定的资源请求数据。
  • POST - 向指定的资源提交要被处理的数据

参考文献:上野宣. 图解 HTTP. 人民邮电出版社, 2014.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值