banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thảo luận hệ điều hành *nix [Bài viết] Traceroute - Cơ chế hoạt động  XML
  [Question]   [Bài viết] Traceroute - Cơ chế hoạt động 02/01/2008 22:00:15 (+0700) | #1 | 107713
281
Elite Member

[Minus]    0    [Plus]
Joined: 27/05/2007 00:22:15
Messages: 228
Offline
[Profile] [PM]
Traceroute – Cơ chế hoạt động
download bài viết dạng PDF ở đây:
http://www.megaupload.com/?d=B45J63NE
http://rapidshare.com/files/80598724/Traceroute.pdf

Bài viết dựa chủ yếu vào nguồn: TCP/IP Illstrated, volume 1 của W. Richard Stevens
Các kiến thức cần được trang bị để hiểu được bài viết:
- TCP/IP
- ICMP
- TTL
- UDP

1. Traceroute là gì?
Traceroute là một ứng dụng giúp chúng ta xác định "đường đi" của các gói tin (packets) từ một máy này (host) đến một máy khác.
Đường đi (path) ở đây được hiểu là một chuỗi gồm các trạm (IP-router) mà packets phải đi qua để đến được đích.

2. TTL: Time-to-live
TTL là một trường 8 bit trong IP header (xem hình 1), trường này được khởi tạo bởi bên gửi (sender). (Giá trị được khuyến cáo của trường này theo "Assigned Numbers - RFC" là 64).

Mỗi một router khi xử lý IP-datagram sẽ giảm giá trị TTL của datagram này đi một. Mục đích của trường TTL là giúp cho datagram tránh đi vào những vòng lặp vô tận (infinite loops). Do hầu hết các bộ định tuyến -router- đều giữ các datagram không quá một giây, nên trường TTL cũng được dùng như một bộ đếm hop (hop counter).

3. Traceroute - TTL - ICMP
Khi một router nhận được một IP-datagram có giá trị TTL bằng 0 hoặc 1, nó không được phép chuyển datagram này đi tiếp. (Một host đích khi nhận được datagram như vậy, có thể chuyển datagram này tới ứng dụng tương ứng, vì datagram này không phải được tiếp tục "định tuyến". Nhưng thông thường không có hệ thống nào nhận được datagram có TTL bằng 0). Thay vào đó router sẽ bỏ qua (discard) datagram này và gửi trả lại cho host nguồn một thông báo lỗi ICMP time exceed (vượt thời hạn).

Mấu chốt ở Traceroute chính là gói IP-datagram chứa ICMP nói trên sẽ cung cấp địa chỉ IP của router. Địa chỉ này nằm ở trường "địa chỉ nguồn" (source address - xem hình IP Header).

4. Traceroute - Cơ chế hoạt động
Để xác định "đường đi" - path - của packets từ một host nguồn A đến một host đích B, đầu tiên traceroute sẽ gởi một IP-datagram có TTL=1 đến host B. Router đầu tiên xử lý datagram này sẽ giảm TTL đi một, bỏ qua (discard) datagram này và gửi trở lại A một datagram chứa ICMP time exceeded. Nhờ đó router đầu tiên thuộc path được định danh.

Tiếp theo traceroute gửi một datagram có TTL=2 tới host B nhằm xác định địa chỉ IP của router thứ hai trên path. Router thứ nhất sẽ giảm TTL đi một (--> TTL lúc này sẽ bằng 1) và chuyển datagram đi tiếp. Router thứ 2 thấy TTL=1, giảm tiếp đi một, bỏ qua datagram này, gửi ICMP time exceeded trở lại A.

Tương tự như vậy, quá trình trên được tiếp diễn cho đến khi datagram gặp được host đích B. Mặc dù gói datagram đến được đích có TTL=1, host B sẽ không loại bỏ datagram này và cũng không gửi ICMP time exceeded trở lại, bởi vì datagram này đã đến được nơi nó muốn đến. Vấn đề được đặt ra ở đây là làm sao traceroute biết được khi nào đã đến đích?

Trong *nix, ở chế độ mặc định (default), traceroute gửi những gói UDP-datagram, nhưng nó sẽ chọn cổng UDP đích có giá trị lớn (lớn hơn 30.000), vì khó mà có một ứng dụng nào đó đang sử dụng cổng này, nghĩa là cổng đang đóng. Do đó, khi datagram đến, UDP-module ở host đích B sẽ phun ra ngay một thông báo lỗi ICMP "port unreachable" (không đến được cổng). Bây giờ traceroute chỉ việc phân biệt những ICMP mà nó nhận được để khẳng định đã đến điểm cuối trên path chưa (ICMP time exceed vs ICMP port unreachable).

