http 报文解析

来源:互联网 发布:.java自学视频 编辑:程序博客网 时间:2024/06/11 05:10

HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的规范化工作正在进行之中,而且HTTP-NG(Next Generation of HTTP)的建议已经提出。

HTTP( Hypertext Transfer Protocol, 超文本传输协议①) 是在万维网上进行通信时
所使用的协议方案。 HTTP 有很多应用, 但最著名的是用于 Web 浏览器和 Web 服
务器之间的双工通信。

HTTP协议的主要特点可概括如下:
1.支持客户/服务器模式。
2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
3.灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。

无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。'

HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

看了书和各种网上资料, 学东西嘛, 要做总结, 这些老笔记整理一下, 供以后方便查阅也加强印象和理解.

这里写图片描述

报文的组成

  • 起始行(start line)
  • 首部(header)
  • 主体(body)

可细分为 :

方法 :

如GET, HEAD, POST 
这里写图片描述

关于HTTP请求GET和POST的区别 :

1.提交方式的区别:

- GET提交,请求的数据会附在URL之后(就是把数据放置在HTTP协议头中),以?分割URL和传输数据,多个参数用&连接;例如:login.action?name=hyddd&password=idontknow&verify=%E4%BD%A0 %E5%A5%BD。如果数据是英文字母/数字,原样发送,如果是空格,转换为+,如果是中文/其他字符,则直接把字符串用BASE64加密,得出如: %E4%BD%A0%E5%A5%BD,其中%XX中的XX为该符号以16进制表示的ASCII。- POST提交:把提交的数据放置在是HTTP包的包体中。上文示例中红色字体标明的就是实际的传输数据因此,GET提交的数据会在地址栏中显示出来,而POST提交,地址栏不会改变
  • 1
  • 2
  • 3
  • 4
  • 5

2.传输数据的大小:

   首先声明,HTTP协议没有对传输的数据大小进行限制,HTTP协议规范也没有对URL长度进行限制。 而在实际开发中存在的限制主要有:   GET:特定浏览器和服务器对URL长度有限制,例如IE对URL长度的限制是2083字节(2K+35)。对于其他浏览器,如Netscape、FireFox等,理论上没有长度限制,其限制取决于操作系统的支持。   因此对于GET提交时,传输数据就会受到URL长度的限制。   POST:由于不是通过URL传值,理论上数据不受限。但实际各个WEB服务器会规定对post提交数据大小进行限制,Apache、IIS6都有各自的配置。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

安全性:

POST的安全性要比GET的安全性高。注意:这里所说的安全性和上面GET提到的“安全”不是同个概念。上面“安全”的含义仅仅是不作数据修改,而这里安全的含义是真正的Security的含义,比如:通过GET提交数据,用户名和密码将明文出现在URL上,因为(1)登录页面有可能被浏览器缓存, (2)其他人查看浏览器的历史纪录,那么别人就可以拿到你的账号和密码了,
  • 1
  • 2
  • 3
  • 4
  • 5

请求URL

URL是浏览器寻找信息时所需的资源位置 . 
URL分为三个部分 : 
- URL文案 
- 服务器位置 
- 资源路径 
5

版本号

上图中的HTTP/1.0 200 OK, HTTP/1.0就是版本号

状态码 :

如最著名的404, 302, 如上图中的HTTP/1.0 200 OK中, 状态码就是200 

原因短语

如上图中的HTTP/1.0 200 OK中, OK就是原因短语

首部

这里写图片描述

主体

主体部分是可选的, 主体是http报文要传输的内容, 可以承载很多类型的数字数据 : 图片, 视频, 软件应用程序, 电子邮件等

看了书和各种网上资料, 学东西嘛, 要做总结, 这些老笔记整理一下, 供以后方便查阅也加强印象和理解.

这里写图片描述

报文的组成

  • 起始行(start line)
  • 首部(header)
  • 主体(body)

可细分为 :

方法 :

如GET, HEAD, POST 
这里写图片描述

关于HTTP请求GET和POST的区别 :

1.提交方式的区别:

- GET提交,请求的数据会附在URL之后(就是把数据放置在HTTP协议头<request-line>中),以?分割URL和传输数据,多个参数用&连接;例如:login.action?name=hyddd&password=idontknow&verify=%E4%BD%A0 %E5%A5%BD。如果数据是英文字母/数字,原样发送,如果是空格,转换为+,如果是中文/其他字符,则直接把字符串用BASE64加密,得出如: %E4%BD%A0%E5%A5%BD,其中%XX中的XX为该符号以16进制表示的ASCII。- POST提交:把提交的数据放置在是HTTP包的包体<request-body>中。上文示例中红色字体标明的就是实际的传输数据因此,GET提交的数据会在地址栏中显示出来,而POST提交,地址栏不会改变
  • 1
  • 2
  • 3
  • 4
  • 5

2.传输数据的大小:

   首先声明,HTTP协议没有对传输的数据大小进行限制,HTTP协议规范也没有对URL长度进行限制。 而在实际开发中存在的限制主要有:   GET:特定浏览器和服务器对URL长度有限制,例如IE对URL长度的限制是2083字节(2K+35)。对于其他浏览器,如Netscape、FireFox等,理论上没有长度限制,其限制取决于操作系统的支持。   因此对于GET提交时,传输数据就会受到URL长度的限制。   POST:由于不是通过URL传值,理论上数据不受限。但实际各个WEB服务器会规定对post提交数据大小进行限制,Apache、IIS6都有各自的配置。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

安全性:

POST的安全性要比GET的安全性高。注意:这里所说的安全性和上面GET提到的“安全”不是同个概念。上面“安全”的含义仅仅是不作数据修改,而这里安全的含义是真正的Security的含义,比如:通过GET提交数据,用户名和密码将明文出现在URL上,因为(1)登录页面有可能被浏览器缓存, (2)其他人查看浏览器的历史纪录,那么别人就可以拿到你的账号和密码了,
  • 1
  • 2
  • 3
  • 4
  • 5

请求URL

URL是浏览器寻找信息时所需的资源位置 . 
URL分为三个部分 : 
- URL文案 
- 服务器位置 
- 资源路径 
5

版本号

上图中的HTTP/1.0 200 OK, HTTP/1.0就是版本号

状态码 :

如最著名的404, 302, 如上图中的HTTP/1.0 200 OK中, 状态码就是200 

原因短语

如上图中的HTTP/1.0 200 OK中, OK就是原因短语

首部

这里写图片描述

主体

主体部分是可选的, 主体是http报文要传输的内容, 可以承载很多类型的数字数据 : 图片, 视频, 软件应用程序, 电子邮件等

看了书和各种网上资料, 学东西嘛, 要做总结, 这些老笔记整理一下, 供以后方便查阅也加强印象和理解.

这里写图片描述

报文的组成

  • 起始行(start line)
  • 首部(header)
  • 主体(body)

可细分为 :

方法 :

如GET, HEAD, POST 
这里写图片描述

关于HTTP请求GET和POST的区别 :

1.提交方式的区别:

- GET提交,请求的数据会附在URL之后(就是把数据放置在HTTP协议头<request-line>中),以?分割URL和传输数据,多个参数用&连接;例如:login.action?name=hyddd&password=idontknow&verify=%E4%BD%A0 %E5%A5%BD。如果数据是英文字母/数字,原样发送,如果是空格,转换为+,如果是中文/其他字符,则直接把字符串用BASE64加密,得出如: %E4%BD%A0%E5%A5%BD,其中%XX中的XX为该符号以16进制表示的ASCII。- POST提交:把提交的数据放置在是HTTP包的包体<request-body>中。上文示例中红色字体标明的就是实际的传输数据因此,GET提交的数据会在地址栏中显示出来,而POST提交,地址栏不会改变
  • 1
  • 2
  • 3
  • 4
  • 5

