五个TCP/IP实用命令
(2013-01-28 14:06:22)
标签:
杂谈 |
五个TCP/IP实用命令
对于网络管理员(一般用户可以稍微了解一些)来说,了解和掌握几个实用的TCP/IP程
序会有助于更好地使用和维护网络。下面具体介绍5个基本的基于Windows的TCP/IP实用
程序:ping、winipcfg(ipconfig)、tracert、netstat、arp。
1. ping(此命令在Windows 95/98,Windows NT中都是同样用法)
这个程序用来检测一帧数据从当前主机传送到目的主机所需要的时间。它通过发送一些
小的数据包并接收应答信息来确定两台计算机之间的网络是否连通。当网络运行中出现
故障时,采用这个实用程序来预测故障和确定故障源是非常有效的。如果执行ping不成
功,则可以预测故障出现在以下几个方面:网线是否连通,网络适配器配置是否正确,
IP地址是否可用等;如果执行ping成功而网络仍无法使用,那么问题很可能出在网络系
统的软件配置方面,ping成功只能保证当前主机与目的主机间存在一条连通的物理路径
。它还提供了许多参数,如-t使当前主机不断地向目的主机发送数据,直到使用Ctrl-
C中断;-n 可以自己确定向目的主机发送的次数等等。
ping命令的格式如下:(在命令行状态下输入ping即可显示其格式及参数的英文说明)
ping [-t] [-a] [-n count] [-l size] [-f] [-i TTL] [-v TOS] [-r count] [-s
count] [[-j host-list] | [-k host-list]] [-w timeout] destination-list
其中的参数说明如下:
-t 使当前主机不断地向目的主机发送数据,直到使用Ctrl-C中断;
-a 以IP地址格式(不是主机名形式)显示网络地址;
-n count 指定要做多少次ping,其中count为正整数值;
-l size 发送的数据包的大小; -f 设置回声分组不会由中间网关分组;
-i TTL 指定ping分组时限域,TTL是指在停止到达的地址前应经过多少个网关;
-v TOS 服务的类型; -r count 指出要记录路由的轮数(去和回);
-s count 指定当使用-r参数时,用于每一轮路由的时间;
-j host-list 指定希望分组的路由;
-k host-list 与-j参数基本相同,只是不能使用额外的主机;
-w timeout 指定超时时间间隔(单位为毫秒),缺省为1000;
一般我们使用得较多的参数为-t、-n、-w。
例:如果ping某一网络地址www.sohu.com,出现:"Reply from 202.106.156.197:
bytes=32 time=541ms TTL=245"则表示本地与该网络地址之间的线路是畅通的;如果出
现"Request timed out",则表示此时发送的小数据包不能到达目的地,此时可能有两种
情况,一种是网络不通,还有一种是网络连通状况不佳。此时还可以使用带参数的Ping
来确定是哪一种情况。 例:ping
据,并且响应时间增大到3000ms,此时如果都是显示"Reply timed out",则表示网络之
间确实不通,如果不是全部显示"Reply times out"则表示此网站还是通的,只是响应时
间长或通讯状况不佳。有人利用TTL值来判断操作系统,岩冰认为,相对来说,有点儿不
真实。
2. winipcfg(ipconfig/ifconfig)
winipcfg和ipconfig都是用来显示主机内IP协议的配置信息。只是winipcfg适用于
Windows 95/98,而ipconfig适用于Windows NTifconfig是在UNIX系统下。
winipcfg不使用参数,直接运行它,它就会采用Windows窗口的形式显示具体信息。这些
信息包括:网络适配器的物理地址、主机的IP地址、子网掩码以及默认网关等,点击其
中的"其他信息",还可以查看主机的相关信息如:主机名、DNS服务器、节点类型等。其
中网络适配器的物理地址在检测网络错误时非常有用。
ipconfig的命令格式如下:
ipconfig [/? | /all | /release [adapter] | /renew [adapter]]
其中的参数说明如下:
/? 显示ipconfig的格式和参数的英文说明;
/all 显示所有的配置信息;
/release 为指定的适配器(或全部适配器)释放IP地址(只适用于DHCP);
/renew 为指定的适配器(或全部适配器)更新IP地址(只适用于DHCP)。
使用不带参数的ipconfig命令可以得到以下信息:IP地址、子网掩码、默认网关。而使
用ipconfig /all,则可以得到更多的信息:主机名、DNS服务器、节点类型、网络适配
器的物理地址、主机的IP地址、子网掩码以及默认网关等。
3. tracert(此命令在Windows 95/98,Windows NT中都是同样用法)
这个程序的功能是判定数据包到达目的主机所经过的路径、显示数据包经过的中继节点
清单和到达时间。
tracert命令的格式如下:
tracert [-d] [-h maximum_hops] [-j host-list] [-w timeout] target_name 其中的
参数说明如下:
-d 不解析主机名;
-h maximum_hops 指定搜索到目的地址的最大轮数;
-j host-list 沿着主机列表释放源路由; -w timeout 指定超时时间间隔(单位毫秒)
。
由于我们科技网大多使用卫星上网,国内费用免费,而国际费用4元/M,因此,必须使用
tracert命令来判断某个网站是属于国内网站还是国际网站(不能仅凭.cn来判断),如
果在路由表中出现了159.226.1.189这条路由,就表示该网站是属于国际网站,实行收费
使用。而如果路由表中不出现159.226.1.189,则表示该网站是属于国内网站,实行免费
使用。在UNIX下有一个工具叫做traceroute,是Van Jacobson编写的诊断工具,功能相
同。
4. netstat(此命令在Windows 95/98,Windows NT中都是同样用法)
这个程序有助于我们了解网络的整体使用情况。它可以显示当前正在活动的网络连接的
详细信息,如采用的协议类型、当前主机与远端相连主机(一个或多个)的IP地址以及
它们之间的连接状态等。
使用netstat ?可以显示它的命令格式和参数说明。
netstat的命令格式如下:
netstat [-a] [-e] [-n] [-s] [-p proto] [-r] [interval] 其中的参数说明如下:
-a 显示所有主机的端口号;
-e 显示以太网统计信息;
-n 以数字表格形式显示地址和端口;
-p proto 显示特定的协议的具体使用信息;
-r 显示本机路由表的内容;
-s 显示每个协议的使用状态(包括TCP、UDP、IP);
interval 重新显示所选的状态,每次显示之间的间隔数(单位秒),按Ctrl+C中止重新
显示。
5、arp(此命令在Windows 95/98,Windows NT中都是同样用法)
arp命令主要用来显示及修改特定IP地址的网卡地址,其实很多很实用的功能,我就不再
一一赘述了,岩冰还记得曾经为arp写过详细方法。
使用arp /?可以显示它的命令格式和参数说明。
arp的命令格式如下:
arp -s inet_addr eth_addr [if_addr]
arp -d inet_addr [if_addr]
arp -a [inet_addr] [-N if_addr]
其中的参数说明如下:
inet_addr IP地址;
eth_addr 以太网卡地址;
-a 显示某个IP地址的网卡地址(不加IP地址,显示所有已激活的IP地址的网卡地址)(
使用该参数前应该先ping通某一个IP地址);
-d 删除指定IP地址的主机;
-s 增加主机和与IP地址相对应的以太网卡地址。
要运行以上这些程序,只要在DOS方式或Windows开始菜单的运行栏中以命令行的形式键
入程序名即可。灵活使用这几个程序不仅可以使你大体了解自己主机对网络的使用情况
,还可以进行相应的网络管理工作,例检测网络线路是否畅通,局域网中是否有人盗用
IP地址等。
注意,在使用这几个命令中,除winipcfg(ipconfig)和netstat命令后面不接主机地址(
IP地址或主机名)外,其余3个命令(pingtracertarp)后面都要接主机地址。
你真的了解telnet吗
一 摘要
二 远程登录
三 Telnet协议
四 Win2000的Telnet服务
五 在telnet中该做什么
六 结束语
一 摘要
Telnet的应用不仅方便了我们进行远程登录,也给hacker们提供了又一种入侵手段和后门,但无论如何,在你尽情享受Telnet所带给你的便捷的同时,你是否真正的了解Telnet呢?
二 远程登录
Telnet服务虽然也属于客户机/服务器模型的服务,但它更大的意义在于实现了基于Telnet协议的远程登录(远程交互式计算),那么就让我们来认识一下远程登录。
1 远程登陆的基本概念
先来看看什么叫登录:分时系统允许多个用户同时使用一台计算机,为了保证系统的安全和记帐方便,系统要求每个用户有单独的帐号作为登录标识,系统还为每个用户指定了一个口令。用户在使用该系统之前要输入标识和口令,这个过程被称为登录。
远程登陆是指用户使用Telnet命令,使自己的计算机暂时成为远程主机的一个仿真终端的过程。仿真终端等效于一个非智能的机器,它只负责把用户输入的每个字符传递给主机,再将主机输出的每个信息回显在屏幕上。
2 远程登陆的产生及发展
我们可以先构想一个提供远程文字编辑的服务,这个服务的实现需要一个接受编辑文件请求和数据的服务器以及一个发送此请求的客户机。客户机将建立一个从本地机到服务器的TCP连接,当然这需要服务器的应答,然后向服务器发送键入的信息(文件编辑信息),并读取从服务器返回的输出。以上便是一个标准而普通的客户机/服务器模型的服务。
似乎有了客户机/服务器模型的服务,一切远程问题都可以解决了。然而实际并非你想象的那样简单,如果我们仅需要远程编辑文件,那么刚才所构想的服务完全可以胜任,但假如我们的要求并不是这么简单,我们还想实现远程用户管理,远程数据录入,远程系统维护,想实现一切可以在远程主机上实现的操作,那么我们将需要大量专用的服务器程序并为每一个可计算服务都使用一个服务器进程,随之而来的问题是:远程机器会很快对服务器进程应接不暇,并淹没在进程的海洋里(我们在这里排除最专业化的远程机器)。
那么有没有办法解决呢?当然有,我们可以用远程登录来解决这一切。我们允许用户在远地机器上建立一个登录会话,然后通过执行命令来实现更一般的服务,就像在本地操作一样。这样,我们便可以访问远地系统上所有可用的命令,并且系统设计员不需提供多个专用地服务器程序。
问题发展到这里好像前途一片光明了,用远程登录总应该解决问题了吧,但要实现远程登陆并不简单。不考虑网络设计的计算机系统期望用户只从直接相连的键盘和显示器上登录,在这种机器上增加远程登陆功能需要修改机器的操作系统,这是极其艰巨也是我们尽量避免的。因此我们应该集中力量构造远程登陆服务器软件,虽然这样也是比较困难的。为什么说这样做也比较困难呢?
举个例子来说:一般,操作系统会为一些特殊按键分配特殊的含义,比如本地系统将Ctrl+C解释为:终止当前运行的命令进程。但假设我们已经运行了远程登陆服务器软件,Ctrl+C也有可能无法被传送到远地机器,如果客户机真的将Ctrl+C传到了远地机器,那么Ctrl+C这个命令有可能不能终止本地的进程,也就是说在这里很可能会产生混乱。而且这仅仅是遇到的难题之一。
但尽管有技术上的困难,系统编程人员还是设法构造了能够应用于大多数操作系统的远程登陆服务器软件,并构造了充当客户机的应用软件。通常,客户机软件取消了除一个键以外的所有键的本地解释,并将这些本地解释相应的转换成远地解释,这就使得客户机软件与远地机器的交互,就如同坐在远程主机面前一样,从而避免了上述所提到的混乱。而那个唯一例外的键,可以使用户回到本地环境。
将远程登陆服务器设计为应用级软件,还有另一个要求,那就是需要操作系统提供对伪终端(pseudo terminal)的支持。我们用伪终端描述操作系统的入口点,它允许像Telnet服务器一样的程序向操作系统传送字符,并且使得字符像是来自本地键盘一样。只有使用这样的操作系统,才能将远程登陆服务器设计为应用级软件(比如Telnet服务器软件),否则,本地操作系统和远地系统传送将不能识别从对方传送过来的信息(因为它们仅能识别从本地键盘所键入的信息),远程登陆将宣告失败。
将远程登陆服务器设计为应用级软件虽然有其显著的优点:比将代码嵌入操作系统更易修改和控制服务器。但其也有效率不高的缺点(后面的内容将会给予解释),好在用户键入信息的速率不高,这种设计还是可以接受的。
3 远程登录的工作过程
使用Telnet协议进行远程登陆时需要满足以下条件:在本的计算机上必须装有包含Telnet协议的客户程序;必须知道远程主机的Ip地址或域名;必须知道登录标识与口令。
Telnet远程登录服务分为以下4个过程:
1)本地与远程主机建立连接。该过程实际上是建立一个TCP连接,用户必须知道远程主机的Ip地址或域名;
2)将本地终端上输入的用户名和口令及以后输入的任何命令或字符以NVT(Net Virtual Terminal)格式传送到远程主机。该过程实际上是从本地主机向远程主机发送一个IP数据报;
3)将远程主机输出的NVT格式的数据转化为本地所接受的格式送回本地终端,包括输入命令回显和命令执行结果;
4)最后,本地终端对远程主机进行撤消连接。该过程是撤销一个TCP连接。
上面的内容只是讨论了远程登陆最基本的东西,其中的复杂和编程人员的艰辛是我们难以想象的,不知道你在舒服的使用Telnet的同时,是否想到了这些!
三 Telnet协议
我们知道Telnet服务器软件是我们最常用的远程登录服务器软件,是一种典型的客户机/服务器模型的服务,它应用Telnet协议来工作。那么,什么是Telnet协议?它都具备哪些特点呢?
1 基本内容
Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议。应用Telnet协议能够把本地用户所使用的计算机变成远程主机系统的一个终端。它提供了三种基本服务:
1)Telnet定义一个网络虚拟终端为远的系统提供一个标准接口。客户机程序不必详细了解远的系统,他们只需构造使用标准接口的程序;
2)Telnet包括一个允许客户机和服务器协商选项的机制,而且它还提供一组标准选项;
3)Telnet对称处理连接的两端,即Telnet不强迫客户机从键盘输入,也不强迫客户机在屏幕上显示输出。
2 适应异构
为了使多个操作系统间的Telnet交互操作成为可能,就必须详细了解异构计算机和操作系统。比如,一些操作系统需要每行文本用ASCII回车控制符(CR)结束,另一些系统则需要使用ASCII换行符(LF),还有一些系统需要用两个字符的序列回车-换行(CR-LF);再比如,大多数操作系统为用户提供了一个中断程序运行的快捷键,但这个快捷键在各个系统中有可能不同(一些系统使用CTRL+C,而另一些系统使用ESCAPE)。如果不考虑系统间的异构性,那么在本地发出的字符或命令,传送到远地并被远地系统解释后很可能会不准确或者出现错误。因此,Telnet协议必须解决这个问题。
为了适应异构环境,Telnet协议定义了数据和命令在Internet上的传输方式,此定义被称作网络虚拟终端NVT(Net Virtual Terminal)。它的应用过程如下:
对于发送的数据:客户机软件把来自用户终端的按键和命令序列转换为NVT格式,并发送到服务器,服务器软件将收到的数据和命令,从NVT格式转换为远地系统需要的格式;
对于返回的数据:远地服务器将数据从远地机器的格式转换为NVT格式,而本地客户机将将接收到的NVT格式数据再转换为本地的格式。
对于NVT格式的详细定义,有兴趣的朋友可以去查找相关资料。
3 传送远地命令
我们知道绝大多数操作系统都提供各种快捷键来实现相应的控制命令,当用户在本地终端键入这些快捷键的时候,本地系统将执行相应的控制命令,而不把这些快捷键作为输入。那么对于Telnet来说,它是用什么来实现控制命令的远地传送呢?
Telnet同样使用NVT来定义如何从客户机将控制功能传送到服务器。我们知道USASCII字符集包括95个可打印字符和33个控制码。当用户从本地键入普通字符时,NVT将按照其原始含义传送;当用户键入快捷键(组合键)时,NVT将把它转化为特殊的ASCII字符在网络上传送,并在其到达远地机器后转化为相应的控制命令。将正常ASCII字符集与控制命令区分主要有两个原因:
1)这种区分意味着Telnet具有更大的灵活性:它可在客户机与服务器间传送所有可能的ASCII字符以及所有控制功能;
2)这种区分使得客户机可以无二义性的指定信令,而不会产生控制功能与普通字符的混乱。
4 数据流向
上面我们提到过将Telnet设计为应用级软件有一个缺点,那就是:效率不高。这是为什么呢?下面给出Telnet中的数据流向:
数据信息被用户从本地键盘键入并通过操作系统传到客户机程序,客户机程序将其处理后返回操作系统,并由操作系统经过网络传送到远地机器,远地操作系统将所接收数据传给服务器程序,并经服务器程序再次处理后返回到操作系统上的伪终端入口点,最后,远地操作系统将数据传送到用户正在运行的应用程序,这便是一次完整的输入过程;输出将按照同一通路从服务器传送到客户机。
因为每一次的输入和输出,计算机将切换进程环境好几次,这个开销是很昂贵的。还好用户的键入速率并不算高,这个缺点我们仍然能够接受。
5 强制命令
我们应该考虑到这样一种情况:假设本地用户运行了远地机器的一个无休止循环的错误命令或程序,且此命令或程序已经停止读取输入,那么操作系统的缓冲区可能因此而被占满,如果这样,远地服务器也无法再将