文章目录
- 网络四元组
今天我们来聊聊 网络四元组
网络四元组
四元组,简单理解就是在 TCP 协议中,去确定一个客户端连接的组成要素,它包括源 IP 地址、目标 IP 地址、源端口号、目标端口号。
正常情况下,我们对于网络通信的认识可能是这样。
服务端通过 ServerSocket 建立一个对指定端口号的监听,比如 8080。客户端通过目标 ip 和端口就可以和服务端建立一个连接,然后进行数据传输。
但是我们知道的是,一个 Server 端可以接收多个客户端的连接,比如像这种情况。
那,当多个客户端连接到服务端的时候,服务端需要去识别每一个连接。
并且 ,TCP 是全双工协议,也就是说数据允许在连接的两个方向上同时传输, 因此这里的客户端,如果是反向通信,它又变成了服务端。
所以基于这两个原因,就引入了四元组的设计,也就是说,当一个客户端和服务端建立一个 TCP 连接的时候,通过源 IP 地址、目标 IP 地址、源端口号、目标端口号来确定一个唯一的 TCP 连接。因为服务器的 IP 和端口是不变的,只要客户端的 IP 和端口彼此不同就 OK 了。
比如像这种情况,同一个客户端主机上有三个连接连到 Server 端,那么这个时候源 IP 相同,源端口号不同。此时建立的四元组就是(10.23.15.3,59461, 192.168.8.135,8080)
其中,源端口号是每次建立连接的时候系统自动分配的。