C/C++教程

TCP回射server-cli程序小测试

本文主要是介绍TCP回射server-cli程序小测试,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

今天学习了一下UNIX socket编程第五章节的内容-TCP回射server-cli程序,这篇文章的目的主要是记录一些实验截图,加强记忆。

1.正常启动:

我们可以看到途中圈红的就是需要关注的一些信息:

PID和PPID的关系:子进程的PPID是父进程的PID,我们就可以看出PID为22030的进程是PID为21540进程的子进程.

 

STAT列的含义如下:

D 不可中断的休眠。通常是IO。

R 运行。正在运行或者在运行队列中等待。

S 休眠。在等待某个事件,信号。

T 停止。进程接收到信息SIGSTOP,SIGSTP,SIGTIN,SIGTOU信号。

W paging,在2.6之后不用。

X 死掉的进程,不应该出现。

Z 僵死进程。

通常还会跟随如下字母表示更详细的状态。

< 高优先级

N 低优先级

L 有pages在内存中locked。用于实时或者自定义IO。

s 进程领导者,其有子进程。

l 多线程

+ 位于前台进程组。

还有一些其他不常见的状态,遇到再添加说明。


WCHAN含义:

就上图的服务器而言:

Linux在进程阻塞于acceptconnect时,输出wait_for_connect(书中是这么写的,但是这边是inet_csk_accept,应该是阻塞在accept);

Linux在进程阻塞于套接字输入或输出时,输出sk_wait_data;

就上图的客户端而言:

Linux在进程阻塞于客户端I/O时,输出n_tty_read;

 

正常终止:

 

 这边可以看到客户端状态已经进入TIME_WAIT。

这边再着重讲解一下四次挥手的一个过程:

客户TCP发送一个FIN字节给服务器,服务器则以一个ACK响应,到这一步服务器套接字就处于CLOSE_WAIT状态,客户端套接字则处于FIN_WAIT_2状态。这是TCP连接终止序列的前半部分。

后半部分则是在服务器子程序在接收到来自客户端的FIN分节,他就会关闭已连接的套接字,这时会引发TCP连接终止的最后两个分节:一个从服务器发往客户端的FIN分节和一个从客户端发往服务器的ACK分节。至此,连接全部终止,客户端状态则进入TIME_WAIT

状态。

 

这篇关于TCP回射server-cli程序小测试的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!