在本节将介绍Wireshark的一些高级特性

"Follow TCP Stream"

如果你处理TCP协议,想要查看Tcp流中的应用层数据,"Following TCP streams"功能将会很有用。如果你项查看telnet流中的密码,或者你想尝试弄明白一个数据流。或者你仅仅只需要一个显示过滤来显示某个TCP流的包。这些都可以通过Wireshark的"Following TCP streams"功能来实现。

在包列表中选择一个你感兴趣的TCP包,然后选择Wireshark工具栏菜单的"Following TCP Streams"选项(或者使用包列表鼠标右键的上下文菜单)。然后,Wireshark就会创建合适的显示过滤器,并弹出一个对话框显示TCP流的所有数据。如下图所示

"Follow TCP Stream"对话框

流的内容出现的顺序同他们在网络中出现的顺序一致。从A到B的通信标记为红色,从B到A的通信标记为蓝色。当然,如果你喜欢的话你可以从"Edit/Preferences"菜单项的"Colores"修改颜色。

非打印字符将会被显示为圆点。XXX - What about line wrapping (maximum line length) and CRNLconversions?

在捕捉过程中,TCP流不能实时更新。想得到最近的内容需要重新打开对话框。

你可以在此对话框执行如下操作:

  1. Save As 以当前选择格式保存流数据。
  2. Print 以当前选择格式打印流数据。
  3. Direction 选择流的显示方向("Entire conversation", "data from A to B only" or "data from B to A only").
  4. Filter out this stream 应用一个显示过滤,在显示中排除当前选择的TCP流。
  5. Close 关闭当前对话框。移除对当前显示过滤的影响。

你可以用以下格式浏览流数据。

  1. AsCII。在此视图下你可以以ASCII凡是查看数据。当然最适合基于ASCII的协议用,例如HTTP.
  2. EBCDIC。For the big-iron freaks out there.(不知道这句是什么意思, EBCDIC 是IBM公司的字符二进制编码标准。)
  3. HEX Dump. 允许你查看所有数据,可能会占用大量屏幕空间。适合显示二进制协议。
  4. C Arrays. 允许你将流数据导入你自己的C语言程序。
  5. RAW。 允许你载入原始数据到其他应用程序做进一步分析。显示类似与ASCII设置。但“save As”将会保存为二进制文件。

时间戳

时间戳,时间戳的精度,等等是在让人感到困惑。本节将向你介绍介绍Wireshark处理时间戳时都发生了什么。

在包被捕捉时,每个包在进入时都被加上时间戳,这个时间戳将会保存在捕捉文件中,所以他们也可以在以后分析时使用。

那么说,时间戳是从哪里来的呢?是捕捉的时候产生的。Wireshark从 libpcap(WinPcap) libraray(库)中获得时间戳。而libpcap(winpcap)又是从操作系统内核获得的时间。如果捕捉数据是从捕捉文件载入的,很显然Wireshark从文件中获得时间戳数据。

Wireshark内置

Wireshak内置的格式使用的时间戳格式由日期(从1.1.1970开始)和时间(从凌晨起,纳秒(10亿分之一秒)为单位)组成。你可以调整Wireshark在包列表的时间戳显示方式。“View菜单”的"Time Display Format"项。

当读取或写入捕捉文件时,Wireshark按需要在内置格式和其他捕捉文件格式间进行时间戳转换。

捕捉时,Wireshark使用libpcap(WinPcap)捕捉库(支持纳秒精度)。除非你在专用的捕捉硬件上进行捕捉,一般这样的精度已经足够了。

捕捉文件格式

Wireshark支持的捕捉文件格式都带有时间戳。不同的捕捉文件格式的时间戳精度有很大不同,从秒"0"到纳秒 "0.123456789"都有。大多数格式捕捉文件存储的时间戳都是固定精度的,些捕捉文件格式甚至存储了时间戳精度本身(可能是出于方便)。

大多数被Wireshark(和或多其他工具)使用的libpcap捕捉文件格式都仅支持固定的百万分之一固定精度"0.123456"

准确性

经常有人问:"Wireshark的时间戳的准确性如何?"。实际上,Wireshark自身不会创建时间戳,而是通过其他的地方得到时间并显示他们。所以,准确性取决于你实用的捕捉系统(操作系统,性能。。。)。因此以上问题很难通过通常的途径回答。

通常USB连接的网络适配器提供的精度非常差。入口的实际上“占用很长的时间和走很曲折的路”才能穿过USB数据线到系统内核。而数据包只有被系统内核处理过以后才会打上时间戳,这种时间戳机制将会导致准确性大大降低。

