實際應用中,TCP IP協議棧是如何工作的?

時間 2021-05-11 17:53:51

1樓:清風竹影

看了一下目前的幾個回答, 作為乙個自以為在這方面理解比較深的,從原理和自身的理解來直觀的問答一下:

問題一:協議棧是分層的

對於流程分析基本是對的,但是原理還是有很大偏差。

協議棧分層應該大家都知道,但是怎麼理解呢?

傳送HTTP請求,應用層會向TCP層傳送資料報文。TCP層看到的是資料,它是根據自己的機制來依次傳送報文的。你說的分段應該是把MSS搞混了,TCP是面向位元組流的,不存在分片;然而它每次發包會參考MSS,以MSS作為單位來傳送報文,這只是底層協議的MTU。

接收HTTP請求,應用層會去TCP層讀書資料報文,將TCP層中的資料組合成HTTP協議報文,這是和TCP層沒有關係的。

所以,HTTP請求過大,跟TCP沒關係的。HTTP傳送過大的包,那就需要HTTP程序不停的向TCP協議棧發包,直到發完;(而不是把報文丟給TCP,TCP自己去拆包),接收同理。在高併發程式設計中,傳送和接收,在微觀層面基本決定了網路事件庫的效能。

問題二:抓包工具是抓的網絡卡資料報

網絡卡的資料報,這就是3層以上協議報文(IP層以上)。如果只有兩層協議,直接能查到對方的MAC位址的。

而至於抓取的報文怎麼過濾,那是看過濾條件怎麼設定。

題外話,對於車小胖的「wireshark內部如何實現,除了核心開發人員,沒有人可以知道細節」

抓包工具,抓包沒有什麼原理的,就是把網絡卡上的資料流按照你的抓取條件copy過來(這就是抓包條件和你直接抓網絡卡在wireshark中過濾,抓的報文是不一樣的)。wireshark主要是有協議解析,流量分析這些東西的。

比如你在window上設定了一下網絡卡的功能(分擔組包),你可以看到發給網絡卡的包有些細節並不符合TCP協議。

至於說向本機傳送報文,這不應該去糾結驅動和資料鏈路層。

網路都是全雙工的,IP層有傳送邏輯和接收邏輯。通常的傳送報文中,IP層根據ARP查到目的位址,傳送邏輯將報文傳送到對方的接收邏輯中。而本地通訊,查到的目的位址是本機,可以直接交付給本地IP層接收邏輯。

2樓:

1、TCP 協議要理解為乙個雙向流,有粘包和拆包的問題。也就是說,有可能客戶端多次寫少量資料,作業系統合併成乙個包發出去,也可能客戶端寫一次大量資料,作業系統拆成多個包發出去。接收方收到 TCP 資料報的時候,並不會按照傳送方每次寫資料的量進行合併,只會把資料一段一段地交給瀏覽器,由瀏覽器根據 HTTP 協議的約定來判斷資料的邊界。

炮打TCP - 關於一而再再而三的粘包拆包問題的大字報

2、wireshark 一般是通過 pcap 庫捕包的,這個問題其實是 pcap 庫的問題。pcap 庫預設是從鏈路層資料開始抓的,所以在真實網絡卡上可以抓到 arp 、 stp 等二層協議的資料報。你抓的是虛擬網絡卡上的資料報,可能會比真實網絡卡少一些型別。

如何看待吃虧是福的實際應用?

石姬娘娘 是虧是福分情況吧。但是當下吃虧時,的確是吃虧了。這個福,對當時吃了虧的人來說,不過是乙個自我安慰和對未來的虛擬投資罷了。硬要說吃虧時能看得見的福,那就是積攢了乙個經驗,下次遇見這個 虧 能繞道走,不會傻愣愣地再去 吃 一次。當然,你很可能也會吃一次,因為這個世界變幻莫測哈哈哈哈哈哈!至於福...

OSPF實際應用中是用在區域網還是廣域網?

frx2003 OSPF是IGP協議,自然不可能部署到廣域網上,你碰不到OSPF那是的大部分公司用不上,因為用到OSPF的話公司的網路理論上是很大的。 陳老師 從區域網和廣域網的基本概念就可以很清楚,區域網的範圍小,廣域網的範圍大,那麼OSPF時一直IGP協議,通過路由器之間相互通告介面的狀態來建立...

你是如何在實際工作中開展審計工作的?

羅坤 根據不同行業,對資產負債表的結構要有個分析,比如高階Golf球會所,那麼就不應該有應收賬款,但應該有很大的預收款,因為高階會所大部分是會員制,預收會員費。再比如,房地產開發企業,期末應該有大量存貨,同時存在大量利息費用資本化的情況。如果實際情況與預期不符,就應該對公司經營情況保持懷疑。總而言之...