我们知道服务器端是要指定和开放端口号的,比如 web 服务 http 请求的 80,https 的 443 端口,都要开放,否则无法请求成功。
我们知道通信是由两端组成的,既然服务器需要指定端口,那么客户端呢?
比方说我用 chrome 浏览器请求 www.baidu.com, 我知道对于百度的服务器肯定开放了 80、443 端口,那么浏览器呢,或者说我的电脑本机用于请求的端口是什么呢?
带着疑问我用 Wireshark 抓包看了一下
可以看到我的浏览器请求 源端口是 62412 ,目标端口是 443。
443 我知道,62412 又是为什么?
不知道,于是想了想 TCP 的连接和请求过程,参考这篇文章:https://mp.weixin.qq.com/s/iSZp41SRmh5b2bXIvzemIw
如文章所说:
TCP 协议里面会有两个端口,一个是浏览器监听的端口(通常是随机生成的),一个是 Web 服务器监听的端口(HTTP 默认端口号是 80, HTTPS 默认端口号是 443)。
浏览器端口随机生成?嗯,可以,但理论依据是什么?谁规定的?怎么规定的,怎么个随机法,不可能乱生成对吧。带着疑问,查到了资料。
- https://www.rfc-editor.org/rfc/rfc6335