应用协议和 TCP/IP 协议的工作

网络工程 tcp 网络核心
2022-02-12 23:45:07

我正在阅读史蒂文关于 Unix 网络编程的书。第 1 章中有一段话说:

即使客户端和服务器使用应用程序协议进行通信,传输层也使用 TCP 进行通信。请注意,客户端和服务器之间的实际信息流在一侧沿着协议栈向下,通过网络,在另一侧沿着协议栈向上。另请注意,客户端和服务器通常是用户进程,而 TCP 和 IP 协议通常是内核中协议栈的一部分。

现在,假设 Web 浏览器向服务器请求一个页面。这个通信是通过上面的应用协议建立的吗?这个应用协议是什么?

同样,假设服务器通过发送请求的页面进行响应。这个页面是通过 TCP/IP 协议发送的吗?

请求和响应中使用的协议有什么区别吗?

2个回答

考虑这一点的最佳方法是:一个主机中堆栈的每一层都与另一台主机中的同一层进行通信(逻辑上)。但是信息“在堆栈中向下移动”。实际上,每一层都封装了上一层中的信息。因此,例如,TCP 信息被封装在 IP 层中,等等。在接收方,随着信息在堆栈中向上移动,该过程被逆转。

现在,假设 Web 浏览器向服务器请求一个页面。这个通信是通过上面的应用协议建立的吗?这个应用协议是什么?

在这种情况下,协议是超文本传输​​协议 (HTTP)。它是一个应用层协议。

同样,假设服务器通过发送请求的页面进行响应。这个页面是通过 TCP/IP 协议发送的吗?

服务器生成一个 HTTP 消息,该消息被封装在较低级别的协议中。

因此,服务器和客户端在逻辑上相互通信。事实上,他们不知道较低的层次。服务器发送数据,客户端接收数据。其他所有内容都对应用程序隐藏。

请求和响应中使用的协议有什么区别吗?

在 HTTP 的情况下,没有。但较低的水平可能会有所不同。

编程、应用程序和应用程序层协议在这里是题外话。客户端/服务器模型是一个应用程序概念,而不是网络堆栈的概念。应用协议是 OSI 第 4 层之上的协议,这里不谈。您可以在Stack Overflow上询问有关编程的问题

TCP/IP 指的是协议套件或网络堆栈模型,而不是单个协议。网络堆栈中每一层的每个协议都与通信另一端相应层的相应协议进行通信。(网络堆栈中没有用于协议的客户端或服务器,只有对等方。)

应用程序或应用层协议使用传输层中的协议与接收设备的传输层中的相同协议进行通信。传输层使用网络层中的协议与接收设备上的网络层中的相同协议进行通信。等等。网络堆栈的每一层都有多种可能的协议。