自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

你真的懂“抓包”嗎?

安全 應(yīng)用安全
在平時(shí)和其他大佬交流時(shí),總會(huì)出現(xiàn)這么些話,“抓個(gè)包看看就知道哪出問(wèn)題了”,“抓流量啊,payload都在里面”,“這數(shù)據(jù)流怎么這么奇怪”。這里出現(xiàn)的名詞,都是差不多的意思嗎?

在平時(shí)和其他大佬交流時(shí),總會(huì)出現(xiàn)這么些話,“抓個(gè)包看看就知道哪出問(wèn)題了”,“抓流量啊,payload都在里面”,“這數(shù)據(jù)流怎么這么奇怪”。這里出現(xiàn)的名詞,都是差不多的意思嗎?packet,frame,flow,session區(qū)別是什么,你真的分的清楚嗎?

平時(shí)關(guān)系還不大,這幾個(gè)名詞隨便用,大家也都知道指什么,這段時(shí)間在分析協(xié)議類(lèi)型的漏洞,終于意識(shí)到基礎(chǔ)知識(shí)的淺薄,才知道自己根本沒(méi)分清這幾個(gè)基礎(chǔ)概念,看國(guó)外一些技術(shù)文檔不明所以,于是查了大量資料,寫(xiě)出了本文。

區(qū)分control plane和data plane

control plane, data plane是實(shí)現(xiàn)網(wǎng)絡(luò)設(shè)備所需要理解的兩個(gè)基本的概念。data plane一般用于快速轉(zhuǎn)發(fā),而control plane是為快速轉(zhuǎn)發(fā)準(zhǔn)備必要的信息。control plane包括路由協(xié)議,設(shè)備管理,命令行,ARP,IGMP等;而data plane一般是轉(zhuǎn)發(fā)包。這樣的劃分,目的是把系統(tǒng)的主要工作和次要工作分離開(kāi),避免不同類(lèi)型的處理相互干擾。在一個(gè)網(wǎng)絡(luò)設(shè)備里面,轉(zhuǎn)發(fā)無(wú)疑是最主要的工作,它具有***的優(yōu)先級(jí),而路由協(xié)議,由于并不需要在短時(shí)間內(nèi)處理大量的包,所以可以把它放到次一級(jí)的優(yōu)先級(jí)里面。data plane可以借助asic或者NP等優(yōu)化,可以達(dá)到很高的速度,而control plane,則可以借助于通用的庫(kù),或者系統(tǒng),以達(dá)到更好的保護(hù)。

control plane的os和data plane的os,作用完全不同。data plane的os需要實(shí)時(shí)響應(yīng),并且需要更快速,高效的內(nèi)存管理,隊(duì)列管理,定時(shí)器管理等;而control plane的os則傾向于更好的保護(hù),更簡(jiǎn)便的編程方式,以及快速移植等。當(dāng)然,哪些任務(wù)放到control plane,哪些任務(wù)放到data plane,是需要在實(shí)踐中去選擇。舉個(gè)例子,由于arp學(xué)習(xí)和應(yīng)答的時(shí)間是不確定的,而mac learning則是立即生效的。所以arp學(xué)習(xí)和應(yīng)答一般放在control plane;而mac learning則放在data plane。

就data plane來(lái)說(shuō),又可分control path和data path。control path同樣是為data path準(zhǔn)備必要的信息。有時(shí)為了更快的速度,避免control plane和data plane過(guò)多的交互,把control plane的某些工作拿到data plane上來(lái)做,比如ICMP的應(yīng)答等。

區(qū)分session和flow

flow是發(fā)送方和接收方之間的數(shù)據(jù)包中的data plane stream,其共享關(guān)鍵IP報(bào)頭信息。 例如,10.1.1.1端口12398處的客戶(hù)端與用于SSH的192.168.1.1端口22處的服務(wù)器通信是specific stream,可以在關(guān)鍵字段不更改時(shí)捕獲該特定stream。

session是發(fā)送方和接收方之間的control plane通信。TCP 3次握手創(chuàng)建會(huì)話,在發(fā)送方的源端口和接收方的目標(biāo)偵聽(tīng)端口之間建立連接。TCP窗口大小,初始序列和確認(rèn)值以及keepalive是作為構(gòu)建session的一部分進(jìn)行協(xié)商的。

簡(jiǎn)單地說(shuō),flow代表了data plane,而session代表了control plane。

區(qū)分datagram和stream

