Python套接字编程与ISOOSI-mod

2024-05-16 04:14:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在从一台电脑向另一台电脑发送数据包。我正在使用python套接字socket.socket(socket.AF_INET, socket.SOCK_DGRAM )。我们需要注意接收数据包的顺序吗? 在ISO-OSI模型中,传输层下面的层处理所有的数据包通信。程序中是否存在所有ISO-OSI层?或者其中一些存在于操作系统中? 在本地主机上,我按顺序获取所有数据包。 在互联网上会有什么不同吗?在


Tags: 模型程序顺序isoosi互联网socket数据包
2条回答

SOCK_DGRAM表示您希望通过UDP发送数据包-无顺序保证、无接收保证、无重复保证。SOCK_STREAM意味着TCP没有包边界保证,但是(除非连接断开;-)保证顺序、接收和无复制。TCP/IP,网络模式赢得了每一个现场实践的核心和灵魂,并使互联网得以实现,它不符合ISO/OSI标准,这是一个在起草阶段设计的标准,在现实世界中从未真正获胜。在

她生活和呼吸的互联网一直是TCP/IP。不要依赖于在低延迟本地网络上进行的测试,因为在任何情况下都可以代表真实世界中发生的事情。欢迎来到现实世界,顺便说一句,祝你好运(你需要一些!-). 在

为了回答您的直接问题,如果您使用的是SOCK_STREAM,那么您实际上使用的是TCP,它是传输层的一个实现,它为您处理数据包的顺序和完整性。听起来这就是你想用的。UDP不在乎完整性。在

Do we need to take care of order in which packets are received ? In ISO-OSI model layers below transport layer handle all packets communication. Do all ISO-OSI layers present in the program ?

为了澄清这一点,在ISO-OSI模型中,传输层下面的所有层处理从一台计算机到另一台计算机的单个包的发送,而不“理解”包排序的概念(它不适用于它们)。在

在这个模型中,还有另一个层(会话层,在传输层之上)负责定义会话行为。正是这一层决定了是否将东西放在适当的位置以防止重新排序,以确保完整性,等等。在

在现代世界,ISO-OSI模型更像是一个理想化的模板,而不是一个实际的模型。TCP/IP是几乎所有地方都在使用的实际实现。在

在TCP/IP中,传输层是定义是否存在任何会话行为的层。在

相关问题 更多 >