我正在从一台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