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