当前位置:文档之家› TCPIP协议详解-sock程序

TCPIP协议详解-sock程序

附录C sock 程序

在本书中一直使用一个称为s o c k 的小测试程序,用来生成T C P 和U D P 数据。它既可以用作一个客户进程,也可以用作一个服务器进程。有这样一个可以从外壳程序执行的测试程序,使我们避免了为每一个我们想要研究的特征编写新的客户和服务器C 程序。因为本书的目的是了解网络互联协议,而不是网络编程,所以在这个附录中我们只描述这个程序和它不同的选项。

有很多与s o c k 功能类似的程序。J u e r gen Nickelsen 写了一个称为s o c k e t 的程序,Dave Yo s t 写了一个称为s o c k i o 的程序。两者都包含了很多类似的特征。s o c k 程序的某些部分也受到了Mike Muuss 和Terry Slattery 所写的公开域t t c p 程序的启发。s o c k 程序运行在以下四种模式之一:

1) 交互式客户:默认模式。程序和一

个服务器相连,然后将标准输入的数据传

给服务器,再将从服务器那里接收到的数

据复制到标准输出。如图C -1所示。

我们必须指明服务器主机的名字和想要连接的服务的名字。主机可指明为点分十进制数,服务可指明为一个整数的端口号。从s u n 到b s d i 与标准的e c h o 服务器(1 .12节)相连,回显我们键入的每一个字符:

sun % sock bsdi echo

a test line

我们键入这一行a test line

e c h o 服务器返回一个复制行^ D 键入文件结束符来中止2) 交互式服务器:指明-s 选项。需要指明服务名字(或端口号):

sun % s ock -s 5555作为一个在端口5 555监听的服务器

程序等待一个客户的连接请求,然后将标准输入复制给客户,将从客户接收到的东西复制到标准输出。在命令行中,端口号之前可以有一个因特网地址,用来指明接收哪一个本地接口上的连接:

sun % sock -s 140.252.13.33 5555只接受来自以太网的连接默认的模式是接受任何一个本地接口上的连接请求。

3) 源客户:指明-i 选项。在默认情况下,将一个1 024字节的缓存写到网络中,写1 024次。-n 选项和-w 选项可以改变默认值。例如,

sun % sock -i -n12 -w4096 bsdi discard

把1 2个缓存,每个包含4 096字节的数据,送给主机b s d i 上的d i s c a r d 服务器。

4) 接收器服务器:指明-i 选项和-s 选项。从网络中读数据然后扔掉。

这些例子都使用了T C P (默认情况),-u 选项指明使用U D P 。

s o c k 图C-1 s o c k 程序作为交互式客户的默认操作

标准输入TCP 连接服务器标准输出

生本书中用到的所有测试条件。

-b n将n绑定为客户的本地端口号(在默认情况下,系统给客户分配一个临

时的端口号)。

-c将从标准输入读入的新行字符转换为一个回车符和一个换行符。类似

地,当从网络中读数据时,将〈回车,换行〉序列转换为新行字符。

很多因特网应用需要NVT ASCII(2 6.4节),它使用回车和换行来终止

每一行。

-f a .b.c.d.p

为一个U D P端点指明远端的I P地址(a .b.c.d)和远端的端口号(p)。

-h实现T C P的半关闭机制(1 8.5节)。即,当在标准输入中读到一个文件

结束符时并不终止。而是在T C P连接上发送一个半关闭报文,继续从

网络中读报文直到对方关闭连接。

-i源客户或接收器服务器。向网络写数据(默认),或者如果和-s 选项一

起用,从网络读数据。- n选项可以指明写(或读)的缓存的数目,- w

选项可以指明每次写的大小,-r 选项可以指明每次读的大小。

-n n当和-i 选项一起使用时,n指明了读或写的缓存的数目。n的默认值是

1 024。

-p n指明每个读或写之间暂停的秒数。这个选项可以和源客户(-i)或接

收器服务器(- i s)一起使用作为每次对网络读写时的延迟。参考-P选

项,实现在第1次读或写之前暂停。

-q n为T C P服务器指明挂起的连接队列的大小:T C P将为之进行排队的、已

经接受的连接的数目(图1 8-23)。默认值是5。

-r n和- i s选项一起使用,n指明每次从网络中读数据的大小。默认是每次读

1 024字节。

-s作为一个服务器,而不是一个客户。

-u使用U D P,而不是T C P。

-v详细模式。在标准差错上打印附加的细节信息(如客户和服务器的临

时端口号)。

-w n和- i选项一起使用,n指明每次从网络中写数据的大小。默认值是每次

写1 024字节。

-A使能S O_R E U S E A D D R插口选项。对于T C P,这个选项允许进程给自

己分配一个处于2 M S L等待的连接的端口号。对于U D P,这个选项支持

多播,它允许多个进程使用同一个本地端口来接收广播或多播的数据

报。

-B使能S O_B R O A D C A S T插口选项,允许向一个广播I P地址发送U D P数

据报。

-D使能S O_D E B U G插口选项。这个选项使得内核为这个T C P连接维护另

外的调试信息(A .6节)。以后可以运行t r p t(8)程序输出这个信息。

相关主题