系统的TCP/IP堆栈如何区分连接到同一地址和端口的多个程序?

mcj*_*erz 13 tcp

假设两台Web浏览器在同一台计算机上运行并访问同一网站(换句话说,在同一端口上访问相同的IP地址).

操作系统如何识别哪些数据包来自哪个程序?

每个程序在TCP标头中都有唯一的id字段吗?如果是这样,该领域叫什么?

Chr*_*her 36

这两个程序实际上并没有访问"同一个端口".出于TCP的目的,连接由元组定义(src_ip,src_port,dst_ip,dst_port).

源端口通常是短暂的,这意味着它是由OS随机分配的.换一种说法:

计划A将具有:

(my_ip,10000,your_ip,80)

计划B将:

(my_ip,10001,your_ip,80)

因此,OS可以看到那些是不同的"连接"并且可以将分组推送到正确的套接字对象.