结论:如果你需要精确的时间戳,请不要使用USB连接的网卡!(笔者的注脚:有没有网卡在USB硬件上提前加上时间戳的?)

时区

当你在各地旅行时,会碰到时区的困扰。如果你从其他时区得到捕捉文件,时区问题会给你带来更大的困扰:-)

首先,下面有两个原因说明你为什么完全不需要考虑时区问题:

  • 你仅对两个包的时间戳的差别有兴趣,你并不需要了解捕捉包的实际的日期和时间(通常是这样)。
  • 很可能你不会得到不同与你所在时区的包文件,所以你基本上碰不到时区问题。例如:你的团队的所有都和你工作在一个时区。

什么是时区?

人们希望时间和日升日落对应。早成应该是6点钟,天黑应该在20:00.这些时间又随着四季变化。如果地球上每个人使用同样的全局时间,将只有一小部分人的日落和时间对应,这将会导致混乱。

因此,人们将地球划分为不同的区域,每个区域都有一个本地时间对应本地的日升日落。

时区基于UTC(Coordinated Universal Time)或者Zulu 时间(军事和航空)。旧有的GTM(格林尼治时间)已不再使用,因为它有少许误差(与UTC相比达到0.9秒)。UTC起始时区等于0(位于格林威治,英格兰),所有的时区和它的偏在在-12~+14小时之间!

例如:如果你住在柏林,你的时区将比UTC早1小时,所以你的时区应该是"+1"(与UTC时间比较的差别,以小时为单位)。柏林的3点和UTC的两点钟表示同一个时刻。

有些地区要加以注意,因为那里的时区不是用整小时的。(比如:新德里的时区是 UTC+05:30)

更多相关信息见http://en.wikipedia.org/wiki/time_zone和http://en.wikipedia.org/wiki/Coordinated_Universal_Time。

什么是时DST?

Daylight Saving Time(DST),又称为夏令时,目的是在夏天的几个月里“拯救”白天的时间(夏季白昼较长,如果按照传统的作息时间,比较可惜,不过我不认为)。为了达到这个目的,很多国家(但不是所有的)增加一个DST小时到UTC中。所以你还得加个小时(极少数地方甚至是2小时)的时差来计算你的时区。

不幸的是,DST并未在全世界范围内被启用。你可能同样注意到,北半球和南半球的夏令时是刚好相反的(比如:欧洲是夏季时,澳大利亚则是冬季)。

注意:不管DST怎样,UTC在全年都是一致的。

更多相关信息见http://en.wikipedia.org/wiki/Daylight_saving

正确设置你的计算机的时区

如果你同世界各地的人一同工作,正确设置计算机时区非常有必要。

你应当按正确的顺序设置时间和时区

  1. 设置正确的时区。
  2. 设置本地时间。

这样的顺序将告诉你的计算机本地时间和时区。

名称解析

名字解析尝试将数字地址解析成适合人们阅读格式。有两种方法可以完成这项工作:通过系统/网络服务(例如获取主机名)和/或 Wireshark指定的赋值文件。关于通过赋值文件进行解析的详情,可以参见???

名字解析可以分协议层进行允许,禁止设置。

名字解析的流弊

名字解析在使用Wireshark时有重要价值,甚至可以节约大量时间。不幸的是,名字解析也有它自己的缺点。

  • 名字解析经常会不可用。服务器可能不知道需要被解析的名字,或者服务器不可用。又或者需要解析的名字在赋值配置文件中找不到。
  • 名字解析并没有存储在捕捉文件或其他什么地方。因此你以后打开捕捉文件或者在其他设备上打开文件有可能发现名字解析不可用。每次打开捕捉文件可能会发现部分地址略微发生变化,也许仅仅是因为无法连接到名字解析服务器(之前还是可以连接的)
  • DNS可能会增加额外的包到Wireshark中。你会在包文件中看到由Wireshark请求DNS服务生成的包进出你的机器。
  • 解析名称被Wireshark缓存。这对设备性能有一定需求。但是,如果名字解析信息在wireshark运行时发生变化,wireshark不会注意到这个变化,因为它是从缓存进行解析的。如果这些信息在Wireshark运行时变化了,例如获取一个新DHCP租约,Wireshark不会注意到。(这些是针对DNS还是所有信息?有多少机器使用动态dns注册?)

 以太网名字解析(mac层)

尝试将MAC地址(e.g. 00:09:5b:01:02:03)解析为适合阅读的地址("Human readable")