5. Traceroute - Output

audi bmt # traceroute google.com
traceroute to google.com (72.14.207.99), 30 hops max, 40 byte packets
1 192.168.0.1 (192.168.0.1) 1.164 ms 1.828 ms 2.512 ms
2 ge-3-0-0-101.cr01.ber.de.hansenet.net (62.109.108.61) 23.774 ms 25.738 ms 27.667 ms
3 so-6-0-0-0.cr01.fra.de.hansenet.net (213.191.87.242) 50.995 ms 50.990 ms 50.985 ms
4 ae1-102.pr01.fra.de.hansenet.net (62.109.109.240) 54.034 ms 54.028 ms 56.178 ms
5 decix-hansenet-2-de.fra.seabone.net (195.22.211.113) 56.172 ms 33.935 ms 35.861 ms
6 72.14.198.129 (72.14.198.129) 37.887 ms 39.877 ms b 41.905 ms
7 209.85.249.180 (209.85.249.180) 41.899 ms 38.997 ms 40.701 ms
8 72.14.233.104 (72.14.233.104) 52.778 ms 49.738 ms m 53.653 ms
9 72.14.236.220 (72.14.236.220) 153.957 ms 153.952 ms 130.393 ms
10 72.14.233.113 (72.14.233.113) 128.183 ms 126.400 ms t 128.699 ms
11 66.249.94.92 (66.249.94.92) 129.974 ms 66.249.94.90 (66.249.94.90) 127.979ms 127.741 ms
12 66.249.94.50 (66.249.94.50) 140.006 ms 130.106 ms 72.14.236.130 (72.14.236.130) 127.917 ms
13 eh-in-f99.google.com (72.14.207.99) 126.182 ms 125.767 ms 127.446 ms 


Ở dòng 1 là địa chỉ IP của DSL-Router (192.168.0.1)
Dòng 2 là địa chỉ IP router của ISP Hansanet tại Berlin - Đức
Dòng 3 là địa chỉ IP router của ISP Hansanet tại Frankfurt - Đức
...
Dòng 13 là địa chỉ IP của một host thuộc google.com

Tương tự, thử traceroute đến www.hvaonline.net xem sao

audi bmt # traceroute www.hvaonline.net
traceroute to www.hvaonline.net (219.160.161.58), 30 hops max, 40 byte packets
1 192.168.0.1 (192.168.0.1) 1.355 ms 2.034 ms 2.651 ms
2 62.109.111.29 (62.109.111.29) 25.777 ms 25.773 ms 27.686 ms
3 so-6-0-0-0.cr01.fra.de.hansenet.net (213.191.87.242) 51.755 ms b 51.752 ms 51.747 ms
4 ge-3-0-0-101.pr01.fra.de.hansenet.net (62.109.109.176) 51.742 ms 55.530 ms 55.526 ms
5 decix-hansenet-6.fra.seabone.net (89.221.34.61) 57.738 ms m 33.878 ms 35.785 ms
6 nttverio-1-us-ash2.ash.seabone.net (195.22.206.30) 209.857 ms 209.852 ms 209.849 ms
7 ae-2.r20.asbnva01.us.bb.gin.ntt.net (129.250.2.56) 133.870 ms t 128.047 ms 128.032 ms
8 as-0.r20.snjsca04.us.bb.gin.ntt.net (129.250.4.21) 209.962 ms 209.953 ms 208.531 ms
9 as-1.r20.osakjp01.jp.bb.gin.ntt.net (129.250.2.165) 322.141 ms 327.956 ms 319.923 ms
10 ae-1.a20.osakjp01.jp.ra.gin.ntt.net (61.200.80.130) 325.967 ms 323.824 ms 315.836 ms
11 ae-0-1.a20.osakjp01.jp.ra.gin.ntt.net (61.200.82.146) 321.802 ms 329.933 ms 331.997 ms
12 60.37.18.85 (60.37.18.85) 317.844 ms 313.938 ms 309.868 ms
13 61.207.14.189 (61.207.14.189) 321.660 ms 313.942 ms 313.992 ms
14 125.170.96.57 (125.170.96.57) 311.999 ms 311.933 ms 317.995 ms
15 122.1.245.17 (122.1.245.17) 344.029 ms 342.030 ms 325.968 ms
16 122.1.245.14 (122.1.245.14) 315.977 ms 315.955 ms 326.027 ms
17 210.254.188.230 (210.254.188.230) 326.017 ms 323.965 ms 317.959 ms
18 60.37.55.158 (60.37.55.158) 329.923 ms 329.989 ms 326.028 ms
19 122.1.173.230 (122.1.173.230) 319.972 ms 324.005 ms 325.920 ms
20 61.207.30.174 (61.207.30.174) 313.976 ms 314.002 ms 319.976 ms
21 * * *
22 * * *
23 * * *
24 * * *
25 * * *
26 * * *
27 * * *
28 * * *
29 * * *
30 * * * 


