工具:HttpWatch Prov7.2.13破解版(带正版key)

HTTP协议概述
 
思考2个要点:
第一:浏览器和服务器是通过什么连接的
第二:这种连接方式是怎么实现的
 
通过Internet去发送到服务器中,而internet内部可以通过三种形式来实现发送消息
第一:HTTP协议,最常用的
第二:FTP协议。
第三:TCP/IP协议,它也是最底层的协议,想要实现这种协议必须要实现Socket编程,然后实现socket编程又分为客户端和服务端,服务器端的任务就是监听某一个端口,接收客户端的链接,客户端一旦链接到服务器端,就会以流的方式发送数据,但是这种做法是用来上传一些大的文件、视频、进行断点续传。
 
HTTP协议实例剖析
客户端(浏览器)连接服务器实现的内部原理,以输入“https://www.baidu.com/”为例进行说明
1. 浏览器输入“https://www.baidu.com/”,浏览器得到这个网址后(不要忘记浏览器也是一种软件,也可以说我们把数据传给了这个软件),内部就会将这个域名发送到DNS上,进行域名解析,得到它的IP之后就会连接到百度的这个服务器上面,百度的服务器假设是220.181.112.244并链接到80端口,从浏览器到服务器端口它使用了最底层的TCP/IP协议
2.实现TCP/IP协议用Socket来完成,使用了Socket套接字,客户端和服务端都开了一个Socket
3.服务端的80端口监听客户端的链接,这样客户端到服务器端就连接上了。
 
要发送数据到服务器端,通过HTTP协议必须严格按照它的格式来执行,那么HTTP协议到底发送了什么格式的数据呢?可以通过工具HttpWatch来监听客户端所发送的内容
 
HTTP协议发送的具体内容:
 
具体的请求头:

Headers Sent      Value
(Request-Line)    GET / HTTP/1.1
Accept    application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
Accept-Encoding    gzip, deflate
Accept-Language    zh-CN
Connection    Keep-Alive
Cookie    BD_UPN=1123314351; BD_LAST_QID=12375416872890278785; BAIDUID=7D17821C4744D5AE56F549CC1DE4EF0C:FG=1; BIDUPSID=7D17821C4744D5AE56F549CC1DE4EF0C; PSTM=1524032327
Host    www.baidu.com
User-Agent    Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E; InfoPath.3; Zoom 3.6.0)
 
说明:
1. Request-Line:  GET / HTTP/1.1 代表以get方式请求1.1版本的HTTP协议  (请求行使用了相对URL,此处示例没有显示)
2. Accept : 代表浏览器可以接受的数据类型
3. Accept-Encoding:gzip, deflate 代表浏览器可以接收压缩过后的数据。当服务器给客户端传输数据的时候为了减少流量可以进行压缩,压缩之后的数据传给浏览器,浏览器可以进行自动解压缩。
4. Accept-Language:zh-CN 代表客户端浏览器的语言。
5. Connection:Keep-Alive 代表维护长连接 (告诉服务器发送完请求的文档后是否可释放连接,即浏览器希望服务器在传送完所请求的对象后即关闭TCP连接)
6. Cookie:Cookie值
7. Host:www.baidu.com 代表请求请求的主机名 (域名)
8. User-Agent:表明用户代理
 
服务器收到这些内容,并按照这些请求的路径找到对应的网页,进一步找到网页的内容,返回给客户端。
服务器返回给客户端的内容有三种形式:
第一:以HTML代码的形式返回
第二:以XML字符串的形式返回
第三:以JSON对象形式返回。在网络流量上考虑JSON比XML要好一些。
如果在通信的过程中需要文件的上传、下载,就会以IO流的形式传输。
 
HttpWatch 监听的Overview:
Display URL    Normal browser lookup of URL https://www.baidu.com/    Completed
Started At    2018-Nov-21 09:31:17.569 (local time)    Completed
Connecting    Connecting to IP address '220.181.112.244'    Completed
Connected    Connected to IP address '220.181.112.244' from 192.168.39.187:50471    Completed
HTTP Request    Unconditional request sent for https://www.baidu.com/    Completed
HTTP Response    Headers and content returned    Completed
 
HTTP的报文结构:
HTTP有两类报文:
a. 请求报文:从客户端向服务器端发送请求报文。
b. 响应报文:从服务器到客户端的回答。

 
每个请求报文发出后,都能收到一个响应报文。响应报文的第一行就是状态行。
状态行包含三项内容,即HTTP的版本,状态码,以及解释状态码的简单短语。
状态码(status-code) 都是三位数字的,分为5大类,5大类的状态码都是以不同的数字开头的:
1xx 表示通知信息,如请求收到了或正在进行处理
2xx 表示成功,即接受或知道了。
3xx 表示重定向,如要完成请求还必须采取进一步的行动。
4xx 表示客户端的差错,如请求中有错误的语法或不能完成。
5xx 表示服务端的差错,如服务器失效无法完成请求。
 

 
Cookie的意义:
 

内容参考:
1. Android 4.0 网络编程详解 王家林
2. 计算机网络(第7版)谢希仁

HTTPWatch工具使用参考:https://www.cnblogs.com/zhuhongbao/p/3230046.html

HTTP协议剖析 (附HttpWatch工具监控网络请求)的更多相关文章

  1. Charles抓包工具过滤网络请求

    Charles是一个HTTP代理服务器,HTTP监视器,反转代理服务器,当浏览器连接Charles的代理访问互联网时,Charles可以监控浏览器发送和接收的所有数据.它允许一个开发者查看所有连接互联 ...

  2. Chrome开发者工具关于网络请求的一个隐藏技能

    这个隐藏技能的背景是,最近出于学习目的,我写了一个百度贴吧的网络爬虫,专门爬取一些指定主题的贴吧帖子. 抓取帖子用的JavaScript函数如下: function getPostByAJAX(req ...

  3. 通过nginx + lua来统计nginx上的监控网络请求和性能

    介绍 以前我们为nginx做统计,都是通过对日志的分析来完成.比较麻烦,现在基于ngx_lua插件,开发了实时统计站点状态的脚本,解放生产力. 项目主页: https://github.com/sky ...

  4. iOS - ASIHTTPRequest 网络请求

    前言 使用 iOS SDK 中的 HTTP 网络请求 API,相当的复杂,调用很繁琐,ASIHTTPRequest 就是一个对 CFNetwork API 进行了封装,并且使用起来非常简单的一套 AP ...

  5. Android 网络请求详解

    我们知道大多数的 Android 应用程序都是通过和服务器进行交互来获取数据的.如果使用 HTTP 协议来发送和接收网络数据,就免不了使用 HttpURLConnection 和 HttpClient ...

  6. LXNetwork – 基于AF3.0封装的iOS网络请求库

    本框架实现思路与YTKNetwork和RTNetworking类似,相当于一个简单版,把每一个网络请求封装成对象.使用LXNetwork,你的每一个请求都需要继承LXBaseRequest类,通过覆盖 ...

  7. 网络协议图形化分析工具EtherApe

    网络协议图形化分析工具EtherApe   在对网络数据分析的时候,渗透测试人员往往只关心数据流向以及协议类型,而不关心具体数据包的内容.因为这样可以快速找到网络的关键节点或者重要的协议类型. Kal ...

  8. 运用Ntop监控网络流量(视频Demo)

    运用Ntop监控网络流量 ____网络流量反映了网络的运行状态,是判别网络运行是否正常的关键数据,在实际的网络中,如果对网络流量控制得不好或发生网络拥塞,将会导致网络吞吐量下降.网络性能降低.通过流量 ...

  9. Httpwatch 工具介绍

    一 概述: HttpWatch强大的网页数据分析工具.集成在Internet Explorer工具栏.包括网页摘要.Cookies管理.缓存管理.消息头发送/接受.字符查询.POST 数据和目录管理功 ...

随机推荐

  1. ps4 如何导出切片 单个图片

    快捷键C,进行切片 按住ctrl+alt+shift+s存储为WEB格式的,在对话框中按ctrl键选中要导出的切片,右边栏中有JPG还有GIF等格式的,下面选仅选图像,即可,如果你没有设置的话,电脑有 ...

  2. Java处理JSON的工具类(List、Map和JSON之间的转换)——依赖jsonlib支持Map嵌套

    原文链接:http://www.itjhwd.com/java_json/ 代码 package com.itjh.mmp.util; import java.io.BufferedReader; i ...

  3. c#包含类文件到csprj中

    public ActionResult Index() { XDocument doc = XDocument.Load(@"G:\users\kim.gao\documents\visua ...

  4. gradle 的安装

    前言: 我不是一个勤奋好学的人,奔着新技术就跑去尝试学习.但是在工作或者学习的过程中,遇到了的技术,还是得一个坎一个坎的迈过去.把今天遇到的坎变成明天的垫脚石. 想学习一下 spring 的源码,然后 ...

  5. 绝对震撼 10个实用的jQuery/HTML5插件

    在HTML5的世界里,我们见证了无数的特效奇迹,但很多特效我们很难在网页中应用,今天我们要分享10款效果震撼但是又比较实用的jQuery/HTML5插件,希望这些项目在应用的过程中也能给你带来设计灵感 ...

  6. vue项目中使用md5.js及base64.js

    一.在项目根目录下安装 npm install --save js-base64 npm install --save js-md5 二.在项目文件中引入 import md5 from 'js-md ...

  7. shell特殊符号cut命令 sort_wc_uniq命令 tee_tr_split命令 shell特殊符号

    shell特殊符号cut命令 特殊符号 *  通配符,任意个任意字符 ? 任意一个字符 # 注释字符 \  脱义字符 c=\$a\$b echo  $c | 管道符 cat  1.txt |less ...

  8. 【Ubuntu】全局代理

    配置代理,Ubuntu下是修改/etc/environment,在后面加入: http_proxy="http://****.com:8080/" https_proxy=&quo ...

  9. 中企ITIL需软落地

    IT技术的发展对现代企业产生了深远的影响.企业信息化建设越深入,信息系统的规模越大,业务对IT系统的依赖性也越大,由此对IT服务的要求越高,如何 对繁多的IT技术进行有效的管理,最大程度地利用企业现有 ...

  10. mysql中删除binlog的方法?mysql中如何删除binlog?

    需求描述: 在mysql中如何删除binlog,因为随着数据库的运行,mysql中产生的binlog会越来越大,有可能把磁盘撑爆了,所以记录下删除 binlog的方法. 操作过程: 1.通过系统参数控 ...