内容概述:

  该篇主要内容概述

  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. JSON和JSONP 傻傻分不清楚?

    什么是JSON  前面简单说了一下,JSON是一种基于文本的数据交换方式,或者叫做数据描述格式,你是否该选用他首先肯定要关注它所拥有的优点. JSON的优点: 1.基于纯文本,跨平台传递极其简单: 2 ...

  2. 2016年最值得新手程序猿阅读的书:《增长project师指南》

    这本书的来源于根据我在<Repractise简单介绍篇:Web开发的七天里>中所说的 Web 开发的七个步骤而展开的电子书.当然它也是一个 APP.它一本关于怎样成为增长project师的 ...

  3. GCJ Qualification Round 2016 C题

    题意是给定了一个叫“jamcoin”的定义,让你生成足够数量满足条件的jamcoin. jamcoin其实就可以理解成一个二进制整数,题目要求的要么长度为16位,要么为32位,一头一尾两个位必须是1, ...

  4. DirectShow音频采集pcm,实时编码AAC,附源码

    定期送福利,今天给大家送上Windows中利用DirectShow采集microphone音频,并将采集到的pcm数据,利用FAAC库编码成AAC,进行本地存储或者网络传输. 直接贴代码,解析看注释: ...

  5. SVD分解的理解

    对称阵A 相应的,其对应的映射也分解为三个映射.现在假设有x向量,用A将其变换到A的列空间中,那么首先由U'先对x做变换: 由于正交阵“ U的逆=U‘ ”,对于两个空间来讲,新空间下的“ 基E' 坐标 ...

  6. LightOJ1214 Large Division —— 大数求模

    题目链接:https://vjudge.net/problem/LightOJ-1214 1214 - Large Division    PDF (English) Statistics Forum ...

  7. 关于Zookeeper

    Zookeeper是分布式协调工具 应用场景 命名服务(注册中心) Dubbo注册中心 分布式配置中心(SpringCloud config)动态管理配置文件信息 消息中间件 事件通知(类似发布订阅) ...

  8. ansible 魔法变量

    hostvars 可以让你调用其他host的变量和facts,  即使你没有在这个机器上执行过playbook, 你仍然可以访问变量, 但是不能访问facts. 例如: {{ hostvars['te ...

  9. html5--5-11 绘制文字

    html5--5-11 绘制文字 学习要点 掌握文字的绘制方法 文字的绘制方法 strokeText("文字",x,y,maxWith) 绘制(描边)空心文字 fillText(& ...

  10. match_parent 、 fill_parent 、 wrap_content

    1)fill_parent 设置一个构件的布局为fill_parent将强制性地使构件扩展,以填充布局单元内尽可能多的空间.这跟Windows控件的dockstyle属性大体一致. 设置一个顶部布局或 ...