tft每日頭條

 > 生活

 > 抓包是幹嘛的

抓包是幹嘛的

生活 更新时间:2024-09-08 19:18:17

在平時和其他大佬交流時,總會出現這麼些話,“抓個包看看就知道哪出問題了”,“抓流量啊,payload都在裡面”,“這數據流怎麼這麼奇怪”。這裡出現的名詞,都是差不多的意思嗎?pACKet,frame,flow,session區别是什麼,你真的分的清楚嗎?

平時關系還不大,這幾個名詞随便用,大家也都知道指什麼,這段時間在分析協議類型的漏洞,終于意識到基礎知識的淺薄,才知道自己根本沒分清這幾個基礎概念,看國外一些技術文檔不明所以,于是查了大量資料,寫出了本文。

抓包是幹嘛的(你真的懂抓包嗎)1

區分control plane和data plane

抓包是幹嘛的(你真的懂抓包嗎)2

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

抓包是幹嘛的(你真的懂抓包嗎)3

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

抓包是幹嘛的(你真的懂抓包嗎)4

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

抓包是幹嘛的(你真的懂抓包嗎)5

為了簡化問題,我們将frame和packet想象為将要從一個人發送到另一個人的信息的信封。 frame和packet之間的關鍵區别在于它們如何封裝信息,而這取決于信息在哪兒被發送。

想象一下,一家公司有跨部門郵件,一個人可以将文檔發送給其本地組織中的另一個人。内容放在内部信封中,發送者在“發件人”字段中寫下他們的姓名和部門,然後在“收件人”字段中寫下收件人的姓名和部門。發送信封時,郵件室識别内部使用信封,讀取目的地名稱和部門,使用目錄将該信息轉換為物理位置(辦公室)并将其傳遞給收件人。信封永遠不會離開本地組織,信封的所有傳遞行為都由本地處理。

部門間信封不能發送到公司外部,因為信封上沒有郵寄地址。要将内容發送到本地以外的辦公室,需要将辦公室間信封放在郵政信封内,并貼上适當的郵政地址标簽。

Frame以類似的方式工作。 它是具有源和目标地址的數據的容器,用于在同一網絡上的兩個位置之間傳遞稱為payload的信息。Frame的源和目标地址不是名稱和部門,而是計算機,平闆電腦,IP電話,物聯網設備等的MAC地址,這是每個以太網設備在這個世界上唯一的ID号。

frame由網絡接口設備在TCP/IP協議棧的第2層生成,payload大小取決于傳輸的數據類型。frame被發送到網絡上,以太網交換機根據其存儲器中的MAC表檢查frame的目的地址。MAC表告訴交換機哪個物理端口(RJ45端口)與設備相關聯,該設備的MAC地址與幀的目的地址相匹配。

交換機将frame轉發到由MAC表确定的物理端口。如果電纜直接連接到目的設備,傳輸就完成了。如果電纜連接到另一台交換機,下一台交換機将重複查找和轉發過程,直到frame到達預期目的地。

這一切都發生在LAN中的第2層交換機上。與部門間郵件一樣,frame不能在本地/專用網絡之外發送到因特網上,因為它沒有正确的地址。要将數據發送到不同網絡或互聯網服務器上的設備,必須在packet中構建一個frame。

很像部門間信封需要放在郵政信封内發送到不同的辦公室的例子,Ethernet frame用附加信息封裝,以創建一個IPpacket。

雖然網絡設備的MAC地址是唯一,永久的,但IP地址通常會臨時分配給網絡設備,并随着設備連接到不同的網絡而改變。例如,平闆電腦每次連接到不同的無線網絡時,其IP地址都會發生變化。packet在網絡的第3層創建,允許不同局域網之間交換信息,通常是通過路由器。路由器将小型網絡互連在一起,允許使用IP地址而不是MAC地址進行更大規模的信息交換。

第3層packet允許路由器使用标識網絡的IP地址和網絡上設備的臨時地址來提供網絡間的數據傳輸(互聯網)。一旦進入網絡,網絡内(局域網)數據轉發由二層交換機處理,它讀取frame的MAC地址,并将其轉發到目的設備,在那裡以太網控制器提取payload,完成不同網絡上設備之間的信息傳輸過程。

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

抓包是幹嘛的(你真的懂抓包嗎)6

Packet capture可以讓我們在網絡數據包通過網絡時拿到鏡像。而flow data通常包含在網絡上設置的連接的摘要。它們都是非常有用的故障排除技術,可以找出網絡上發生的故障。那麼這兩種技術有什麼區别呢?

Flow capture:在OSI模型的第3層運行的大多數路由器和交換機都具有flow導出選項。有許多flow标準,包括NetFlow,sFlow和IPFIX。 隻需安裝一個flow連接器,它可以處理網絡設備使用的任何flow标準。基于flow的分析可以很好地找出網絡中某些部分的通信狀況。它的優點是:

  • 易于在第3層設備上設置操作;
  • 不需要布線;終端用戶系統不需要軟件客戶端或代理。

缺點是:

  • 某些交換機上沒有flow選項;
  • 想要解決問題時缺少詳細信息;
  • 當應用程序依賴其他協議時,不适合在網絡邊緣進行監控

Packet capture: 抓包能夠捕獲在網絡中傳輸的網絡數據包的鏡像。大多數交換機允許在不影響網絡性能的情況下設置鏡像端口。通常,深度數據包檢測(DPI)應用程序連接到鏡像端口,并從數據包中提取某些信息,以便我們可以發現網絡上發生了什麼。優點是:

  • 更好地分析應用程序和用戶行為,非常适合監控重要應用程序,服務器或至關重要的Internet連接;
  • 會得到更多的信息,如應用程序,文件,網站和主機名;
  • 終端用戶系統上不需要軟件客戶端或代理。

缺點是:

  • 需要在鏡像端口和DPI應用程序之間連接物理線路;
  • 需要确保鏡像端口在繁忙的網絡上不會過載。

在不清楚區别之前,我們可能會将兩者混為一談,現在應該已經明确區别了。那我們應該使用哪種技術?在一般情況下,兩者都需要用到。如果有大量的WAN鍊接并且需要一種簡單的方法來獲得最大程度的可見性,抓流量可能更好。而抓包可以為我們提供網絡上某些節點的更多詳細信息。兩者的結合意味着我們可以更輕松地檢測諸如帶寬占用,以及查看正在使用的應用程序等情況。

結語

需要區分的點都很多,我在文中已經比較好的安排,一步步引出來,從control plane,data plane的區别開始讨論,因為這是區分0×03 flow和session的基礎,在0×03中提到了stream的概念,于是在0×04中讨論stream和datagram的區别,在0×04最後提到了用于解碼分析packet的tcpdump,引出了packet,于是自然在0×05中讨論packet和frame。以上基礎概念和去都明确之後,最後讨論了抓包(packet capture)和抓流量(flow capture)的區别及各自優缺點。

大部分做安全的小夥伴應該都不是網絡工程出身,所以本文或多或少還是有些參考價值的。希望各位師傅能從中獲益。

作者:Yale1024 來源:Freebuf

天下數據與全球近120多個國家頂級機房直接合作,提供包括香港、美國、韓國、日本、台灣、新加坡、荷蘭、法國、英國、德國、埃及、南非、巴西、印度、越南等國家和地區的服務器、雲服務器的租用服務,需要的請聯系天下數據客服!

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved