TCP 服务器和客户端在哪些详细步骤会消耗资源?

TCP 服务器和客户端在哪些详细步骤会消耗资源?

谁知道three-way handshake

在此处输入图片描述

但是我有个疑问,在这3个步骤中,Host A(Client)和Host B(Server)会占用资源吗?我指的是CPU资源和Memory资源。

如果需要资源,具体需要采取哪些步骤?

我听说会创建变量,具体步骤是创建什么?比如,在主机 B SYN 接收和发送 SYN,ACK 之间创建变量吗?

答案1

握手开始时,两台主机都会消耗一些内存来跟踪半开连接。但是,在程序初始化代表连接的“套接字”时,客户端也会额外消耗一些内存,甚至在发送任何数据包之前。

同样,一旦服务器收到 SYN 数据包,它就会分配一些内存来跟踪连接的参数。

发送大量 SYN 来耗尽服务器资源实际上是一种常见的攻击,称为SYN洪水。为了应对这种情况,一些服务器有一个“SYN-cookie”模式,没有发送 SYN+ACK 响应后保持资源分配;它可以丢弃该信息,直到客户端的 ACK 到达,此时服务器开始正常跟踪连接。


从编程的角度来看,整个握手在一个步骤中完成。但是,当你编写客户端时,表示该连接的变量会被赋值要求操作系统执行握手。

conn = socket(AF_INET, SOCK_STREAM)
  # The variable representing the "socket" is initialized and some memory is
  # allocated, but no connection is done yet

connect(conn, address)
  # The entire TCP handshake is performed during connect()

编写服务器时则相反。首先设置“监听”套接字,但每个单独的接收连接都首先由操作系统接受(执行握手),然后才提供给程序。

conn = accept(listener)

相关内容