2.传输数据的大小:

   首先声明,HTTP协议没有对传输的数据大小进行限制,HTTP协议规范也没有对URL长度进行限制。 而在实际开发中存在的限制主要有:   GET:特定浏览器和服务器对URL长度有限制,例如IE对URL长度的限制是2083字节(2K+35)。对于其他浏览器,如Netscape、FireFox等,理论上没有长度限制,其限制取决于操作系统的支持。   因此对于GET提交时,传输数据就会受到URL长度的限制。   POST:由于不是通过URL传值,理论上数据不受限。但实际各个WEB服务器会规定对post提交数据大小进行限制,Apache、IIS6都有各自的配置。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

安全性:

POST的安全性要比GET的安全性高。注意:这里所说的安全性和上面GET提到的“安全”不是同个概念。上面“安全”的含义仅仅是不作数据修改,而这里安全的含义是真正的Security的含义,比如:通过GET提交数据,用户名和密码将明文出现在URL上,因为(1)登录页面有可能被浏览器缓存, (2)其他人查看浏览器的历史纪录,那么别人就可以拿到你的账号和密码了,
  • 1
  • 2
  • 3
  • 4
  • 5

请求URL

URL是浏览器寻找信息时所需的资源位置 . 
URL分为三个部分 : 
- URL文案 
- 服务器位置 
- 资源路径 
5

版本号

上图中的HTTP/1.0 200 OK, HTTP/1.0就是版本号

状态码 :

如最著名的404, 302, 如上图中的HTTP/1.0 200 OK中, 状态码就是200 

原因短语

如上图中的HTTP/1.0 200 OK中, OK就是原因短语

首部

这里写图片描述

主体

主体部分是可选的, 主体是http报文要传输的内容, 可以承载很多类型的数字数据 : 图片, 视频, 软件应用程序, 电子邮件等

GET

POST

ET和POST是HTTP的两个常用方法。

 
什么是HTTP?
超文本传输协议(HyperText Transfer Protocol -- HTTP)是一个设计来使客户端和服务器顺利进行通讯的协议。
HTTP在客户端和服务器之间以request-response protocol(请求-回复协议)工作。
 
GET - 从指定的服务器中获取数据
POST - 提交数据给指定的服务器处理
 
GET方法:
使用GET方法时,查询字符串(键值对)被附加在URL地址后面一起发送到服务器:
/test/demo_form.jsp?name1=value1&name2=value2
特点:
  • GET请求能够被缓存
  • GET请求会保存在浏览器的浏览记录中
  • 以GET请求的URL能够保存为浏览器书签
  • GET请求有长度限制
  • GET请求主要用以获取数据
POST方法:
使用POST方法时,查询字符串在POST信息中单独存在,和HTTP请求一起发送到服务器:
POST /test/demo_form.jsp HTTP/1.1
Host: w3schools.com
name1=value1&name2=value2
特点:
  • POST请求不能被缓存下来
  • POST请求不会保存在浏览器浏览记录中
  • 以POST请求的URL无法保存为浏览器书签
  • POST请求没有长度限制
GET和POST的区别:
 GETPOST点击返回/刷新按钮没有影响数据会重新发送(浏览器将会提示用户“数据被从新提交”)添加书签可以不可以缓存可以不可以编码类型(Encoding type)application/x-www-form-urlencoded
application/x-www-form-urlencoded or multipart/form-data. 请为二进制数据使用multipart编码
历史记录没有长度限制没有数据类型限制只允许ASCII字符类型没有限制。允许二进制数据安全性查询字符串会显示在地址栏的URL中,不安全,请不要使用GET请求提交敏感数据因为数据不会显示在地址栏中,也不会缓存下来或保存在浏览记录中,所以看POST求情比GET请求安全,但也不是最安全的方式。如需要传送敏感数据,请使用加密方式传输可见性查询字符串显示在地址栏的URL中,可见查询字符串不会显示在地址栏中,不可见其他HTTP请求方式
方式描述HEAD与GET请求类似,不同在与服务器只返回HTTP头部信息,没有页面内容PUT上传指定URL的描述DELETE删除指定资源OPTIONS返回服务器支持的HTTP方法CONNECT转换为透明TCP/IP隧道的连接请求

https 和 http协议的区别  

超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息。

  为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS,为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。



原创粉丝点击