stream是我們通常認(rèn)為的通信渠道。比如遠(yuǎn)程登錄,文件傳輸,郵件傳遞 ,這個(gè)都是使用stream。 Strean就像管道一樣。它有兩個(gè)端點(diǎn)。數(shù)據(jù)從一端放入,另一端出來(lái)。沒(méi)有任何數(shù)據(jù)以任何方式被復(fù)制,丟棄或重組。兩個(gè)流可以組合在一起形成全雙工連接。

datagram(通常稱(chēng)為packet)本質(zhì)上更具原子性。它是一小段數(shù)據(jù),通常要求小于***長(zhǎng)度(通常在256到2000字節(jié)范圍內(nèi))。datagram是完全自包含的,有源和目的地,但不能被稱(chēng)為connection。數(shù)據(jù)報(bào)與之前或之后的任何其他數(shù)據(jù)都沒(méi)有任何關(guān)系。

很難理解嗎?

我們?cè)俅騻€(gè)比方。

stream就像打電話- 一方撥打電話,另一方接聽(tīng),你們互相打招呼(TCP中的SYN / ACK),然后交換信息。一旦完成,你就說(shuō)再見(jiàn)(TCP中的FIN / ACK)。 如果一方?jīng)]有聽(tīng)到再見(jiàn),他們通常會(huì)打電話給另一方,因?yàn)檫@是一個(gè)意想不到的事件; 也就是說(shuō)通常客戶(hù)端將重新連接到服務(wù)器。這樣可以保證數(shù)據(jù)不會(huì)以與我們發(fā)送的順序不同的順序到達(dá),并且可以保證數(shù)據(jù)不會(huì)被損壞。

datagram就像在班級(jí)里傳小紙條。如果你和想要拿到小紙條的人不坐在一起,這個(gè)小紙條將在其他人之間傳遞過(guò)去。小紙條可能無(wú)法到達(dá)目的地,并且可能會(huì)在到達(dá)目的地時(shí)被修改過(guò)。另一種兩款,如果將兩個(gè)小紙條傳遞給同一個(gè)人,兩個(gè)小紙條可能不會(huì)按照我們需要的順序到達(dá),因?yàn)樾〖垪l們通過(guò)教室的路線可能不一樣,一個(gè)人可能不會(huì)像另一個(gè)那樣快速傳遞小紙條,等等會(huì)有很多因素影響到小紙條的傳遞。

盡管大多數(shù)網(wǎng)絡(luò)通信都使用stream,但所有Internet傳輸都采用datagram的形式,實(shí)際上是通過(guò)TCP協(xié)議使用datagram來(lái)模擬Internet stream。而為了診斷因特網(wǎng)故障,可以使用諸如TCPdump這類(lèi)packet decoder來(lái)查看各個(gè)packet。

區(qū)別Packet和frame

為了簡(jiǎn)化問(wèn)題,我們將frame和packet想象為將要從一個(gè)人發(fā)送到另一個(gè)人的信息的信封。 frame和packet之間的關(guān)鍵區(qū)別在于它們?nèi)绾畏庋b信息,而這取決于信息在哪兒被發(fā)送。

想象一下,一家公司有跨部門(mén)郵件,一個(gè)人可以將文檔發(fā)送給其本地組織中的另一個(gè)人。內(nèi)容放在內(nèi)部信封中,發(fā)送者在“發(fā)件人”字段中寫(xiě)下他們的姓名和部門(mén),然后在“收件人”字段中寫(xiě)下收件人的姓名和部門(mén)。發(fā)送信封時(shí),郵件室識(shí)別內(nèi)部使用信封,讀取目的地名稱(chēng)和部門(mén),使用目錄將該信息轉(zhuǎn)換為物理位置(辦公室)并將其傳遞給收件人。信封永遠(yuǎn)不會(huì)離開(kāi)本地組織,信封的所有傳遞行為都由本地處理。

部門(mén)間信封不能發(fā)送到公司外部,因?yàn)樾欧馍蠜](méi)有郵寄地址。要將內(nèi)容發(fā)送到本地以外的辦公室,需要將辦公室間信封放在郵政信封內(nèi),并貼上適當(dāng)?shù)泥]政地址標(biāo)簽。

Frame以類(lèi)似的方式工作。 它是具有源和目標(biāo)地址的數(shù)據(jù)的容器,用于在同一網(wǎng)絡(luò)上的兩個(gè)位置之間傳遞稱(chēng)為payload的信息。Frame的源和目標(biāo)地址不是名稱(chēng)和部門(mén),而是計(jì)算機(jī),平板電腦,IP電話,物聯(lián)網(wǎng)設(shè)備等的MAC地址,這是每個(gè)以太網(wǎng)設(shè)備在這個(gè)世界上唯一的ID號(hào)。

