当前位置: 首页 > 科技观察

你真的了解“抢包”吗?

时间:2023-03-14 00:49:40 科技观察

跟其他大佬交流的时候,总会出现这样的话,“抓个包看看有什么问题”,“抓流量,payload在里面”,“这个数据流怎么这么奇葩”。这里出现的名词有没有相似的意思?数据包、帧、流和会话之间有什么区别?你真的知道区别吗?通常,这并不重要。随便用这些名词,大家就知道是什么意思了,这段时间在分析协议类型的漏洞,终于意识到基础知识的浅薄,才发现自己根本没有分清这些基本概念.国外的一些技术文档看不懂,所以查了很多资料,写了这篇文章。区分控制平面和数据平面控制平面、数据平面是实现网络设备需要了解的两个基本概念。数据平面一般用于快速转发,而控制平面为快速转发准备必要的信息。控制平面包括路由协议、设备管理、命令行、ARP、IGMP等;而数据平面通常转发数据包。这样划分的目的是为了将系统的主要工作和次要工作分开,避免不同类型的处理相互干扰。在一个网络设备中,转发无疑是最重要的工作,它的优先级最高,而路由协议,因为不需要在短时间内处理大量的数据包,所以可以放在优先级内的下一个级别。数据平面可以借助asic或NP优化实现高速,而控制平面可以使用通用库或系统来实现更好的保护。控制平面的os和数据平面的os有着完全不同的功能。数据平面的OS需要实时响应,需要更快更高效的内存管理、队列管理、定时器管理等;而控制平面的操作系统往往具有更好的保护、更容易的编程和快速的移植。当然,哪些任务放在控制平面,哪些任务放在数据平面,需要在实践中选择。比如arp学习应答时间不确定,mac学习立即生效。所以arp的学习和响应一般都放在控制平面上;而mac学习则放在数据平面上。就数据平面而言,可以分为控制通路和数据通路。控制路径还为数据路径准备必要的信息。有时为了提高速度,避免控制平面和数据平面交互过多,控制平面的一些任务在数据平面上进行,比如ICMP响应。会话和流之间的区别在于发送方和接收方之间数据包中的数据平面流,它们共享关键的IP标头信息。例如10.1.1.112398端口的客户端与192.168.1.122端口的服务器进行SSH通信是一个特定的流,在关键字段没有变化的情况下可以捕获。会话是发送方和接收方之间的控制平面通信。TCP3次握手创建一个会话,在发送方的源端口和接收方的目标侦听端口之间建立连接。TCP窗口大小、初始序列和确认值以及保活作为构建会话的一部分进行协商。简单的说,flow代表数据平面,session代表控制平面。datagram和streamstream的区别就是我们通常认为的通信通道。比如远程登录、文件传输、邮件投递都用到了stream。Strean就像一根烟斗。它有两个端点。数据从一端进入,从另一端出来。不会以任何方式复制、丢弃或重组任何数据。可以组合两个流以形成全双工连接。数据报(通常称为数据包)在本质上更具原子性。它是一小段数据,通常要求小于最大长度(通常在256到2000字节范围内)。数据报是完全自包含的,有源和目的地,但不能称为连接。数据报与它之前或之后的任何其他数据都没有关系。很难理解吗?让我们用另一个类比。流媒体就像打电话——一方打电话,另一方接听,你们互相问候(TCP中的SYN/ACK),然后交换信息。一旦完成,你就说再见(TCP中的FIN/ACK)。如果一方没有听到再见,他们通常会打电话给另一方,因为这是一个意外事件;这通常是客户端将重新连接到服务器。这保证了数据不会以与我们发送的顺序不同的顺序到达,并且数据不会被破坏。数据报就像在课堂上传递小纸条。如果您不与想要纸条的人坐在一起,纸条将在其他人之间传递。小纸币可能无法到达目的地,并且可能会在到达时被更改。另外两个,如果两张小纸条传给同一个人,两张小纸条可能不会按照我们需要的顺序到达,因为小纸条通过教室的路线可能不同,一个人不一定会传纸条和另一个一样快等等。影响单子通过的因素有很多。虽然大多数网络通信使用流,但是所有的互联网传输都是以数据报的形式进行的,它实际上是通过TCP协议使用数据报来模拟互联网流。为了诊断Internet故障,您可以使用数据包解码器(例如TCPdump)来查看单个数据包。区分数据包和帧为了简化问题,我们将帧和数据包想象成要从一个人发送到另一个人的信息信封。帧和数据包之间的主要区别在于它们封装信息的方式,这取决于信息发送的位置。想象一家拥有跨部门邮件的公司,其中一个人可以将文件发送给当地组织中的另一个人。内容放在内层信封中,寄件人在“发件人”栏写上自己的姓名和部门,然后在“收件人”栏写上收件人的姓名和部门。发送信封时,收发室识别正在使用的信封,读取目的地名称和部门,使用目录将该信息转换为物理位置(办公室)并将其交付给收件人。信封从不离开本地组织,所??有信封的交付都在本地处理。跨部门的信封不能寄到公司外,因为信封上没有邮寄地址。要将内容发送到您所在区域以外的办公室,需要将办公室间信封放在邮政信封内,并贴上适当的邮政地址标签。框架以类似的方式工作。它是具有源地址和目标地址的数据容器,用于在同一网络上的两个位置之间传递称为有效载荷的信息。Frame的源地址和目的地址不是名字和部门,而是电脑、平板、IP电话、物联网设备等的MAC地址,是每个以太网设备在这个世界上唯一的ID号。该帧由TCP/IP协议栈第2层的网络接口设备生成,有效负载大小取决于传输的数据类型。帧被发送到网络,以太网交换机根据其内存中的MAC表检查帧的目标地址。MAC表告诉交换机哪个物理端口(RJ45端口)与MAC地址与帧的目标地址相匹配的设备相关联。交换机将帧转发到MAC表确定的物理端口。如果电缆直接连接到目标设备,则传输完成。如果电缆连接到另一个交换机,下一个交换机将重复查找和转发过程,直到帧到达其预定目的地。这一切都发生在LAN中的第2层交换机上。像跨部门邮件一样,一个帧不能发送到本地/专用网络之外的Internet,因为它没有正确的地址。要将数据发送到不同网络或Internet服务器上的设备,必须在数据包中构建一个帧。与需要在邮政信封中发送到不同办公室的跨部门信封示例非常相似,以太网帧封装了附加信息以创建IP数据包。虽然网络设备的MAC地址是唯一且唯一的,但IP地址通常是临时分配给网络设备的,并随着设备连接到不同的网络而变化。例如,平板电脑的IP地址在每次连接到不同的无线网络时都会发生变化。数据包在网络的第3层创建,允许信息在不同的LAN之间交换,通常是通过路由器。路由器将小型网络互连在一起,允许使用IP地址而不是MAC地址进行更大规模的信息交换。第3层数据包允许路由器使用标识网络的IP地址和网络上设备的临时地址在网络(Internet)之间提供数据传输。一旦进入网络,网络(LAN)内的数据转发由第2层交换机处理,它读取帧的MAC地址并将其转发到目标设备,以太网控制器在目标设备中提取有效载荷并完成设备之间的通信在不同网络上的信息传递过程。区分抓包和流量抓包(Packetcaptureandtrafficcapture)抓包可以让我们得到网络数据包经过网络时的图像。而流数据通常包含在网络上建立的连接的摘要。它们都是非常有用的故障排除技术,可用于找出网络上出现的问题。那么这两种技术有什么区别呢?流量捕获:大多数在OSI模型第3层运行的路由器和交换机都有流量导出选项。流标准有很多,包括NetFlow、sFlow和IPFIX。只需安装一个流量连接器,它就可以处理您的网络设备使用的任何流量标准。基于流的分析可以很好地找出网络某些部分的通信状态。其优点是:易于设置在第3层设备上运行;无需接线;最终用户系统不需要软件客户端或代理。缺点是:有些交换机没有流量选项;尝试解决问题时缺乏详细信息;当应用程序依赖于其他协议镜像时,不适合在网络边缘进行监控。大多数交换机都允许在不影响网络性能的情况下设置镜像端口。通常,深度数据包检测(DPI)应用程序连接到镜像端口并从数据包中提取某些信息,以便我们可以发现网络上发生的情况。优点是:更好地分析应用程序和用户行为,非常适合监控重要的应用程序、服务器或重要的互联网连接;将获得更多信息,例如应用程序、文件、网站和主机名;最终用户系统服务器上不需要软件客户端或代理。缺点是:需要在镜像端口和DPI应用程序之间运行物理线路;需要确保镜像端口在繁忙的网络上没有过载。在区分不明确之前我们可能会混淆两者,但现在区分应该很清楚了。那么我们应该使用哪种技术呢?一般来说,两者都会用到。如果您有大量的WAN链接并且需要一种简单的方法来获得最大的可见性,那么流量抓取可能会更好。数据包捕获可以为我们提供有关网络上某些节点的更详细信息。两者的结合意味着我们可以更轻松地检测带宽占用等情况并查看正在使用的应用程序。结语需要区分的点很多。我在文章中做了很好的安排,一步步介绍。我开始讨论控制平面和数据平面的区别,因为这是区分0×03流和会话的基础。在0×03中提到了stream的概念,所以在0×04中讨论了stream和datagram的区别,在0×04***中提到了解码分析packet的tcpdump,引出了packet,所以讨论0×05和帧中的数据包是很自然的。在明确了以上的基本概念和方向之后,***讨论抓包和流抓包的区别以及各自的优缺点。大部分做安全的小伙伴应该不是网络工程出身的,所以这篇文章或多或少有参考价值。希望你们能从中受益。