ARP名字解析(系统服务) Wireshark会向操作系统发出请求,将以太网地址转换为对应的IP地址(e.g. 00:09:5b:01:02:03->192.168.0.1)

Ethernet codes(ethers file)如果ARP解析错误,Wireshark会尝试将以太网地址解析为已知设备名。这种解析需要用户指定一个ethers文件为mac地址分配名称。(e.g. 00:09:5b:01:02:03 ->homerouter).

Ethernet manufacturer codes (manuf file)如果ARP解析和ethers文件都无法成功解析,Wireshark会尝试转换mac地址的前三个字节为厂商名的缩写。mac地址的前三个字节是IEEE为各厂商分配的独立地址(通过前三个字节可以得出每个网络设备的供应商,当然这些也是可以被篡改的。,)(e.g.00:09:5b:01:02:03 -> Netgear_01:02:03).


IP地址解析(网络层)

将IP地址(e.g. 216.239.37.99)转换为适合阅读的地址/"Human readable"

DNS/ADNS name resolution(system/library service)Wireshark会向操作系统(或ADSN library 地址-名称解析词典?)请求,将IP地址转换为相关联的主机名(e.g.216.239.37.99 -> www.1.google.com).此时DNS服务正在同步请求DNS服务器,所以Wireshark会停止相应直到DNS请求的响应返回。如果可能的话,你可以考虑使用ADNS library(这样可以避免等待网络相应。)

IPX名称解析(网络层)

ipxnet name resolution (ipxnets file) (笔者未作解释)

TCP/UDP端口名解析(传输层)

翻译TCP/UDP端口(e.g.80)为更加易读的玩意"human readable"[18]

TCP/UDP port conversion (system service) Wireshark会向操作系统发出请求,转换TCP/UDP端口为已知名称(e.g. 80->http)。

