转自:http://www.cnblogs.com/TankXiao/archive/2012/10/10/2711777.html

之前写过一篇博客:用 Fiddler 来调试HTTP,HTTPS

这篇文章介绍还有一个好用的抓包工具wireshark。 用来获取网络数据封包。包含http,TCP,UDP,等网络协议包。

记得大学的时候就学习过TCP的三次握手协议,那时候仅仅是知道,尽管在书上看过非常多TCP和UDP的资料,可是从来没有真正见过这些数据包, 老是感觉在云上飘一样,学得不踏实。有了wireshark就能截获这些网络数据包,能够清晰的看到数据包中的每个字段。更能加深我们对网络协议的理解。

对我而言。 wireshark 是学习网络协议最好的工具。

阅读文件夹

  1. wireshark介绍
  2. wireshark不能做的
  3. wireshark VS Fiddler
  4. 同类的其它工具
  5. 什么人会用到wireshark
  6. wireshark 開始抓包
  7. wireshark 窗体介绍
  8. wireshark 显示过滤
  9. 保存过滤
  10. 过滤表达式
  11. 封包列表(Packet List Pane)
  12. 封包具体信息 (Packet Details Pane)
  13. wireshark与相应的OSI七层模型
  14. TCP包的具体内容
  15. 实例分析TCP三次握手过程

wireshark介绍

wireshark的官方下载站点: http://www.wireshark.org/

wireshark是很流行的网络封包分析软件,功能十分强大。

能够截取各种网络封包,显示网络封包的具体信息。

wireshark是开源软件,能够放心使用。 能够执行在Windows和Mac OS上。

使用wireshark的人必须了解网络协议。否则就看不懂wireshark了。

Wireshark不能做的

为了安全考虑,wireshark仅仅能查看封包。而不能改动封包的内容,或者发送封包。

Wireshark VS Fiddler

Fiddler是在windows上执行的程序,专门用来捕获HTTP,HTTPS的。

wireshark能获取HTTP,也能获取HTTPS,可是不能解密HTTPS,所以wireshark看不懂HTTPS中的内容

总结。假设是处理HTTP,HTTPS 还是用Fiddler,  其它协议比方TCP,UDP 就用wireshark

同类的其它工具

微软的network monitor

sniffer

什么人会用到wireshark

1. 网络管理员会使用wireshark来检查网络问题

2. 软件測试project师使用wireshark抓包,来分析自己測试的软件

3. 从事socket编程的project师会用wireshark来调试

4. 听说。华为,中兴的大部分project师都会用到wireshark。

总之跟网络相关的东西。都可能会用到wireshark.

wireshark 開始抓包

開始界面

wireshark是捕获机器上的某一块网卡的网络包,当你的机器上有多块网卡的时候。你须要选择一个网卡。

点击Caputre->Interfaces.. 出现以下对话框,选择正确的网卡。

然后点击"Start"button, 開始抓包

Wireshark 窗体介绍

WireShark 主要分为这几个界面

1. Display Filter(显示过滤器),  用于过滤

2. Packet List Pane(封包列表), 显示捕获到的封包, 有源地址和目标地址,port号。

颜色不同。代表

3. Packet Details Pane(封包具体信息), 显示封包中的字段

4. Dissector Pane(16进制数据)

5. Miscellanous(地址栏。杂项)

Wireshark 显示过滤

使用过滤是非常重要的, 刚開始学习的人使用wireshark时,将会得到大量的冗余信息,在几千甚至几万条记录中,以至于非常难找到自己须要的部分。

搞得晕头转向。

过滤器会帮助我们在大量的数据中迅速找到我们须要的信息。

过滤器有两种,

一种是显示过滤器,就是主界面上那个,用来在捕获的记录中找到所须要的记录

一种是捕获过滤器,用来过滤捕获的封包,以免捕获太多的记录。

在Capture -> Capture Filters 中设置

保存过滤

在Filter栏上,填好Filter的表达式后,点击Savebutton。 取个名字。比方"Filter 102",

Filter栏上就多了个"Filter 102" 的button。

过滤表达式的规则

表达式规则

1. 协议过滤

比方TCP。仅仅显示TCP协议。

2. IP 过滤

