HTTP协议的初步了解

引言:最近因为在分析数据包特征,所以一直都在接触HTTP协议,在分析数据包之前,虽然已经看过一篇网上传播很广的文章:HTTP协议详解

但是还是比较懵懂,所以今天又看了一遍,结合之前自己做的一些相关工作,来谈一下自己对于HTTP协议的了解。之前看过的文章很多都是从

HTTP的特性,例如面向对象,无连接,无状态等开始讲的,个人觉得对于初学者来说,只要知道有这几个特性的存在就可以了,这些特性的具体

表现应该在实践操作中才能深刻的体会到。

且HTTP协议分为HTTP请求和HTTP回复两类,所以,接下来的会在讲述HTTP结构的基础上再分类说明,因为无论HTTP请求或是回复的结构都是相同的。


一、HTTP协议结构

    1.HTTP协议结构示意:



图1-1 HTTP结构示意图

  2.HTTP协议开始行:

   如图1-1所示,HTTP协议的开始行又分为请求行和应答行,显然,请求行就是HTTP请求的开始行,而应答行就是HTTP的应答的开始行。
   2.1HTTP请求行:
    HTTP的请求行的基本格式是: 方法 URI  协议版本号(请求行以方法开头,中间以空格隔开,末尾处有回车换行字符)
    例如:
POST http://passport.91town.com/doRegiste.vhtml HTTP/1.1
所谓的方法就是发起HTTP请求的客户端要对服务器的操作行为,例如上面的例子中的POST方法,就表明该HTTP请求的客户端要向服务器
提交某些信息。
HTTP的方法有多种,这里就讲常用的两种:
GET:请求获得URI标识的资源,例如,要访问百度就有:GET http://www.baidu.com/ HTTP/1.1
POST:请求在URI所标识的资源中附加新的数据,例如,要登陆新浪微博:
POST http://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.4.18) HTTP/1.1

URI是统一资源定位符,直观的说就是你想要访问的网页的网址。
协议版本号现在一般都是HTTP/1.1。
2.2HTTP应答行
(在RFC2616标准中定义是状态行:Status-Line,在这里为了能够与请求行对应,更容易理解,暂且称为应答行,请读者们注意):
HTTP应答行的基本格式是:协议版本号 状态码
例如:HTTP/1.1 200 OK 表示请求成功
状态代码有三位数字组成,第一个数字定义了响应的类别,且有五种可能取值:
1xx:指示信息--表示请求已接收,继续处理
2xx:成功--表示请求已被成功接收、理解、接受
3xx:重定向--要完成请求必须进行更进一步的操作
4xx:客户端错误--请求有语法错误或请求无法实现
5xx:服务器端错误--服务器未能实现合法的请求
常见状态代码、状态描述、说明:
200 OK      //客户端请求成功
400 Bad Request  //客户端请求有语法错误,不能被服务器所理解
401 Unauthorized //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用 
403 Forbidden  //服务器收到请求,但是拒绝提供服务
404 Not Found  //请求资源不存在,eg:输入了错误的URL
500 Internal Server Error //服务器发生不可预期的错误
503 Server Unavailable  //服务器当前不能处理客户端的请求,一段时间后可能恢复正常
以上关于状态码的讲述引用的是HTTP详解

3.消息报头

消息报头分为三类:普通报头,请求报头,响应报头和实体报头,顾名思义,请求报头关于HTTP请求的一些信息,
而响应报头则是HTTP回复的一些信息,实体报头则是关于正文实体的一些信息,至于普通报头,则是一些基本信息,
格式都为头域加上值,其中以分号分开。
3.1普通报头
常见的普通报头有:
Cache-Control,缓存指令,常见的值有:max-age=0;
Date表示消息产生的时间;
Connection允许发送指定连接的选项。例如指定连接是连续,或者指定“close”选项,通知服务器,在响应完成后,
关闭连接,常见的值有keep-alive,保持连接。
3.2请求报头

常见的请求报头有:
Accept,用于告诉服务器,客户端接受那种类型的信息,例如Accept: text/html,表示客户端希望接受html格式的文本资源。
Accept-Encoding,告诉服务器,客户端接受的内容编码形式,如果没有,则表明客户端接受所有内容编码形式,

如Accept-Encoding:gzip,告诉服务器接受压缩编码。

Referer:URI,表示放出该消息的时候所停留的网页页面的地址;
Accept-Language,指定一种语言,例如Accept-Language:zh-CN;

    Host表示HTTP请求的资源所在主机名;

    User-Agent表示发起HTTP请求浏览器的相关信息。

    3.3响应报头
    常见的响应报头有:
    Loction:URI,表示资源重定向。
Server:表示服务器用来处理HTTP请求的软件信息,和HTTP请求中的User-Agent对应。
3.4实体报头
常见的实体报头有:
Content-Length,用于指明实体(正文)的长度,例如:Content-Length:324,表示实体的长度为324个字节。
Content-Language,用于指明实体使用了那种自然语言。
Content-Type,用于指明发送给接收者的实体的媒体信息,例如,Contet-Type: application/x-www-form-urlencoded,
表示将请求正文分成若干个元素,各元素由名和值构成,各元素之间用&隔开.
Last-Modified,用来表明实体的最后修改时间;
Expire,表明HTTP响应过期的时间。

4.实体(正文)部分

  正文部分包含的请求或者应答信息,例如发帖中的发帖内容等。具体没有什么好讲的,所以在这里就不多作叙述了。




以上是这段时间通过对某些网站的通信行为进行分析同时学习了HTTP协议之后的一些整理,有错的地方还望各位看官指出
    





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值