tcp/ip協議棧是一系列網路協議的總和,是構成網路通訊的核心骨架,它定義了電子裝置如何連入網際網路,以及資料如何在它們之間進行傳輸。tcp/ip協議採用4層結構,分別是應用層、傳輸層、網路層和鏈路層,每一層都呼叫它的下一層所提供的協議來完成自己的需求。
tcp/ip協議基本框架:
當通過http發起乙個請求時,應用層、傳輸層、網路層和鏈路層的相關協議依次對該請求進行包裝並攜帶對應的首部,最終在鏈路層生成乙太網資料報,乙太網資料報通過物理介質傳輸給對方主機,對方接收到資料報以後,然後再一層一層採用對應的協議進行拆包,最後把應用層資料交給應用程式處理。
網路通訊就好比送快遞,商品外面的一層層包裹就是各種協議,協議包含了商品資訊、收貨位址、收件人、****等,然後還需要配送車、配送站、快遞員,商品才能最終到達使用者手中。
arp首先會發起乙個請求資料報,資料報的首部包含了目標主機的ip位址,然後這個資料報會在鏈路層進行再次包裝,生成乙太網資料報,最終由乙太網廣播給子網內的所有主機,每一台主機都會接收到這個資料報,並取出標頭里的ip位址,然後和自己的ip位址進行比較,如果相同就返回自己的mac位址,如果不同就丟棄該資料報。arp接收返回訊息,以此確定目標機的mac位址;與此同時,arp還會將返回的mac位址與對應的ip位址存入本機arp快取中並保留一定時間,下次請求時直接查詢arp快取以節約資源。cmd輸入arp-a就可以查詢本機快取的arp資料。
首先我們梳理一下每層模型的職責:
網路層:定義ip位址,確認主機所在的網路位置,並通過ip進行mac定址,對外網資料報進行路由**;
傳輸層:定義埠,確認主機上應用程式的身份,並將資料報交給對應的應用程式;
應用層:定義資料格式,並按照對應的格式解讀資料。
然後再把每層模型的職責串聯起來,用一句通俗易懂的話講就是:
當你輸入乙個**並按下回車鍵的時候,首先,應用層協議對該請求包做了格式定義;緊接著傳輸層協議加上了雙方的埠號,確認了雙方通訊的應用程式;然後網路協議加上了雙方的ip位址,確認了雙方的網路位置;最後鏈路層協議加上了雙方的mac位址,確認了雙方的物理位置,同時將資料進行分組,形成資料幀,採用廣播方式,通過傳輸介質傳送給對方主機。而對於不同網段,該資料報首先會**給閘道器路由器,經過多次**後,最終被傳送到目標主機。目標機接收到資料報後,採用對應的協議,對幀資料進行組裝,然後再通過一層一層的協議進行解析,最終被應用層的協議解析並交給伺服器處理。
tcp/ip 協議棧
網際網路協議入門
TCP IP程式設計學習筆記(1)
使用tcp ip協議的應用程式通常採用應用程式設計介面 unix bsd 的套接字 socket socket即是一種特殊的檔案,一些 socket 函式就是對其進行的操作 讀 寫 io 開啟 關閉 include定義與socket有關的巨集和函式 include定義新型別 include不同的服務...
TCP IP網路程式設計學習筆記 十三
io完成埠模型的實現要點 建立乙個io完成埠物件 簡稱cp物件 控制代碼 使用createiocompletionport 建立 使用wsarecv 或者wsasend 進行非同步io操作,操作完成後,系統自動啟用getqueuedcompletionstatus 函式,進而啟用某個執行緒去處理。注...
網路程式設計學習 tcp ip程式設計
tcp 不記錄訊息邊界 udp 記錄訊息邊界 用到的結構體 struct sockaddr un 例子 struct sockaddr un serveraddr serveraddr.sun family af unix server socket strcpy serveraddr.sun pa...