【发布时间】:2018-11-13 06:32:06
【问题描述】:
我打算在我的项目中使用 php socket。它需要用户登录才能根据会话填充内容。所以我的问题是,TCP/IP 协议也会像 HTTP 协议一样为每个请求发送/接收 cookie,或者我必须自己实现 cookie 系统。我的项目不依赖浏览器,它就像一个应用程序,通过socket进行通信。
谁能用简单的话解释一下?
提前致谢。
【问题讨论】:
标签: php sockets tcp tcp-ip php-socket
我打算在我的项目中使用 php socket。它需要用户登录才能根据会话填充内容。所以我的问题是,TCP/IP 协议也会像 HTTP 协议一样为每个请求发送/接收 cookie,或者我必须自己实现 cookie 系统。我的项目不依赖浏览器,它就像一个应用程序,通过socket进行通信。
谁能用简单的话解释一下?
提前致谢。
【问题讨论】:
标签: php sockets tcp tcp-ip php-socket
HTTP 是一种嵌套在 TCP 负载中的应用程序协议。如果您想使用原始 TCP,您可以设计自己的通信方案。由于您询问 cookie,您可能需要一些持久性。 cookie 被实现为 HTTP 标头。您仍然可以在不涉及浏览器的情况下使用 HTTP。这样您就可以利用许多 HTTP 服务器和服务器端脚本语言。
【讨论】:
所以我的问题是 TCP/IP 协议也像 HTTP 协议一样为每个请求发送/接收 cookie
没有。 Cookie 由 HTTP 协议定义。其他一些协议也有类似的概念,但 TCP 本身没有等价物。 TCP 也没有真正的“请求”概念。只有一个连接,数据流过它。
(TCP 确实有一个称为SYN cookies 的功能,但这与 HTTP cookie 完全无关。)
您可能需要考虑使用WebSockets 协议。 WebSockets 在 HTTP 上运行,因此可以利用 HTTP 的某些功能,包括 cookie。
【讨论】:
Cookie 仅在应用层 (http) 上实现。在 tcp 中不需要 cookie,因为对于每个 tcp 连接,都有一个由客户端 ip 和端口号、服务器 ip 和端口号组成的元组套接字对。这些套接字对是唯一的,并且唯一地确定了客户端。但是,http 并没有通过,因为 http 不保留客户端 IP 地址或客户端端口号等的记录...... http 的唯一目的是为客户端服务。所以为了唯一定义客户端,http使用cookies和session ID。这有助于 http 弄清楚客户端发送数据的目的并提供相应的服务。
【讨论】: