前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >速读原著-TCP/IP(sock程序)

速读原著-TCP/IP(sock程序)

作者头像
cwl_java
发布2020-03-19 17:28:53
9890
发布2020-03-19 17:28:53
举报
文章被收录于专栏:cwl_Javacwl_Java

sock程序

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

有很多与s o c k功能类似的程序。J u e rgen 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 . 1 2节)相连,回显我们键入的每一个字符:

在这里插入图片描述
在这里插入图片描述
  1. 交互式服务器:指明-s选项。需要指明服务名字(或端口号):
在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述

默认的模式是接受任何一个本地接口上的连接请求。

  1. 源客户:指明- i选项。在默认情况下,将一个 1 0 2 4字节的缓存写到网络中,写 1 0 2 4次。-n选项和-w选项可以改变默认值。例如,
在这里插入图片描述
在这里插入图片描述

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

  1. 接收器服务器:指明-i选项和-s选项。从网络中读数据然后扔掉。这些例子都使用了T C P(默认情况),-u选项指明使用U D P。s o c k程序有许多选项,用于对程序的运行提供更好的控制。我们需要使用这些选项来产生本书中用到的所有测试条件。
代码语言:javascript
复制
-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 0 2 4。 -p n 指明每个读或写之间暂停的秒数。这个选项可以和源客户(- i)或接
收器服务器(- i s)一起使用作为每次对网络读写时的延迟。参考- P选
项,实现在第1次读或写之前暂停。
-q n 为T C P服务器指明挂起的连接队列的大小: T C P将为之进行排队的、已
经接受的连接的数目(图1 8 - 2 3)。默认值是5。 -r n 和- i s选项一起使用,n指明每次从网络中读数据的大小。默认是每次读
1 0 2 4字节。
-s 作为一个服务器,而不是一个客户。
-u 使用U D P,而不是T C P。 -v 详细模式。在标准差错上打印附加的细节信息(如客户和服务器的临
时端口号)。 -w n 和- i选项一起使用, n指明每次从网络中写数据的大小。默认值是每次
写1 0 2 4字节。
-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 )程序输出这个信息。
-E 如果实现支持,使能 I P _ R E C V D S TA D D R插口选项。这个选项用于
U D P服务器,用来打印接收到的 U D P数据报的目的I P地址。
-F 指明一个并发的T C P服务器。即,服务器使用 f o r k函数为每一个客户连
接创建一个新的进程。
-K 使能T C P的S O _ K E E PA L I V E插口选项(第2 3章)。 -L n 把一个T C P端点的拖延时间 (linger time)(S O _ L I N G E R)设置为n。一
个为0的拖延时间意味着当网络连接关闭时,正在排队等着发送的任何
数据都被丢弃,向对方发送一个重置报文( 1 8 . 7节)。一个正的拖延时
间(百分之一秒)是关闭网络连接必须等待的将所有正在排队等着发
送的数据发送完并收到确认的时间。关闭网络连接时,如果这个拖延
定时器超时,挂起的数据没有全部发送完并收到确认,关闭操作将返
回一个差错信息。
-N 设置T C P _ N O D E L AY插口选项来禁止N a g l e算法(1 9 . 4节)。 -O n 指明一个T C P服务器在接受第一个客户连接之前暂停的秒数。
-P n 指明在第一次对网络进行读或写之前暂停的秒数。这个选项可以和接
收器服务器(- i s)一起使用,完成在接受了客户的连接请求之后但在
执行从网络中第一次读之前的延迟。和接收源(- i)一起使用时,完
成连接建立之后但第一次向网络写之前的延迟。参看- p选项,实现在
接下来的每一次读或写之间进行暂停。
-Q n 指明当一个 T C P客户或服务器收到了另一端发来的一个文件结束符,
在它关闭自己这一端的连接之前需要暂停的秒数。
-R n 把插口的接收缓存( S O _ R C V B U F插口选项)设置为 n。这可以直接影
响T C P通告的接收窗口的大小。对于 U D P,这个选项指明了可以接收
的最大的U D P数据报。
-S n 把插口的发送缓存( S O _ S N D B U F插口选项)设置为 n。对于U D P,这
个选项指明了可以发送的最大的 U D P数据报。
-U n 在向网络写了数字 n后进入T C P的紧急模式。写一个字节的数据以启动
紧急模式(2 0 . 8节)。
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-03-18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • sock程序
相关产品与服务
云联网
云联网(Cloud Connect Network,CCN)提供全网互联服务,助力您实现各地域的云上、云下多点互联。云联网的智能调度、路由学习等特性,可帮助您构建极速、稳定、经济的全网互联,轻松满足在线教育、游戏加速、混合云等全网互联场景下的极速体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档