名字相似但完全不同的WebSocket
尽管名字里也带"Socket",WebSocket并不是本页讲的操作系统层面的套接字,而是专门为浏览器和服务器之间保持持续双向通信而设计的一种独立的应用层协议,常用于聊天应用和实时更新功能。WebSocket连接底层实际上仍然是建立在普通的TCP套接字之上的。
套接字、防火墙和端口转发其实是同一件事的不同侧面
防火墙规则封锁某个端口,本质上是阻止在该端口上建立新的套接字;而端口转发的原理,则是把路由器收到的套接字连接转发给内网中的特定设备。一旦理解了套接字这个概念,这些原本看似要分别记忆的规则,其实都是同一套原理的不同表现。
常见问题
套接字的端口号需要自己指定吗?
不需要。服务器一侧使用的知名端口(如80、443)由程序或管理员设定,但客户端连接时使用的临时端口是操作系统自动分配的,用户不需要自己配置。
服务器会出现套接字不够用的情况吗?
会的。在极短时间内建立和断开大量连接的服务器上,可能会出现临时端口暂时不够用的"套接字耗尽"现象。这种情况通常可以通过调整服务器端的连接复用(Keep-Alive)设置来缓解。