【转】Wireshark网络抓包(三)——网络协议

转自:https://www.cnblogs.com/strick/p/6262284.html

一、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请求头域:

 Accept 用户代理能够处理的媒体类型(MIME)及媒体类型的相对优先级,“text/plain;q=0.3”
 Accpet-Charset 通知服务器用户代理支持的字符集及字符集的相对优先顺序,“iso-8859-5”
 Accept-Encoding 告知服务器用户代理支持的内容编码及优先级顺序“gzip,deflate”
 Accept-Language 告知服务器用户代理能够处理的自然语言集及优先级,“zh-cn,zh;q=0.7”
 Authorization 用户代理的认证信息(证书值),“Basic dWVub3NlbjpwYNzd==”
 Expect 期望出现的某种特定行为,错误时返回“417 Expectation Failed”,“100-continue”
 From 用户的电子邮箱地址,为了显示搜索引擎等用户代理负责人的联系方式,“info@ha.com”
 Host 请求的资源所处的互联网主机名和端口号,必须包含在请求头中,“www.hh.com”
 If-Match 条件请求,只有当If-Match字段值与ETag匹配才会接受请求,否则返回“412 Precondition Failed”
 If-Modified-Since 若字段值早于资源的更新时间(Last-Modified),资源未更新,返回“304 Not Modified”
 If-None-Match 与If-Match相反
 If-Range 字段值和请求资源的ETag或时间一致时,作为范围请求处理,反之,返回全体资源
 If-Unmodified-Since 与If-Modified-Since作用相反
 Max-Forwards 以十进制整数形式指定可经过的服务器最大数目。服务器转发一次,减少1,当为0就不进行转发
 Proxy-Authorization 接收从代理服务器发来的认证质询时,发送此字段,告知服务器认证所需要的信息
 Range 只需获取部分资源的范围请求,“5001-10000”从5001字节到10000字节的资源。
 Referer 请求的原始资源的URI,也就是上一页
 TE 客户端能够处理响应的传输编码方式及相对优先级,还可指定Trailer字段分块传输编码的方式。“gzip,deflate;q=0.5”
User-Agent 创建请求的浏览器和用户代理名称等信息

HTTP应答头域:

 Accpet-Ranges 告知客户端服务器是否能处理范围请求,以指定获取服务器端某个部分的资源。“bytes”
 Age 源服务器在多久前创建了响应,字段值单位为秒
 ETag 客户端实体标识,一种可以将资源以字符串形式做唯一标识的方式
 Location 将响应接收方引导至某个与请求URI位置不同的资源,会配置3xx:Redirection的响应
 Proxy-Authenticate 由代理服务器所要求的认证信息发送给客户端
 Retry-After 告知客户端应该在多久(秒数或具体日期)之后再次发送请求,主要配合“503 Service Unavailable”或“3xx Redirect”。
 Server 当前服务器上安装的HTTP服务器应用程序的信息,包括版本号等。“Apache/2.2.6 (Unix) PHP/5.2.5”
 Vary 对缓存进行控制,设置“Accept-Language”,如果字段值相同,就从缓存返回响应。
 WWW-Authenticate HTTP访问认证,告知客户端适用于访问请求URI所指定资源的认证方案(Basic或Digest)和带参数提示的质询(challenge)

HTTP通用头域:

Cache-Control操作缓存的工作机制,多个指令用“,”分割,“private,max-age=0,no-cache”
Connection控制不再转发给代理的首部字段与管理持久连接,“keep-alive”
DateHTTP报文的日期和时间
PragemaHTTP1.1之前的遗留字段,作为向后兼容定义,只用在客户端发送的请求中。“no-cache”
Trailer说明在报文主体后记录了哪些首部字段,可应用在分块编码传输时。在报文最后写了重要信息
Transfer-Encoding传输报文主体时采用的编码方式,分块传输“chunked”
Upgrade检测HTTP协议及其他协议是否可使用更高版本进行通信
Via追踪客户端与服务器之间的请求和响应报文的传输路径,各个代理服务器会往Via添加自己的服务器信息
Warning告知用户一些与缓存相关问题的警告

