标签:
网络中每个通信实体的 socket 是用一个三元组标识的。三元组往往称为半相关
三元组指的是:协议族(地址族),网络地址、和传输层端口 (Ipv4 )。
通信双方的一个连接是用网络五元组来标识的,它是由双方相同协议族的两个本地三元组合成的。五元组往往称为全相关。
网络五元组指的是:协议族(地址族)、本地网络地址、本地端口、远程网络地址和远程端口。
套接口分为若干类型,常用的是 SOCK_STREAM 和 SOCK_DGRAM 。
SOCK_STREAM 是面向连接的套接字,使用的协议是 TCP ,通信的双方通过三次握手建立起虚拟的连接线路,通信的过程是可靠的。
而 SOCK_DGRAM 是面向非连接的套接字,使用的协议是 UDP ,通信双方以数据包的方式进行通信,通信的可靠性就不能得到保证。本项目要求采用 SOCK_STREAM 类型。
五元组格式(协议,本地 IP ,本地端口,远方 IP ,远方端口)的建立过程
服务器一般都有两个功能:监听 和 处理
在监听的时候,协议 / 本地 IP/ 本地端口(监听端口)都是确定的,当收到客户端的报文时,远方 IP 就是报文的源 IP 地址,远方端口就是报文的源端口,这样一来五元组就确定了。
然后服务器进入处理阶段,需要开启一个新的线程与客户端交互,当然就需要确定一个新的五元组,这时候协议 / 本地 IP/ 远方 IP/ 远方端口都来自监听阶段确定的五元组,而本地端口会在 1024 以上随机选取 (不再使用监听端口,以便监听其他客户端的请求)。
客户端的话正好相反&#