我对网络模型通信的理解:
应用层:
1. HTTP(非持久性或无状态):用于交换 get、post、put 等消息。这里连接到 web 服务器并在发送响应后断开连接。所以服务器不会跟踪以前的请求。
2. Websockets(Persistent 或 statefull):用于创建将开放以交换数据的通信通道。在这里,我们可以跟踪以前的请求。就像我们可以知道当前有多少用户连接到我们的服务器一样。
传输层:
TCP(Persistant and Statefull):将让服务器知道使用端口号连接到哪个应用程序。HTTP 和 Web 套接字都可以在这一层上工作。
考虑使用 HTTP 和 TCP:
- 我从浏览器(应用层)发出 HTTP 请求:
- 连接到 Web 服务器发送所有请求的文件,并与应用程序(传输层)建立 TCP 连接。
- 发送响应后断开连接。
我的困惑:
当我听说 TCP 是有状态和持久连接时,我完全糊涂了。
Q1。现在在第三步之后浏览器是否仍然因为 TCP 连接到网络服务器?
Q2。我们在 C# 代码中在服务器端获得的上下文对象是完整的请求数据包,其中包含 HTTP 信息、TCP 信息、要调用的函数或要在 MVC 中调用的控制器等?
Q3。如果客户端和服务器仍然通过 TCP 连接。然后在下一个 HTTP 请求中,它会使用可用的 TCP 连接还是会创建新的 TCP 和 HTTP 连接?为什么不能使用以前的 TCP 进行通信?还是 HTTP 之后 TCP 会被销毁?或者发生了什么?