第一个问题:网络模型中应用层和传输层之间的socketapi是否与编程中使用的相同?第二个问题:如果socket api是应用层和传输层之间的接口,这是否意味着任何应用层都必须使用它来与传输层通信(http、smtp、ftp…)
r7xajy2e1#
在我看来,这两个问题实际上是一个问题:osi或tcp/ip模块是如何工作的。在编写应用程序时,我们使用tcp/udp用户空间API,不需要关心内核如何运行它。你可以说我们在应用层(applicationlayer,app)中使用它,但这些api是在传输层工作的。例如,我们在用户空间中使用socket/bind/connect/accept/listen,操作系统将使用系统调用在内核中运行它,从传输层->网络层->数据链路层->网卡和出/入。因此,在应用层和传输层之间不存在所谓的相同编程(除非您是内核开发人员),http/ftp必须使用这些api连接到其他网络客户机/服务器。但您的声明可能需要编辑,因为它们可能会让您感到困惑。
1条答案
按热度按时间r7xajy2e1#
在我看来,这两个问题实际上是一个问题:osi或tcp/ip模块是如何工作的。
在编写应用程序时,我们使用tcp/udp用户空间API,不需要关心内核如何运行它。你可以说我们在应用层(applicationlayer,app)中使用它,但这些api是在传输层工作的。例如,我们在用户空间中使用socket/bind/connect/accept/listen,操作系统将使用系统调用在内核中运行它,从传输层->网络层->数据链路层->网卡和出/入。
因此,在应用层和传输层之间不存在所谓的相同编程(除非您是内核开发人员),http/ftp必须使用这些api连接到其他网络客户机/服务器。但您的声明可能需要编辑,因为它们可能会让您感到困惑。