内容概述:

  该篇主要内容概述

  a.http相关术语解析

  b.http的基本原理与工作流程

  c.相关工具的使用(Wireshark)

作用介绍

  绝大多数的web开发,都是构建在http协议之上的。

  HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地
浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文
本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。

  HTTP是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型。HTTP是一个基于请
求/响应模式的,无状态的协议。

 无状态指的是:

1)协议对于事务处理没有记忆能力【事物处理】【记忆能力】

2)对同一个url请求没有上下文关系【上下文关系】

3)每次的请求都是独立的,它的执行情况和结果与前面的请求和之后的请求是无直接关系的,它不会受前面的请求应答情况直接影响,

  也不会直接影响后面的请求应答情况【无直接联系】【受直接影响】

4)服务器中没有保存客户端的状态,客户端必须每次带上自己的状态去请求服务器【状态】

在TCP/IP协议栈中的位置

HTTP协议通常承载于TCP协议之上,有时也承载于TLS或SSL协议层之上,这个时候,就成了我们常
说的HTTPS。如下图所示:

TLS:Transport Layer Security
SSL: Secure Socket Layer

默认端口

默认HTTP的端口号为80,HTTPS的端口号为443。

HTTP的请求响应模型

HTTP协议永远都是客户端发起请求,服务器回送响应。见下图:

  这样就限制了使用HTTP协议,无法实现在客户端没有发起请求的时候,服务器将消息推送给客户端。
HTTP协议是一个无状态的协议,同一个客户端的这次请求和上次请求是没有对应关系。

工作流程

一次HTTP1.0操作称为一个事务,其工作过程可分为四步:

1)首先客户机与服务器需要建立连接。只要单击某个超级链接,HTTP工作开始。            (客户机连接请求发起)
2)建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本
号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。                   (连接建立,请求资源)
3)服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或
错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。                (服务器响应请求)
4)客户端接收服务器所返回的信息通过浏览器显示在用户的显示屏上,然后客户机与服务器断开连接。  (一次请求完成,断开连接)

  

  如果在以上过程中的某一步出现错误,那么产生错误的信息将返回到客户端,有显示屏输出。对于用
户来说,这些过程是由HTTP自己完成的,用户只要用鼠标点击,等待信息显示就可以了

MIME

  MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型。是设定某种扩展名的文件用一种
应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。多用于指定
一些客户端自定义的文件名,以及一些媒体文件打开方式。

  它是一个互联网标准,扩展了电子邮件标准,使其能够支持:
非ASCII字符文本;非文本格式附件(二进制、声音、图像等);由多部分(multiple parts)组成的消息体;
包含非ASCII字符的头信息(Header information)。

URL

  HTTP URL (URL是一种特殊类型的URI,Uniform Resoure Locator:统一资源定位器,包含了用于查找某个资
源的足够的信息, URI(Uniform Resource Identifiers, URI))的格式如下:

http://host[":"port][abs_path]

  http表示要通过HTTP协议来定位网络资源;
  host表示合法的Internet主机域名或者IP地址;
  port指定一个端口号,为空则使用缺省端口80;
  abs_path指定请求资源的URI;如果URL中没有给出abs_path,那么当它作为请求URI时,必须以“/”的形式给出,通常这个工作浏览器自动帮我们完成。

使用Wireshark抓TCP、http包

  首先说几个最常用的关键字,“eq” 和 “==”等同,可以使用 “and” 表示并且,“or”表示或者。“!" 和 "not” 都表示
取反。
1、针对wireshark最常用的自然是针对IP地址的过滤。其中有几种情况:
1)对源地址为192.168.0.1的包的过滤,即抓取源地址满足要求的包。
  表达式为:ip.src == 192.168.0.1
2)对目的地址为192.168.0.1的包的过滤,即抓取目的地址满足要求的包。
  表达式为:ip.dst == 192.168.0.1
3)对源或者目的地址为192.168.0.1的包的过滤,即抓取满足源或者目的地址的ip地址是192.168.0.1的包。
  表达式为:ip.addr == 192.168.0.1,或者 ip.src == 192.168.0.1 or ip.dst == 192.168.0.1
4)要排除以上的数据包,我们只需要将其用括号囊括,然后使用 "!" 即可。
  表达式为:!(表达式)
  

2、针对协议的过滤
1)仅仅需要捕获某种协议的数据包,表达式很简单仅仅需要把协议的名字输入即可。
  表达式为:http
2)需要捕获多种协议的数据包,也只需对协议进行逻辑组合即可。
  表达式为:http or telnet (多种协议加上逻辑符号的组合即可)
3)排除某种协议的数据包
  表达式为:not arp !tcp

3、针对端口的过滤(视协议而定)

http://host[":"port][abs_path]
1)捕获某一端口的数据包
  表达式为:tcp.port == 80
2)捕获多端口的数据包,可以使用and来连接,下面是捕获高端口的表达式
  表达式为:udp.port >= 2048

4、针对长度和内容的过滤
(1)针对长度的过虑(这里的长度指定的是数据段的长度)
  表达式为:udp.length < 30 http.content_length <=20
(2)针对数据包内容的过滤
  表达式为:http.request.uri matches "vipscu" (匹配http请求中含有vipscu字段的请求信息)

ubuntu/Debian上安装wireshark.

sudo apt‐get install wireshark

nc命令来查看浏览器发出的http包(在liunx下还可以使用)

nc ‐l ‐p 

在linux下打开一个8888端口,然后在浏览器上输入ip:8888就可以接受到http get请求。

多文本网页

<html>
<body>
<img src="123.png">
<p><font color='red' size='40'>helloworld</font></p>
</body>
</html>

  将此代码粘贴到一个txt文档中去,后缀名改为html,同级目录,准备一张名为123.png的图片,用浏览器打开此文件即可。

最新文章

  1. 对于Python中self的看法
  2. 如何在CentOS 5/6上安装EPEL源
  3. HDU2546 饭卡(背包)
  4. 屏幕取色工具推荐 ColorPix
  5. Delphi公司的生存哲学
  6. 【HDOJ】3221 Brute-force Algorithm
  7. [C入门 - 游戏编程系列] 环境篇
  8. xss框架(二)基础框架实现
  9. 基于DDD的.NET项目搭建
  10. 会话管理(Cookie/Session技术)
  11. hadoop单机环境搭建
  12. MS MDS系列之MDS层次结构(Hierarchy)
  13. 【踩坑】angularJS 1.X版本中 ng-bind 指令多空格展示
  14. bzoj3126[Usaco2013 Open]Photo 单调队列优化dp
  15. 微信小程序分包加载实战
  16. HTML02单词
  17. php 根据日期获取星座
  18. Scrapy、Scrapy-redis组件
  19. awk选取制定行数,条件判断等
  20. Linux软件源

热门文章

  1. Ubuntu Server 12.04 乱码
  2. C++输入一行字符串的一点小结
  3. mac下执行文件出现Permission Denied的解决
  4. 关于erlang中的timer:tc/3
  5. UVA - 1045 The Great Wall Game(二分图最佳完美匹配)
  6. spark 划分stage Wide vs Narrow Dependencies 窄依赖 宽依赖 解析 作业 job stage 阶段 RDD有向无环图拆分 任务 Task 网络传输和计算开销 任务集 taskset
  7. ajax json html 结合
  8. Jquery跨域调用
  9. 8.JS数据类型
  10. 20170319 ABAP 生成XML文件