【发布时间】:2021-04-02 01:17:37
【问题描述】:
第一个问题:网络模型中应用层和传输层之间的套接字API是否与编程中使用的相同?
第二个问题:如果socket API是应用层和transprot层之间的接口,那是否意味着任何应用层都必须使用它来与传输层通信? (http、SMTP、FTP...)
【问题讨论】:
标签: java networking network-programming
第一个问题:网络模型中应用层和传输层之间的套接字API是否与编程中使用的相同?
第二个问题:如果socket API是应用层和transprot层之间的接口,那是否意味着任何应用层都必须使用它来与传输层通信? (http、SMTP、FTP...)
【问题讨论】:
标签: java networking network-programming
在我看来,这两个问题实际上是一个问题:OSI 或 TCP/IP 模块是如何工作的。
在编写应用程序时,我们使用 TCP/UDP 用户空间 API,我们不需要关心内核如何运行它。您可以说我们在应用层(app)中使用它,但这些 API 是在传输层中工作的。例如,我们在用户空间使用socket/bind/connect/accept/listen,操作系统会在内核中使用系统调用来运行它,依次是传输层->网络层->数据链路层->网卡。出/入。
所以,应用层和传输层之间没有所谓的相同编程(除非您是内核开发人员),是的,HTTP/FTP 必须使用这些 API 连接到其他网络客户端/服务器。但是您的声明可能需要修改,因为它们可能会让您感到困惑。
【讨论】: