加入收藏 | 设为首页 | 会员中心 | 我要投稿 威海站长网 (https://www.0631zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > 建站资源 > 策划 > 正文

你真的懂“抓包”吗?

发布时间:2019-05-16 10:25:25 所属栏目:策划 来源:Yale1024
导读:在平时和其他大佬交流时,总会出现这么些话,抓个包看看就知道哪出问题了,抓流量啊,payload都在里面,这数据流怎么这么奇怪。这里出现的名词,都是差不多的意思吗?packet,frame,flow,session区别是什么,你真的分的清楚吗? 平时关系还不大,这几个名词随
副标题[/!--empirenews.page--]

在平时和其他大佬交流时,总会出现这么些话,“抓个包看看就知道哪出问题了”,“抓流量啊,payload都在里面”,“这数据流怎么这么奇怪”。这里出现的名词,都是差不多的意思吗?packet,frame,flow,session区别是什么,你真的分的清楚吗?

平时关系还不大,这几个名词随便用,大家也都知道指什么,这段时间在分析协议类型的漏洞,终于意识到基础知识的浅薄,才知道自己根本没分清这几个基础概念,看国外一些技术文档不明所以,于是查了大量资料,写出了本文。

你真的懂“抓包”吗?

区分control plane和data plane

你真的懂“抓包”吗?

control plane, data plane是实现网络设备所需要理解的两个基本的概念。data plane一般用于快速转发,而control plane是为快速转发准备必要的信息。control plane包括路由协议,设备管理,命令行,ARP,IGMP等;而data plane一般是转发包。这样的划分,目的是把系统的主要工作和次要工作分离开,避免不同类型的处理相互干扰。在一个网络设备里面,转发无疑是最主要的工作,它具有最高的优先级,而路由协议,由于并不需要在短时间内处理大量的包,所以可以把它放到次一级的优先级里面。data plane可以借助asic或者NP等优化,可以达到很高的速度,而control plane,则可以借助于通用的库,或者系统,以达到更好的保护。

control plane的os和data plane的os,作用完全不同。data plane的os需要实时响应,并且需要更快速,高效的内存管理,队列管理,定时器管理等;而control plane的os则倾向于更好的保护,更简便的编程方式,以及快速移植等。当然,哪些任务放到control plane,哪些任务放到data plane,是需要在实践中去选择。举个例子,由于arp学习和应答的时间是不确定的,而mac learning则是立即生效的。所以arp学习和应答一般放在control plane;而mac learning则放在data plane。

就data plane来说,又可分control path和data path。control path同样是为data path准备必要的信息。有时为了更快的速度,避免control plane和data plane过多的交互,把control plane的某些工作拿到data plane上来做,比如ICMP的应答等。

区分session和flow

你真的懂“抓包”吗?

flow是发送方和接收方之间的数据包中的data plane stream,其共享关键IP报头信息。 例如,10.1.1.1端口12398处的客户端与用于SSH的192.168.1.1端口22处的服务器通信是specific stream,可以在关键字段不更改时捕获该特定stream。

session是发送方和接收方之间的control plane通信。TCP 3次握手创建会话,在发送方的源端口和接收方的目标侦听端口之间建立连接。TCP窗口大小,初始序列和确认值以及keepalive是作为构建session的一部分进行协商的。

简单地说,flow代表了data plane,而session代表了control plane。

区分datagram和stream

你真的懂“抓包”吗?

stream是我们通常认为的通信渠道。比如远程登录,文件传输,邮件传递 ,这个都是使用stream。 Strean就像管道一样。它有两个端点。数据从一端放入,另一端出来。没有任何数据以任何方式被复制,丢弃或重组。两个流可以组合在一起形成全双工连接。

datagram(通常称为packet)本质上更具原子性。它是一小段数据,通常要求小于最大长度(通常在256到2000字节范围内)。datagram是完全自包含的,有源和目的地,但不能被称为connection。数据报与之前或之后的任何其他数据都没有任何关系。

很难理解吗?

我们再打个比方。

stream就像打电话- 一方拨打电话,另一方接听,你们互相打招呼(TCP中的SYN / ACK),然后交换信息。一旦完成,你就说再见(TCP中的FIN / ACK)。 如果一方没有听到再见,他们通常会打电话给另一方,因为这是一个意想不到的事件; 也就是说通常客户端将重新连接到服务器。这样可以保证数据不会以与我们发送的顺序不同的顺序到达,并且可以保证数据不会被损坏。

datagram就像在班级里传小纸条。如果你和想要拿到小纸条的人不坐在一起,这个小纸条将在其他人之间传递过去。小纸条可能无法到达目的地,并且可能会在到达目的地时被修改过。另一种两款,如果将两个小纸条传递给同一个人,两个小纸条可能不会按照我们需要的顺序到达,因为小纸条们通过教室的路线可能不一样,一个人可能不会像另一个那样快速传递小纸条,等等会有很多因素影响到小纸条的传递。

尽管大多数网络通信都使用stream,但所有Internet传输都采用datagram的形式,实际上是通过TCP协议使用datagram来模拟Internet stream。而为了诊断因特网故障,可以使用诸如TCPdump这类packet decoder来查看各个packet。

区别Packet和frame

你真的懂“抓包”吗?

为了简化问题,我们将frame和packet想象为将要从一个人发送到另一个人的信息的信封。 frame和packet之间的关键区别在于它们如何封装信息,而这取决于信息在哪儿被发送。

想象一下,一家公司有跨部门邮件,一个人可以将文档发送给其本地组织中的另一个人。内容放在内部信封中,发送者在“发件人”字段中写下他们的姓名和部门,然后在“收件人”字段中写下收件人的姓名和部门。发送信封时,邮件室识别内部使用信封,读取目的地名称和部门,使用目录将该信息转换为物理位置(办公室)并将其传递给收件人。信封永远不会离开本地组织,信封的所有传递行为都由本地处理。

部门间信封不能发送到公司外部,因为信封上没有邮寄地址。要将内容发送到本地以外的办公室,需要将办公室间信封放在邮政信封内,并贴上适当的邮政地址标签。

(编辑:威海站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读