初识http协议
    hypertext trandfer protocol 超文本传输协议,是一种分布式,合作式,多媒体信息系统服务,面向应用层的协议。使用最广泛的应用层协议,基于传输层的TCP协议进行通信,Http协议是通用、无状态的协议
    功能: 用于在服务器和客户机之前传输超文本文件

http协议基础知识
    http特点
        客户/服务器模式:一个服务器可以为分布在世界的许多客户服务
        简单:有效处理大量请求,程序规模小,所以速度快,相比其他协议时间开销小
        灵活:允许传输任意类型的数据对象,可以通过Content-type来指定数据类型
        无状态:无状态的协议,运行速度高,服务器应答速度快

http的事务处理
        客户端与服务器端建立连接
        客户端向服务器端发送请求
        服务器端向客户端回复响应
        断开连接

http的消息链
        
    proxy介绍

http消息介绍
        消息类型有两大类
        请求消息(request):由客户端发送给服务器消息(组成:请求行Request-Line 可选的头域Header Field 实体Entity-Body)
        响应消息(response):由服务端回复客户端请求的消息(组成:状态行Status-Line 可选的头域Header Field 实体Entity-Body)

http请求消息
        请求消息结构
        Full-Request = Request-Line
            * ( General-Header
            | Request-Header
            | Entity-Header)
            CRLF
            [Entity-Body]
            示例:

请求行结构
        Request-Line = Method SP
                        Request-URI
                        SP
                        HTTP-Version CRLF
            
            请求行示例:GET
            http://taobao.com/pub/WWW/page.html
            HTTP/1.1

请求消息示例:
            http://taobao.com/pub/WWW/page.html
            HTTP/1.1
            Connection: close
            User-agent: Mozilla/4.0
            Accept-Ecoding: gzip,compress
            CR LF
            Entity-Body
            --------------------------
            理解一下本例中的各个报头
            Connection: close是在告知服务器本浏览器不想使用永久连接的方式(http/1.0非永久连接, http/1.1.永久连接)
            User-agent: Mozilla/4.0指定用户代理服务器的类型
            Accept-Ecoding: 指出发送次请求的浏览器支持哪些压缩编码方式

请求方法:
            GET:获取一个URL指定的资源,即资源实体
            POST:向服务器提交数据
            HEAD:获取一个指定资源的信息
            PUT:向服务器提交资源
            DELETE:请求源服务器删除Request-URI标识的资源
            TRACE:网络跟踪
            CONNECT:与PROXY之间的连接管理
            OPTIONS:查询能力

http响应消息
        响应消息结构
        Full-Response = Status-Line
            * ( General-Header
            | response-Header
            | Entity-Header)
            CRLF
            [Entity-Body]

响应消息示例:
            HTTP/1.1 200 OK
            Connection: close
            Date:Thu 13 Oct 2005
            Server: apache/2.0
            Last-Nodified: Mon, 22 Jun
            Content-Lenght: 6821
            Content-Type: text/html

状态码:
        1xx: 信息, 接收到请求,继续处理
        2xx: 成功, 操作成功地收到,理解和接受
        3xx: 重定向, 为了完成请求,必须采取进一步措施
        4xx: 客户端错误, 请求的语法有错误或不能完全被满足
        5xx: 服务端错误, 服务器无法完成明显有效的请求