比方 ip.src ==192.168.1.102 显示源地址为192.168.1.102,

ip.dst==192.168.1.102, 目标地址为192.168.1.102

3. port过滤

tcp.port ==80,  端口为80的

tcp.srcport == 80,  仅仅显示TCP协议的愿端口为80的。

4. Http模式过滤

http.request.method=="GET",   仅仅显示HTTP GET方法的。

5. 逻辑运算符为 AND/ OR

经常使用的过滤表达式

过滤表达式 用途
http 仅仅查看HTTP协议的记录
ip.src ==192.168.1.102 or ip.dst==192.168.1.102  源地址或者目标地址是192.168.1.102
   
   

封包列表(Packet List Pane)

封包列表的面板中显示,编号。时间戳,源地址,目标地址,协议,长度。以及封包信息。 你能够看到不同的协议用了不同的颜色显示。

你也能够改动这些显示颜色的规则,  View ->Coloring Rules.

封包具体信息 (Packet Details Pane)

这个面板是我们最重要的。用来查看协议中的每个字段。

各行信息分别为

Frame:   物理层的数据帧概况

Ethernet II: 数据链路层以太网帧头部信息

Internet Protocol Version 4: 互联网层IP包头部信息

Transmission Control Protocol:  传输层T的数据段头部信息,此处是TCP

Hypertext Transfer Protocol:  应用层的信息,此处是HTTP协议

wireshark与相应的OSI七层模型

TCP包的详细内容

从下图能够看到wireshark捕获到的TCP包中的每一个字段。

实例分析TCP三次握手过程

看到这。 基本上对wireshak有了初步了解, 如今我们看一个TCP三次握手的实例

三次握手过程为

这图我都看过非常多遍了。 这次我们用wireshark实际分析下三次握手的过程。

打开wireshark, 打开浏览器输入 http://www.cnblogs.com/tankxiao

在wireshark中输入http过滤, 然后选中GET /tankxiao HTTP/1.1的那条记录。右键然后点击"Follow TCP Stream",

这样做的目的是为了得到与浏览器打开站点相关的数据包,将得到例如以下图

图中能够看到wireshark截获到了三次握手的三个数据包。

第四个包才是HTTP的, 这说明HTTP的确是使用TCP建立连接的。

第一次握手数据包

client发送一个TCP。标志位为SYN。序列号为0, 代表client请求建立连接。 例如以下图

第二次握手的数据包

server发回确认包, 标志位为 SYN,ACK. 将确认序号(Acknowledgement Number)设置为客户的I S N加1以.即0+1=1, 例如以下图

第三次握手的数据包

client再次发送确认包(ACK) SYN标志位为0,ACK标志位为1.而且把server发来ACK的序号字段+1,放在确定字段中发送给对方.而且在数据段放写ISN的+1, 例如以下图:

就这样通过了TCP三次握手,建立了连接

