zoukankan      html  css  js  c++  java
  • HTTP 请求报文和响应报文分析和解刨!!

    http请求和响应报文分析

    一》http请求报文主要包括三个部分:1.请求行;2.请求头;3;请求体;

        1,请求行一般包括三个部分:请求方式;请求url ; http协议版本。

        请求方法:大部分浏览器使用post和get方法;其他还有:delete,put,head,options...

        请求url:为请求的url地址,它和报文头的host属性组成完整的请求url;

        http协议版本:指协议名称和版本号;

        请求头:是http的报文头,包含了若干属性,属性格式为:“属性” :“属性值”,服务端依次获取客户端信息;

        请求体:是http的报文体,它可以将页面表单中的组件值已value=name||value=name;的键值对形式编码成一格式化串,它承载多个请求的参;

        其二请求url也可以通过浏览器地址栏的数据格式传递请求的参数;

     

    引用

    HttpWatch是强大的网页数据分析工具,安装后将集成到Internet Explorer工具栏中。它不用代理服务器或一些复杂的网络监控工具,就能抓取请求及响应的完整信息,包括Cookies、消息头、查询参数、响应报文等,是Web应用开发人员的必备工具。
     
     
    二》HTTP请求报文头属性 
         1 什么是报文头属性?请求http报文和响应http报文都有若干个 报文属性,他们是为协助客户端和服务端交易的一些附属信息。
         2  常见的一些http请求报文头的属性?
            Accept
            请求报文通过一个“accept”报文头属性告诉服务端或客户端接受什么类型的响应。
            例如:Accept:text/plain;    告诉服务端,俺客户端能够接收的响应类型仅为纯文本数据啊,你丫的不要发图片什么视频的过过来啊,那样我会歇菜的 ;{Accept的属性的值可以为一个或者多个MIME类型的值;常见的mime类型: }
            Cookie
          客户端的cookie就是通过如下的报文头属性传递给服务端的哦:
          cookie:Set-Cookie: NAME=VALUE;Expires=DATE;Path=PATH;Domain=DOMAIN_NAME;
          通过http请求报文头的cookie 属性的键值的方式关联起来;也可以通过重写URL 的方式将会话的ID附带在每个url后面
     
     
            Referer
          表示这个请求是从哪个urL过来的。例如用百度搜索一个商家的广告的页面,这个请求的报文头就是htttp://www.baidu.com.{网页的监控的分布情况的报表和图表,其用原理就是通过这个Referer和其他的一些http报文头工作的}
     
     
    其它请求报文头属性 

    参见:http://en.wikipedia.org/wiki/List_of_HTTP_header_fields 
     
    三》http  响应报文
          http响应是有四部分组成,分别是: 状态行  响应头,  空格  响应数据;
          http响应和请求的格式十分的相近
     
    响应报文的开始是状态行,包括三项内容:http版本,状态吗 ,解释状态码的简单的短语
    在响应报文中唯一真正的区别在于第一行中用状态信息代替了请求的信息。状态行(status line)通过提供一个状态码来说明所请求的资源情况。
    状态行的格式如下:
    http-version    status-code   reason-Phrase  crlf;
    1.http-version 表示服务器http协议的版本;
    2, status-code 表示服务器发回的响应状态码;
    3 ,reason-phrase 表示状态吗的文本描述
    状态吗有三位数字,第一个数字定义了响应的类别,且有五钟可能的取值:
    1xx:指示信息-表示请求已接收,继续处理。
    2xx: 成功-表示请求已被成功的接收。理解。接受 
    3xx;  重定向-要完成请求必须更进一步的操作{一般表示请求资源的得路径变化和数据异常} 
    4xx:客户端错误-请求的语法错误或者请求无法实现
    5xx:  服务端错误-服务器不能实现合法请求。

     

     

     

     

     http常见问题

    http协议是无状态的,它和connection:keep-alive是有区别的;

    无状态是指协议对于事物处理没有记忆的功能,服务器不是知道客户端是什么状态。从另一方面讲,打开一个服务器上的网页和你之前打开这个服务器上的网页没有任何的联系。http是一个无状态面向连接的协议,无状态不代表http不能保持tcp连接,更不能代表http使用的是udp协议。

     

    从http/1.1起,默认都开启了keep-alive,,保持连接性,简单的说,当一个网页打开完成后,客户端和服务端用于传输http数据的tcp不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已建立的连接。kep-alive不会永远保持连接,他有一个保持时间,可以在不同的服务器软件中设定这个时间。

     

     

    TCP (打电话)是长连接 稳定 TCP连接的建立需要三次握手

     

    UDP (写信)无连接 不稳定 用户数据报协议,是一个面向无连接的协议。采用该协议不需要两个应用程序先建立连接。UDP协议不提供差错恢复,不能提供数据重传,因此该协议传输数据安全性差

     

    HTTP 是短连接

     

     

     

    常用的HTTP请求方法

    GET 参数追加在URL后 长度受限制 不安全

    POST 参数在请求报文的请求数据部分 参数长度比GET长 安全

    一,get   请求

    当客户端想从服务器读取文档时,点击网页上的超链接或者在浏览器输入框内输入地址按回车时,都是发送的get请求,服务器根据请求的地址从资源文件中找到客户

    想要的资源文件,放在响应报文中的相应数据部分送给客户端{使用get请求需要将请求参数放在URL之后,以?分割,多个参数用&连接;这种请求对URL的长度有限制,一般只能识别1024个字符,并且会把参数值直接暴露在URL中,所以不适合大量传输数据,和私密传输数据}

    二,post  请求

      

    对于上面提到的不适合使用GET方式的情况,可以考虑使用POST方式,因为使用POST方法可以允许客户端给服务器提供信息较多。POST方法将请求参数封装在HTTP请求数据中,以名称/值的形式出现,可以传输大量数据,这样POST方式对传送的数据大小没有限制,而且也不会显示在URL中。如果使用POST方式的话,格式如下:

    POST /search HTTP/1.1  

    Accept: image/gif, image/x-xbitmap

    Connection: Keep-Alive

    .......

    username=zhangsan&password=123

    可以看到,POST方式请求行中不包含数据字符串,这些数据保存在”请求内容”部分,各数据之间也是使用”&”符号隔开。POST方式大多用于页面的表单中。因为POST也能完成GET的功能,因此多数人在设计表单的时候一律都使用POST方式,其实这是一个误区。GET方式也有自己的特点和优势,我们应该根据不同的情况来选择是使用GET还是使用POST。

     

  • 相关阅读:
    apue-ubuntu环境搭建
    visualgdb 调试arm
    CMake速记
    umask
    转换函数conversion function
    c++ hex string array 转换 串口常用
    tcp与串口透传(select)
    sqlite3数据库修复SQLite-database disk image is malformed
    container_of宏
    shell 入门学习
  • 原文地址:https://www.cnblogs.com/h1457883884/p/10477166.html
Copyright © 2011-2022 走看看