一些TCP/IP应用程序总结

来源:互联网 发布:godaddy域名转出 编辑:程序博客网 时间:2024/05/22 00:43

ping程序

  1. 改程序发送一份ICMP回显请求报文给主机,并等待返回ICMP回显应答
  2. ping能测出这台主机的往返时间,以表明主机离的有多远
  3. ping不能到达,如今并不能代表不能telnet到某台主机。一台主机的可到达行不知取决于IP层是否能到达,还取决于使用何种协议与端口号
  4. 大多数TCP/IP实现都在内核中直接支持ping服务器,这种服务器不是一个用户进程
  5. 当返回ICMP回显应答时,要打印序列号和TTL,并计算往返时间
  6. 上面的例子往返时间为0,主要是由于计算机的计时精度未达到。一般情况下第一个往返时间长一些,因为硬件目的地址不在ARP告诉缓存中
  7. 通过往返时间验证SLIP传输速度

IP记录路由选项

  1. 每个处理数据报的路由器都把它的IP地址放入选型字段中,当数据到达目的端时,IP地址清单复制到ICMP回显应答中。
  2. 一个缺点是:大小只能最多9个IP地址
  3. 还可以记录时间戳

小结

  1. ping程序是对两个TCP/IP系统连通性进行测试的基本工具,只利用了ICMP回显请求和回显应答报文,而不用经过传输层(TCP/IP)
  2. 讨论了ping程序的记录路由选项

Traceroute程序

  1. 可以让我们看到IP数据报从一台主机传到另一台主机所经过的路由。相对于ping有优点:不需要所有的路由器支持记录路由选项,克服空间有限的问题
  2. 使用ICMP报文和IP首部的TTL字段,TTL字段为了防止数据报在选路时无休止在网络中运动
  3. 操作过程:首先发送一份TTL字段为1的IP数据报给目的主机。处理这份数据报的第一个路由器将TTL减1,丢弃该数据报,并发回一份超时ICMP报文,这样得到一个路由器地址。随后发送TTL=2的数据报,得到第二个地址。但是目的主机哪怕接收到T T L值为1的I P数据报,也不会丢弃该数据报并产生一份超时I C M P报文,这是因为数据报已经到达其最终目的地
  4. 如何判断是否已到达目的主机呢?因为traceroute程序发送一份UDP数据报给目的主机,但它选择一个不可能的值作为UDP端口。产生一份“端口不可到达”错误
  5. traceroute程序要区分接受到的ICMP报文是超时还是端口不可到达,以判断结束时间。

tcpdump程序

  1. tcpdump将网络接口卡设置为混杂模式来截获经过网络接口的每一个分组

BSD分组过滤器

  1. BSD分组过滤器BPF,tcpdump用它来截获和过滤来自一个被设置为混杂模式的网络接口分组
  2. BPF从驱动程序那里接受到每一个收到的分组和传输的分组。这些分组要通过一个用户指明的过滤器,使只有那些用户进程感兴趣的分组才会传递到用户进程
  3. 每个进程指明自己的过滤器
  4. 由于网络传输率很容易超过CPU的处理能力,并且一个用户进程从内核中只读小块数据的代价昂贵,因此BPF将多个帧装载进一个读缓存,缓存器满了再将读缓存保存的帧返回
  5. 在内核中过滤,而不是在进程中过滤
  6. 过滤表达式  : %tcpdump tcp port 25,只打印源端口和目的端口为25的报文段

SUNOS的网络接口分接头

  1. 与BPF不同的是,网络接口分头只截获网络接口收到的分组,而BPF可以接受网络接口和传送的分组

SOCK程序

  1. 生成TCP和UDP数据,既可以用作一个客户进程,也可以用作服务器进程
  2. 几个例子:  sun % sock bsdi echo 服务器主机的名字是bsdi 服务的名字是echo(回显)
  3. sock -s 140.252.13.33 5555 作为一个在端口5555监听的服务器,只接受140.252.13.33的地址
  4. sock -i -n12 -w4096 bsdi discard  把12个缓存,每个包含4096字节的数据,送给主机bsdi的discard服务器

IFCONFIG

  1. 用来显示和配置网络接口
  2. 在执行ifconfig 命令后,系统将在内核表中设置必要的参数,这样Linux 就知道如何与网络上的网卡通信
  3. ifconfig 直接显示当前系统的网络配置状况
  4. ifconfig eth0 192.168.0.1 netmask 255.255.255.0   在eth0上配置上192.168.0.1 的IP地址及24位掩码

netstat

  1. 提供系统上的接口信息

原创粉丝点击