第二章、http协议及嗅探抓包--http协议详解的更多相关文章

  1. [转] Linux抓包工具tcpdump详解

    http://www.ha97.com/4550.html PS:tcpdump是一个用于截取网络分组,并输出分组内容的工具,简单说就是数据包抓包工具.tcpdump凭借强大的功能和灵活的截取策略,使 ...

  2. Linux抓包工具tcpdump详解

    tcpdump是一个用于截取网络分组,并输出分组内容的工具,简单说就是数据包抓包工具.tcpdump凭借强大的功能和灵活的截取策略,使其成为Linux系统下用于网络分析和问题排查的首选工具. tcpd ...

  3. Fiddler抓包工具使用详解

    一.Fiddler简介 Fiddler是最强大最好用的Web调试工具之一, 它能记录所有客户端和服务器的http和https请求.允许你监视.设置断点.甚至修改输入输出数据.Fiddler包含了一个强 ...

  4. linux下抓包工具tcpdump详解

    本文转自:http://www.cnblogs.com/ggjucheng/archive/2012/01/14/2322659.html 简介 用简单的话来定义tcpdump,就是:dump the ...

  5. Fiddler 抓包工具使用详解

    博客园 首页 新随笔 联系 订阅 管理 随笔 - 20  文章 - 0  评论 - 64 Fiddler 抓包工具总结 阅读目录 1. Fiddler 抓包简介 1). 字段说明 2). Statis ...

  6. 抓包工具Fidder详解(主要来抓取Android中app的请求)

    今天闲着没吊事,来写一篇关于怎么抓取Android中的app数据包?工欲行其事,必先利其器,上网google了一下,发现了一款神器:Fiddler,这个貌似是所有软件开发者必备神器呀!这款工具不仅可以 ...

  7. 抓包工具Fidder详解

    第一步:下载神器Fiddler,下载链接: http://fiddler2.com/get-fiddler 下载完成之后,傻瓜式的安装一下了! 现在这个下载链接失效了,可以百度下载 第二步:设置Fid ...

  8. fiddler抓包常用功能详解

    一.基础部分: 1.设置代理ip及端口,tools --> telerik fiddler options --> connections -->勾选 “ Allow romote ...

  9. wireshark http抓包命令行详解

    This article is a quick and easy HowTo detailing the use of Wireshark or another network sniffing pr ...

随机推荐

  1. err="etherbase address must be explicitly specified"

    如果要初始化区块链的话就用创始区块   如果通过创世区块来初始化区块链的话,首先需要一个初始化区块链的json文件,如下. { "config": { "chainId& ...

  2. arcpy 获得是否为布局mxd.activeView

    arcpy 获得是否为布局mxd.activeView print mxd.activeView PAGE_LAYOUT mxd.pageSizePageSize(width=21.590043180 ...

  3. [go]json序列化

    // json字段别名 type User struct { Id int `json:"id,string"` Name string `json:"username& ...

  4. kotlin委托属性

    fun main(arg: Array<String>) { val myClass1 = myClass1() myClass1.name="mycalsss1" v ...

  5. [Java读书笔记] Effective Java(Third Edition) 第 7 章 Lambda和Stream

    在Java 8中,添加了函数式接口(functional interface),Lambda表达式和方法引用(method reference),使得创建函数对象(function object)变得 ...

  6. Qt编写自定义控件21-圆弧仪表盘

    一.前言 圆弧仪表盘在整个自定义控件大全中也稍微遇到了技术难点,比如背景透明,如果采用以前画圆形画扇形的方式绘制,肯定很难形成背景透明,需要用到切割,最后换了一种绘制方法,采用绘制圆弧的方式,即使用d ...

  7. 查看oracle数据库的链接数和用户

    http://www.cnblogs.com/is1988/archive/2012/11/21/2780067.html 1.查询oracle的连接数select count(*) from v$s ...

  8. 二分类Logistic回归模型

    Logistic回归属于概率型的非线性回归,分为二分类和多分类的回归模型.这里只讲二分类. 对于二分类的Logistic回归,因变量y只有“是.否”两个取值,记为1和0.这种值为0/1的二值品质型变量 ...

  9. 【极简版】OpenGL 超级宝典(第五版)环境配置 VS2010

    事先声明:该教程仅适用于VS2010环境下超级宝典第五版的配置 第一步:下载示例代码和环境包: 链接:https://pan.baidu.com/s/1llRRQ8ymBgMGuXp5M50pJw 提 ...

  10. 【ARM-Linux开发】C语言getcwd()函数:取得当前的工作目录

    相关函数:get_current_dir_name, getwd, chdir 头文件:#include <unistd.h> 定义函数:char * getcwd(char * buf, ...