内容概述:

  该篇主要内容概述

  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的图片,用浏览器打开此文件即可。

http协议之基础概念篇(1)的更多相关文章

  1. DNA拷贝数变异CNV检测——基础概念篇

    DNA拷贝数变异CNV检测——基础概念篇   一.CNV 简介 拷贝数异常(copy number variations, CNVs)是属于基因组结构变异(structural variation), ...

  2. lua学习之基础概念篇

    基础概念 程序块 (chunk) 定义 lua 中的每一个源代码文件或在交互模式(Cmd)中输入的一行代码都称之为程序块 一个程序块就是一连串语句或者命令 lua 中连续的语句不需要分隔符,但为了可读 ...

  3. (数据科学学习手札102)Python+Dash快速web应用开发——基础概念篇

    本文示例代码与数据已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 这是我的新系列教程Python+Dash快 ...

  4. 【Kafka入门】Kafka入门第一篇:基础概念篇

    Kafka简介 Kafka是一个消息系统服务框架,它以提交日志的形式存储消息,并且消息的存储是分布式的,为了提供并行性和容错保障,消息的存储是分区冗余形式存在的. Kafka的架构 Kafka中包含以 ...

  5. XMPP协议相关基础概念(Strophe学习笔记)

    相关资料: XMPP官网http://xmpp.org/xmpp-software/libraries/ nginx的转发配置http://mineral.iteye.com/blog/448260 ...

  6. 函数响应式编程(FRP)—基础概念篇

    原文出处:http://ios.jobbole.com/86815/. 一函数响应式编程 说到函数响应式编程,就不得不提到函数式编程,他们俩有什么关系呢?今天我们就详细的解析一下他们的关系. 现在下面 ...

  7. Win32多线程编程(1) — 基础概念篇

      内核对象的基本概念 Windows系统是非开源的,它提供给我们的接口是用户模式的,即User-Mode API.当我们调用某个API时,需要从用户模式切换到内核模式的I/O System Serv ...

  8. (一)github之基础概念篇

    1.github: 一项为开发者提供git仓库的托管服务, 开发者间共享代码的场所.github上公开的软件源代码全都由git进行管理. 2.git: 开发者将源代码存入名为git仓库的资料库中,而g ...

  9. haproxy小结(一)基础概念篇

    HAProxy是法国人Willy Tarreau个人开发的一个开源软件,目标是应对客户端10000以上的同时连接,为后端应用服务器.数据库服务器提供高性能的负载均衡服务.HAproxy可以实现基于TC ...

随机推荐

  1. 使用Apache Commons Chain(转载)

    原博客出处:http://phil-xzh.iteye.com/blog/321536 使用Commons Chain 作为程序开发人员,我们经常需要对一个实际上程序性的系统应用面向对象的方法.商业分 ...

  2. Linux 中权限的再讨论( 下 )

    前言 上篇随笔讲述了Linux中权限的大致实现机制以及目录权限的相关规则.本文将讲解Linux中的三种特殊权限:SUID,SGID,Sticky权限.看完这两篇文章,你一定会对Linux的权限有个更深 ...

  3. 【BZOJ2400】Spoj 839 Optimal Marks 最小割

    [BZOJ2400]Spoj 839 Optimal Marks Description 定义无向图中的一条边的值为:这条边连接的两个点的值的异或值. 定义一个无向图的值为:这个无向图所有边的值的和. ...

  4. 一款很好的日程安排插件fullcalendar 非常适合OA等系统

    1.插件下载 http://arshaw.com/fullcalendar/download/ 2. <!DOCTYPE html> <meta http-equiv="C ...

  5. 配置tomcat,访问端口改为80

    首先:找到tomcat的的config文件夹下的server.xml文件: 编辑server.xml 保存server.xml文件,重启tomcat服务器,即可. 亲测好使.

  6. Docker的远程访问

    $docker : info (10.211.55是另一台服务器的地址) 频繁访问远程的docker服务器使用-H选项很麻烦,使用环境变量DOCKER_HOST, $export DOCKER_HOS ...

  7. (linux)struct inode 和 struct file

    转自:http://www.cnblogs.com/QJohnson/archive/2011/06/24/2089414.html 1.struct inode──字符设备驱动相关的重要结构介绍 内 ...

  8. src源dst目标

    dst是destination的缩写,表目的 src是source的缩写,表源

  9. python不同目录下的调用

    转自http://blog.csdn.net/hansel/article/details/8975663 Python包含子目录中的模块方法比较简单,关键是能够在sys.path里面找到通向模块文件 ...

  10. map的详细用法 (转

    map的详细用法: map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能 力,由于这个特性,它完成有可能在我 ...