frame由網(wǎng)絡(luò)接口設(shè)備在TCP/IP協(xié)議棧的第2層生成,payload大小取決于傳輸?shù)臄?shù)據(jù)類(lèi)型。frame被發(fā)送到網(wǎng)絡(luò)上,以太網(wǎng)交換機(jī)根據(jù)其存儲(chǔ)器中的MAC表檢查frame的目的地址。MAC表告訴交換機(jī)哪個(gè)物理端口(RJ45端口)與設(shè)備相關(guān)聯(lián),該設(shè)備的MAC地址與幀的目的地址相匹配。

交換機(jī)將frame轉(zhuǎn)發(fā)到由MAC表確定的物理端口。如果電纜直接連接到目的設(shè)備,傳輸就完成了。如果電纜連接到另一臺(tái)交換機(jī),下一臺(tái)交換機(jī)將重復(fù)查找和轉(zhuǎn)發(fā)過(guò)程,直到frame到達(dá)預(yù)期目的地。

這一切都發(fā)生在LAN中的第2層交換機(jī)上。與部門(mén)間郵件一樣,frame不能在本地/專(zhuān)用網(wǎng)絡(luò)之外發(fā)送到因特網(wǎng)上,因?yàn)樗鼪](méi)有正確的地址。要將數(shù)據(jù)發(fā)送到不同網(wǎng)絡(luò)或互聯(lián)網(wǎng)服務(wù)器上的設(shè)備,必須在packet中構(gòu)建一個(gè)frame。

很像部門(mén)間信封需要放在郵政信封內(nèi)發(fā)送到不同的辦公室的例子,Ethernet frame用附加信息封裝,以創(chuàng)建一個(gè)IPpacket。

雖然網(wǎng)絡(luò)設(shè)備的MAC地址是唯一,***的,但I(xiàn)P地址通常會(huì)臨時(shí)分配給網(wǎng)絡(luò)設(shè)備,并隨著設(shè)備連接到不同的網(wǎng)絡(luò)而改變。例如,平板電腦每次連接到不同的無(wú)線網(wǎng)絡(luò)時(shí),其IP地址都會(huì)發(fā)生變化。packet在網(wǎng)絡(luò)的第3層創(chuàng)建,允許不同局域網(wǎng)之間交換信息,通常是通過(guò)路由器。路由器將小型網(wǎng)絡(luò)互連在一起,允許使用IP地址而不是MAC地址進(jìn)行更大規(guī)模的信息交換。

第3層packet允許路由器使用標(biāo)識(shí)網(wǎng)絡(luò)的IP地址和網(wǎng)絡(luò)上設(shè)備的臨時(shí)地址來(lái)提供網(wǎng)絡(luò)間的數(shù)據(jù)傳輸(互聯(lián)網(wǎng))。一旦進(jìn)入網(wǎng)絡(luò),網(wǎng)絡(luò)內(nèi)(局域網(wǎng))數(shù)據(jù)轉(zhuǎn)發(fā)由二層交換機(jī)處理,它讀取frame的MAC地址,并將其轉(zhuǎn)發(fā)到目的設(shè)備,在那里以太網(wǎng)控制器提取payload,完成不同網(wǎng)絡(luò)上設(shè)備之間的信息傳輸過(guò)程。

區(qū)分packet capture和flow capture(抓包和抓流量)

Packet capture可以讓我們?cè)诰W(wǎng)絡(luò)數(shù)據(jù)包通過(guò)網(wǎng)絡(luò)時(shí)拿到鏡像。而flow data通常包含在網(wǎng)絡(luò)上設(shè)置的連接的摘要。它們都是非常有用的故障排除技術(shù),可以找出網(wǎng)絡(luò)上發(fā)生的故障。那么這兩種技術(shù)有什么區(qū)別呢?

Flow capture:在OSI模型的第3層運(yùn)行的大多數(shù)路由器和交換機(jī)都具有flow導(dǎo)出選項(xiàng)。有許多flow標(biāo)準(zhǔn),包括NetFlow,sFlow和IPFIX。 只需安裝一個(gè)flow連接器,它可以處理網(wǎng)絡(luò)設(shè)備使用的任何flow標(biāo)準(zhǔn)?;趂low的分析可以很好地找出網(wǎng)絡(luò)中某些部分的通信狀況。它的優(yōu)點(diǎn)是:

  • 易于在第3層設(shè)備上設(shè)置操作;
  • 不需要布線;終端用戶(hù)系統(tǒng)不需要軟件客戶(hù)端或代理。