HTTP实体头域:

 Allow 告知客户端能够支持Request-URI指定资源的所有HTTP方法,“GET,HEAD”。当不支持,会返回“405 Method Not Allowed”
 Content-Encoding 服务器对实体的主体部分选用的内容编码方式,在不丢失内容的前提下进行压缩。“gzip”
 Content-Language 实体主体使用的自然语言(中文或英文等)
 Content-Length 主体部分的大小(单位是byte)
 Content-Location 给出与报文主体部分相对应的URI,与Location不同
 Content-MD5 一串由MD5算法生成的值,目的在于检查报文主体在传输过程中是否保持完整,以及确认传输到达
 Content-Range 针对范围请求,作为响应返回的实体的哪个部分符合范围请求,单位为byte。“bytes 5001-10000/10000”
 Content-Type 实体主体内对象的媒体类型,与Accpet一样,字段值用type/subtype形式赋值。“text/html; charset=UTF-8”
 Expires 将资源失效的日期告知客户端。当首部字段Cache-Control有指定max-age指令时,优先处理max-age指令
 Last-Modified 指明资源最终修改时间,一般来说,这个值就是Request-URI指定资源被修改的时间

详细信息可以参考MDN的《HTTP Headers》

MIME (Multipurpose Internet Mail Extensions) 是描述消息内容类型的因特网标准,一种通知客户端其接收文件的多样性的机制,文件后缀名在网页上并没有明确的意义。

 

八、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)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/435933.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【转】Wireshark网络抓包(四)——工具

转自:https://www.cnblogs.com/strick/p/6344486.html 一、基本信息统计工具 1)捕获文件属性(Summary) 1. File:了解抓包文件的各种属性,例如抓包文件的名称、路径、文件所含数据包的规模等信息 2. Tim…

silverlight + wcf(json格式) + sqlserver存储过程分页

silverlight并没有提供现成的分页控件,百度了一圈,也没有发现aspx中好用的类似AspNetPager成熟控件,网上现有的一些分页代码,很多也是基于1.0版本的,silverlight2.0的并不多,自个儿琢磨了一下,发…

什么是指利用计算机和现代,现代计算机一般指什么计算机?

现代计算机一般指通用数字电子计算机,它是当今世界电子计算机行业中的主流,其内部处理的是一种称为符号信号或数字信号的电信号;它的主要特点是“离散”,在相邻的两个符号之间不可能有第三种符号存在。电子计算机分为模拟式电子计…

【转】VS中常用图标提示含义

转自:https://www.cnblogs.com/zhjason/articles/14044190.html 有增删 “类视图”和“对象浏览器”图标 “类视图”和“对象浏览器”显示表示代码实体的图标,如命名空间、类、函数和变量 。 下表展示和描述了图标。 图标描述图标描述图标描述图标描述…

二层和三层转发

二层转发的机制是什么?学习线程和报文转发线程。二层只跟MAC地址有关 与IP无关 所以在二层做IP-MAC绑定是无效的。 三层以太网交换机的转发机制主要分为两个部分: 二层转发和三层交换。      先讲二层转发流程。      1、 MAC地址介绍   MA…

【转】胶片曝光时的排版!!!!!!!

这个本来没啥 不是什么算法 绝技。 都不值得一提。 其实这个是医学影像胶片曝光时排版的一个逻辑。 dicom标准第三部分 主要是讲IOD定义 在第166页有这样的描述: 表C.13.5-1图象盒象素描述组件 属性名称 标记       说明 图象位置 (2020,0010)  …

计算机课数学,这4个专业,对数学要求很高,数学不好的慎选!

建筑学专业这个专业就是典型数学课程比较多的专业,如果数学成绩不好,真心建议千万不要选择这个专业,因为学习的课程与大多与数学有关,而且难度较大。像代数,微积分,线性规划,统计学等课程都是在…

架构师之路(5)---IoC框架

1 IoC理论的背景 我们都知道在面向对象的应用中,软件系统都是由N个对象组成的,它们通过彼此的合作,最终实现业务逻辑。 图1:耦合在一起的对象 如果我们打开机械式手表的后盖,就会看到与上面类似的情形,各…

【转】数据库软考笔记(一)第一章 计算机硬件基础知识笔记总结

