Wireshark网络抓包(三)——网络协议

一、ARP协议

ARP(Address Resolution Protocol)地址解析协议,将IP地址解析成MAC地址。

IP地址在OSI模型第三层,MAC地址在OSI第二层,彼此不直接通信;

在通过以太网发生IP数据包时,先封装第三层(32位IP地址)和第二层(48位MAC地址)的报头;

但由于发送数据包时只知道目标IP地址,不知道其Mac地址,且不能跨越第二、三层,所以需要使用地址解析协议。

ARP工作流程分请求和响应:

在dos窗口内“ping”某个域名抓取到的包:

二、IP协议

IP(Internet Protocol)互联网协议,主要目的是使得网络间能够互相通信,位于OSI第三层,负责跨网络通信的地址。

当以广播方式发送数据包的时候,是以MAC地址定位,并且需要电脑在同一子网络。

当不在同一子网络就需要路由发送,这时候就需要IP地址来定位。

同样在dos窗口内“ping”某个域名抓取到的包:

三、TCP协议

TCP(Transmission Control Protocol)传输控制协议,一种面向连接、可靠、基于IP的传输层协议,主要目的是为数据提供可靠的端到端传输。

在OSI模型的第四层工作,能够处理数据的顺序和错误恢复,最终保证数据能够到达其应到达的地方。

1)标志位

SYN: 同步,在建立连接时用来同步序号。SYN=1, ACK=0表示一个连接请求报文段。SYN=1,ACK=1表示同意建立连接。

FIN: 终止,FIN=1时,表明此报文段的发送端的数据已经发送完毕,并要求释放传输连接。

ACK: 确认,ACK = 1时代表这是一个确认的TCP包,取值0则不是确认包。

DUP ACK:重复,重复确认报文,有重复报文,一般是是丢包或延迟引起的,从这个报文看应该是丢包了。

URG:紧急,当URG=1时,表示报文段中有紧急数据,应尽快传送

PSH:推送,当发送端PSH=1时,接收端尽快的交付给应用进程

RST:复位,当RST=1时,表明TCP连接中出现严重差错,必须释放连接,再重新建立连接

2)端口

客户端与不同服务器建立连接时,源端口和目标端口可不同。

3)TCP三次握手

4)TCP四次挥手

TCP四次断开,例如关闭页面的时候就会断开连接。

5)TCP概念

1. 发送窗口

无法简单的看出发送窗口的大小,发送窗口会由网络因素决定。发送窗口定义了一次发的字节,而MSS定义了这些字节通过多少个包发送。

2. 拥塞窗口(cwnd)

描述源端在拥塞控制情况下一次最多能发送的数据包的数量。

在发送方维护一个虚拟的拥塞窗口,并利用各种算法使它尽可能接近真实的拥塞点。

网络对发送窗口的限制,就是通过拥塞窗口实现的。

3. 在途字节数(bytes in flight)

已经发送出去,但尚未被确认的字节数。

在途字节数 = Seq + Len - Ack

其中Seq和Len来自上一个数据发送方的包,而Ack来自上一个数据接收方的包。

4. 拥塞点(congestion point)

发生拥塞时候的在途字节数就是该时刻的网络拥塞点。

先从Wireshark中找到一连串重传包中的第一个,再根据该Seq找到原始包最后计算该原始包发送时刻的在途字节数。

5. 慢启动

RFC建议初始拥塞窗口发送2、3、或4个MSS,如果发出去的包都能得到确认,则表明还没到拥塞点,可以收到n个确认增加n个MSS

6. 拥塞避免

慢启动持续一段时间后,拥塞窗口达到一个较大的值,就得放慢RFC建议在每个往返时间增加1个MSS,比如发了16个MSS全部确认,那么就增加到17个MSS

7. 超时重传

发出去的包在等待一段时间(RTO)后,没有收到确认,就只能重传了

8. 快速重传(Fast Retransmit)

不以时间驱动,而以数据驱动重传。如果包没有连续到达,就ACK最后那个可能被丢了的包,如果发送方连续收到3次相同的ACK,就重传。

9. SACK(Selective Acknowledgment)

选择性确认重传,ACK还是Fast Retransmit的ACK,SACK则是汇报收到的数据,在发送端就可以根据回传的SACK来知道哪些数据到了,哪些没有到。

