第11章 UDP:用户数据报协议

11.4 一个简单的例子

用我们自己编写的s o c k程序生成一些可以通过t c p d u m p观察的U D P数据报:
速读原著-TCP/IP(UDP示例)_端口号
第1次执行这个程序时,我们指定 v e r b o s e模式(- v)来观察e p h e m e r a l端口号,指定U D P(- u)而不是默认的 T C P,并且指定源模式( - i)来发送数据,而不是读写标准的输入和输出。- n 4选项指明输出4份数据报(默认条件下为 1 0 2 4),目的主机为s v r 4。在1 . 1 2节描述了丢弃服务。每次写操作的输出长度取默认值 1 0 2 4。 第2次运行该程序时我们指定 - w 0,意思是写长度为 0的数据报。两个命令的 t c p d u m p输出结果如图11 - 6所示。
速读原著-TCP/IP(UDP示例)_接收端_02
输出显示有四份1 0 2 4字节的数据报,接着有四份长度为 0的数据报。每份数据报间隔几毫秒(输入第2个命令花了4 1秒的时间)。

在发送第1份数据报之前,发送端和接收端之间没有任何通信(在第 1 7章,我们将看到T C P在发送数据的第 1个字节之前必须与另一端建立连接)。另外,当收到数据时,接收端没有任何确认。在这个例子中,发送端并不知道另一端是否已经收到这些数据报。

最后要指出的是,每次运行程序时,源端的 U D P端口号都发生变化。第一次是 11 0 8,然后是11 0。在1 . 9节我们已经提过,客户程序使用 e p h e m e r a l端口号一般在1 0 2 4~5 0 0 0之间,正如我们现在看到的这样。