转自:https://blog.csdn.net/qq_36411874/article/details/115057569 目录 运算器:ALU、AC、DR、PSW 控制器:IR、PC、AR、ID 寄存器组(了解即可) 存储器 存储器与总线(了解,考分类&#xf…

【转】DICOM医学图像处理:开源库mDCM与DCMTK的比較分析(一),JPEG无损压缩DCM图像

转自:https://www.cnblogs.com/mfrbuaa/p/4004114.html 有修订 背景介绍: 近期项目需求,需要使用C#进行最新的UI和相关DICOM3.0医学图像模块的开发。在C语言下,我使用的是应用最广泛的DCMTK开源库,在本专栏的起初阶段…

xfire客户端对返回list很挑剔,所以需要使用泛型。

casldap异常分析 | xfirewebservice(服务器配置篇) 2008-12-31xfirewebservice(客户端调用篇) 服务接口,就是用来调用的,所以客户端显得尤为重要,xfire客户端对返回list很挑剔,所以需要使用泛型。 如何建立webservice client 步骤…

在虚拟机上运行vxWorks

Vxworks是一个嵌入式系统,主要运行在arm、ppc、mips等嵌入式处理器上,它同样可以运行在X86处理器上。风河公司开发的tornado开发环境就 包括了pentium版本,并且发布了相应的bsp。因此我们可在vmware虚拟机上运行vxworks,利用虚拟机…

使用SDL打造游戏世界之入门篇 - 7

打开和显示图片在这个例子里我们将学习如何使用SDL程序中打开和显示图片。示例程序将绘制一个漂亮的背景,上面显示一个正方形图案,并可以使用键盘的方向键移动它。如果比较熟悉“推箱子”这个游戏,可以看出这个程序实际就是推箱子游戏的基础。…

【转】GPS从入门到放弃(一) --- GPS基础原理

转自:https://blog.csdn.net/tyst08/article/details/100529424 GPS从入门到放弃(一) — GPS基础原理 GPS,全称Global Positioning System,已经广泛应用于我们的日常生活中了,现在的智能手机 里都会自带G…

【转】10个推荐的 PACS/DICOM Server开源项目

10个推荐的 PACS/DICOM Server开源项目 转自:https://zhuanlan.zhihu.com/p/65437040 soolaugust 喜欢我的分享可以关注公众号:雨夜随笔 35 人赞同了该文章 本文仅授权给公众号:雨夜随笔, 欢迎关注 本文翻译自:To…

字节序、位序

字节序 字节序,又称端序、尾序,英文单词为Endian,该单词来源于于乔纳森斯威夫特的小说《格列佛游记》,小说中的小人国因为吃鸡蛋的问题而内战,战争开始是由于以下的原因:我们大家都认为,吃鸡蛋前…

怎么抓取屏幕截图计算机考试时间,定时抓屏快照(电脑截屏工具)V4.8 最新版

定时抓屏快照(电脑截屏工具)是一款非常实用的电脑屏幕定时抓拍软件。想定时截取电脑屏幕?定时抓屏快照(电脑截屏工具)轻松帮助用户。马上要放假了,家长一定很担心小孩最新的上网情况,看是在电脑上玩什么,用户通过该软件可以及时了…

【转】matlab函数编译成dll供Cpp调用的方法

转自:https://www.cnblogs.com/vincenzo/archive/2009/09/09/1563467.html 以前做过matlab7与c的混合编程:将m函数编译成dll给C调用,从而加快开发的进度。但是今天在matlab2008b下面又做了一遍,发现matlab又改了很多东西&#xf…

可以测试流放之路伤害的软件,测试平台及细节一览 - 《流放之路》国服硬件需求测试:低配也能续写ARPG传奇 - 超能网...

测试平台、场景说明测试平台测试平台配置主要分为两套,第一套配置为Skylake平台基础搭建的ASUS MAXIMUS VIIIGEN(Z170)主板,处理器为Intel Core i7-6700K,内存是G.Skill Ripjaws V 4GB DDR43200x2组成的双通道;第二套配置为Kaveri…

关于增强(五)-Class Enhancement

Class/Interface增强允许增加, 对已有的方法增加可选参数 添加方法,事件,事件处理 参考接口 对存在的方法添加出口,其中包括方法开始前的出口(Pre-Exit),方法结束快结束的出口(Post-Exit)&#…