协议分析中的TCP/IP网络协议

 TCP/IP协议作为互联网的基础,在协议分析中不可或缺,本文介绍在对协议进行分析还原的过程中的一些要点,快速掌握协议还原的精髓


注意,本文比较枯燥乏味,若非需要了解TCP/IP协议相关信息,建议绕行。


TCP/IP协议是一个网络通信模型,以及一整个网络传输协议家族,是互联网基础协议。 该协议家族的两个核心协议:TCP和IP。


TCP/IP协议模型的四层结构如下图所示:

0?wx_fmt=png


在Wireshark中,一个普通TCP数据报文的链路层对应MAC地址,网络层对应IP地址,传输层对应TCP端口,应用层对应数据体部分。


01


链路层

0?wx_fmt=png


第一层包含源mac及目的mac,随着传输路径的变化会发生变化,在mac之后,是下层网络协议的类型,图中,下层为IP协议。


在协议解析中,需要关注的是图中type这个字段的内容。


02


网络层

0?wx_fmt=png


在TCP/IP协议中,网络层主要内容为IP地址,根据IP头结构进行解析即可获得每项的内容。需要关注的是:

总长度 total length:为整个IP报文,从IP层到整个报文最后的长度。
分片标记 fragment flag:标识是否IP分片,如果IP分片的话要有分片处理过程。

传输层协议 transmission protocol:标记下层使用的协议,如TCP、UDP等,本文中为TCP协议。

源IP source ip:源IP地址。

目的IP destination ip:目的IP地址。


03


传输层

0?wx_fmt=png


传输层协议用来保障传输的过程,对TCP而言,同样根据TCP头结构即可进行解析获得每项的内容。


TCP协议中,需要关注源及目的端口,它们与网络层的源及目的地址构成四元组,同一个数据流,必然拥有相同的四元组,当然,流的上下行,源与目的是按对组织的,在协议解析中,四元组是不可忽略的。


对TCP,使用当前报文序号及响应报文序号来保障协议的可靠性,对协议解析而言,我们需要使用报文序号及响应序号来进行报文排序,即通常说的TCP排序,在解析中,一般而言,单向排序即可解决问题。


当前报文序号即图中的sequence num,响应报文序号即acknowledge number,在同一个方向中sequence num加上传输的data的长度即为下一个报文的sequence num,即图中的next sequence num。另外,序号是相对与一条连接的第一个报文的相对值,两个方向独立编号。


04


应用层


0?wx_fmt=png


应用层就是传输的具体内容,一般而言,就是需要解析的部分了。


对TCP承载的协议还原,切记,TCP排序及根据四元组建立会话会极大地提高解析效率。

0?wx_fmt=jpeg

长按进行关注。






原文地址:https://www.cnblogs.com/protosec/p/11673366.html