基于TCP的一对回射客户/服务器程序及其运行过程分析( 下 )

时间:2023-03-09 00:08:04
基于TCP的一对回射客户/服务器程序及其运行过程分析( 下 )

执行分析

  1. 打开服务器进程:

  基于TCP的一对回射客户/服务器程序及其运行过程分析( 下 )

  2. 执行netstat -a命令观察当前的连接状态:

  基于TCP的一对回射客户/服务器程序及其运行过程分析( 下 )

  第1条连接记录说明:绑定了本地主机的任意IP,端口为9877,目前处于监听状态。

  3. 打开客户进程:

  基于TCP的一对回射客户/服务器程序及其运行过程分析( 下 )

  4. 执行netstat -a命令观察当前的连接状态,发现了两个新的连接:

  基于TCP的一对回射客户/服务器程序及其运行过程分析( 下 )

  以及

  基于TCP的一对回射客户/服务器程序及其运行过程分析( 下 )

  上面一个连接说明一个连接到服务器的连接,客户端临时端口是32818,目的端口正是先前的9877,连接状态为已建立,对应已连接套接字;

  下面一个连接说明一个连接到客户端的连接,服务端端口为9877,目的端口是32818,这个连接已经建立,对应的是已连接套接字;

  因为是在一台机器上做的测试,因此出现了上述两条“ 对称 ”的结果。

  5. 然后测试该回射程序:

  基于TCP的一对回射客户/服务器程序及其运行过程分析( 下 )

  6. 接下来,ctrl+D中断连接,然后立马netstat -a查询连接状态:

  可以观察到,多了一条是客户端的TIME_WAIT状态的记录( 服务器端是没有什么状态显示的因为程序已经结束了 ):

  基于TCP的一对回射客户/服务器程序及其运行过程分析( 下 )

  7. 过一段时间,再次netstat -a,会发现上面那条记录已经没了。这是因为TIME_WAIT过一段时间就没了,和设想一致。