10. 延迟确认(Delayed ACK)

如果收到一个包后暂时没什么数据发给对方,那就延迟一段时间再确认。假如这段时间恰好有数据要发送,那数据和确认信息可以在一个包中发送。

11. LSO

LSO拯救CPU而出的创意,为了缓解CPU的压力,把它的一部分工作外包给了网卡,比如TCP的分段。

启用LSO之后,TCP层就可以把大于MSS的数据块直接传给网卡,让网卡负责分段。

比如“Seq=348586,Len=2776”,被网卡分为“Seq=348586,Len=1388”和“Seq=349974,Len=1388”两个包。

在发送端抓包相当于站在CPU角度,只看到一个分段前的大包,而接收端就可以看到两个包。

所以才会出现只见重传包,不见原始包的情况。

12. Nagle算法

在发出去的数据还没有被确认之前,假如又有小数据生成,那就把小数据收集起来,凑满一个MSS或等收到确认后再发送。

13. Vegas算法

通过监控网络状态来调整发包速度。

当网络状态良好时,数据包的RTT比较稳定,这时可以增大拥塞窗口;

当网络开始繁忙时,数据包开始排队,RTT就会变大,这时就减小拥塞窗口。

6)选项字段

PTR(Pointer Record):指针记录,PTR记录解析IP地址到域名

TTL(Time to live)

存活时间,限制数据包在网络中存在的时间,防止数据包不断的在IP互联网络上循环,初始值一般为64,每经过一个路由减去1。

通过TTL过滤运营商劫持包,假的包是抢先应答的,所以和真实包的TTL可能不同(例如ip.ttl == 54)

Seq:数据段的序号,当接收端收到乱序的包,就能根据此序号重新排序,当前Seq等上一个Seq号与长度相加获取到

Len:数据段的长度,这个长度不包括TCP头

Ack:确认号,接收方向发送方确认已经收到了哪些字节

RTT(Round Trip Time):也就是一个数据包从发出去到回来的时间

RTO(Retransmission TimeOut):超时重传计数器,描述数据包从发送到失效的时间间隔,是判断数据包丢失与否及网络是否拥塞的重要参数

MTU(Maximum Transmit Unit):最大传输单元

MSS(Maximum Segment Size):最长报文段,TCP包所能携带的最大数据量,不包含TCP头和Option。一般为MTU值减去IPv4头部(至少20字节)和TCP头部(至少20字节)得到。

Win(Window Size):声明自己的接收窗口

TCP Window Scale:窗口扩张,放在TCP头之外的Option,向对方声明一个shift count,作为2的指数,再乘以TCP定义的接收窗口,得到真正的TCP窗口

DF(Don‘t fragment):在网络层中,如果带了就丢弃没带就分片

MF(More fragments):0表示最后一个分片,1表示不是最后一片

7)过滤表达式

握手请求被对方拒绝:tcp.flags.reset === 1 && tcp.seq === 1

重传的握手请求:tcp.flags.syn === 1 && tcp.analysis.retransmission

过滤延迟确认:tcp.analysis.ack_rtt > 0.2 and tcp.len == 0

四、UDP协议

UDP(User Datagram Protocol)用户数据报协议,提供面向事务的简单不可靠信息传送服务。

将网络数据流压缩成数据包的形式。每一个数据包的前8个字节保存包头信息,剩余的包含具体的传输数据。

虽然UDP是不可靠的传输协议,但它是分发信息的理想协议,例如在屏幕上报告股票市场、显示航空信息;

在路由信息协议RIP(Routing Information Protocol)中修改路由表、QQ聊天、迅雷、网络电话等。

TCP的效率不一定比UDP低,只要窗口足够大,TCP也可以不受往返时间的约束而源源不断地传数据。

1)UDP的优势

1. UDP 协议的头长度不到TCP头的一半,所以同样大小的包里UDP携带的净数据比TCP包多,

2. 没有Seq和Ack等概念,省去了建立连接的开销,DNS解析就使用UDP协议。

2)UDP的劣势

1. 超过MTU的时候,发送方的网络层负责分片,接收方收到分片后再组装起来,这个过程会消耗资源,降低性能。