XXX - mention the role of the /etc/services file (butdon't forget the files and folders section)!

校检和

很多协议使用校检和来验证数据的完整性/正确性。

校检和是做什么的?

校验和是用来验证传输数据或存储数据的数据部分的正确性。一个检验和是数据部分进行摘要计算的出的数字。

网络数据在传输过程中经常会产生错误,例如数据错误,字节重复等。数据接收方可能。

正因为传输过程中会伴随错误,网络协议会经常使用校验和检测这些错误。发送方会对数据进行检验和计算,并将数据和检验和一起发送。接收方使用同样的方法计算数据部分的校验和,如果收到的校验和计算出来的校验和不匹配,就表示数据有错误。

有些校验和方法可以通过计算得出发生需要被修复错误的数据位置,并修复(简单的)错误。

如果那些错误无法修复,接收方会丢弃错误的数据包。根据协议的不同,数据丢失会仅仅被丢弃,也有可能发送端会根据数据丢失情况重传需要的数据包。

使用校验和可以大量减少传输错误数量。但任何检验和算法都无法确保100%检测到所有错误,依然有少量的错误会无法被检测到。

校验和的算法有很多,例如最经常被使用的检验和算法CRC32(循环冗余校验)。特的的网络协议选择的校验算法取决于希望网络媒介达到的出错率上限、错误检测的重要性,处理载入计算的性能,其他方面需要的性能。

关于检验和的更多信息可以参考:http://en.wikipedia.org/wiki/Checksum

Wireshark校检和验证

Wireshark会对很多协议进行检验和验证,如:TCP、IP。。。

它会和"normal receiver"做一样的计算.然后在包详情面板显示检验和字段的内容,e.g.:[correct], [invalid, must be 0x12345678] 以及其他类似的内容。

如果校验和验证选项被打开或正在进行校验和检测,合并包特性不会被执行。这是为了避免错误的的连接数据扰乱内部数据。

Checksumoffloading

检验和计算可能由网络网络驱动,协议驱动,甚至是硬件完成。

例如:以太网传输硬件计算以太网循环容易校验,接受硬件验证这个校验。如果接受验证发现错误,Wireshark将不会接收到这个包,以太网硬件会直接丢弃这个包。

高层校验通常是由协议执行,并将完成后的包转交给硬件。

比较新的网络硬件可以执行一些高级功能,如IP检验和计算,这被成为checksum offloading。网络驱动不会计算校验和,只是简单将校验和字段留空或填入无效信息,交给硬件计算。

wireshark学习系列————6、高级部分相关推荐

  1. wireshark学习系列————4、实时捕捉数据包

    介绍 实时捕捉数据包时Wireshar的特色之一 Wiershark捕捉引擎具备以下特点 支持多种网络接口的捕捉(以太网,令牌环网,ATM...) 支持多种机制触发停止捕捉,例如:捕捉文件的大小,捕捉 ...

  2. 【ArcGIS学习系列】高级编辑功能介绍——持续不定期更新

    写在前面   随着研究生阶段学习的深入,逐渐地用到了ArcGIS中一些以前从未想过会使用的功能,以下是对我用到的关于编辑器功能的介绍. 合并(Merge)   以线要素为例,该功能可以在编辑状态下将多 ...

  3. http协议学习系列

    http协议学习系列 1. 基础概念篇 1.1 介绍 HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写.它的发展是万维网协会(World Wide Web C ...

  4. maven mybatis mysql_Java Web学习系列——Maven Web项目中集成使用Spring、MyBatis实现对MySQL的数据访问...

    标签: 本篇内容还是建立在上一篇Java Web学习系列--Maven Web项目中集成使用Spring基础之上,对之前的Maven Web项目进行升级改造,实现对MySQL的数据访问. 添加依赖Ja ...

  5. 机器人操作学习系列分享:模仿学习

    2020-07-29 20:16:12 随着学会的队伍不断发展壮大,分支机构的发展愈发完善,丰富多彩的分支活动与学术分享也频频呈现.疫情期间,CAAI认知系统与信息处理专委会积极倡导学会"疫 ...

  6. Python2爬虫学习系列教程

    http://cuiqingcai.com/1052.html 大家好哈,我呢最近在学习Python爬虫,感觉非常有意思,真的让生活可以方便很多.学习过程中我把一些学习的笔记总结下来,还记录了一些自己 ...

  7. Python爬虫学习系列教程

    大家好哈,我呢最近在学习Python爬虫,感觉非常有意思,真的让生活可以方便很多.学习过程中我把一些学习的笔记总结下来,还记录了一些自己实际写的一些小爬虫,在这里跟大家一同分享,希望对Python爬虫 ...

  8. Python爬虫学习系列教程-----------爬虫系列 你值的收藏

    静觅 » Python爬虫学习系列教程:http://cuiqingcai.com/1052.html 大家好哈,我呢最近在学习Python爬虫,感觉非常有意思,真的让生活可以方便很多.学习过程中我把 ...

  9. Python 爬虫学习 系列教程

    Python爬虫 --- 中高级爬虫学习路线 :https://www.cnblogs.com/Eeyhan/p/14148832.html 看不清图时,可以把图片保存到本地在打开查看... Pyth ...

最新文章

  1. 某口腔app发现了不友善词汇(f*ckMobile)
  2. Java并发机制的底层实现原理
  3. 多目标跟踪2021总结
  4. Quick-Cocos2d-x初学者游戏教程(二) -------------------- Quick内部的代码结构及相应的原理...
  5. [C#] 接收和发送UDP数据
  6. 用户模式 linux救援单用户 (补充)
  7. 该Tiled地图制作拿到项目~~这是偷懒,为了直接复制后写来
  8. python生成json_Python 生成json文件
  9. VMware中的三种网络模式-----Host-only模式
  10. data-index在react里怎样表达_对牛弹琴,在英语里该怎样地道表达?
  11. github竟然挂掉?那么多顶级牛人……
  12. 2013年计算机考试题库,2013年计算机三级数据库上机冲刺试题一及答案
  13. 最新Python爬取淘宝评论(2020年4月)
  14. 我72岁开始学习python,花了一个星期--参加R语言会议有感
  15. 成手指状态html,css手势状态定义属性cursor和自定义鼠标手势详解
  16. python怎么下载安装教程_python怎么下载?《python软件下载安装教程》
  17. 河北工程大学计算机类专业排名,河北工程大学优势专业排名,2021年河北工程大学最好的专业排名...
  18. python中的random模块_如何运用PYTHON里的random模块
  19. com.netflix.discovery.DiscoveryClient : Completed shut down of DiscoveryClient
  20. Apriori(关联分析算法)

热门文章

  1. re学习笔记(101)i春秋 全国大学生信息安全竞赛 计时挑战
  2. 基于SpringBoot+vue的高仿链家租房平台
  3. React-Spring动画库快速入门
  4. 东南亚港美股交易系统开发
  5. nmn是科学还是智商税,nmn最新消息
  6. 新加坡企业投资类型有哪几种?
  7. 生成证书申请csr文件
  8. mysql标量函数,SQL Server标量函数
  9. 关于条件方差的一个性质
  10. 期望,方差,协方差,相关系数性质大全