===
Character Generator Protocol (CHARGEN) 是在 RFC 864 中由 Jon Postel 定义的 Internet Protocol Suite 中的一个服务。主要用于测试、调试,以及测量的目的。该协议很少被使用,因为其固有的设计缺陷容易导致误用和攻击。
任意 host 都可以通过 TCP 或 UDP 方式连接到支持 Character Generator Protocol 并启用了该服务的服务器上,默认端口号为 19。当采用 TCP 方式成功连接时,服务器端将开始连续不断的发送任意字符到该连接上的 host,直到 host 主动关闭该连接为止。当采用 UDP 方式时,服务器端会在每一次收到来自 host 的数据报时,回复包含随机数(0~512)的字符形式 UDP 数据报。服务器接收到的任何数据均会被丢弃。
在大多数类 UNIX 操作系统上,CHARGEN 服务被放置在 inetd 或 xinetd 守护进程中。CHARGEN 服务器通常默认情况下不被使能。
CHARGEN 服务可以作为产生字节流的源用于调试 TCP 网络程序代码,比如,边界检查和缓存管理。该服务同样可以作为带宽测量或 Qos 调优的通用负载产生的源。
典型的 CHARGEN 服务会话看起来如下:用于通过 telnet 客户端连接到(提供该服务的)服务器上,用户连续不断的接收来自服务端的字节流。尽管在 RFC 864 里没有指定字节流的数据格式,但推荐的格式为(事实上的标准)循环左移含有 72 个 ASCII 字符的行。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
|
这个数据将一直持续到当前 TCP 连接被关闭为止(比如上面通过 ^] 来停止 telnet 会话)。
===
附:网上找的一个用 erlang 实现的 chargen 服务的程序。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
|