文档库 最新最全的文档下载
当前位置:文档库 › Tracert 程序设计报告

Tracert 程序设计报告

Tracert 程序设计报告
Tracert 程序设计报告

设计报告

课程计算机网络

设计名称 Tracert 程序

专业班级计科112 同组人学号姓名

实验日期

指导教师

成绩

年月日

一、设计目的和要求

1、实验目的

1.熟悉原始套接字编程。

2.了解网络的结构。

3.了解网络传输底层协议。

4.熟悉掌握 ICMP协议的工作原理和路由跟踪原理。

5.掌握vc

6.0下程序调试、运行的基本方法。

6.通过实验熟悉协议的应用。

2、实验要求

1、通过实验,可以使程序记录并显示了数据报从源端机器传送到目标机器的过程中所经过的路由器的IP地址,并且记录了数据报到达每个路由器所需要的时间。认真观察到达每个路由器的时间有什么区别,从而熟练掌握tracert的工作原理和ICMP报文协议。

2、当我们不能通过网络访问目的设备时,网络管理员就需要判断是哪里出了问题。问题不仅仅会出现在最终目的设备,也可能出现在转发数据包的中间路由器。

二、设计说明(包括设计分析,系统运行环境,设计中的重点和难点,输入和输出输出条件等)

路由是把信息从源穿过网络传递到目的地的行为,在传输过程中,遇到一系列的中间节点。这些中间节点构成了路由跟踪的依据。路由跟踪是在路由的基础上提出的问题,是利用路由跟踪实用程序于确定 IP 数据报访问目标所采取的路径。当我们不能通过网络访问目的设备时,网络运行者就需要判断是哪里出了问题。问题不仅仅会出现在最终目的设备,也可能出现在转发数据包的中间路由器。解决方法是了解了IP数据报访问目标所采取的路径,将发现网络布网简单拓扑,确定路由断点即可解决网络故障。操作系统中的tracert或traceroute路由跟踪程序,通过它可以查看到达目标地址所经过的路径。它的作用与 ping有类似之处使用ping可以检查是否连接,如果不通,一般不好准确判断哪一个节点出错,而使用tracert则可以准确判断出错的部分。

系统实现路由的跟踪,每经过一个路由,要求得到经过该路由节点的地址,也就是说输入目标信息,可以得到本地主机到目标经过的所有中间节点。这些中间节点用IP 地址标识。并要求对跟踪跳数,每一跳等待时间可控。为了让系统更加完善,首先要测试目标的连通性,系统中也要实现目标探测功能,即Ping功能。

当数据报从你的计算机经过多个网关传送到目的地时,Tracert命令可以用来跟踪数据报使用的路由(路径)。该实用程序跟踪的路径是源计算机到目的地的一条路径,不能保证或认为数据报总遵循这个路径。Tracert是一个运行得比较慢的命令(如果你指定的目标地址比较远),每个路由器你大约需要给它15秒钟。

Tracert使用时只需要在tracert后面跟一个IP地址或URL,Tracert会进行相应的域名转换,Tracert一般用来检测故障的位置,你可以用tracert IP在哪个环节上出了问题,虽然还是没有确定是什么问题,但它已经告诉了我们问题所在的地方。

三、系统详细设计(包括程序流程、主要函数等)

#include

#include

#include

#include

#include "itracert.h"

////////////////////////////////////////////////////////

int main(int argc, char* argv[])

