一、

Wireshark中查看TCP的三次握手和四次挥手:

上面的数据发送和接收两部分的info提示都是 [TCP segment of a reassembled PDU],网上的解释是TCP分片的提示,但我只是发送和接收了十几个字节数据,远未超过MSS值。后来换了服务器模式(原来用的是简单阻塞模式的TCP socket服务器模型,现在换成了异步完成端口模型),发现数据发送和接收两部分的info提示变成了[PSH, ACK],如下图,暂时还不知道为什么会有这种区别。

从上图可以看到:

1、刚开始双方数据的序号都为0(seq=0),然后会随着发送数据的增长而增长,因为序号就是本数据报的第一个数据字节在整个发送数据流中的偏移量。而SYN和FIN包虽然一般不携带数据但他们占一个字节的数据流空间,ACK包则不占用数据流空间,所以在发送SYN/FIN/SYN+ACK/FIN+ACK包后seq会加1,而发送ACK包后seq不变。一般情况下报文的确认号(ack)会与下次收到的对方发来数据的序号(seq)相同,除非发生了乱序。

2、ACK包是可以和SYN、PSH、FIN和并发送以节省时间的(TCP帧头中对应标志位置1),比如三次握手中的SYN+ACK,四次挥手中的FIN+ACK,发送数据中的PSH+ACK。注意这里的第三次挥手也为FIN+ACK,而这里我没看出前面有什么数据要进行确认,还有第一次发送数据的时候也是这样,多了一个ACK标志,为PSH+ACK,为什么会这样呢?我个人猜测可能是这样做就不用判断前面还有没有数据要确认:对于数据传输报文和关闭连接报文不管前面有没有要确认的数据都将ACK标志置1,方便快捷,也不会带来什么问题。

PSH强调的是尽快将数据交付给上层,TCP接收方在收到PSH置位的数据报文后会立即将缓冲区中数据发送给上层,而如果TCP接收方收到的是PSH没有置位的报文,则会等待缓冲区满才将缓冲区中数据发送给上层。那么什么时候PSH位会被置1呢?经我测试发现,如果不是分片数据或者是最后一个分片数据,PSH会被置位,标志位为PSH+ACK,如果是分片数据但不是最后一个分片数据,PSH不会被置位,标志位只有ACK。

3、报文信息中的Len表示携带数据的大小;Win是本端"接收窗口"的大小,用来告知对端,从而控制对端"发送窗口"的大小,以达到控制传输流量。

4、MSS称为最大分段大小,在上图中可以看到在双方连接的时候会发送自身MSS值,而这个MSS值是根据本机MTU计算而来的:MSS = MTU - IP报文头的20bytes - TCP报文头的20bytes,TCP协议会选择双方较小的mss作为TCP分片的大小。因为以太网MTU是1500或者大于1500,所以用Wareshark查看TCP三次握手中双方发送的MSS值都为1460。

二、

过滤器分为两种,一种是捕捉过滤器,一种是显示过滤器。下面是Wireshark中一些常用的显示过滤器设置:

过滤IP地址、源IP地址、目的IP地址:ip.addr == 192.168.0.38、ip.src==1.1.1.1、ip.dst==192.168.101.8。

