我正在阅读computer network a top down approach 6th edition ,我在传输层。 我了解客户端的数据包如何通过客户端套接字发送到服务器,但是当服务器收到数据包时,谁读取数据包信息并将其传递到正确的进程?
至于TCP,首先在两个进程之间build立连接。 同样的问题在这里,谁或什么是在做复用和传递数据包?
每个客户端/服务器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可执行文件,正在监听属于该特定连接的数据包。