我正在從一臺PC發送數據包到其他。我正在使用python套接字socket.socket(socket.AF_INET, socket.SOCK_DGRAM )
。我們是否需要注意接收數據包的順序? 在ISO-OSI模型層下的傳輸層處理所有數據包通信。程序中是否存在所有ISO-OSI圖層?或者其中一些出現在操作系統中? 在本地主機上,我按順序獲取所有數據包。 它會對互聯網有什麼影響嗎?Python套接字編程和ISO-OSI模型
1
A
回答
2
要回答你的問題直接,如果你使用SOCK_STREAM,那麼你實際上是使用TCP,這是確實照顧分組排序和完整性,爲您的傳輸層的實現。所以這聽起來就是你想要使用的。 SOCK_DGRAM實際上是UDP,它不會爲您處理任何完整性。
我們是否需要注意接收數據包的順序?在ISO-OSI模型層下的傳輸層處理所有數據包通信。程序中是否存在所有ISO-OSI圖層?
只是爲了澄清這件事,在ISO-OSI模型中,傳輸層把手從一臺計算機發送一個單分組與其他下面的所有圖層,並且不「理解」的概念,數據包排序(它不適用於它們)。
在該模型中,存在另一個層(會話層,傳輸層以上),其是負責定義會話行爲。正是在這個層面上,決定是否採取措施防止重新排序,確保完整性等等。
在現代世界中,ISO-OSI模型更多的是一種理想化的模板,而不是實際的模型。 TCP/IP是幾乎無處不在的實際實現。
在TCP/IP中,傳輸層是具有確定是否有任何會話的行爲或不的角色之一。
4
SOCK_DGRAM
意味着你要通過UDP發送數據包 - 沒有秩序的保證,沒有接待保障,沒有缺少重複的保證。 SOCK_STREAM
意味着TCP - 沒有數據包邊界保證,但(除非連接丟失;-)保證訂單,接收和不重複。 TCP/IP,贏得的每一個心臟和靈魂住practitioned並取得互聯網發生的組網模型,是不符合ISO/OSI - 在繪圖桌設計的,從來沒有真正在現實獲獎標準世界。
因爲她生活和呼吸的互聯網一直是TCP/IP。不要依賴在低延遲本地網絡上進行的測試,就像在現實世界中會發生什麼樣的代表一樣。歡迎來到現實世界,BTW,祝你好運(你需要一些!)。
相關問題
- 1. Python套接字編程和LED接口
- 2. Python套接字編程
- 3. Python套接字編程
- 4. 同步套接字編程python
- 5. 在Python中的UDP套接字編程
- 6. Python套接字編程 - 異常處理
- 7. Python有狀態套接字編程
- 8. python中的TCP/IP套接字編程
- 9. 原始套接字編程UDP Python
- 10. 套接字超時套接字編程
- 11. 套接字編程
- 12. 套接字編程
- 13. 套接字編程
- 14. 套接字編程
- 15. javafx,套接字編程和線程
- 16. 線程和套接字編程
- 17. Java套接字和網頁編程
- 18. Java套接字和黑莓編程
- 19. 套接字編程和動態IP
- 20. 異步套接字編程和F#
- 21. Web服務器和套接字編程
- 22. Java套接字編程和流
- 23. 如何讀取大文件(套接字編程和python)?
- 24. python套接字多線程
- 25. 套接字程序Python
- 26. Python套接字程序
- 27. 在c編程的套接字編程
- 28. 套接字編程Java
- 29. 選擇套接字編程
- 30. UDP套接字編程HELP
爲什麼AF_INET?爲什麼限制自己使用舊的IPv4標準?更好地解決地址中的名稱並使用AF_INET或AF_INET6,具體取決於您獲得的地址。 – bortzmeyer 2009-09-22 09:28:05