在涉及到TCP/UDP等IP类通信协议时,存在四元组概念
这里只是普及使用
先来一些前置知识,什么是IP协议?
IP协议全称为互联网协议,处于网络层中,主要作用是标识网络中的设备,每个设备的IP地址是唯一的。
在网络传输中,IP地址主要用于数据包的寻址。
目前IP协议主要有两个版本,IPv4和IPv6,这两个版本目前都在使用,他们的区别为前者只能代表2的32次方个IP,后者能代表2的128次方个IP。
IPv4示例:223.5.5.5
IPv6示例:2001:0db8:85a3:0000:0000:8a2e:0370:7334
什么是TCP协议
TCP协议全称为传输控制协议,它是面向连接的,处于传输层中,主要作用是规定网络传输过程中的一些传输规范、控制规范等。
什么是HTTP协议?HTTPS协议?
HTTP协议称之为超文本传输协议,处于应用层中,主要作用是规定网络传输中特定的一些数据规范,并且优化TCP的部分性能。
HTTPS可以简单理解为安全版本的HTTP。
这些协议之间的关系是什么
简单来说,IP协议负责找到数据传输的路径,TCP协议确保数据传输的可靠性,而HTTP和HTTPS协议则定义了数据的格式和如何在网络上请求和传输数据。HTTPS在HTTP的基础上增加了SSL/TLS层,提供了数据传输的安全性保护。
额外补充:什么是TCP三次握手
三次握手指的是TCP协议在与对方服务器建立连接时保障其连接可靠的手段,因为其建立连接时有三个动作,所以被称为三次握手。
在客户端与服务器建立连接时,只有当三次握手成功后,才会将连接设置为可以交换数据的状态。
这里要注意,三次握手的过程中本质上从网络层面来讲已经建立了连接,只是TCP协议为了确保可靠,在经过三个网络之间的动作后,才允许客户端与服务器之间进行数据的交互。
那么三次握手具体怎么操作的呢?
第一次握手:客户端向服务端发送一个报文,表示希望建立连接
第二次握手:服务端向客户端发送一个报文,表示确认建立连接
第三次握手:客户端向服务端发送一个报文,表示收到服务端的确认报文,此时连接正式建立。
这个过程不仅确保了双方的接收和发送能力都得到确认,还在握手过程中的报文里确认了双方的信息,所以在三次握手完成时,TCP协议里就认为该连接属于正常可交互数据的。在Linux中可以使用tcpdump来直观的查看三次握手过程。
四元组是什么?
进入正题,四元组的概念存在于所有使用IP协议并是面向连接的通信协议都有的特点。
假设目前有一个客户端访问服务端,我们都知道服务端需要监听一个端口,客户端需要通过服务端的IP和端口来找到提供服务的程序。
而四元组在TCP/UDP连接中,是用于对连接的标识,其标识了客户端、服务端的信息。
这些信息包括:
客户端IP、客户端Port、服务端IP、服务端Port。
用这些信息来标识当前连接,要注意,每一个连接都是唯一不会重复的。
使用工具类直观的感受到四元组的存在:打开Windows性能监视器
例如选中的向日葵客户端,它现在建立的一条连接中,标识了客户端IP为192.168.31.96,客户端端口为:49565,服务端IP为:122.246.12.46,服务端端口为443。
可能又有疑问?
为什么系统中客户端请求服务端也需要有端口号的存在?
这是因为在IP类通信协议中,网络传输时需要根据IP和端口号来定位相对应接收网络数据的程序,所以在我们要知道,在一个四元组中,可以很精确的确认来源程序和目的程序,且在整个网络环境中不会重复。