传输层 – 谁是解复用阶段?

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

至于TCP,首先在两个进程之间build立连接。 同样的问题在这里,谁或什么是在做复用和传递数据包?

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

  • ip协议
  • 源地址
  • 源端口
  • 目的地地址
  • 目的端口

build立连接时,客户端和服务器IP堆栈都会记住特定内存表中的相应元组。 之后,当数据包到达时,它会search连接表来查找正确的元组,并查看正在侦听的特定进程。

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

 [root @ centos-webdev〜]#netstat -n -t -p
活动的Internet连接(不包括服务器)
原始Recv-Q发送-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 ESTABLISHED 10604 / sshd

看看最后一行:如果显示从远程地址1.1.9.6,端口2205到本地IP 172.31.255.240,端口22之间build立了SSH连接。最右边的字段解释了带有PID 10604的ssh可执行文件,正在监听属于该特定连接的数据包。