Wireshark基本介绍和TCP三次握手的更多相关文章

  1. Wireshark抓包介绍和TCP三次握手分析

    wireshark介绍 wireshark的官方下载网站: http://www.wireshark.org/ wireshark是非常流行的网络封包分析软件,功能十分强大.可以截取各种网络封包,显示 ...

  2. 抓包工具-Wireshark(详细介绍与TCP三次握手数据分析)

    功能使用的详细介绍 wireshark(官方下载网站: http://www.wireshark.org/),是用来获取网络数据封包,可以截取各种网络封包,显示网络封包的详细信息,包括http,TCP ...

  3. WireShark简单使用以及TCP三次握手

    最近一直在用C#编写服务器端的程序,苦于一直找不到合适的方法来测试网络程序,这篇文章很好的解释了网络程序的底层实现. WireShark是最好的学习网络协议最好的工具. wireshark介绍 wir ...

  4. 用wireshark抓包分析TCP三次握手、四次挥手以及TCP实现可靠传输的机制

    关于TCP三次握手和四次挥手大家都在<计算机网络>课程里学过,还记得当时高超老师耐心地讲解.大学里我遇到的最好的老师大概就是这位了,虽然他只给我讲过<java程序设计>和< ...

  5. wireshark使用教程及TCP三次握手实例

    安装后,选择对应访问网络的网卡,即可看到下面的主界面 具体说下封包详细信息 (Packet Details Pane) 这个面板是我们最重要的,用来查看协议中的每一个字段. 各行信息分别为 Frame ...

  6. Wireshark抓包分析TCP“三次握手,四次挥手”

    1.目的 客户端与服务器之间建立TCP/IP连接,我们知道是通过三次握手,四次挥手实现的,但是很多地方对这个知识的描述仅限于理论层面,这次我们通过网络抓包的方式来看一下实际的TCP/IP传输过程. 2 ...

  7. wireshark抓包图解 TCP三次握手/四次挥手详解[转]

    原文链接:http://www.seanyxie.com/wireshark%E6%8A%93%E5%8C%85%E5%9B%BE%E8%A7%A3-tcp%E4%B8%89%E6%AC%A1%E6% ...

  8. wireshark抓包图解 TCP三次握手/四次挥手详解

    http://www.seanyxie.com/wireshark%E6%8A%93%E5%8C%85%E5%9B%BE%E8%A7%A3-tcp%E4%B8%89%E6%AC%A1%E6%8F%A1 ...

  9. Wireshark抓包TCP三次握手数据

    抓包工具 - Wireshark(详细介绍与TCP三次握手数据分析) 功能使用的详细介绍 wireshark(官方下载网站: http://www.wireshark.org/),是用来获取网络数据封 ...

随机推荐

  1. 3.3V与5V电平双向转换

    http://www.amobbs.com/thread-5541344-1-2.html 3.3V转5V:S3输入为0V时,NMOS管导通,S5=S3=0V:S3输入为3.3V时,NMOS管截止,S ...

  2. 优化中的subgradient方法

    哎.刚刚submit上paper比較心虚啊.无心学习.还是好好码码文字吧. subgradient介绍 subgradient中文名叫次梯度.和梯度一样,全然能够多放梯度使用.至于为什么叫子梯度,是由 ...

  3. 【C#高级编程】笔记之核心C#

    Main()方法 每一个C#可执行文件(如控制台程序.Windows程序和Windows服务)都必须有一个入口点——Main()方法(注意M大写). 这个方法必须是类或静态方法,并且返回类型必须是in ...

  4. 【docker-compose】使用docker-compose启动spring-boot+mysql,服务内连数据库报错:create connection SQLException, url: jdbc:mysql://mysql:33061/swapping?useSSL=false&useUnicode=true&characterEncoding=UTF-8, errorCode 0,

    完整配置在这里, https://www.cnblogs.com/sxdcgaq8080/p/10070948.html 启动报错如下: 2018-12-05 01:04:05.569 ERROR 1 ...

  5. myeclipse 修改freemarker ftl 不重启tomcat

    最 近的项目是SSH,View层采用Freemarker,但是遇到了一个很大问题,每次修改完ftl文件,都要重新启动tomcat才可以看到所修改的内 容,不但麻烦,而且浪费时间,特别怀念jsp,后来在 ...

  6. 如何高效把一字节的位对换, bit0和bit7,bit1和bit6,以此类推.

    #include<stdio.h> #include<stdlib.h> //异或法 unsigned char byteReverse(unsigned char val) ...

  7. C# 指南

    C# 指南提供了许多有关 C# 语言的资源. 此网站面向许多不同的受众群体. 你可能希望探索本指南的不同部分,具体视你的编程经验或 C# 语言和 .NET 使用经验而定. 对于从未接触过编程的开发者: ...

  8. ubuntu14.04开启root用户 设置root密码 配置国内镜像源 设置分辨率

    一.Ubuntu 默认是不允许 root 通过 ssh 直接登录的,可以修改 /etc/ssh/sshd_config,设置 1 PermitRootLogin yes 然后重启 ssh 服务即可 1 ...

  9. WCF 添加 RESTful 支持,适用于 IIS、Winform、cmd 宿主

    You can expose the service in two different endpoints. the SOAP one can use the binding that support ...

  10. docker 基本原理及快速入门

    作者地址:青牛 什么是docker Docker 是一个开源项目,诞生于 2013 年初,最初是 dotCloud 公司内部的一个业余项目.它基于 Google 公司推出的 Go 语言实现. 项目后来 ...