2. 没有重传机制,丢包由应用层处理,某个写操作有6个包,当有一个丢失的时候,就要将6个包重新发送。

3. 分片机制存在弱点,接收方是根据包中的“More fragments”的flag来判断是否包已接收完,1表示还有分片,0表示最后一个分片,可以组装了。

如果持续发送flag为1的UDP,接收方无法组装,就有可能耗尽内存。

五、ICMP协议

ICMP(Internet Control Message Protocol)网际报文控制协议,用于传输错误报告控制信息,对网络安全有极其重要的意义。

例如请求的服务不可用、主机或路由不可达,ICMP协议依靠IP协议来完成任务,是IP协议的一个集成部分。

通常不被用户网络程序直接使用,多用于ping和tracert等这样的诊断程序。

六、DNS协议

DNS(Domain Name System)域名系统,DNS就是进行域名解析的服务器。

DNS协议运行在UDP协议之上,端口为53,工作原理如下:

DNS的解析过程:

DNS客户机向本地域名服务器A发送查询,如果A中没有保存IP地址记录,A就会发请求给根域名服务器B

如果B中也没有,A就发请求给C,再没有就发请求给D,然后是E,找到后将地址发给DNS客户机。

域名解析过程涉及到递归查询和迭代查询。

客户机再与Web服务器连接。

七、HTTP协议

HTTP(HyperText Transfer Protocol)超文本传输协议,HTTP是一个应用层协议,无状态,由请求和响应构成,是一个标准的客户端服务器模型。

HTTP工作流程如下:

HTTP请求头域:

HTTP应答头域:

HTTP通用头域:

HTTP实体头域:

八、HTTPS协议

HTTPS(Hypertext Transfer Protocol over Secure Socket Layer)基于SSL的HTTP协议,HTTP的安全版。

使用端口43,HTTPS协议是由SSL+HTTP协议构建的可进行加密传输和身份认证的网络协议。

1)HTTPS工作流程

2)SSL

SSL(Secure Sockets Layer)安全套接层,TLS(Transport Layer Security)传输层安全是其继任者。

SSL和TLS在传输层对网络连接进行加密。

SSL协议分为两层,SSL记录协议(SSL Record Protocol)和SSL握手协议(SSL Handshake Protocol)。

SSL记录协议建立在TCP之上,提供数据封装、压缩加密基本功能的支持。

SSL握手协议建立在SSL记录协议之上,在数据传输之前,通信双方进行身份认证、协商加密算法和交换加密秘钥等。

SSL工作分为两个阶段,服务器认证和用户认证。

SSL协议既用到了公钥加密(非对称加密)又用到了对称加密技术。

3)数据包

客户端与服务器之间的通信:

1.客户端发出请求(Client Hello)

2.服务器响应(Server Hello)

3)证书信息

3.密钥交换

4.应用层信息通信

用户可以发送通过TLS层使用RC4的写实例加密过的普通HTTP消息,也可以解密服务端RC4写实例发过来的消息。

此外,TLS层通过计算消息内容的HMAC_MD5哈希值来校验每一条消息是否被篡改。

参考资料:

Wireshark网络分析的艺术

Wireshark数据包分析实战详解

车小胖谈网络:MTU 与 MSS

MTU & MSS 详解记录

网络传输分片、MTU、MSS

理解TCP序列号(Sequence Number)和确认号(Acknowledgment Number)

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

TCP 的那些事儿(下)

TCP segment of a reassembled PDU

SSL/TLS协议运行机制的概述

如何通过Wireshark查看HTTPS、HTTP/2网络包(解码TLS、SSL)

时间: 2024-10-13 10:01:30

Wireshark网络抓包(三)——网络协议的相关文章

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

Wireshark是目前最受欢迎的抓包工具.它可以运行在Windows.Linux及MAC OS X操作系统中,并提供了友好的图形界面.同时,Wireshark提供功能强大的数据抓包功能.使用它,可以以各种方式抓取用户所需要的网络数据包. 但是用户往往无法从数据包中直接获取所需要的数据.这是由于所有的信息在传输过程中,都会被按照各种网络协议进行封装.用户想要从海量的数据抓包中获取的有用的信息,必须了解各种常见的网络协议.为了方便用户对数据包的分析,本书详细介绍了常用的各种网络协议,如ARP.IP

Wireshark 网络抓包工具Wireshark的使用

阅读目录 wireshark介绍 wireshark不能做的 wireshark VS Fiddler 同类的其他工具 什么人会用到wireshark wireshark 开始抓包 wireshark 窗口介绍 wireshark 显示过滤 保存过滤 过滤表达式 封包列表(Packet List Pane) 封包详细信息 (Packet Details Pane) wireshark与对应的OSI七层模型 TCP包的具体内容 实例分析TCP三次握手过程 wireshark介绍 wireshark

网络抓包wireshark

抓包应该是每个技术人员掌握的基础知识,无论是技术支持运维人员或者是研发,多少都会遇到要抓包的情况,用过的抓包工具有fiddle.wireshark,作为一个不是经常要抓包的人员,学会用Wireshark就够了,毕竟它是功能最全面使用者最多的抓包工具. Wireshark(前称Ethereal)是一个网络封包分析软件.网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料.Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换. 网络封包分析软件的功能可想像成

网络抓包wireshark(转)

转自 网络抓包wireshark 抓包应该是每个技术人员掌握的基础知识,无论是技术支持运维人员或者是研发,多少都会遇到要抓包的情况,用过的抓包工具有fiddle.wireshark,作为一个不是经常要抓包的人员,学会用Wireshark就够了,毕竟它是功能最全面使用者最多的抓包工具. Wireshark(前称Ethereal)是一个网络封包分析软件.网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料.Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换

网络抓包工具-Wireshark学习资料

wireshark一个非常牛逼的网络抓包工具.转载一系列博文 一站式学习Wireshark(一):Wireshark基本用法 一站式学习Wireshark(二):应用Wireshark观察基本网络协议 一站式学习Wireshark(三):应用Wireshark IO图形工具分析数据流 一站式学习Wireshark(四):网络性能排查之TCP重传与重复ACK 一站式学习Wireshark(五):TCP窗口与拥塞处理 一站式学习Wireshark(六):狙击网络高延时点 一站式学习Wireshark

网络抓包wireshark(转)

抓包应该是每个技术人员掌握的基础知识,无论是技术支持运维人员或者是研发,多少都会遇到要抓包的情况,用过的抓包工具有fiddle.wireshark,作为一个不是经常要抓包的人员,学会用Wireshark就够了,毕竟它是功能最全面使用者最多的抓包工具. Wireshark(前称Ethereal)是一个网络封包分析软件.网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料.Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换. 网络封包分析软件的功能可想像成

iOS系统设备网络抓包工具介绍:越狱和不越狱的办法

对终端进行抓包是客户端测试中的一种重要手段.本文主要介绍了ios设备(iphone.ipad和ipodtouch)的几种常用的抓包方法. 一.准备条件 需要进行抓包的设备必须经过root,俗称越狱,主要利用redsn0w和各种iOSFirmwares进行,如越狱不用更换固件版本,只需使用 redsn0w安装Cydia即可,网上有详细教程,此处省略.安装完毕,在3G或WiFi环境下启动Cydia,确认身份为“开发者”,如下图. 通过Cydia源,用户可以下载和安装比appstore更高权限的软件,

iOS系统网络抓包方法

在进行iOS开发过程中,经常会遇到各种各样的网络访问问题,以前苦于没有抓包工具,很多网络问题解决起来很痛苦.现在终于好了,本文提供两种方式进行网络抓包: 1. 网络共享 + 可视化抓包工具 基本原理 原理比较简单,ios设备通过代理方式共享连接mac电脑的无线网卡,使用抓包工具抓包,然后进行分析(我们推荐使用Wireshark,在MAC系统上也可以使用Paros工具). 现在以MAC系统下Paros工具为例,详细描述下抓包过程: 操作步骤 1)  首先将MAC电脑的以太网共享给airport,使

网络抓包指南

网络抓包指南 1.交换机配置流量镜像接口 1.1登录交换机备份相关配置,执行以下操作 mirroring-group 2 mirroring-port GigabitEthernet 1/0/4 to GigabitEthernet 1/0/14 GigabitEthernet 1/0/18 to GigabitEthernet 1/0/21 both mirroring-group 2 monitor-port GigabitEthernet 1/0/17 quit save ### Giga