{

//检查命令行参数

if (argc != 2)

{

cerr << "\nUsage: itracert ip_or_hostname\n";

return -1;

}

//初始化winsock2环境

WSADATA wsa;

if (WSAStartup(MAKEWORD(2, 2), &wsa) != 0)

{

cerr << "\nFailed to initialize the WinSock2 DLL\n"

<< "error code: " << WSAGetLastError() << endl;

return -1;

}

//将命令行参数转换为IP地址

u_long ulDestIP = inet_addr(argv[1]);

if (ulDestIP == INADDR_NONE)

{

//转换不成功时按域名解析

hostent* pHostent = gethostbyname(argv[1]);

if (pHostent)

{

ulDestIP = (*(in_addr*)pHostent->h_addr).s_addr;

//输出屏幕信息

cout << "\nTracing route to " << argv[1]

<< " [" << inet_ntoa(*(in_addr*)(&ulDestIP)) << "]"

<< " with a maximum of " << DEF_MAX_HOP << " hops.\n" << endl;

}

else //解析主机名失败

{

cerr << "\nCould not resolve the host name " << argv[1] << '\n' << "error code: " << WSAGetLastError() << endl;

WSACleanup();

return -1;

}

}

else

{

//输出屏幕信息

cout << "\nTracing route to " << argv[1]

<< " with a maximum of " << DEF_MAX_HOP << " hops.\n" << endl; }

//填充目的Socket地址

sockaddr_in destSockAddr;

ZeroMemory(&destSockAddr, sizeof(sockaddr_in));

destSockAddr.sin_family = AF_INET;

destSockAddr.sin_addr.s_addr = ulDestIP;

//使用ICMP协议创建Raw Socket

SOCKET sockRaw = WSASocket(AF_INET, SOCK_RAW, IPPROTO_ICMP, NULL, 0, WSA_FLAG_OVERLAPPED);

if (sockRaw == INVALID_SOCKET)

{

cerr << "\nFailed to create a raw socket\n"

<< "error code: " << WSAGetLastError() << endl;

WSACleanup();

return -1;

}

//设置端口属性

int iTimeout = DEF_ICMP_TIMEOUT;

if (setsockopt(sockRaw, SOL_SOCKET, SO_RCVTIMEO, (char*)&iTimeout, sizeof(iTimeout)) == SOCKET_ERROR)

{

cerr << "\nFailed to set recv timeout\n"

<< "error code: " << WSAGetLastError() << endl;

closesocket(sockRaw);

WSACleanup();

return -1;

}

if (setsockopt(sockRaw, SOL_SOCKET, SO_SNDTIMEO, (char*)&iTimeout, sizeof(iTimeout)) == SOCKET_ERROR)

{

cerr << "\nFailed to set send timeout\n"

<< "error code: " << WSAGetLastError() << endl;

closesocket(sockRaw);

WSACleanup();

return -1;

}

//创建ICMP包发送缓冲区和接收缓冲区

char IcmpSendBuf[sizeof(ICMP_HEADER)+DEF_ICMP_DATA_SIZE];

memset(IcmpSendBuf, 0, sizeof(IcmpSendBuf));

char IcmpRecvBuf[MAX_ICMP_PACKET_SIZE];

memset(IcmpRecvBuf, 0, sizeof(IcmpRecvBuf));

//填充待发送的ICMP包

ICMP_HEADER* pIcmpHeader = (ICMP_HEADER*)IcmpSendBuf;

pIcmpHeader->type = ICMP_ECHO_REQUEST;

pIcmpHeader->code = 0;

pIcmpHeader->id = (USHORT)GetCurrentProcessId();

memset(IcmpSendBuf+sizeof(ICMP_HEADER), 'E', DEF_ICMP_DATA_SIZE);

//开始探测路由

DECODE_RESULT stDecodeResult;

BOOL bReachDestHost = FALSE;

USHORT usSeqNo = 0;

int iTTL = 1;

int iMaxHop = DEF_MAX_HOP;

while (!bReachDestHost && iMaxHop--)

{

//设置IP数据报头的ttl字段

setsockopt(sockRaw, IPPROTO_IP, IP_TTL, (char*)&iTTL, sizeof(iTTL));

//输出当前跳站数作为路由信息序号

cout << setw(3) << iTTL << flush;

//填充ICMP数据报剩余字段

((ICMP_HEADER*)IcmpSendBuf)->cksum = 0;

((ICMP_HEADER*)IcmpSendBuf)->seq = htons(usSeqNo++);

((ICMP_HEADER*)IcmpSendBuf)->cksum = GenerateChecksum((USHORT*)IcmpSendBuf,

sizeof(ICMP_HEADER)+DEF_ICMP_DATA_SIZE);

//记录序列号和当前时间

https://www.wendangku.net/doc/8d17945302.html,SeqNo = ((ICMP_HEADER*)IcmpSendBuf)->seq;

stDecodeResult.dwRoundTripTime = GetTickCount();

//发送ICMP的EchoRequest数据报

if (sendto(sockRaw, IcmpSendBuf, sizeof(IcmpSendBuf), 0,

(sockaddr*)&destSockAddr, sizeof(destSockAddr)) == SOCKET_ERROR)

{

//如果目的主机不可达则直接退出

if (WSAGetLastError() == WSAEHOSTUNREACH)

cout << '\t' << "Destination host unreachable.\n"

<< "\nTrace complete.\n" << endl;

closesocket(sockRaw);

WSACleanup();

return 0;

}

//接收ICMP的EchoReply数据报

//因为收到的可能并非程序所期待的数据报,所以需要循环接收直到收到所要数据或超时

sockaddr_in from;

int iFromLen = sizeof(from);

int iReadDataLen;

while (1)

{

//等待数据到达

iReadDataLen = recvfrom(sockRaw, IcmpRecvBuf, MAX_ICMP_PACKET_SIZE,

0, (sockaddr*)&from, &iFromLen);

if (iReadDataLen != SOCKET_ERROR) //有数据包到达

{

//解码得到的数据包,如果解码正确则跳出接收循环发送下一个EchoRequest包

if (DecodeIcmpResponse(IcmpRecvBuf, iReadDataLen, stDecodeResult))

{

if (stDecodeResult.dwIPaddr.s_addr == destSockAddr.sin_addr.s_addr)

bReachDestHost = TRUE;

cout << '\t' << inet_ntoa(stDecodeResult.dwIPaddr) << endl;

break;

}

}

else if (WSAGetLastError() == WSAETIMEDOUT) //接收超时,打印星号

{

cout << setw(9) << '*' << '\t' << "Request timed out." << endl;

break;

}

else

{

cerr << "\nFailed to call recvfrom\n"

<< "error code: " << WSAGetLastError() << endl;

closesocket(sockRaw);

WSACleanup();

return -1;

}

}

//TTL值加1

iTTL++;

}

//输出屏幕信息

cout << "\nTrace complete.\n" << endl;

closesocket(sockRaw);

WSACleanup();

return 0;

}

//产生网际校验和

USHORT GenerateChecksum(USHORT* pBuf, int iSize)

{

unsigned long cksum = 0;

while (iSize>1)

{

cksum += *pBuf++;

iSize -= sizeof(USHORT);

}

if (iSize)

cksum += *(UCHAR*)pBuf;

cksum = (cksum >> 16) + (cksum & 0xffff);

cksum += (cksum >> 16);

return (USHORT)(~cksum);

}

//解码得到的数据报

BOOL DecodeIcmpResponse(char* pBuf, int iPacketSize, DECODE_RESULT& stDecodeResult)

