Tải bản đầy đủ (.doc) (4 trang)

Tìm hiểu về Traceroute

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (80.17 KB, 4 trang )

Tìm hiểu về Traceroute
trang này đã được đọc lần
Traceroute là gì?
Traceroute là một chương trình cho phép bạn xác định được đường đi của các gói packets từ
máy bạn đến hệ thống đích trên mạng Internet.
Một ví dụ về Traceroute!
Traceroute có thể làm được gì? Bạn hãy xem ví dụ sau sẽ rõ!
C:\windows>tracert 203.94.12.54
Tracing route to 203.94.12.54 over a maximum of 30
hops
1 abc.netzero.com (232.61.41.251) 2 ms 1 ms 1 ms
2 xyz.Netzero.com (232.61.41.0) 5 ms 5 ms 5 ms
3 232.61.41.10 (232.61.41.251) 9 ms 11 ms 13 ms
4 we21.spectranet.com (196.01.83.12) 535 ms 549 ms
513 ms
5 isp.net.ny (196.23.0.0) 562 ms 596 ms 600 ms
6 196.23.0.25 (196.23.0.25) 1195 ms1204 ms
7 backbone.isp.ny (198.87.12.11) 1208 ms1216 ms1233
ms
8 asianet.com (202.12.32.10) 1210 ms1239 ms1211 ms
9 south.asinet.com (202.10.10.10) 1069 ms1087 ms1122
ms
10 backbone.vsnl.net.in (203.98.46.01) 1064 ms1109
ms1061 ms
11 newdelhi-01.backbone.vsnl.net.in (203.102.46.01)
1185 ms1146 ms1203 ms
12 newdelhi-00.backbone.vsnl.net.in (203.102.46.02)
ms1159 ms1073 ms
13 mtnl.net.in (203.194.56.00) 1052 ms 642 ms 658 ms
Tôi cần biết đường đi từ máy tôi đến một host trên mạng Internet có địa chỉ ip là 203.94.12.54.
Tôi cần phải tracert đến nó! Như bạn thấy ở trên, các gói packets từ máy tôi muốn đến được


203.94.12.54 phải đi qua 13 hops(mắt xích) trên mạng. Đây là đưòng đi của các gói packets:
Netzero(ISP đã gởi dữ liệu đi) -> Spectranet (một nhà công cấp mạng xương sống - Backbone
Provider) -> New York ISP -> New York Backbone -> Asia -> South Asia -> India Backbone ->
New Delhi Backbone -> một router khác trong New Delhi Backbone -> New Delhi ISP
Như vậy, host có địa chỉ ip 203.94.12.54 nằm ở New Delhi, India, South Asia! Bạn cũng có thể
telnet đến 203.94.12.54 trên cổng 13(datetime) để xác định giờ GMT qua đó bạn có thể biết
được vị trí của host này(yêu cầu là host 203.94.12.54 phải chạy daemon datetime và được định
cấu hình đúng về thời gian)!
Traceroute hoạt động như thế nào?
Trước hết, bạn cần biết về ICMP, TTL và cách làm việc của các routers(bộ định tuyến)!
Những kiến thức cơ bản
ICMP - Internet Control Message Protocol. ICMP được dùng để thông báo các lỗi xảy ra trong quá
trình truyền đi của các gói dữ liệu trên mạng. ICMP thuộc tầng vận huyển - Transpoort Layer!
Tầng ứng dụng
HTTP FTP Telnet Finger SSH DNS
POP3/IMAP SMTP Gopher BGP
Time/NTP Whois TACACS+ SSL
DNS SNMP RIP
RADIUS Archie
Traceroute tftp
Ping
Tầng vận chuyển
TCP

UDP

ICMP

OSPF


Tầng Internet
IP

ARP

Tầng vật lí
Ethernet/802.3 Token Ring (802.5) SNAP/802.2 X.25 FDDI ISDN
Frame Relay SMDS ATM Wireless (WAP, CDPD, 802.11)
Fibre Channel DDS/DS0/T-carrier/E-carrier SONET/SDH DWDM
PPP HDLC SLIP/CSLIP xDSL Cable Modem (DOCSIS)
Tất cả các ICMP messages đều được chuyển đi cùng với các IP datagrams. Mỗi ICMP message
được gói trong IP datagram sẽ có dạng như sau:
+---------------------+-------------------------+
| IP Header(20 bytes) | ICMP message (32 bytes) |
+---------------------+-------------------------+
Sau đây là cấu trúc của một IMCP message: (tham khảo RFC792 để biết thêm!)
0 7 8 15 16 31
+-----------------+-----------------+-----------------+
| Type (0 or 8) | Code (0) | 16-bit Checksum |
+-----------------+-----------------+-----------------+
| Indentifier | sequence number |
+-----------------+-----------------+-----------------+
| |
| Optional Data (nội dung tùy thuộc vào Type và Code) |
| |
+-----------------------------------------------------+
• trường type có 15 giá trị khác nhau, tùy thuộc vào từng loại ICMP error message cụ thể.
Ví dụ type=3 để chỉ định cho thông báo lỗi "Không đến được đích" - "Destination
unreachable" error message!
• trường code = sub-error dùng để xác định chính xác lỗi đã xảy ra. Ví dụ, type=3 và

code=0 nghĩa là "Network Unreachable"(không đến được mạng); nếu type=3, code=1
nghĩa là "Host Unreachable"(không đến được host)...
TTL - Time to Live. TTL là một trường 8 bit trong IP header(bạn hãy xem lại cấu trúc của IP
header!). TTL là thời gian gói dữ liệu tồn tại trên mạng trước khi nó bị bỏ qua. Người gởi dữ liệu
đi sẽ xác định một giá trị TTL trước, thường là từ 32 -> 64. Giá trị này sẽ được giảm đi một khi
một khi được chuyển qua một bộ định tuyến trên mạng. Khi giá trị này bằng 0, datagram này sẽ
bị bỏ qua và giao thức ICMP sẽ báo lỗi về cho người gởi. Điều này sẽ tránh cho datagram này đi
vào một vòng lặp vô tận qua các bộ định tuyến.
Mỗi bộ định tuyến khi nhận được IP datagram sẽ giảm giá trị TTL của datagram này đi một. Hầu
hết các bộ định tuyến đều không giữ lại datagram này trong thời gian quá 1 giây trước khi
chuyển datagram này đi. Nên giá trị TTL có thể coi bằng hop(counter) = số bộ định tuyến mà
datagram này vừa vượt qua.
Khi bộ định tuyến nhận được một datagram có trường TTL bằng 0 hoặc 1, nó sẽ không chuyển
datagram này đi tiếp. Thay vào đó, nó sẽ bỏ qua datagram này và gởi một ICMP message "Time
Exceeded"(quá thời gian) trở lại cho người đã gởi datagram này! Vì ICMP message mà bộ định
tuyến gởi trở lại cho người gởi có địa chỉ nguồn - source address là địa chỉ ip của bộ định tuyến
này nên người gởi có thể biết được địa chỉ ip của router này!
Cách làm việc của traceroute!
Traceroute gởi một IP datagram có TTL=1 đến hệ thống đích. Router đầu tiên nhận được
datagram này sẽ giảm giá trị TTL đi một -> TTL=0 và router này sẽ bỏ qua datagram này(không
gởi nó đi tiếp!) và gởi một ICMP error message với địa chỉ ip nguồn là địa chỉ của nó đến máy
bạn. Như vậy router có thể xác định địa chỉ ip của router thứ nhất! Sau đó, traceroute sẽ gởi một
datagram mới đi với giá trị TTL=2(1+1=2) đến hệ thống đích. Router đầu tiên sẽ giảm giá trị của
TTL đi một -> TTL=1(2-1=1) và chuyển datagram này sang router thứ 2. Router thứ 2 nhận
được datagram có TTL=1 sẽ giảm TTL=0. Rounter 2 nhận thấy TTL=0 nên nó sẽ không chuyển
datagram này đi tiếp. Router 2 sẽ gởi trở lại máy bạn một ICMP error message với địa chỉ ip
nguồn là địa chỉ ip của nó(router 2). Như vậy trình traceroute trên máy bạn sẽ biết được router
thứ 2 mà datagram đã đi qua. Traceroute sẽ tiếp tục gởi một datagram khác có TTL=3(2+1=3)
đi và lặp lại quá trình trên cho đến khi datagram đến được hệ thống đích!
Nếu bây giờ IP datagram đã đến được đích, TTL=1. Host đích sẽ bỏ qua datagram này và nó

cũng sẽ không gởi "Time Exceeded" ICMP error message. Như vậy thì bạn sẽ không thể nào biết
được là mình đã đến đích chưa?! Traceroute dùng một cơ chế khác như sau:
Traceroute gởi UDP datagrams đến host đích trên các cổng UDP có số hiệu lớn(>30000). Sở dĩ
nó chọn các cổng có giá trị lớn vì thường không có ứng dụng nào đang lắng nghe ở các cổng
này. Khi host đích nhận được UDP datagram này, nó sẽ gởi trả lại một ICMP error message "Port
Unreachable"(không đến được cổng) cho traceroute. Bây giờ thì traceroute có thể phân biệt được
sự khác nhau giữa ICMP error message "Time Exceeded" với "Port Unreachable" để biết được đã
đến được đích hay chưa?!
Ghi chú: ICMP error message "Time Exceeded" có type=1 và code=0; ICMP eror message "Port
Unreachable" có type=3 và code=3
Tổng kết: traceroute gởi UDP datagrams đến host đích với giá trị TTL=1 và được tăng sau mỗi
lần để xác định các routers mà datagrams đã đi qua. Mỗi router sẽ gởi trở về một ICMP message
"Time Exceeded". Riêng hệ thống đích sẽ gởi trở lại cho traceroute một ICMP message "Port
Unreachable". Traceroute dựa vào sự khác biệt này để xác định xem đã đến được đích chưa?!
Ví dụ cuối cùng!
host2 # traceroute xyz.com
traceroute to xyz.com (202.xx.12.34), 30 hops max, 40 byte
packets
1 isp.net (202.xy.34.12) 20ms 10ms 10ms
2 xyz.com (202.xx.12.34) 130ms 130ms 130ms
Dòng đầu tiên cho biết hostname và địa chỉ IP của hệ thống đích. Dòng này còn cho chúng ta
biết thêm giá trị TTL<=30 và kích thước của datagram là 40 bytes(20-bytes IP Header + 8-bytes
UDP Header + 12-bytes user data).
Dòng thứ 2 cho biết router đầu tiên nhận được datagram là 202.xy.34.12, giá trị của TTL khi gởi
đến router này là 1. Router này sẽ gởi trở lại cho chương trình traceroute một ICMP message
error "Time Exceeded". Traceroute sẽ gởi tiếp một datagram đến hệ thống đích.
Dòng thứ 3, xyz.com(202.xx.12.34) nhận được datagram có TTL=1(router thứ nhất đã giảm một
trước đó - TTL=2-1=1). Tuy nhiên, xyz.com không phải là một router, nó sẽ gởi trở lại cho
traceroute một ICMP error message "Port Unreachable". Khi nhận được ICMP message này,
traceroute sẽ biết được đã đến được hệ thống đích xyz.com và kết thúc nhiệm vụ tại đây.

Trong trường hợp router không trả lời sau 5 giây, traceroute sẽ in ra một dấu sao "*"(không biết)
và tiếp tục gởi datagram khác đến host đích!
Hy vọng đến đây bạn có hiểu được traceroute làm việc như thế nào!? Chúc bạn vui vẻ !

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×