标识过滤:显示包含TCP SYN标志的封包:tcp.flags.syn == 0x02`。

端口过滤、目的端口过滤、源端口过滤:tcp.port==6000、tcp.dstport==6000、tcp.srcport==6000。

协议过滤(直接输入协议名):tcp、http。

使用连接符and(&&)、or(||):ip.src==1.1.1.1 and tcp.port==6000、ip.src==1.1.1.1 or ip.src==2.2.2.2。

http模式过滤,如过滤get方法:http.request.method=="GET";过滤整个URL:http.request.full_uri == "http://www.sac.net.cn/tzgg/";过滤所有http请求:http.request==1;过滤所有http响应:http.response==1;过滤URL中包含指定内容:http.request.full_uri contains "www.sac.net";过滤域名:http.host == "www.sac.net.cn",http.host contains "sac";

三、

Wireshark中TCP常见错误状态:

TCP Previous segment not captured  乱序包
TCP Retransmission  重传包
TCP fast retransmission  快速重传包
TCP Dup ACK  报文丢失ACK

使用Wireshark分析网络数据的更多相关文章

  1. 用python探索和分析网络数据

    Edited by Markdown Refered from: John Ladd, Jessica Otis, Christopher N. Warren, and Scott Weingart, ...

  2. wireshark分析https数据包解密前后的特点

    wireshark分析https数据包解密前后的特点 (一)https解密前 1.协议种类:2种(1)TCP(第四层,传输层)(2)SSL/TLS(第五层,应用层,加解密)2.应用层数据所在数据包特点 ...

  3. wireshark 分析过滤数据

    1.过滤IP,如来源IP或者目标IP等于某个IP例子:ip.src eq 192.168.1.107 or ip.dst eq 192.168.1.107或者ip.addr eq 192.168.1. ...

  4. Android 性能优化(6)网络优化( 2) Analyzing Network Traffic Data:分析网络数据

    Analyzing Network Traffic Data 1.This lesson teaches you to Analyze App Network Traffic Analyze Netw ...

  5. 如何用 Python 和 API 收集与分析网络数据?

    摘自 https://www.jianshu.com/p/d52020f0c247 本文以一款阿里云市场历史天气查询产品为例,为你逐步介绍如何用 Python 调用 API 收集.分析与可视化数据.希 ...

  6. Wireshark分析网络慢

        tcp.analysis.retransmission tcp.flags.reset==1

  7. LINUX下的远端主机登入 校园网络注册 网络数据包转发和捕获

    第一部分:LINUX 下的远端主机登入和校园网注册 校园网内目的主机远程管理登入程序 本程序为校园网内远程登入,管理功能,该程序分服务器端和客户端两部分:服务器端为remote_server_udp. ...

  8. Wireshark数据抓包分析——网络协议篇

                   Wireshark数据抓包分析--网络协议篇     watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZGF4dWViYQ==/ ...

  9. PYTHON黑帽编程1.5 使用WIRESHARK练习网络协议分析

    Python黑帽编程1.5  使用Wireshark练习网络协议分析 1.5.0.1  本系列教程说明 本系列教程,采用的大纲母本为<Understanding Network Hacks At ...

随机推荐

  1. 前端框架(kraken、Express、Node、MVC)

    You know my loneliness is only kept for you, my sweet songs are only sang for you. 前端框架相关知识记录. krake ...

  2. TZOJ 4871 文化之旅(floyd预处理+dfs剪枝)

    描述 有一位使者要游历各国,他每到一个国家,都能学到一种文化,但他不愿意学习任何一种文化超过一次,即如果他学习了某种文化,则他就不能到达其他有这种文化的国家.不同的国家可能有相同的文化.不同文化的国家 ...

  3. win8 IIS配置

    iis发展到win8已经到是iis8.0了.至于如何安装的,咱们接下来看.大体和iis6安装差别不大.iis8安装起来也是很方便的. 1.打开“控制面板”——“程序和功能”.如下图所示 2.点击“启用 ...

  4. go流程控制与函数

    package main; import ( "fmt" ); func main() { isRun := true; //条件判断 if isRun { fmt.Printf( ...

  5. os模块。笔记

    os 模块提供了很多允许你的程序与操作系统直接交互的功能 得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd() 返回指定目录下的所有文件和目录名:os.listdir()  ...

  6. [z]分区truncate操作的介绍及对全局索引和空间释放影响的案例解析

    [z]https://www.2cto.com/database/201301/181226.html 环境: [sql] [oracle@localhost ~]$ uname -r 2.6.18- ...

  7. [z]Libevent使用例子,从简单到复杂

    [z]http://blog.csdn.net/luotuo44/article/details/39670221 本文从简单到复杂,展示如何使用libevent.网上的许多例子都是只有服务器端的,本 ...

  8. 梦殇 chapter five

    一弦情殇未谱,半纸离愁难书,不记年,叹花开几度...... 蜡烛用它自己的死亡来温暖别人,奉献自己的同时,它内心是快乐的吗?那残留的蜡油是它的泪水,还是它快乐的预兆? 这个世界上除了父母家人外,会有真 ...

  9. 函数 day9

    一,什么是函数? 函数的定义与调用 s = 'fkdsagadfdsagfdsagg' count = 0 for i in s: count += 1 print(count) l1 = [1,2, ...

  10. Debian 中文环境设置

    编辑 /etc/apt/sources.list 添加163镜像源 apt-get update 进行更新 dpkg-reconfigure locales 选择  en_US.utf-8 utf-8 ...