{

//检查数据报大小的合法性

IP_HEADER* pIpHdr = (IP_HEADER*)pBuf;

int iIpHdrLen = pIpHdr->hdr_len * 4;

if (iPacketSize < (int)(iIpHdrLen+sizeof(ICMP_HEADER)))

return FALSE;

//按照ICMP包类型检查id字段和序列号以确定是否是程序应接收的Icmp包

ICMP_HEADER* pIcmpHdr = (ICMP_HEADER*)(pBuf+iIpHdrLen);

USHORT usID, usSquNo;

if (pIcmpHdr->type == ICMP_ECHO_REPLY)

{

usID = pIcmpHdr->id;

usSquNo = pIcmpHdr->seq;

}

else if(pIcmpHdr->type == ICMP_TIMEOUT)

{

char* pInnerIpHdr = pBuf+iIpHdrLen+sizeof(ICMP_HEADER); //载荷中的IP头

int iInnerIPHdrLen = ((IP_HEADER*)pInnerIpHdr)->hdr_len * 4;//载荷中的IP头长

ICMP_HEADER* pInnerIcmpHdr = (ICMP_HEADER*)(pInnerIpHdr+iInnerIPHdrLen);//载荷中的ICMP头

usID = pInnerIcmpHdr->id;

usSquNo = pInnerIcmpHdr->seq;

}

else

return FALSE;

if (usID != (USHORT)GetCurrentProcessId() || usSquNo !=https://www.wendangku.net/doc/8d17945302.html,SeqNo)

return FALSE;

//处理正确收到的ICMP数据报

if (pIcmpHdr->type == ICMP_ECHO_REPLY ||

pIcmpHdr->type == ICMP_TIMEOUT)

{

//返回解码结果

stDecodeResult.dwIPaddr.s_addr = pIpHdr->sourceIP;

stDecodeResult.dwRoundTripTime = GetTickCount()-stDecodeResult.dwRoundTripTime;

//打印屏幕信息

if (stDecodeResult.dwRoundTripTime)

cout << setw(6) << stDecodeResult.dwRoundTripTime << " ms" << flush;

else

cout << setw(6) << "<1" << " ms" << flush;

return TRUE;

}

return FALSE;

}

五、实验数据、结果分析

该程序将包含不同生存时间(TTL)值的Internet控制消息协议(ICMP)回显数据包发送到目标,以决定到达目标采用的路由。要在转发数据包上的TTL之前至少递减1,必需路径上的每个路由器,所以TTL是有效的跃点计数。数据包上的TTL到达0时,路由器应该将“ICMP已超时”的消息发送回源系统。Tracert先发送TTL为1的回显数据包,并在随后的每次发送过程将TTL递增1,直到目标响应或TTL达到最大值,从而确定路由。路由通过检查中级路由器发送回的“ICMP已超时”的消息来确定路由。

六、总结

路由追踪的过程是,源主机向目的主机发送一个类为8的回应请求报文,若目的站收到回应请求报文,则把把报文IP包头部中的目的IP与源主机的IP地址交换,将类型为8改为回应类型0,计算出新的校验和再发往源主机。若源主机受到了该回应报文,则不但说明了,目的主机可达,而且说明目的主机与源主机之间的路由器工作正常。源主机和目的主机的IP、ICMP软件运行正常。但若在传播过程中出现了某些问题,如网络不通、目的主机不在网络中等,导致数据被定向一个无效的目的地,这时相关的路由器或目的主机将发回目的不可达报文,并在代码中说明该报文的具体情况:是网络不可达还是主机不可达等。若请求报文在传播过程中超时,即TTL被减为0(报文每经过一个路由器TTL都要减1,则该路由器返回一个TTL超时报文(类型为11),报文IP

头中源IP地址即为本路由器的IP地址。

七、教师意见

路由跟踪命令大全

路由跟踪命令大全 除了显示路由外还提供325S的分析计算丢失包的% 使用 nbtstat 解决 NetBIOS 名称问题 TCP/IP 上的 NetBIOS (NetBT) 将 NetBIOS 名称解析成 IP 地址。TCP/IP 为NetBI OS 名称解析提供了很多选项,包括本地缓存搜索、WINS 服务器查询、广播、DNS 服 务器查询以及 Lmhosts 和主机文件搜索。 Nbtstat 是解决 NetBIOS 名称解析问题的有用工具。可以使用 nbtstat 命令删除或 更正预加载的项目: nbtstat -n 显示由服务器或重定向器之类的程序在系统上本地注册的名称。nbtstat -c 显示 NetBIOS 名称缓存,包含其他计算机的名称对地址映射。nbtstat -R 清除名称缓存,然后从 Lmhosts 文件重新加载。 nbtstat -RR 释放在 WINS 服务器上注册的 NetBIOS 名称,然后刷新它们的注册。 nbtstat -a name 对 name 指定的计算机执行 NetBIOS 适配器状态命令。适配器状态 命令将返回计算机的本地 NetBIOS 名称表,以及适配器的媒体访问控制地址。nbtstat -S 列出当前的 NetBIOS 会话及其状态(包括统计),如下例所示:NetBIOS connection table Local name State In/out Remote Host Input Output ------------------------------------------------------------------ CORP1 <00> Connected Out CORPSUP1<20> 6MB 5MB CORP1 <00> Connected Out CORPPRINT<20> 108KB 116KB CORP1 <00> Connected Out CORPSRC1<20> 299KB 19KB CORP1 <00> Connected Out CORPEMAIL1<20> 324KB 19KB CORP1 <03> Listening 使用 netstat 显示连接统计 可以使用 netstat 命令显示协议统计信息和当前的 TCP/IP 连接。netstat -a 命令 将显示所有连接,而 netstat -r 显示路由表和活动连接。netstat -e 命令将显示 Ethernet 统计信息,而 netstat -s 显示每个协议的统计信息。如果使用netstat -n,则不能将地址和端口号转换成名称。下面是 netstat 的输出示例:

路由跟踪命令

路由跟踪命令 1.最基本,最常用的,测试物理网络的 ping 192.168.0.8 -t ,参数-t是等待用户去中断测试 2.查看DNS、IP、Mac等 A.Win98:winipcfg B.Win2000以上:Ipconfig/all C.NSLOOKUP:如查看河北的DNS C:\>nslookup Default Server: https://www.wendangku.net/doc/8d17945302.html, Address: 202.99.160.68 >server 202.99.41.2 则将DNS改为了41.2 > https://www.wendangku.net/doc/8d17945302.html, Server: https://www.wendangku.net/doc/8d17945302.html, Address: 202.99.160.68 Non-authoritative answer: Name: https://www.wendangku.net/doc/8d17945302.html, Address: 202.99.160.212 3.网络信使(经常有人问的~) Net send 计算机名/IP|* (广播) 传送内容,注意不能跨网段 net stop messenger 停止信使服务,也可以在面板-服务修改 net start messenger 开始信使服务 4.探测对方对方计算机名,所在的组、域及当前用户名(追捕的工作原理) ping -a IP -t ,只显示NetBios名 nbtstat -a 192.168.10.146 比较全的 https://www.wendangku.net/doc/8d17945302.html,stat -a 显示出你的计算机当前所开放的所有端口 netstat -s -e 比较详细的显示你的网络资料,包括TCP、UDP、ICMP 和IP的统计等 6.探测arp绑定(动态和静态)列表,显示所有连接了我的计算机,显示对方IP和MAC 地址 arp -a 7.在代理服务器端 捆绑IP和MAC地址,解决局域网内盗用IP!: ARP -s 192.168.10.59 00 -50-ff-6c-08-75 解除网卡的IP与MAC地址的绑定: arp -d 网卡IP 8.在网络邻居上隐藏你的计算机(让人家看不见你!)

【协议分析】【通过tracert 命令查看路由跟踪报文】

实验七通过tracert命令查看路由跟踪报文【实验目的】 1、理解路由跟踪过程。 2、掌握tracert命令使用方法。 3、掌握路由跟踪报文特点。 【实验学时】 1学时 【实验环境】 图 3-42 实验拓扑图 【实验内容】 1、掌握路由跟踪过程; 2、掌握tracert命令使用方法; 3、掌握路由跟踪报文特点。

图 3-43 实验流程图 【实验原理】 Tracert(跟踪路由)是路由跟踪实用程序,用于确定IP数据报访问目标所采取的路径。Tracert命令用IP生存时间(TTL)字段和ICMP错误消息来确定从一个主机到网络上其他主机的路由。 Tracert工作原理为Tracert程序向目标端发送ICMP请求数据包,并且将数据包中的TTL值置为1,此ICMP请求数据包在到达第一跳路由器时,TTL减1为0,因此路由器会向发送端发送ICMP超时消息。收到此消息后Tracert程序继续向目标端发送ICMP请求数据包,并将数据包中的TTL值加1置为2,这时,ICMP请求数据包在向目标端前进的路由上到达第二个路由器后,TTL值减为0,第二个路由器同样的,向发送端发送ICMP超时报文。依此类推,直到ICMP请求数据包到达目的端,Tracert程序则可以根据各路由器回复的ICMP超时报文确定到达目的端的路径。 利用Tracert通常可以测试,在从源端到达目的端的路径上,需要进行哪些节点,或是 在其中的哪个节点上存在故障。

步骤一:设定实验环境 1、配置主机IP和路由器IP地址。 2、按照实验拓扑连接网络拓扑。 RA(config)#interface FastEthernet 0/0 RA(config-if)#ip address 211.103.220.160 255.255.255.0 RA(config)#interface FastEthernet 0/1 RA(config-if)#ip address 172.16.1.1 255.255.255.0 RA(config)#router rip RA(config-router)#network 172.16.0.0 RA(config-router)#network 211.103.220.0 RA(config-router)#version 2 RA(config-router)#no auto-summary RB(config)#interface FastEthernet 0/0 RB(config-if)#ip address 211.103.220.161 255.255.255.0 RB(config)#interface FastEthernet 0/1 RB(config-if)#ip address 10.255.70.12 255.255.255.0 RB(config-router)#network 10.0.0.0 RB(config-router)#network 211.103.220.0 RB(config-router)#version 2 RB(config-router)#no auto-summary RC(config)#interface FastEthernet 0/0 RC(config-if)#ip address 10.255.70.13 255.255.255.0 RC(config)#interface FastEthernet 0/1 RC(config-if)#ip address 218.241.240.1 255.255.255.0 RA(config-router)#network 10.0.0.0 RA(config-router)#network 218.241.240.0 RA(config-router)#version 2 RA(config-router)#no auto-summary 步骤二:捕获数据包,分析Tracert过程 1、在PC1中开启协议分析软件,进行数据包捕获 2、在PC1命令行中,用命令tracert 218.241.240.8对PC2进行路由跟踪,输出的Tracert 结果如下图所示。

路由跟踪命令

路由跟踪命令 查看DNS、IP、Mac等 1.最基本,最常用的,测试物理网络的 ping 192.168.0.8 -t ,参数-t是等待用户去中断测试 2.查看DNS、IP、Mac等 A.Win98:winipcfg B.Win2000以上:Ipconfig/all C.NSLOOKUP:如查看河北的DNS C:\>nslookup Default Server: https://www.wendangku.net/doc/8d17945302.html, Address: 202.99.160.68 >server 202.99.41.2 则将DNS改为了41.2 > https://www.wendangku.net/doc/8d17945302.html, Server: https://www.wendangku.net/doc/8d17945302.html, Address: 202.99.160.68 Non-authoritative answer: Name: https://www.wendangku.net/doc/8d17945302.html, Address: 202.99.160.212 3.网络信使(经常有人问的~) Net send 计算机名/IP|* (广播) 传送内容,注意不能跨网段 net stop messenger 停止信使服务,也可以在面板-服务修改 net start messenger 开始信使服务 4.探测对方对方计算机名,所在的组、域及当前用户名(追捕的工作原理) ping -a IP -t ,只显示NetBios名 nbtstat -a 192.168.10.146 比较全的 https://www.wendangku.net/doc/8d17945302.html,stat -a 显示出你的计算机当前所开放的所有端口 netstat -s -e 比较详细的显示你的网络资料,包括TCP、UDP、ICMP 和IP的统计等 6.探测arp绑定(动态和静态)列表,显示所有连接了我的计算机,显示对方IP和MAC 地址 arp -a 7.在代理服务器端 捆绑IP和MAC地址,解决局域网内盗用IP!: ARP -s 192.168.10.59 00 -50-ff-6c-08-75 解除网卡的IP与MAC地址的绑定: arp -d 网卡IP

简述TRACERT命令

简述TRACERT命令 答:TRACERT判定数据包到达目的主机所经过的路径、显示数据包经过的中继节点清单和到达时间。Tracert通过发送小的数据包到目的设备直到其返回,来测量其需要多长时间。一条路径上的每个设备Traceroute要测3次。输出结果中包括每次测试的时间(ms)和设备的名称(如有的话)及其IP地址。 简单描述VPN技术 答:VPN是指采用隧道技术,将企业专网的数据加密封装后,透过虚拟的公网隧道进行传输,从而防止敏感数据的网络安全性。 简述VLAN技术优点 答:抑制广播风暴、增加网络安全、管理控制集中化 简单描述隧道技术 答:隧道技术是一种通过使用互联网络的基础设施在网络之间传递数据的方式。使用隧道传递的数据(或负载)可以是不同协议的数据桢(此字不正确)或包。隧道协议将这些其它协议的数据桢或包重新封装在新的包头中发送。新的包头提供了路由信息,从而使封装的负载数据能够通过互联网络传递。 被封装的数据包在隧道的两个端点之间通过公共互联网络进行路由。被封装的数据包在公共互联网络上传递时所经过的逻辑路径称为隧道。一旦到达网络终点,数据将被解包并转发到最终目的地。隧道技术是指包括数据封装,传输和解包在内的全过程。 什么是PPPOE? 答:基于以太网的点对点协议,PPPOE通过用户登录来确保通讯的安全和测量每个用户的数据流量。 简单描述SNMP 答:SNMP是指简单网络管理协议,是在TCP/IP网络上通过交换信息包的方式来实现网管。 一、请说出DHCP的工作原理。(10分) DHCP是Dynamic Host Configuration Protocol。 1.寻找Server。当DHCP客户端第一次登录网路的时候﹐也就是客户发现本机上没有任何IP 资料设定﹐它会向网路发出一个DHCP DISCOVER封包 2.提供IP租用位址。当DHCP服务器监听到客户端发出的DHCP discover广播后﹐它会从那些还没有租出的位址范围内﹐选择最前面的的空置IP,连同其它TCP/IP设定,回应给客户端一个DHCPOFFER封包。 3.接受IP租约。如果客户端收到网路上多台DHCP服务器的回应,只会挑选其中一个DHCP offer(通常是最先抵达的那个),并且会向网路发送一个DHCP request广播封包,告诉所有DHCP服务器它将指定接受哪一台服务器提供的IP位址。 4.确认阶段。即DHCP服务器确认所提供的IP地址的阶段。当DHCP服务器收到DHCP客户机回答的DHCP request请求信息之后,它便向DHCP客户机发送一个包含它所提供的IP 地址和其他设置的DHCPack确认信息,告诉DHCP客户机可以使用它所提供的IP地址。然后DHCP客户机便将其TCP/IP协议与网卡绑定,另外,除DHCP客户机选中的服务器外,其他的DHCP服务器都将收回曾提供的IP地址 5.重新登录。以后DHCP客户机每次重新登录网络时,就不需要再发送DHCP discover发现信息了,而是直接发送包含前一次所分配的IP地址的DHCP request请求信息 6.更新租约。DHCP服务器向DHCP客户机出租的IP地址一般都有一个租借期限,期满后DHCP服务器便会收回出租的IP地址。如果DHCP客户机要延长其IP租约,则必须更新其IP租约。

TRACERT命令及用法

TRACERT命令及用法 Tracert(跟踪路由)是路由跟踪实用程序,用于确定 IP 数据报访问目标所采取的路径。Tracert 命令用 IP 生存时间 (TTL) 字段和 ICMP 错误消息来确定从一个主机到网络上其他主机的路由。 Tracert(跟踪路由)是路由跟踪实用程序,用于确定 IP 数据报访问目标所采取的路径。Tracert 命令用 IP 生存时间 (TTL) 字段和 ICMP 错误消息来确定从一个主机到网络上其他主机的路由。 Tracert 工作原理 通过向目标发送不同 IP 生存时间 (TTL) 值的“Internet 控制消息协议 (ICMP)”回应数据包,Tracert 诊断程序确定到目标所采取的路由。要求路径上的每个路由器在转发数据包之前至少将数据包上的 TTL 递减 1。数据包上的 TTL 减为 0 时,路由器应该将“ICMP 已超时”的消息发回源系统。 Tracert 先发送 TTL 为 1 的回应数据包,并在随后的每次发送过程将 TTL 递增 1,直到目标响应或 TTL 达到最大值,从而确定路由。通过检查中间路由器发回的“ICMP 已超时”的消息确定路由。某些路由器不经询问直接丢弃 TTL 过期的数据包,这在 Tracert 实用程序中看不到。 Tracert 命令按顺序打印出返回“ICMP 已超时”消息的路径中的近端路由器接口列表。如果使用 -d 选项,则 Tracert 实用程序不在每个 IP 地址上查询 DNS。

在下例中,数据包必须通过两个路由器(10.0.0.1 和192.168.0.1)才能到达主机 172.16.0.99。主机的默认网关是10.0.0.1,192.168.0.0 网络上的路由器的IP 地址是192.168.0.1。 C:\>tracert 172.16.0.99 -d Tracing route to 172.16.0.99 over a maximum of 30 hops 1 2s 3s 2s 10,0.0,1 2 75 ms 8 3 ms 88 ms 192.168.0.1 3 73 ms 79 ms 93 ms 172.16.0.99 Trace complete. 用 tracert 解决问题 可以使用 tracert 命令确定数据包在网络上的停止位置。下例中,默认网关确定 192.168.10.99 主机没有有效路径。这可能是路由器配置的问题,或者是 192.168.10.0 网络不存在(错误的 IP 地址)。 C:\>tracert 192.168.10.99 Tracing route to 192.168.10.99 over a maximum of 30 hops 1 10.0.0.1 reports:Destination net unreachable. Trace complete. Tracert 实用程序对于解决大网络问题非常有用,此时可以采取几条路径到达同一个点。 Tracert 命令行选项

常见的9个网络命令详解(图)

实验:常见的9个网络命令 1.ping命令 ping是个使用频率极高的实用程序,主要用于确定网络的连通性。这对确定网络是否正确连接,以及网络连接的状况十分有用。简单的说,ping就是一个测试程序,如果ping 运行正确,大体上就可以排除网络访问层、网卡、Modem的输入输出线路、电缆和路由器等存在的故障,从而缩小问题的范围。 ping能够以毫秒为单位显示发送请求到返回应答之间的时间量。如果应答时间短,表示数据报不必通过太多的路由器或网络,连接速度比较快。ping还能显示TTL(Time To Live,生存时间)值,通过TTL值可以推算数据包通过了多少个路由器。 (1) 命令格式 ping 主机名 ping 域名 ping IP地址 如图所示,使用ping命令检查到IP地址210.43.16.17的计算机的连通性,该例为连接正常。共发送了四个测试数据包,正确接收到四个数据包。 (2) ping命令的基本应用 一般情况下,用户可以通过使用一系列ping命令来查找问题出在什么地方,或检验网

络运行的情况。 下面就给出一个典型的检测次序及对应的可能故障: ① ping 127.0.0.1 如果测试成功,表明网卡、TCP/IP协议的安装、IP地址、子网掩码的设置正常。如果测试不成功,就表示TCP/IP的安装或设置存在有问题。 ② ping 本机IP地址 如果测试不成功,则表示本地配置或安装存在问题,应当对网络设备和通讯介质进行测试、检查并排除。 ③ ping局域网内其他IP 如果测试成功,表明本地网络中的网卡和载体运行正确。但如果收到0个回送应答,那么表示子网掩码不正确或网卡配置错误或电缆系统有问题。 ④ ping 网关IP 这个命令如果应答正确,表示局域网中的网关路由器正在运行并能够做出应答。 ⑤ ping 远程IP 如果收到正确应答,表示成功的使用了缺省网关。对于拨号上网用户则表示能够成功的访问Internet(但不排除ISP的DNS会有问题)。 ⑥ ping localhost local host是系统的网络保留名,它是127.0.0.1的别名,每台计算机都应该能够将该名字转换成该地址。否则,则表示主机文件(/Windows/host)中存在问题。 ⑦ ping https://www.wendangku.net/doc/8d17945302.html,(一个著名网站域名) 对此域名执行Ping命令,计算机必须先将域名转换成IP地址,通常是通过DNS服务器。如果这里出现故障,则表示本机DNS服务器的IP地址配置不正确,或它所访问的DNS服务器有故障 如果上面所列出的所有ping命令都能正常运行,那么计算机进行本地和远程通信基本上就没有问题了。但是,这些命令的成功并不表示你所有的网络配置都没有问题,例如,某些子网掩码错误就可能无法用这些方法检测到。 (3)ping命令的常用参数选项 ping IP -t:连续对IP地址执行ping命令,直到被用户以Ctrl+C中断。 ping IP -l 2000:指定ping命令中的特定数据长度(此处为2000字节),而不是缺

Tracert(跟踪路由)是路由跟踪实用程序,用于确定IP(精)

Tracert(跟踪路由)是路由跟踪实用程序,用于确定IP 数据报访问目标所采取的路径。Tracert 命令用IP 生存时间(TTL) 字段和ICMP 错误消息来确定从一个主机到网络上其他主机的路由。 Tracert 工作原理 通过向目标发送不同IP 生存时间(TTL) 值的“Internet 控制消息协议(ICMP)”回应数据包,Tracert 诊断程序确定到目标所采取的路由。要求路径上的每个路由器在转发数据包之前至少将数据包上的TTL 递减1。数据包上的TTL 减为0 时,路由器应该将“ICMP 已超时”的消息发回源系统。 Tracert 先发送TTL 为1 的回应数据包,并在随后的每次发送过程将TTL 递增1,直到目标响应或TTL 达到最大值,从而确定路由。通过检查中间路由器发回的“ICMP 已超时”的消息确定路由。某些路由器不经询问直接丢弃TTL 过期的数据包,这在Tracert 实用程序中看不到。 Tracert 命令按顺序打印出返回“ICMP 已超时”消息的路径中的近端路由器接口列表。如果使用-d 选项,则Tracert 实用程序不在每个IP 地址上查询DNS。 在下例中,数据包必须通过两个路由器(10.0.0.1 和192.168.0.1)才能到达主机172.16.0.99。主机的默认网关是10.0.0.1,192.168.0.0 网络上的路由器的IP 地址是192.168.0.1。 C:\>tracert 172.16.0.99 -d Tracing route to 172.16.0.99 over a maximum of 30 hops 1 2s 3s 2s 10,0.0,1 2 75 ms 8 3 ms 88 ms 192.168.0.1 3 73 ms 79 ms 93 ms 172.16.0.99 Trace complete. 用tracert 解决问题 可以使用tracert 命令确定数据包在网络上的停止位置。下例中,默认网关确定192.168.10.99 主机没有有效路径。这可能是路由器配置的问题,或者是192.168.10.0 网络不存在(错误的IP 地址)。 C:\>tracert 192.168.10.99 Tracing route to 192.168.10.99 over a maximum of 30 hops 1 10.0.0.1 reports:Destination net unreachable. Trace complete.

Tracert使用方法

该诊断实用程序将包含不同生存时间(TTL) 值的Internet 控制消息协议(ICMP) 回显数据包发送到目标,以决定到达目标采用的路由。要在转发数据包上的TTL 之前至少递减1,必需路径上的每个路由器,所以TTL 是有效的跃点计数。数据包上的TTL 到达0 时,路由器应该将“ICMP 已超时”的消息发送回源系统。Tracert 先发送TTL 为 1 的回显数据包,并在随后的每次发送过程将TTL 递增1,直到目标响应或TTL 达到最大值,从而确定路由。路由通过检查中级路由器发送回的“ICMP 已超时”的消息来确定路由。不过,有些路由器悄悄地下传包含过期TTL 值的数据包,而tracert 看不到。 tracert [-d] [-h maximum_hops] [-j computer-list] [-w timeout] target_name 使用tracert 跟踪网络连接 Tracert(跟踪路由)是路由跟踪实用程序,用于确定IP 数据报访问目标所采取的路径。Tracert 命令用IP 生存时间(TTL) 字段和ICMP 错误消息来确定从一个主机到网络上其它主机的路由。 Tracert 工作原理 通过向目标发送不同IP 生存时间(TTL) 值的“Internet 控制消息协议(ICMP)”回应数据包,Tracert 诊断程序确定到目标所采取的路由。要求路径上的每个路由器在转发数据包之前至少将数据包上的TTL 递减1。数据包上的TTL 减为0 时,路由器应该将“ICMP 已超时”的消息发回源系统。 Tracert 先发送TTL 为1 的回应数据包,并在随后的每次发送过程将TTL 递增1,直到目标响应或TTL 达到最大值,从而确定路由。通过检查中间路由器发回的“ICMP 已超时”的消息确定路由。某些路由器不经询问直接丢弃TTL 过期的数据包,这在Tracert 实用程序中看不到。 Tracert 命令按顺序打印出返回“ICMP 已超时”消息的路径中的近端路由器接口列表。如果使 用-d 选项,则Tracert 实用程序不在每个IP 地址上查询DNS。 在下例中,数据包必须通过两个路由器(10.0.0.1 和192.168.0.1)才能到达主机172.16.0.99。主机的默认网关是10.0.0.1,192.168.0.0 网络上的路由器的IP 地址是192.168.0.1。 C:\>tracert 172.16.0.99 -d Tracing route to 172.16.0.99 over a maximum of 30 hops 1 2s 3s 2s 10,0.0,1 2 75 ms 8 3 ms 88 ms 192.168.0.1 3 73 ms 79 ms 93 ms 172.16.0.99 Trace complete. 用tracert 解决问题 可以使用tracert 命令确定数据包在网络上的停止位置。下例中,默认网关确定192.168.10.99 主机没有有效路径。这可能是路由器配置的问题,或者是192.168.10.0 网络不存在(错误的IP 地址)。 C:\>tracert 192.168.10.99 Tracing route to 192.168.10.99 over a maximum of 30 hops 1 10.0.0.1 reports:Destination net unreachable. Trace complete.

计算机网络 Tracert 命令

Tracert 命令 一、tracert命令的功能 Tracert(跟踪路由)是路由跟踪实用程序,用于确定IP 数据报访问目标主机所采取的路径。 路由器在转发一个IP 数据报时,会将数据包中的TTL(生存时间)值减1,当数据包上的TTL 减为0 时,路由器会将一个“ICMP 已超时”的消息发回源主机。 Tracert 命令先发送TTL 为 1 的回应数据包,并在随后的每次发送过程将TTL 递增1,直到目标主机响应或TTL 达到最大值,从而确定路由。通过检查中间路由器发回的“I CMP 已超时”的消息确定路由。 说明:某些路由器不经询问直接丢弃TTL 过期的数据包,这时用Tracert 命令检测会出现偏差。另外,如果到达目的主机有不止一条路径,Tracert 命令探查到的只是其中一条路径。 二、tracert命令的使用 使用tracert命令时,先打开“开始→程序→附件→命令提示符”,然后就可输入命令了。 ①tracert IP地址或URL:检测到指定主机经过的路由。这条命令执行较慢,每个路由器我们大约需要给它15秒钟。 ②tracert IP地址或URL -d:功能与①相同,但不会尝试解析路径中路由器的名称,所以速度要快一些,如图1所示。 上例中是探测到主机172.16.0.99 的路径,可以看出需要经过2个路由器,第1个路由器的IP地址是10.0.0.1(这应该是本网络的出口路由器,即本网络的默认网关),第2个路由器的IP地址是192.168.0.1,然后可到达目的主机172.16.0.99。

这是一个探测失败的例子,没有测试到目的主机,可能该IP地址不存在。如果可以肯定IP地址是存在的,则可能是路由器的配置有问题。这个例子中确定了数据包停止的位置,有利于找到故障点 ③tracert IP地址或URL -h maximum_hops:指定跃点数以跟踪到目的主机的路由。 ④tracert IP地址或URL -j host-list:指定Tracert实用程序数据包所采用路径中的路由器接口列表。 ⑤tracert IP地址或URL -w timeout:等待timeout为每次回复所指定的毫秒数。

Ping和Tracert命令原理详解

关于Ping和Tracert命令原理详解 本文只是总结了两个常用的网络命令的实现原理和一点使用经验说明。这些东西通常都分布在各种书籍或者文章中的,我勤快那么一点点,总结一下,再加上我的一点理解和使用经验,方便大家了解。这些也是很基础的东西,没什么高深的。 Ping 这个应该大家都会用的吧,最主要的就是检测目标主机是不是可连通。Ping程序实际就是发送一个ICMP回显请求报文(就是请求别人收到这个报文之后回显)给目的主机,并等待回显的ICMP应答。然后打印出回显的报文。Ping不通一个地址,并不一定表示这个IP不存在或者没有连接在网络上,因为对方主机可能做了限制,比如安装了防火墙,因此Ping不通并不表示不能使用FTP或者TELNET连接。 C:\Documents and Settings\snoopy> ping 202.103.176.22 /t Pinging 202.103.176.22 with 32 bytes of data: Reply from 202.103.176.22: bytes=32 time=6ms TTL=58 Reply from 202.103.176.22: bytes=32 time=6ms TTL=58 PING得到的结果包括字节数、反应时间、以及生存时间。Ping程序通过在ICMP报文数据中存放发送请求的时间来计算返回时间。当应答返回时,根据现在时间减去报文中存放的发送时间就得到反应时间了。生存时间(TTL),本来就存放在IP数据报的头部,直接就能够获取。在返回的报文显示的TTL值表示从目标主机到源主机剩下的跳数。 Tracert 首先,要知道一个路由器的原理:当路由器接收到一个TTL为1的IP数据报的时候,路由器就不再转发这个数据了,而直接丢弃,并且发送一个ICMP“超时”信息给源主机,这个信息会带上自己的接口地址。(当路由器接收到TTL=1的数据包时,它会将TTL值减1,这时TTL值减为0,路由器将会丢弃该报文并向源点发送错误信息。这个方法可以防止报文在互联网上无休止的传输,所以网络中根本就不会有TTL=0的报文) 一个探测路由的程序,可以让我们看见IP数据报到达目的地经过的路由。Tracert利用ICMP数据报和IP数据报头部中的TTL值来实现。TTL(Time To Live)是一个IP数据报的生存时间,当每个IP数据报经过路由器的时候都回把TTL值减去1或者减去在路由器中停留的时间,但是大多数数据报在路由器中停留的时间都小于1 秒种,因此实际上就是在TTL值减去了1。这样,TTL值就相当于一个路由器的计数器。当路由器接收到一个TTL为1的IP数据报的时候,路由器就不再转发这个数据了,而直接丢弃,并且发送一个ICMP“超时”信息给源主机。Tracert程序的关键就是这个回显的ICMP报文的IP报头的信源地址就是这个路由器的IP地址。同时,如果到达了目的主机,我们并不能知道,于是,Tracert还同时发送一个UDP信息给目的主机,并且选择一个很大的值作为UDP的端口,使主机的任何一个应用程序都不使用这个端口。所以,当达到目的主机的时候,目标主机的UDP模块(别的主机的不会做出反应)就产生一个“端口不可到达”的错误,这样就能判断是否是到达目的地了。

ping, tracert和traceroute,Ipconfig命令详解

ping, tracert和traceroute Ipconfig命令详解 ping命令详解 使用ping可以测试计算机名和计算机的ip 地址,验证与远程计算机的连接,通过将icmp 回显数据包发送到计算机并侦听回显回复数据包来验证与一台或多台远程计算机的连接,该命令只有在安装了tcp/ip 协议后才可以使用。现在打开你的ms-dos(开始→程序→ms-dos),用win2000的朋友打开cmd.exe(这是win2000下的ms-dos,开始→程序→附件→"命令提示符" 或开始→搜索文件或文件夹→"填入cmd.exe",找到后双击运行就可以了。)下面我们来看看他的命令: ping [-t] [-a] [-n count] [-l length] [-f] [-i ttl] [-v tos] [-r count] [-s count] [[-j computer-list] | [-k computer-list]] [-w timeout] destination-list 参数 -t ping 指定的计算机直到中断。ctrl+c停止 -a 将地址解析为计算机名。例:c:\\>ping -a 127.0.0.1 pinging china-hacker [127.0.0.1] with 32 bytes of data:(china-hacker就是他的计算机名)reply from 127.0.0.1: bytes=32 timeping https://www.wendangku.net/doc/8d17945302.html, pinging https://www.wendangku.net/doc/8d17945302.html, [192.20.239.132] with 32 bytes of data: (192.20.239.132 他的ip地址) reply from 192.20.239.132:bytes=32 time=101ms ttl=243 reply from 192.20.239.132:bytes=32 time=100ms ttl=243 reply from 192.20.239.132:bytes=32 time=120ms ttl=243 reply from 192.20.239.132:bytes=32 time=120ms ttl=243 ******#***TRACERT的使用 Traceroute使用详解

Traceroute和tracert的原理分析实验

Traceroute和tracert的原理分析实验 作者:王富霖 1、拓扑图 图1 实验拓扑图 2、原理 Tracert跟踪路由:通过向目标发送不同 IP 生存时间 (TTL) 值的“Internet 控制消息协议(ICMP)”回应数据包,Tracert 诊断程序确定到目标所采取的路由。要求路径上的每个路由器在转发数据包之前至少将数据包上的 TTL 递减 1。数据包上的 TTL 减为 0 时,路由器应该将“ICMP 已超时”的消息发回源系统。 Tracert 先发送 TTL 为 1 的回应数据包,并在随后的每次发送过程将TTL 递增 1,直到目标响应或 TTL 达到最大值,从而确定路由。通过检查中间路由器发回的“ICMP 已超时”的消息确定路由。 可以得知,基本原理就是利用TTL=0时,ICMP返回超时来达到跟踪路由的目的。但在具体的实现上有不同的做法。目前主流设备都提供一个traceroute和tracert的指令。下面将针对这两条指令展开分析。 3、思科路由器、SUN主机执行traceroute指令,抓包分析。

翻阅《TCP/IP协议详解卷1》的描述:8.2节中原文如下: “Traceroute程序发送一份UDP数据报给目的主机,但它选择一个不可能的值作为UDP端口号(大于30000),使目的主机的任何一个应用程序都不可能使用该端口。因为,当该数据报到达时,将使目的主机的UDP模块产生一份“端口不可达”错误(见6.5节)的ICMP报文。这样,Traceroute程序所要做的就是区分接收到的ICMP报文是超时还是端口不可达,以判断什么时候结束。” 从以上结果来看路由器Traceroute命令默认发出的包发到目的地址UDP端口从33434开始,每个包递增1,TTL从1开始,每三个包(可以参数设置)后TTL加1。如果跟踪路由的跳数在30跳以内,到达目的地址后,因为目标IP 就是当前设备,所以解开上层UDP分析,发现端口不可达(本来就是为了不可达返回错误),以上抓包明显发现是“ICMP类型3 代码3的Destination unreachable(port unreachable)”。如果超时,直接显示星号,继续下一个包的发送。直到默认的30跳停止。 4、普通windows主机执行tracert指令,抓包分析。

如何使用ping和tracert命令检测丢包

如何使用ping和tracert命令检测丢包 从家里测试宽带网连接的丢包是一项非常困难的工作。丢包可以发生在从你的计算机到你在互联网上正在连接的目的地之间的线路上的任何一个地方。引起丢包的原因包括:网络阻塞、路由器或者交换机超过工作负荷、信号往返时间缓慢以及服务提供商或者托管你访问的网站的公司使用的通信优先等级。 没有主动测量实际重复传输的TCP流量(对于家庭宽带网连接来说,这类产品太昂贵了),很难确定是否真的发生了重复传输。你指出的机制ping和跟踪路由对于帮助家庭用户确定互联网上哪里的速度慢是最有用的工具。Ping测量你的计算机和你要连接的IP地址之间的信号往返时间。跟踪路由是测量路由器在你的计算机和你正在跟踪的路由的IP地址之间的通道的反应时间。 使用Ping 使用Ping测量丢包的最佳方法是向一个IP地址发送大量的Ping命令,然后检查没有应答的那些Ping命令。如果你快速地发出了50次Ping命令, 你可以检查没有没有应答的次数,并把没有应答的次数作为丢包。没有应答的次数超过5%可能就值得担心了。 在一台Windows计算机上,在命令提示符后面输入如下命令就可以完成这个任务: Ping -n 50(IP地址或者域名,如https://www.wendangku.net/doc/8d17945302.html,)这个命令中的“-n”开关告诉发送ping 命令的次数,“50”是发送的次数。 然后,你将得到一个测试总结。这个总结将包括丢失的数量和百分比: 199.181.132.250地址Ping的统计结果: 包: 发送= 6, 接收= 6, 丢失= 0 (0%) 大约往返时间以毫秒(ms)显示: 最小= 26ms, 最大= 29ms, 平均= 27ms 如果你看到平均往返时间较高(超过100ms),这也会降低你的网络下载速度。 设法消除某些引起丢包的网络某些部分的故障的一种方法是在通道的各个部分进行ping测试。我首先开始进行测试的地方是本地的“缺省网关”。这是你所有的数据传输到网络上经过的第一个路由器。如果在这一部分的丢包率很高,那么问题就在你的服务提供商的网络上。 在Windows命令提示符后面输入“ipconfig”命令你就可以发现你的缺省路由器的IP地

路由跟踪命令

路由跟踪命令. 查看DNS、IP、Mac等 1.最基本,最常用的,测试物理网络的 ping 192.168.0.8 -t ,参数-t是等待用户去中断测试 2.查看DNS、IP、Mac等 A.Win98:winipcfg B.Win2000以上:Ipconfig/all C.NSLOOKUP:如查看河北的DNS C:\>nslookup Default Server: https://www.wendangku.net/doc/8d17945302.html, Address: 202.99.160.68 >server 202.99.41.2 则将DNS改为了41.2 > https://www.wendangku.net/doc/8d17945302.html, Server: https://www.wendangku.net/doc/8d17945302.html, Address: 202.99.160.68 Non-authoritative answer: Name: https://www.wendangku.net/doc/8d17945302.html, Address: 202.99.160.212 3.网络信使(经常有人问的~) Net send 计算机名/IP|* (广播) 传送内容,注意不能跨网段 net stop messenger 停止信使服务,也可以在面板-服务修改 net start messenger 开始信使服务 4.探测对方对方计算机名,所在的组、域及当前用户名(追捕的工作原理) ping -a IP -t ,只显示NetBios名 nbtstat -a 192.168.10.146 比较全的 https://www.wendangku.net/doc/8d17945302.html,stat -a 显示出你的计算机当前所开放的所有端口 netstat -s -e 比较详细的显示你的网络资料,包括TCP、UDP、ICMP 和IP的统计等 6.探测arp绑定(动态和静态)列表,显示所有连接了我的计算机,显示对方IP和MAC 地址 arp -a 7.在代理服务器端 捆绑IP和MAC地址,解决局域网内盗用IP!: ARP -s 192.168.10.59 00 -50-ff-6c-08-75 解除网卡的IP与MAC地址的绑定: arp -d 网卡IP

解读路由器实用程序Tracert命令之数据报解析

解读路由器实用程序Tracert命令之数据报解析 数据报(被捕获的)中,我们可以看到Tracert命令是如何使用IP生存时间(TTL)字段和ICMP错误消息,确定一个主机到网络上其他主机的路由。IP包头的TTL(Time to Live)字段,是由发送端初始设置的一个8bit字段,它指出数据包的有效时间,即生存周期。每个处理数据报的路由器都需要把TTL值减1或减去数据报在路由器中的停留秒数。 由于大多数的路由器转发数据报的时延都小于1秒钟,因此TTL最终成为一个跳站的计数器,按照ICMP 协议的有关规定,当路由器收到一份数据报,如果其TTL字段是0或1,则路由器丢弃该数据报,并给源主机发送一份ICMP“超时”信息。Tracert命令正是据此发现路由器、确定路由的。 下面我们来对数据包逐帧解析,体会Tracert命令的工作过程。 帧1:主机A(10.4.152.16)向主机B(10.4.153.165)发送一个信息类型为8,代码为0的ECHO请求包。IP包头的TTL值为1,如图5所示。 图5 帧2:由于目的主机在另一个网段,因此数据包被发往本地网关路由器A(10.4.152.254),路由器A收到主机A发来的的ECHO请求包后,返回了一个一个类型为11,代码为0的ICMP包。回复“超时”(Time to live exceeded in transit),如图6所示。 图6 从这两帧我们可以看到,主机A首先发送TTL为1的回显数据包,路径上第一个路由器A(10.4.152.254)在转发数据包之前将数据包上的TTL递减1,当数据包上的TTL减为0时,路由器丢弃该数据包,并将“ICMP Time Exceeded”(超时)的消息发回源主机A,由此,发现路径上的第一个路由器。 主机A为了获得往返延迟时间的信息,在这一跳发送了三个TTL都为1、长度、目标地址相同的报文(帧1、帧3、帧5),路由器A依次丢弃这三个报文,并向主机A发送“超时”消息(帧2、帧4、帧6)。 帧7:主机A(10.4.152.16)向目标主机B(10.4.153.165)发送TTL值为2的回显数据包。 帧8:路由器B(10.4.147.82)路由器B向源主机(主机A)发送一个“ICMP Time Exceeded(超时)”数据包。 我们看到,Tracert命令将TTL 递增1,主机A发送TTL值为2的回显数据包,数据报由路由器A转发至

相关文档
相关文档 最新文档