※ [本文转录自 Network 看板 #1U2PGtJJ ]
作者: gowrite (gowrite) 看板: Network
标题: [问答] 基础网络问题 port 相关
时间: Mon Dec 30 14:07:49 2019
不好意思, 新手自学网络
最近自学到 TCP/IP stack
到 application 与 transportation layer 如何运作的地方
但是这边有个地方 , 书上没有讲解 , google 也不知道如何描述这个问题
就是资料上都会说 , port 总数有 65536 个,
TCP 会到这边依照 port 编号 , 把不同的 pack 传给各个 App ,
前段部分因为历史的因素, 所以有被默认为某些服务 ,
例如 : 80 HTTP , 443 HTTPs 之类的
那我的问题是
照理说一个 port 只有一个 app 可以占著使用
例如我开一个 HTTP server 一直 listening localhost:5500
那我要开第二个 server 就无法 listening port 5500
那为什么我可以同时开 chrome 及 firefox 开很多页面 ,
同时访问很多 HTTP 或 HTTPs 的网页??
照理说 同一个 80 port
应该只有一个 browser page 可以占住来访问一个 HTTP 的页面对吧?
那同一个浏览器 , 开另一个新的 page 访问另一个 HTTP 的页面 ,
那这个新的 page 使用的也是 80 port 吗?
这个问题不太理解 ,
所以想问下面哪一个想法比较接近???
1. 我整个理解错误了吗?
整个网络运作不是我想得这样
2. 所有 browser 所有的 page 在访问 HTTP 的页面的时候都是使用 80 port
但是每个页面不同的流量是靠更上层的 application layer 来处理 ,
把不同 page 的流量再分给不同的 page
但是这边延伸出一个问题 ,
就是不同的浏览器怎么去辨识哪一个才是自己的流量封包
3. 还是其实 80 port 只会给开浏览器的第一个 page 使用,
但是第二个之后的新 page 就是随机占用其它后段的 port 了,
例如随机使用 port 10000 , 因此 HTTP 不会只使用 80 port , 是这样吗?
请问哪一个才对呢?
希望有版友可以帮忙解惑,
回答我这个网络 ABC 等级的问题 , 谢谢