缺點(diǎn)是:

  • 某些交換機(jī)上沒(méi)有flow選項(xiàng);
  • 想要解決問(wèn)題時(shí)缺少詳細(xì)信息;
  • 當(dāng)應(yīng)用程序依賴(lài)其他協(xié)議時(shí),不適合在網(wǎng)絡(luò)邊緣進(jìn)行監(jiān)控

Packet capture: 抓包能夠捕獲在網(wǎng)絡(luò)中傳輸?shù)木W(wǎng)絡(luò)數(shù)據(jù)包的鏡像。大多數(shù)交換機(jī)允許在不影響網(wǎng)絡(luò)性能的情況下設(shè)置鏡像端口。通常,深度數(shù)據(jù)包檢測(cè)(DPI)應(yīng)用程序連接到鏡像端口,并從數(shù)據(jù)包中提取某些信息,以便我們可以發(fā)現(xiàn)網(wǎng)絡(luò)上發(fā)生了什么。優(yōu)點(diǎn)是:

  • 更好地分析應(yīng)用程序和用戶(hù)行為,非常適合監(jiān)控重要應(yīng)用程序,服務(wù)器或至關(guān)重要的Internet連接;
  • 會(huì)得到更多的信息,如應(yīng)用程序,文件,網(wǎng)站和主機(jī)名;
  • 終端用戶(hù)系統(tǒng)上不需要軟件客戶(hù)端或代理。

缺點(diǎn)是:

  • 需要在鏡像端口和DPI應(yīng)用程序之間連接物理線路;
  • 需要確保鏡像端口在繁忙的網(wǎng)絡(luò)上不會(huì)過(guò)載。

在不清楚區(qū)別之前,我們可能會(huì)將兩者混為一談,現(xiàn)在應(yīng)該已經(jīng)明確區(qū)別了。那我們應(yīng)該使用哪種技術(shù)?在一般情況下,兩者都需要用到。如果有大量的WAN鏈接并且需要一種簡(jiǎn)單的方法來(lái)獲得***程度的可見(jiàn)性,抓流量可能更好。而抓包可以為我們提供網(wǎng)絡(luò)上某些節(jié)點(diǎn)的更多詳細(xì)信息。兩者的結(jié)合意味著我們可以更輕松地檢測(cè)諸如帶寬占用,以及查看正在使用的應(yīng)用程序等情況。

結(jié)語(yǔ)

需要區(qū)分的點(diǎn)都很多,我在文中已經(jīng)比較好的安排,一步步引出來(lái),從control plane,data plane的區(qū)別開(kāi)始討論,因?yàn)檫@是區(qū)分0×03 flow和session的基礎(chǔ),在0×03中提到了stream的概念,于是在0×04中討論stream和datagram的區(qū)別,在0×04***提到了用于解碼分析packet的tcpdump,引出了packet,于是自然在0×05中討論packet和frame。以上基礎(chǔ)概念和去都明確之后,***討論了抓包(packet capture)和抓流量(flow capture)的區(qū)別及各自?xún)?yōu)缺點(diǎn)。

大部分做安全的小伙伴應(yīng)該都不是網(wǎng)絡(luò)工程出身,所以本文或多或少還是有些參考價(jià)值的。希望各位師傅能從中獲益。

責(zé)任編輯:趙寧寧 來(lái)源: Freebuf
相關(guān)推薦

2021-01-22 07:48:07

JavaScript 高階函數(shù)閉包

2019-10-18 09:50:47

網(wǎng)絡(luò)分層模型網(wǎng)絡(luò)協(xié)議

2023-11-29 08:03:05

2019-09-15 10:38:28

網(wǎng)絡(luò)分層模型

2021-08-30 15:41:13

Kafka運(yùn)維數(shù)據(jù)

2017-11-07 12:35:53

比特幣區(qū)塊鏈虛擬貨幣

2020-03-29 08:27:05

Promise異步編程前端

2021-09-06 10:42:18

Linux命令服務(wù)器

2021-04-07 19:44:27

JavaStringHashMap

2018-07-17 16:26:17

大數(shù)據(jù)營(yíng)銷(xiāo)消費(fèi)者

2016-01-07 11:18:50

用戶(hù)畫(huà)像

2017-05-31 08:45:03

2017-06-27 13:50:37

數(shù)據(jù)分析Session

2017-08-07 08:32:58

泄密網(wǎng)盤(pán)存儲(chǔ)

2021-11-08 10:00:19

require前端模塊

2021-07-21 10:10:14

require前端代碼

2024-10-16 17:10:41

2023-09-17 22:46:50

2016-06-01 15:42:58

Hadoop數(shù)據(jù)管理分布式

2020-04-17 14:25:22

Kubernetes應(yīng)用程序軟件開(kāi)發(fā)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)