传输层——谁进行解复用阶段?

传输层——谁进行解复用阶段?

我正在阅读computer network a top down approach 6th edition,并且我在传输层。我理解客户端的数据包是如何通过客户端套接字发送到服务器的,但是当服务器收到数据包时,谁会读取数据包信息并将其传递给正确的进程?

对于 TCP,首先在两个进程之间建立连接。同样的问题,谁或什么在进行多路复用并传递数据包?

答案1

每个客户端/服务器 IP 连接由五个元素组成的元组标识:

  • IP 协议
  • 源地址
  • 源端口
  • 目标地址
  • 目的端口

建立连接后,客户端和服务器 IP 堆栈都会在特定的内存表中记住相应的元组。稍后,当数据包到达时,它会搜索连接表以找到正确的元组并查看哪个特定进程正在监听它。

作为一个实际的例子,考虑在 Linux 机器上发出该命令netstat -n -t -p。在我的 PC 上,它显示以下输出:

[root@centos-webdev ~]# netstat -n -t -p
活动互联网连接(无服务器)
Proto Recv-Q Send-Q 本地地址 外部地址 状态 PID/程序名称
tcp 0 0 172.31.255.240:45414 1.1.8.246:25 TIME_WAIT -
tcp 0 64 172.31.255.240:22 1.1.9.6:2205 已建立 10604/sshd

看一下最后一行:if 表明从远程地址 1.1.9.6、端口 2205 到本地 IP 172.31.255.240、端口 22 建立了 SSH 连接。最右边的字段说明 PID 为 10604 的 ssh 可执行文件正在监听属于该特定连接的数据包。

相关内容