Như đã thấy bắt đầu từ dòng 21 trở đi, chúng ta chỉ nhận được "* * *", điều đó có nghĩa là các UDP-datagram đã không đến được host đích. Và một trong những khả năng gây nên vấn đề này là host đã được thiết lập một vài phương pháp kiện toàn bảo mật nào đó. Chẳng hạn như có một tường lửa (firewall) ở host này và nó đã loại bỏ những packets ICMP hoặc UDP.

Thử traceroute lần nữa đến www.hvaonline.net, nhưng lần này chúng ta yêu cầu traceroute không gửi những gói UDP mà là gửi các gói TCP, bằng cách thêm vào option -T (option -T chỉ được chạy với quyền superuser)

audi bmt # traceroute -T www.hvaonline.net
traceroute to www.hvaonline.net (219.160.161.58), 30 hops max, 40 byte packets
1 192.168.0.1 (192.168.0.1) 1.201 ms 1.852 ms 2.426 ms
2 62.109.111.29 (62.109.111.29) 39.780 ms 39.775 ms 39.771 ms
3 so-6-1-0-0.cr01.fra.de.hansenet.net (213.191.87.173) 51.220 ms 51.217 ms 51.214 ms
4 ae1-102.pr01.fra.de.hansenet.net (62.109.109.240) 51.455 ms 54.945 ms 56.331 ms
5 decix-hansenet-2-de.fra.seabone.net (195.22.211.113) 57.691 ms 33.927 ms 35.889 ms
6 nttverio-1-us-ash2.ash.seabone.net (195.22.206.30) 130.001 ms 129.993 ms 132.205 ms
7 ae-2.r20.asbnva01.us.bb.gin.ntt.net (129.250.2.56) 132.192 ms 126.778 ms 129.650 ms
8 as-0.r20.snjsca04.us.bb.gin.ntt.net (129.250.4.21) 208.475 ms 210.253 ms 208.706 ms
9 as-1.r20.osakjp01.jp.bb.gin.ntt.net (129.250.2.165) 327.290 ms 331.941 ms 319.978 ms
10 ae-1.a20.osakjp01.jp.ra.gin.ntt.net (61.200.80.130) 325.906 ms 325.886 ms 327.773 ms
11 ae-0-1.a20.osakjp01.jp.ra.gin.ntt.net (61.200.82.146) 315.693 ms 315.683 ms 313.668 ms
12 60.37.18.85 (60.37.18.85) 334.754 ms 319.890 ms 325.941 ms
13 210.163.253.77 (210.163.253.77) 335.981 ms 335.988 ms 323.958 ms
14 203.139.175.121 (203.139.175.121) 319.977 ms 314.208 ms 319.904 ms
15 125.170.97.65 (125.170.97.65) 329.899 ms 347.875 ms 347.953 ms
16 125.170.97.74 (125.170.97.74) 344.063 ms 339.934 ms 334.002 ms
17 210.254.188.230 (210.254.188.230) 323.917 ms 329.924 ms 336.004 ms
18 60.37.55.158 (60.37.55.158) 331.945 ms 333.948 ms 323.861 ms
19 122.1.173.230 (122.1.173.230) 335.965 ms 330.008 ms 341.995 ms
20 61.207.30.174 (61.207.30.174) 331.948 ms 326.030 ms 325.971 ms
21 p8058-ipadfx21hodogaya.kanagawa.ocn.ne.jp (219.160.161.58) 338.025 ms 331.901 ms 328.009 ms
 

Và lần này chúng ta đã đến đích.
Berlin, 1.1.2008
281 (BMT)

Hình 1.



Hình 2


[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 Users currently in here 
1 Anonymous

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|