傳輸層如何從數據報包中檢索源IP地址? 從我所瞭解的IP地址是在網絡層頭和傳輸層頭只包含源端口和目標端口。請讓我知道如果我缺少的東西傳輸層如何從數據報包中檢索源IP地址?
回答
簡單的答案是傳輸層不檢索來自數據報包的IP地址。
當數據報被從源發送到目的地,下面是IP是如何工作的,當數據報行進用簡單的步驟:
- 上層應用發送一個數據包到網絡層。
- 數據計算與校驗和一起。
- 構造IP頭和數據報。
- 通過網關路由。
- 每個網關的IP層執行校驗和。如果校驗和不匹配, 的數據報將被丟棄,並且會出現錯誤信息發送回 發送機。一路上,如果TTL遞減到0,將會發生相同的 結果。並且,當數據報沿着網絡傳遞時,目的地址路由路徑將在每個站點確定爲 。
- 數據報到達目的網絡層。
- 執行校驗和計算。
- 取出IP標頭。
- 消息傳遞給上層應用程序。
EDIT
的應用將套接字綁定到其數據傳輸的端點,該端點是IP地址和服務端口的組合。然後使用此綁定來確定應用程序層上的哪個應用程序需要進行此操作。
例如應用程序A所提供的有關某個端口X的UDP服務應用。然後A開始時,它會嘗試綁定到端口X.如果無法綁定到它,因爲端口正在使用,操作系統會引發應用程序必須處理的錯誤。同樣在OSI體系結構中,每層都依賴於其下面的層來實際傳輸數據,爲其自己的預期目的添加或提供特定的功能。
按照RFC
的僞報頭概念性前綴到UDP報頭包含 源地址,目的地址,協議,以及UDP 長度。這些信息可以防止錯誤的數據報。 該校驗和過程與TCP中使用的相同。
有關細節請查看RFC User Datagram Protocol
這沒有回答這個問題。他問的是傳輸層(甚至應用層)等高層如何確定IP地址,因爲他們顯然無法訪問IP標頭。 –
他的問題是,由於上層顯然知道IP地址,所以很明顯他們從某處獲得IP地址。他們怎麼得到它? –
@JonathanM我添加了一些更多的澄清和鏈接到RFC。 –
- 1. 從DAO層檢索IP地址
- 2. 從數據包中檢索遠程IP地址的準確性
- 3. 應用層如何將IP地址傳輸到網絡層?
- 4. 如何使用Winsock從數據報的IP頭獲取源IP地址?
- 5. ip地址檢索
- 6. 如何從Grails中的IP地址檢索地理位置?
- 7. 如何檢索遠程IP地址?
- 8. 如何檢索Meteorjs上的IP地址?
- 9. 如何從python數據包中獲取IP地址?
- 10. 將IP數據包從一個IP地址轉發到另一個IP地址
- 11. 如何將數據流式傳輸到IP地址?
- 12. 在Go中,如何從開放的TCPConn *中檢索IP地址?
- 13. 如何確認數據報包的源地址?
- 14. 從Tomcat會話ID檢索IP地址?
- 15. 檢索的IP地址與RKA IP地址的中間件
- 16. 檢索從pymongo MongoDB的IP地址數據
- 17. 傳輸源地址爲0.0.0.0的UDP包
- 18. 如何從Java的HTTP標頭中檢索IP地址
- 19. 如何從特定的IP地址讀取數據包?
- 20. 從R中檢索自己的IP地址的函數?
- 21. 如何使用從源地址到目標主機的IP地址發送udp數據包?
- 22. 傳輸層(TCP和UDP)讀取/檢查IP頭(源IP,目標IP等)?
- 23. 如何從IP地址檢索網站列表?
- 24. 獲取UDP數據包的IP地址
- 25. IP數據包和MAC目標地址
- 26. 如何從IP地址列表中查找IP地址範圍
- 27. 使用Scapy獲取數據包的源IP地址
- 28. 檢查IP地址並下載數據
- 29. 如何從IP地址
- 30. 如何從IP地址192.168.1.98,193,148
我猜更多的細節,你不知道如何調用像'recvfrom'源地址填寫?我建議閱讀Linux,BSD或任何其他具有開放網絡堆棧的操作系統的源代碼,因爲這取決於操作系統。 –