You are on page 1of 40

Trường Đại Học Công Nghệ Sài Gòn

Khoa Công Nghệ Thông Tin


---oOo---

Giáo trình thực hành:

MẠNG MÁY TÍNH


(Lưu hành nội bộ)

Năm 2017
Bài 1: GIỚI THIỆU WIRESHARK

I. MỤC TIÊU:

Sinh viên sẽ được làm quen với Wireshark và thực hiện bắt các gói tin cơ bản, sau đó
quan sát chúng.

II. TÓM TẮT LÝ THUYẾT:

1 Lời mở đầu

Các giao thức mạng có thể được hiểu sâu hơn bằng cách quan sát chuỗi các thông điệp
trao đổi giữa hai máy tính, nghiên cứu sâu các hành động của giao thức trong những
trường hợp cụ thể. Điều này có thể đạt được bằng cách thực hiện các kịch bản mô phỏng
trong môi trường mạng thực tế như Internet. Trong các bài thực hành Wireshark, chúng ta
sẽ chạy nhiều ứng dụng mạng trong các kịch bản khác nhau sử dụng máy tính cá nhân
trên môi trường mạng Internet.

Trong bài thực hành đầu tiên, chúng ta sẽ làm quen với Wireshark và thực hiện bắt các
gói tin cơ bản, sau đó quan sát chúng.

Công cụ để quan sát các thông điệp trao đổi giữa các máy tính được gọi là công cụ bắt
trộm gói tin (packet sniffer). Các công cụ này bắt trộm các gói tin được gửi đi hoặc nhận
về máy tính. Chúng hoạt động ẩn bên dưới và không gửi bất kỳ gói tin nào. Các gói tin bị
bắt trộm chỉ là bản sao chép của gói tin chính.

Hình 1 cho thấy cấu trúc của công cụ bắt trộm gói tin. Bên phải hình 1 là các giao thức
(các giao thức trên Internet) và các ứng dụng (như là web browser và ftp client) chạy trên
máy tính của bạn. Công cụ bắt trộm gói tin được thể hiện trong hình chữ nhật nét đứt là
một phần mềm trên máy tính gồm có 2 phần. Thư viện bắt gói tin nhận bản sao của mỗi
frame trên tầng liên kết dữ liệu được gửi đi hoặc nhận về máy tính. Nhắc lại rằng các
thông điệp được trao đổi bởi các giao thức tầng cao hơn như HTTP, FTP, TCP, UDP,
DNS hoặc IP đều được đóng gói trong frame ở tầng liên kết dữ liệu. Trong hình, môi
trường truyền dẫn vật lý được giả định là Ethernet nên các gói tin ở các giao thức tầng
trên đều được đóng gói trong Ethernet frame. Việc bắt các frames giúp chúng ta quan sát
tất cả các thông điệp được gửi đi và nhận về máy tính của mình.

Khoa CNTT – Trường ĐH Công Nghệ Sài Gòn Trang 1


Bài 1: GIỚI THIỆU WIRESHARK

Hình 1: Cấu trúc của công cụ bắt trộm gói tin

Thành phần thứ 2 của một công cụ bắt trộm gói tin chính là bộ phân tích gói. Bộ phân
tích gói có nhiệm vụ hiển thị nội dung của các trường trong một gói tin. Để làm được
điều đó, bộ phân tích gói phải hiểu cấu trúc của tất cả các gói tin được trao đổi bởi các
giao thức. Ví dụ, giả sử chúng ta quan tâm đến nội dung các trường trong các thông điệp
của giao thức HTTP. Bộ phân tích gói phải hiểu định dạng của Ethernet frames, IP
datagram, TCP segment và cuối cùng rút trích nội dung của thông điệp HTTP chứa trong
TCP segment. Ngoài ra, bộ phân tích gói cũng hiểu giao thức HTTP và biết được các
bytes đầu tiên trong thông điệp HTTP chứa chuỗi “GET”, “POST” hoặc “HEAD”.

Chúng ta sẽ sử dụng công cụ Wireshark [http://www.wireshark.org/] cho các bài thực


hành. Nó cho phép bạn quan sát nội dung của các thông điệp được trao đổi bởi các giao
thức tại các tầng khác nhau. Wireshark là một công cụ phân tích giao thức mạng miễn phí
chạy trên Windows, Linux/Unix và Mac. Bạn có thể tìm đọc thêm các hướng dẫn về
Wireshark tại địa chỉ:

http://www.wireshark.org/docs/wsug_html_chunked/
hoặc

http://www.wireshark.org/docs/man-pages/
và các câu hỏi thường gặp tại http://www.wireshark.org/faq.html

Khoa CNTT – Trường ĐH Công Nghệ Sài Gòn Trang 2


Bài 1: GIỚI THIỆU WIRESHARK

Để chạy Wireshark, bạn phải cài Wireshark và thư viện bắt gói tin libpcap hoặc
winPCap. Nếu thư viện libpcap chưa có trên máy tính, nó sẽ được cài trong quá trình cài
Wireshark. Địa chỉ download: http://www.wireshark.org/download.html

Khi khởi động Wireshark, bạn sẽ thấy giao diện sau:

Hình 2: Giao diện khởi động Wireshark

Nhìn vào góc trên bên trái của giao diện, bạn sẽ thấy “Interface list”. Đây là danh sách
của các network interfaces trên máy tính. Sau khi chọn một interface, Wireshark sẽ bắt tất
cả các gói tin đi qua interface đó. Trong ví dụ ở trên, có một Ethernet interface và một
Wireless interface.

Nếu click vào một trong những interfaces đó để bắt đầu bắt gói tin, một màn hình hiện
ra như bên dưới, hiển thị thông tin về các gói tin bị bắt. Sau khi đã bắt gói tin, bạn có thể
dừng lại bằng cách chọn Stop trên thanh menu.

Khoa CNTT – Trường ĐH Công Nghệ Sài Gòn Trang 3


Bài 1: GIỚI THIỆU WIRESHARK

Hình 3: Giao diện chính của Wireshark trong suốt quá trình bắt và phân tích gói
tin

Giao diện Wireshark gồm có 5 thành phần chính:

 Command menus: chứa các menu thực hiện các chứng năng chính của
Wireshark. Chúng ta quan tâm đến File và Capture. File menu cho phép lưu các gói tin đã
bị bắt hoặc mở file chứa các gói tin đã bắt từ trước. Capture menu cho phép bắt đầu bắt
gói tin.

 Packet-listing windows: hiển thị dòng thông tin tóm tắt cho từng gói tin bị bắt,
bao gồm số thứ tự (số này được gán bởi Wireshark, không phải số thứ tự chứa trong
header của gói tin), thời gian gói tin bị bắt, địa chỉ nguồn và đích, loại giao thức và thông
tin đặc tả cho giao thức đó. Bạn có thể sắp xếp các dòng theo các tiêu chí bằng cách nhấp
vào tên các cột tương ứng. Cột Protocol hiển thị giao thức hoạt động ở tầng cao nhất.

Khoa CNTT – Trường ĐH Công Nghệ Sài Gòn Trang 4


Bài 1: GIỚI THIỆU WIRESHARK

 Packet-header details window: cung cấp các thông tin chi tiết về gói tin được
chọn từ packet-listing window. Các thông tin này bao gồm chi tiết về Ethernet frame (giả
sử gói tin được gửi và nhận thông qua Ethernet interface), IP datagram, TCP hoặc UDP
segment. Cuối cùng, thông tin về giao thức ở tầng cao nhất cũng được hiển thị.

 Packet-contents window hiển thị toàn bộ nội dung của frame dưới dạng ASCII và
hexadecimal.

Hướng lên trên của giao diện Wireshark là packet-display filter. Tên giao thức và các
thông tin khác có thể được nhập vào đây để lọc các gói tin trong packet-listing window.
Ví dụ, chúng ta sử dụng packet-display filter để Wireshark ẩn tất cả các gói tin bắt được
ngoại trừ những gói tin tương ứng với HTTP bằng cách gõ “http” vào khung này và chọn
Apply.

III. NỘI DUNG THỰC HÀNH:

1 Thử nghiệm Wireshark

Ghi chú rằng nếu bạn không thể chạy Wireshark trên Internet thật sự thì có thể mở file
Wireshark_intro có sẵn trong thư mục wireshark-traces.

Giả định rằng máy tính bạn có kết nối Internet. Thực hiện các bước sau

 Khởi động Web browser.

 Khởi động phần mềm Wireshark.

 Chọn Capture và chọn Interfaces.

Hình 4: Wireshark Capture Interface Window

Khoa CNTT – Trường ĐH Công Nghệ Sài Gòn Trang 5


Bài 1: GIỚI THIỆU WIRESHARK

 Chọn Start đối với interface mà bạn muốn bắt gói tin. Lúc này Wireshark bắt đầu
bắt tất cả các gói tin được gửi đến hoặc nhận về máy tính.

 Sau khi đã bắt đầu bắt gói tin, một cửa sổ hiện ra như trong hình 3. Cửa sổ này
hiển thị các packet đang được bắt. Chọn menu Capture và sau đó chọn Stop khi bạn
muốn dừng bắt gói tin. Tuy nhiên, đừng dừng bắt lúc này vì bạn nên thử với một kết nối
HTTP.

 Trong khi Wireshark đang hoạt động, trên web browser, gõ:
http://gaia.cs.umass.edu/wireshark-labs/INTRO-wireshark-file1.html và website sẽ hiện
ra trên trình duyệt. Lúc này các Ethernet frames chứa các thông điệp HTTP đã được bắt
bởi Wireshark.

 Sau khi trình duyệt đã hiển thị trang INTRO-wireshark-file1.html (chỉ là một dòng
chào mừng đơn giản), dừng bắt gói tin. Cửa sổ chính của Wireshark bây giờ giống như
hình 3. Bạn đã có các gói tin chứa đầy đủ các thông điệp được trao đổi giữa máy tính và
web server. Thông điệp HTTP trao đổi với gaia.cs.umass.edu web server phải xuất hiện
đâu đó trong các gói tin được bắt. Có nhiều loại gói tin được hiển thị (tương ứng với
nhiều giao thức). Mặc dù bạn chỉ đơn thuần download một trang web nhưng có nhiều
giao thức khác chạy bên dưới mà bạn không thấy được.

 Gõ “http” (không có ngoặc kép) vào packet-display filter sau đó chọn Apply để
Wireshark chỉ hiển thị các thông điệp HTTP trong packet-listing window.

 Tìm thông điêp HTTP GET được gửi từ máy tính đến gaia.cs.umass.edu server
(tìm trong packet-listing window đoạn chứa GET theo sau bởi gaia.cs.umass.edu). Sau
khi chọn thông điệp HTTP GET, Ethernet frame, IP datagram, TCP segment và HTTP
header sẽ được hiển thị ở packet-header window.

 Thoát Wireshark

Khoa CNTT – Trường ĐH Công Nghệ Sài Gòn Trang 6


Bài 1: GIỚI THIỆU WIRESHARK

Hình 5: Cửa sổ Wireshark sau bước 9

Trả lời các câu hỏi sau đây:

1. Liệt kê 3 giao thức khác nhau xuất hiện trong cột giao thức ở bước 7 khi không áp
dụng bộ lọc.

2. Mất bao lâu từ khi thông điệp HTTP GET được gửi cho đến khi HTTP OK được
nhận (mặc định, giá trị của cột thời gian trong packet-listing window là khoảng
thời gian tính bằng giây kể từ khi chương trình Wireshark bắt đầu).

3. Địa chỉ IP của gaia.cs.umass.edu là gì? Địa chỉ IP của máy tính bạn là gì?

4. In 2 thông điệp HTTP (GET và OK) trong câu 2 ở trên (chọn Print từ File menu,
chọn Selected Packet Only và Print as displayed, sau đó chọn OK).

Khoa CNTT – Trường ĐH Công Nghệ Sài Gòn Trang 7


Bài 2: GIAO THỨC HTTP

I. MỤC TIÊU:

Trong bài thực hành này, chúng ta sẽ khám phá một vài khía cạnh của giao thức
HTTP: thông điệp GET/response, cấu trúc của HTTP header, truy cập các file HTML dài,
truy cập các file HTML có đính kèm các đối tượng, xác thực HTTP và bảo mật.

II. TÓM TẮT LÝ THUYẾT:

1 HTTP GET/response cơ bản

Chúng ta sẽ bắt đầu tìm hiểu HTTP bằng cách download một file HTML đơn giản.

Ghi chú rằng nếu bạn không thể chạy Wireshark trên Internet thật sự thì có thể mở file
http-ethereal-trace-1 có sẵn trong thư mục wireshark-traces.

Thực hiện các bước sau khi có kết nối Internet:


 Khởi động trình duyệt web
 Khởi động Wireshark và gõ “http” vào display-filter window để Wireshark
chỉ hiển thị các thông điệp HTTP.
 Bắt đầu bắt gói tin.
 Gõ vào trình duyệt web: http://gaia.cs.umass.edu/wireshark-labs/HTTP-
wireshark-file1.html
 Dừng bắt gói tin.
Cửa sổ Wireshark lúc nào giống như trong hình 1.

Khoa CNTT – Trường ĐH Công Nghệ Sài Gòn Trang 0


Bài 2: GIAO THỨC HTTP

Hình 1: Cửa sổ Wireshark sau khi trang web http://gaia.cs.umass.edu/wireshark-


labs/ HTTP- wireshark-file1.html được hiển thị trên trình duyệt

Ví dụ trong hình 1 cho thấy packet-listing window chứa 2 thông điệp HTTP được bắt:
thông điệp GET (từ trình duyệt gửi đến gaia.cs.umass.edu) và thông điệp response từ
server đến trình duyệt. Packet-contents window hiển thị chi tiết của thông điệp được chọn
(trong trường hợp này thông điệp HTTP OK đang được chọn). Tạm thời chúng ta chỉ
quan tâm đến HTTP.

Bằng cách quan sát HTTP GET và HTTP response, trả lời các câu hỏi sau:

1. Trình duyệt đang sử dụng phiên bản HTTP 1.0 hay 1.1? Phiên bản HTTP
server đang sử dụng là bao nhiêu?
2. Trình duyệt hỗ trợ những ngôn ngữ nào?
3. Địa chỉ IP của máy tính bạn là bao nhiêu? Của gaia.cs.umass.edu server là
bao nhiêu?
4. Mã trạng thái (status code) trả về từ server là gì?
5. Thời điểm file HTML được thay đổi lần cuối tại server là lúc nào?
6. Server đã trả về cho trình duyệt bao nhiêu bytes nội dung?
7. Bằng cách xem xét dữ thiệu thô trong packet content window, có phần dữ

Khoa CNTT – Trường ĐH Công Nghệ Sài Gòn Trang 1


Bài 2: GIAO THỨC HTTP

liệu nào không được hiển thị ra ở packet-details window hay không? Nếu có, cho
biết.

2 HTTP GET/response có điều kiện

Hầu hết các web browsers đều hỗ trợ caching và thực hiện HTTP GET có điều kiện.
Trước khi thực hiện các bước sau, xóa cache của trình duyệt (đối với Firefox, chọn Tools-
>Clear Recent History và chọn Cache box hoặc đối với Internet Explorer thì chọn Tools-
>Internet Options->Delete File).

Ghi chú rằng nếu bạn không thể chạy Wireshark trên Internet thật sự thì có thể mở file
http-ethereal-trace-2 trong thư mục wireshark-traces.

Thực hiện các bước sau khi có kết nối Internet:

 Khởi động trình duyệt và cần đảm bảo cache của trình duyệt đã được xóa.
 Khởi động Wireshark và bắt đầu bắt gói tin
 Từ trình duyệt, truy cập đến địa chỉ sau http://gaia.cs.umass.edu/wireshark-
labs/HTTP-wireshark-file2.html .
Trình duyệt sẽ hiển thị một file HTML đơn giản gồm có 5 dòng.
 Nhanh chóng nhập URL đó và truy cập đến một lần nữa (hoặc chọn refresh
button trên trình duyệt).
 Dừng bắt gói tin và nhập “http” vào cửa sổ display-filter để hiển thị các
thông điệp HTTP.

Trả lời các câu hỏi sau:


8. Xem xét nội dung của HTTP GET đầu tiên. Bạn có thấy dòng “IF-
MODIFIED-SINCE” hay không?
9. Xem xét nội dung phản hồi từ server. Server có thật sự trả về nội dung của
file HTML hay không? Tại sao?
10. Xem xét nội dung của HTTP GET thứ 2. Bạn có thấy dòng “IF-
MODIFIED-SINCE” hay không? Nếu có, giá trị của IF-MODIFIED-SINCE là

Khoa CNTT – Trường ĐH Công Nghệ Sài Gòn Trang 2


Bài 2: GIAO THỨC HTTP

gì?
11. Mã trạng thái HTTP được trả về từ server tương ứng với HTTP GET thứ 2
là gì? Ý nghĩa nó là gì? Server có thật sự gửi về nội dung của file hay không?
Giải thích.

III. NỘI DUNG THỰC HÀNH:

3 Truy cập các trang dài

Trong các ví dụ của chúng ta, trang được truy cập là những files HTML ngắn và đơn
giản. Chúng ta sẽ xem xét điều gì xảy ra khi download một file HTML dài.
Ghi chú rằng nếu bạn không thể chạy Wireshark trên Internet thật sự thì có thể mở
file http-ethereal-trace-3 trong thư mục wireshark-traces.
Thực hiện các bước sau khi có kết nối Internet:
 Khởi động web browser và đảm bảo cache được xóa.
 Khởi động Wireshark và bắt đầu bắt gói tin.
 Từ trình duyệt, truy cập đến địa chỉ sau: http://gaia.cs.umass.edu/wireshark-
labs/HTTP-wireshark-file3.html
 Dừng bắt gói tin và nhập “http” vào display-filter window để hiển thị các
thông điệp HTTP.
Trong packet-listing window, bạn sẽ thấy theo sau HTTP GET là nhiều gói tin TCP
phản hồi. Ở trường hợp của chúng ta, file HTML có nội dung dài, 4500 bytes là quá lớn
để có thể chứa trong một gói tin TCP. Chính vì thế HTTP response được TCP tách ra
thành nhiều gói nhỏ, mỗi gói chứa trong một TCP segment. Trong các phiên bản
Wireshark gần đây, Wireshark xác định mỗt TCP segment là một gói tin riêng biệt và
thông điệp HTTP response được phân rã ra thành nhiều gói tin TCP được xác định bởi
dòng “TCP segment of reassembled PDU” trong cột Info. Các phiên bản Wireshark cũ
hơn thì sử dụng “Continuation”.
Trả lời các câu hỏi sau
12. Trình duyệt đã gửi bao nhiêu HTTP GET? Dòng “THE BILL OF

Khoa CNTT – Trường ĐH Công Nghệ Sài Gòn Trang 3


Bài 2: GIAO THỨC HTTP

RIGHTS” được chứa trong gói tin phản hồi thứ mấy?
13. Gói tin phản hồi thứ mấy chứa mã trạng thái và ý nghĩa của nó?
14. Mã trạng thái và ý nghĩa của HTTP response là gì?
15. Cần bao nhiêu TCP segments để chứa hết HTTP response và nội dung của
The Bill of Rights?

4 Văn bản HTML có chứa các đối tượng

Chúng ta sẽ xem điều gì xảy ra khi trình duyệt download một file HTML có chứa các
đối tượng (ví dụ như hình ảnh) được lưu trữ trên một hay nhiều server khác.
Ghi chú rằng nếu bạn không thể chạy Wireshark trên Internet thật sự thì có thể mở
file http-ethereal-trace-4 trong thư mục wireshark-traces.
Thực hiện các bước sau khi có kết nối Internet:
 Khởi động web browser và đảm bảo cache đã được xóa
 Khởi động Wireshark
 Từ trình duyệt, truy cập đến địa chỉ sau: http://gaia.cs.umass.edu/wireshark-
labs/HTTP-wireshark-file4.html
Trình duyệt sẽ hiển thị file HTML chứa 2 hình ảnh. Các hình ảnh này không
được lưu trữ trên server hiện hành và trình duyệt phải truy cập các hình ảnh này
từ các server khác. Hình ảnh thứ nhất được truy cập từ website www.aw-bc.com.
Hình ảnh thứ 2 được truy cập từ www.manic.cs.umass.edu.
 Dừng bắt gói tin và nhập “http” vào display-filter window để hiển thị các
thông điệp HTTP.
Trả lời các câu hỏi sau:
16. Trình duyệt đã gửi bao nhiêu HTTP GET? Đến những địa chỉ IP nào?
17. Trình duyệt download các file hình ảnh này tuần tự hay song song? Giải
thích?

5 Chứng thực HTTP

Truy cập vào một website được bảo vệ bởi password và quan sát chuỗi thông điệp
HTTP trao đổi giữa trình duyệt và website đó. Website

Khoa CNTT – Trường ĐH Công Nghệ Sài Gòn Trang 4


Bài 2: GIAO THỨC HTTP

http://gaia.cs.umass.edu/wireshark-labs/protected_pages/HTTP-wireshark-file5.html
được bảo vệ bởi password với username là “wireshark-students” (không có ngoăc kép),
và password là “network” (không có ngoăc kép).
Ghi chú rằng nếu bạn không thể chạy Wireshark trên Internet thật sự thì có thể mở
file http-ethereal-trace-5 trong thư mục wireshark-traces.
Thực hiện các bước sau khi có kết nối Internet:
 Khởi động trình duyệt và đảm bảo cache đã được xóa
 Khởi động Wireshark và bắt đầu bắt gói tin
 Từ trình duyệt, truy cập đến địa chỉ sau http://gaia.cs.umass.edu/wireshark-
labs/protected_pages/HTTP-wireshark- file5.html
Nhập username và password.
 Dừng bắt gói tin và nhập “http” vào display-filter window để hiển thị các
thông điệp HTTP.
 Kiểm tra kết quả của Wireshark. Bạn có thể đọc thêm về chứng thực HTTP
từ http://frontier.userland.com/stories/storyReader$2159
Trả lời các câu hỏi sau:
18. Mã trạng thái và ý nghĩa nó trong HTTP response tương ứng với HTTP
GET đầu tiên là gì?
19. Khi nào trình duyệt gửi HTTP GET lần thứ 2, trường dữ liệu nào mới nào
xuất hiện trong HTTP GET?
Username và password được biểu diễn dưới dạng Base64 (hệ 64) chứ không được mã
hóa. Để kiểm tra, truy cập http://www.motobit.com/util/base64-decoder-encoder.asp và
nhập d2lyZXNoYXJrLXN0dWRlbnRz, sau đó giải mã để xem username. Nhập
Om5ldHdvcms=, sau đó giải mã để xem password. Bởi vì ai cũng có thể download
Wireshark và thực hiện bắt trộm gói tin và ai cũng có khả năng giải mã từ Base64 sang
ASCII (chúng ta vừa thực hiện) nên mật khẩu được gửi qua các địa chỉ WWW không an
toàn.

Khoa CNTT – Trường ĐH Công Nghệ Sài Gòn Trang 5


Bài 3: TCP và UDP

I. MỤC TIÊU:

 Tìm hiểu về hành vi của TCP và UDP.


 Phân tích quá trình gửi và nhận một file 150KB từ máy khách lên máy chủ.
 Tìm hiểu việc TCP sử dụng sequence number và acknowledgement number để có
thể truyền dữ liệu tin cậy.
 Phân tích thuật toán điều khiển tắc nghẽn và điều khiển luồng.

II. NỘI DUNG THỰC HÀNH:

1 Bắt gói tin trong quá trình gửi file sử dụng TCP lên máy chủ

Ghi chú rằng nếu bạn không thể chạy Wireshark trên Internet thật sự thì có thể mở file
tcp-ethereal-trace-1 có sẵn trong thư mục wireshark-traces.

Thực hiện các bước sau khi có kết nối Internet:

- Mở trình duyệt. Truy cập trang http://gaia.cs.umass.edu/wireshark-labs/alice.txt và


lưu file vào máy tính.

- Truy cập trang http://gaia.cs.umass.edu/wireshark-labs/TCP-wireshark-file1.html

Khoa CNTT – Trường ĐH Công Nghệ Sài Gòn Trang 0


Bài 3: TCP và UDP

- Sử dụng nút Browse trong trang web để chọn file alice.txt vừa download. Đừng
nhấn nút Upload alice.txt file

- Mở Wireshark và bắt đầu bắt gói (Capture -> Start).

- Quay lại trình duyệt, nhấn nút Upload alice.txt file để upload file lên server. Khi
file đã được upload, một tin nhắn chúc mừng sẽ xuất hiện trên trình duyệt.

- Ngưng bắt gói

2 Phân tích hành vi TCP

- Gõ “tcp” vào bộ lọc của Wireshark để hiển thị tất cả các gói tin TCP.

Khoa CNTT – Trường ĐH Công Nghệ Sài Gòn Trang 1


Bài 3: TCP và UDP

Quan sát các gói tin và trả lời các câu hỏi sau: (để có minh chứng cho câu trả lời, các
bạn cần chụp lại màn hình hoặc dùng chức năng “Print” của Wireshark: File -> Print
Chọn Selected packet only và Packet summary line).

1. Tìm địa chỉ IP và TCP port của máy khách gửi file cho gaia.cs.umass.edu?

2. Tìm địa chỉ IP của gaia.cs.umass.edu? Kết nối TCP dùng để gửi và nhận các
segments sử dụng port nào?

3. TCP SYN segment sử dụng sequence number nào để khởi tạo kết nối TCP giữa
máy khách và gaia.cs.umass.edu? Thành phần nào trong segment cho ta biết
segment đó là TCP SYN segment?

Khoa CNTT – Trường ĐH Công Nghệ Sài Gòn Trang 2


Bài 3: TCP và UDP

4. Tìm sequence number của SYNACK segment được gửi bởi gaia.cs.umass.edu đến
máy khách để trả lời cho SYN segment? Tìm giá trị của Acknowledgement trong
SYNACK segment? Làm sao gaia.cs.umass.edu có thể xác định giá trị đó? Thành
phần nào trong segment cho ta biết segment đó là SYNACK segment?

5. Tìm sequence number của TCP segment có chứa lệnh HTTP POST?

6. Giả thiết rằng TCP segment chứa lệnh HTTP POST là segment đầu tiên của kết
nối TCP. Tìm sequence number của 6 segments đầu tiên (tính cả segment có chứa
HTTP POST)? Thời gian mà mỗi segment được gửi? Thời gian ACK cho mỗi
segment được nhận? Đưa ra sự khác nhau giữa thời gian mà mỗi segment được
gửi và thời gian ACK cho mỗi segment được nhận, tính RTT cho 6 segments?
Tính EstimatedRTT sau khi nhận mỗi ACK? Giả sử EstimatedRTT bằng với RTT
cho segment đầu tiên, sau đó tính EstimatedRTT với công thức trong giáo trình
trang 239 cho các segment tiếp theo.

7. Tìm độ dài của 6 segment đầu tiên?

8. Tìm lượng buffer còn trống nhỏ nhất mà bên nhận thông báo cho bên gửi trong
suốt file trace?

9. Có segment nào được gửi lại hay không? Thông tin nào trong file trace cho bạn
biết điều đó?

10. Lương dữ liệu mà bên nhận thường acknowledge trong một ACK? Xác định các
trường hợp mà bên nhận ACK cho mỗi segment được nhận (bảng 3.2 trong trang
247 của giáo trình)

11. Thông lượng (throughput – byte/s) của kết nối TCP? Giải thích cách tính thông
lương.

3 Điều khiển tắc nghẽn

Để kiểm tra lượng dữ liệu được truyền trong một đơn vị thời gian, thay vì phải tự tính
toán trực tiếp từ dữ liệu của các gói tin, ta sử dụng một tính năng của Wireshark – Time –
Sequence – Graph (Steven)

Khoa CNTT – Trường ĐH Công Nghệ Sài Gòn Trang 3


Bài 3: TCP và UDP

- Chọn một segment bất kỳ trong phần danh sách các gói tin. Chọn Statistics ->
TCP Stream Graph -> Time-Sequence-Graph(Steven). Ta sẽ thấy một biểu đồ
tương tự như sau:

- Mỗi chấm trong biểu đồ tượng trưng cho một TCP segment có sequence number
tương ứng với thời gian segment đó được gửi đi. Lưu ý là một chồng các dấu
chấm tương ứng với một chuỗi các gói tin được gửi liên tiếp nhau.

- Trả lời các câu hỏi sau:

12. Sử dụng Time-Sequence-Graph để quan sát sequence number tương ứng với thời
gian segment được gửi. Xác định giai đoạn Slowstart bắt đầu và kết thúc, đâu là
giai đoạn tránh tắc nghẽn (Congestion Avoidance)? Đưa ra nhận xét, so sánh với
hành vi của TCP đã học trong giáo trình.

Khoa CNTT – Trường ĐH Công Nghệ Sài Gòn Trang 4


Bài 3: TCP và UDP

13. Trả lời tương tự đối với file trace mà các bạn có được trong trường hợp các bạn tự
upload file alice.txt

4 Bắt gói và phân tích UDP

- Bật Wireshark, bắt đầu bắt gói. Thông thường sẽ xuất hiện một số gói tin UDP
như SNMP sẽ xuất hiện trên danh sách các gói tin.

- Ngưng bắt gói, lọc các gói tin UDP để Wireshark chỉ hiển thị các gói tin UDP.
Nếu không có gói tin UDP nào thì các bạn cũng có thể sử dụng file htp-ethereal-
trace-5 đã được cung cấp trong thư mục wireshark-traces.

- Trả lời các câu hỏi sau:

14. Chọn một gói tin UDP, xác định các trường (field) trong UDP header?

15. Qua thông tin hiển thị của Wireshark, xác định độ dài (tính theo byte) của mỗi
trường trong UDP header?

16. Giá trị của trường Length là độ dài của cái gì? Chứng minh?

17. Số bytes lớn nhất mà payload của UDP có thể chứa?

18. Giá trị lớn nhất có thể có của port nguồn?

19. Xác định protocol number của UDP (cả hệ 10 lẫn hệ 16)? Để trả lời câu hỏi này,
các bạn cần phải xem trường Protocol của IP header.

20. Kiểm tra một cặp gói tin gồm: gói tin do máy mình gửi và gói tin phản hồi của gói
tin đó. Miêu tả mối quan hệ về port number của 2 gói tin.

Khoa CNTT – Trường ĐH Công Nghệ Sài Gòn Trang 5


Bài 4: GIAO THỨC ICMP VÀ IP

I. MỤC TIÊU:

Trong bài thực hành này, chúng ta sẽ khám phá một số phương diện của giao thức
ICMP:

 Các thông điệp ICMP tạo bởi chương trình Ping.

 Các thông điệp ICMP tạo bởi chương trình Traceroute.

 Định dạng và nội dung của một thông điệp ICMP.

Trước khi đi vào chi tiết bài thực hành, sinh viên nên xem lại các kiến thức về ICMP
trong phần 4.4.3 của giáo trình. Bài thực hành này thực hiện trên hệ điều hành Windows,
tuy nhiên SV cũng có thể thực hiện trên hệ điều hành Unix/Linux với các công cụ được
cài đặt tương đương.

II. NỘI DUNG THỰC HÀNH:

1 Giao thức ICMP

1.1 ICMP và Ping

Trong phần này hướng dẫn SV hiểu về giao thức ICMP bằng cách bắt các gói tin tạo
bởi chương trình Ping. Ping là công cụ đơn giản cho phép xác định một Host còn sống
hay không. Ping ở Host nguồn gửi một gói tin tới địa chỉ IP đích. Nếu Host đích còn
sống, chương trình Ping ở Host đích sẽ trả lời bằng cách gửi một gói tin trở lại Host
nguồn. Cả 2 loại gói tin được dùng trong quá trình Ping này đều là các gói tin ICMP.

Ghi chú rằng nếu bạn không thể chạy Wireshark trên Internet thật sự thì có thể mở file
icmp-ethereal-trace-1 có sẵn trong thư mục wireshark-traces.

Thực hiện các bước sau khi có kết nối Internet:

 Mở ứng dụng Command Prompt trong Windows.

 Chạy chương trình Wireshark và tiến hành bắt gói tin Wireshark.

Khoa CNTT – Trường ĐH Công Nghệ Sài Gòn Trang 0


Bài 4: GIAO THỨC ICMP VÀ IP

 Trong chương trình MS-DOS gõ dòng lệnh: “ping-n 10 hostname”, hoặc “c:\
windows\system32\ping –n 10 hostname”, sau đó gõ Enter.

Trong đó, hostname là một Host ở châu lục khác (chẳng hạn chúng ta đang ở châu Á
thì có thể chọn một Host ở châu Âu như bbc.co.uk). “-n 10” tức là 10 gói tin ping sẽ được
gửi đi.

 Khi chương trình Ping kết thúc, dừng quá trình bắt gói tin trong Wireshark.

Sau khi thực hiện các bước trên, cửa sổ Command Prompt sẽ như hình 1. Trong ví dụ
này, chương trình Ping nguồn ở Massachusetts và chương trình Ping đích là ở Hồng
Kông. Từ cửa sổ này chúng ta thấy rằng chương trình Ping ở địa chỉ nguồn gửi 10 gói tin
truy vấn và nhận được 10 gói tin trả lời. Chú ý rằng với mỗi thông điệp trả lời, chương
trình Ping nguồn sẽ tính thời gian của chu trình (Roundt-Tirp Time – RTT), với 10 gói tin
thì thời gian chu trình trung bình vào khoảng 375 mili-giây.

Hình 1. Cửa sổ Command Prompt sau khi chạy lệnh Ping.

Khoa CNTT – Trường ĐH Công Nghệ Sài Gòn Trang 1


Bài 4: GIAO THỨC ICMP VÀ IP

Ở hình 2 là cửa sổ của chương trình Wireshark sau khi lệnh ‘icmp’ được enter vào cửa
sổ hiển thị Filter (cửa sổ cung cấp chức năng lọc gói tin theo từ khóa được nhập). Chú ý
rằng cửa sổ liệt kê 20 gói tin gồm: 10 gói tin truy vấn được gửi bởi host nguồn và 10 gói
tin phản hồi mà host nguồn nhận được. Cũng chú ý thêm rằng địa chỉ IP nguồn là một địa
chỉ tĩnh (đằng sau một NAT) ở định dạng 192.168/12, và địa chỉ IP đích là của Web
server ở HKUST. Ở gói tin đầu tiên trong ví dụ bên dưới thì vùng cửa sổ về nội dung gói
tin cung cấp thông tin về gói tin này. Chúng ta thấy rằng phần địa chỉ IP của gói tin này
có giao thức số 01, là số giao thức của giao thức ICMP. Điều này có nghĩa là Payload của
phần địa chỉ IP là một gói tin ICMP.

Khoa CNTT – Trường ĐH Công Nghệ Sài Gòn Trang 2


Bài 4: GIAO THỨC ICMP VÀ IP

Hình 2. Cửa sổ output của Wireshark cho chương trình Ping với thông tin về giao
thức IP được hiển thị.

Ở hình 3 tập trung vào cùng gói tin ICMP nhưng mở hiển thị chi tiết phần thông tin
trong cửa sổ nội dung gói tin. Ta quan sát thấy rằng gói tin ICMP này thuộc tuýp 8 (Type
8) và Code 0, một dạng gói tin gọi là ICMP ‘Echo Request’ (xem thêm ở hình 4.23 của
giáo trình). Cũng chú ý rằng gói tin ICMP này chứa một Checksum, một định danh, và
một số thứ tự (Sequence Number).

Khoa CNTT – Trường ĐH Công Nghệ Sài Gòn Trang 3


Bài 4: GIAO THỨC ICMP VÀ IP

Hình 3. Kết quả việc bắt gói tin Ping với phần thông tin về gói tin ICMP được
hiển thị chi tiết.

Sinh viên cần nộp lại báo cáo với các nội dung sau:

- Hình chụp màn hình cửa sổ Command Prompt tương tự như hình 1 ở trên.

- Trả lời các câu hỏi bên dưới, trong đó với mỗi câu trả lời cần kèm theo một bản
in/hình kết quả hiển thị của (các) gói tin trong truy vết (trace) mà SV sử dụng để trả lời
câu hỏi. Chú thích vào bản in để giải thích về câu trả lời. Để in một gói tin, vào File ->
Print, chọn ‘Selected packet only’, chọn ‘Packet summary line’, và chọn lượng nhỏ nhất
của thông tin chi tiết của gói tin cần dùng để trả lời câu hỏi. Các câu hỏi SV cần trả lời
gồm:

Khoa CNTT – Trường ĐH Công Nghệ Sài Gòn Trang 4


Bài 4: GIAO THỨC ICMP VÀ IP

1. Cho biết địa chỉ IP của máy Host mà SV đang dùng? Địa chỉ IP của Host đích?

2. Tại sao một gói tin ICMP không có số cổng (port number) của Host nguồn và đích?

3. Xem xét chi tiết một trong số các gói tin Ping Request được gửi bởi Host mà SV
đang dùng: Cho biết thông tin về ICMP Type và các Code Number của nó? Gói tin ICMP
có các trường thông tin nào khác? Các trường thông tin Checksum, Sequence Number và
định danh có bao nhiêu byte?

1.2 ICMP và Traceroute.

Ở phần này sẽ tiến hành bắt các gói tin ICMP tạo bởi chương trình Traceroute.
Traceroute là chương trình được dùng để truy vết/hiển thị đường đi của một gói tin từ
nguồn đến đích (xem thêm ở phần 1.4 và 4.4 trong giáo trình).

Traceroute được hiện thực theo nhiều cách khác nhau trong Unix/Linux/MacOS và
trong Windows. Trong Unix/Linux, Host nguồn gửi một chuỗi các gói tin UDP tới địa chỉ
đích sử dụng số cổng đích (destination port number). Trong Windows, nguồn gửi một
chuỗi các gói tin ICMP tới địa chỉ đích. Trong cả 2 hệ điều hành này thì chương trình gửi
gói tin đầu tiên với TTL=1, gói tin thứ hai với TTL=2,… Lưu ý rằng Router sẽ giảm giá
trị TTL của gói tin một đơn vị khi gói tin đi qua Router. Khi một gói tin đến một Router
với TTL=1, Router sẽ gửi một gói tin ICMP Error trở lại địa chỉ nguồn. Trong phần tiếp
theo, chúng ta sẽ sử dụng chương trình Tracert của Windows (trong phần thực hành về
Wireshark IP sẽ sử dụng chương trình Pingplotter với các chức năng bổ sung so với
Tracert mà chúng ta sẽ cần dùng đến khi thực hành).

Ghi chú rằng nếu bạn không thể chạy Wireshark trên Internet thật sự thì có thể mở file
icmp-ethereal-trace-2 có sẵn trong thư mục wireshark-traces.

Tiến hành các bước khi có kết nối Internet:

 Mở chương trình Command Prompt.

 Mở chương trình Wireshark, tiến hành bắt gói tin.

Khoa CNTT – Trường ĐH Công Nghệ Sài Gòn Trang 5


Bài 4: GIAO THỨC ICMP VÀ IP

 Gõ lệnh “tracert hostname”, hoặc “c:\windows\system32\tracert hostname” trong


cửa sổ dòng lệnh MS-DOS, trong đó hostname là một host nằm ở châu lục khác. Chẳng
hạn, SV có thể gõ www.inria.fr cho một Web server ở INRIA (một viện nghiên cứu ở
Pháp). Sau đó chạy Traceroute bằng cách gõ enter.

 Khi Traceroute kết thúc, ngưng việc bắt gói tin trong Wireshark.

Sau khi chạy Traceroute thì cửa sổ Command Prompt tương tự như hình 4. Trong
hình này, chương trình Traceroute khách là ở Massachusetts và đích đến là ở Pháp. Từ
hình này chúng ta thấy rằng với mỗi giá trị TTL, chương trình nguồn gửi 3 gói tin tham
dò. Traceroute hiển thị RTT cho mỗi gói tin thăm dò, cũng như địa chỉ IP (có thể có thêm
tên) của Router trả về thông điệp ICMP TTL vượt quá giới hạn (ICMP TTL-exceeded
message).

Hình 4. Cửa sổ Command Prompt hiển thị các kết quả của Traceroute.

Ví dụ 5 hiển thị cửa sổ Wireshark cho một gói tin ICMP trả về bởi một Router. Chú ý
rằng gói tin lỗi ICMP (ICMP Error packet) này chứa nhiều trường thông tin hơn các gói
tin Ping ICMP.

Khoa CNTT – Trường ĐH Công Nghệ Sài Gòn Trang 6


Bài 4: GIAO THỨC ICMP VÀ IP

Hình 5. Cửa sổ Wireshark với các trường ICMP được mở hiển thị ra cho một gói
tin lỗi ICMP.

SV cần nộp lại các nội dung sau trong bài báo cáo:

- Ở phần thực hành này, SV cần nộp lại hình chụp màn hình của cửa sổ Command
Prompt. Trả lời các câu hỏi sau đây, ở mỗi câu trả lời kèm theo bản in của (các) gói tin
với truy vết (trace) đã sử dụng, và chú thích vào bản in để giải thích câu trả lời. Để in một
gói tin, vào File -> Print,… như hướng dẫn ở phần trên. Các câu hỏi SV cần trả lời gồm:

5. Cho biết địa chỉ IP của máy tính đang sử dụng? Địa chỉ IP của Host đích?

6. Nếu ICMP gửi các gói tin UDP (như trong Unix/Linux), số của giao thức IP (IP
protocol number) vẫn là 01 có đúng không? Nếu không thì nó sẽ là gì?

Khoa CNTT – Trường ĐH Công Nghệ Sài Gòn Trang 7


Bài 4: GIAO THỨC ICMP VÀ IP

7. Xem chi tiết gói tin ICMP Echo trong hình chụp màng hình đã thực hiện, nó có khác
với các gói tin truy vấn ICMP Ping trong phần đầu của bài thực hành này hay không?
Nếu có, hãy giải thích?

8. Xem chi tiết gói tin ICMP Error trong hình chụp màng hình đã thực hiện, nó có
nhiều trường thông tin hơn gói tin ICMP Echo. Những trường thông tin này bao gồm
những gì?

9. Xem chi tiết 3 gói tin ICMP cuối cùng nhận được ở Host nguồn. Những gói tin này
khác với các gói tin ICMP Error như thế nào? Tại sao chúng khác nhau?

10. Trong quá trình đo Tracert, có đường liên kết (link) nào mà có thời gian trễ dài hơn
đáng kể so với các link khác hay không? Xem lại hình 4, có đường liên kết link nào mà
có thời gian trễ dài hơn đáng kể so với các link khác hay không? Căn cứ vào các tên
Router có thể đoán biết được vị trí của 2 Router ở điểm kết thúc ở link này hay không?

2 Giao thức IP

Trong phần thực hành này sẽ tìm hiểu về giao thức IP, tập trung vào phân tích gói tin
IP. Chúng ta sẽ thực hiện phân tích đường đi của một gói tin IP gửi và nhận bởi sự thực
thi chương trình Traceroute, cũng như tìm hiểu các trường thông tin khác nhau trong gói
tin IP và tìm hiểu về việc phân mảnh IP một cách chi tiết.

2.1 Bắt các gói tin từ việc thực thi Traceroute.

Để tạo một truy vết (trace) của các gói tin IP (IP datagram) trong phần này, chúng ta sẽ
dùng Traceroute để gửi các gói tin có độ dài khác nhau đến một địa chỉ đích X nào đó.
Lưu ý rằng Traceroute thực thi bằng cách trước tiên gửi một hoặc nhiều gói tin với TTL
trong IP header được thiết lập giá trị là 1; tiếp đến gửi một chuỗi một hoặc nhiều gói tin
đến cùng một địa chỉ đích với một TTL có giá trị là 2; sau đó gửi một chuỗi gói tin tương
tự với TTL=3,… Cũng lưu ý rằng Router phải giảm giá trị TTL một đơn vị ở mỗi gói tin
nhận được. Nếu TTL bằng 0, Router trả về một thông điệp ICMP (Type 11 – TTL-
exceeded) tới Host gửi. Kết quả là một gói tin với TTL bằng 1 (gửi bởi Host chạy
Traceroute) sẽ khiến Router kế cận (cách Router hiện tại một Hop tính từ Host gửi) gửi

Khoa CNTT – Trường ĐH Công Nghệ Sài Gòn Trang 8


Bài 4: GIAO THỨC ICMP VÀ IP

một thông điệp ICMP TTL-exceeded trở lại nơi gửi; gói tin được gửi với TTL bằng 2 sẽ
khiến Router nằm cách 2 Hop gửi một thông điệp ICMP trở lại nơi gửi; gói tin được gửi
với TTL bằng 3 sẽ khiến Router nằm cách 3 Hop gửi một thông điệp ICMP trở lại nơi
gửi, và cứ như vậy. Trong trường hợp này, Host chạy Traceroute có thể biết được định
danh của các Router giữa nó và địa chỉ đích X bằng cách xem ở các địa chỉ IP nguồn
trong các gói tin chứa các thông điệp ICMP TTL-exceeded.

Thực hiện việc chạy Traceroute để gửi các gói tin có độ dài khác nhau:

 Windows: ở đây chúng ta dùng chương trình (ưu điểm hơn chương trình
Traceroute) là Pingplotter (http://www.pingplotter.com). Tải và cài đặt Pingplotter, test
chương trình bằng cách thực hiện một vài thao tác traceroute tới một vài Website ưa
thích. Kích thước của gói tin ICMP Echo Request có thể được thiết lập một cách rõ ràng
trong Pingplotter bằng cách chọn menu Edit -> Options -> Packet Options, và sau đó điền
vào trường Packet Size. Kích thước mặc định của tói tin là 56 bytes. Khi Pingplotter gửi
một chuỗi các gói tin với giá TTL ngày càng tăng, nó khởi động lại quá trình gửi với TTL
bằng 1, sau khi chờ một khoảng thời gian Trace Interval. Giá trị của Trace Interval và số
lượng các khoảng thời gian có thể được thiết lập một cách rõ ràng trong Pingplotter.

 Linux/Unix/MacOS: với lệnh traceroute trong Unix/MacOS, kích thước của gói tin
UDP được gửi đến đích và có thể được thiết lập một cách rõ ràng bằng cách chỉ rõ số
byte trong gói tin. Thông tin này được nhập trong dòng lệnh traceroute ngay sau tên hoặc
địa chỉ của Host đích. Ví dụ, gửi các gói tin traceroute 2000 byte đến địa chỉ
gaia.cs.umass.edu thì câu lệnh sẽ là:

%traceroute gaia.cs.umass.edu 2000

Ghi chú rằng nếu bạn không thể chạy Wireshark trên Internet thật sự thì có thể mở file
ip-ethereal-trace-1 có sẵn trong thư mục wireshark-traces.

Thực hành các bước sau khi có kết nối Internet:

Khoa CNTT – Trường ĐH Công Nghệ Sài Gòn Trang 9


Bài 4: GIAO THỨC ICMP VÀ IP

 Khởi động Wireshark và bắt đầu bắt gói tin (Capture -> Start), nhấn OK trên màn
hình Wireshark Packet Capture Options.

 Nếu bạn đang dùng Windows, khởi động Pingplotter và enter tên của một đích
trong mục “Address to Trace Window”. Gõ vào giá trị 3 trong mục “# of times to Trace”
(để không phải bắt quá nhiều dữ liệu). Chọn menu Edit -> Advanced Options -> Packet
Options và enter một giá trị 56 trong mục “Packet Size” và nhấn OK. Sau đó nhấn nút
Trace. Cửa sổ Pingplotter sẽ tương tự như hình bên dưới.

Tiếp theo, gửi một tập các gói tin có độ dài lớn hơn bằng cách chọn Edit -> Advanced
Options -> Packet Options và enter một giá trị 2000 trong mục Packet Size và nhấn OK.
Sau đó nhấn nút Resume.

Cuối cùng, gửi một tập các gói tin có độ dài lớn hơn (thực hiện tương tự như trên) với
giá trị 3500 trong Packet Size và nhấn OK. Sau đó nhấn nút Resume.

Dừng quá trình truy vết trên Wireshark.

Khoa CNTT – Trường ĐH Công Nghệ Sài Gòn Trang 10


Bài 4: GIAO THỨC ICMP VÀ IP

 Nếu bạn đang dùng Unix hoặc Mac, enter 3 lệnh traceroute, một lệnh với chiều dài
56 byte, một lệnh với chiều dài 2000 byte, và một lệnh chiều dài 3500 byte.

Dừng truy vết trên Wireshark.

2.2 Xem xét thông tin truy vết thu được.

Trong truy vết thu được, bạn có thể thấy được chuỗi ICMP Echo Request (trong
trường hợp dùng Windows) hay phân mảnh UDP (tr ong trường hợp dùng Unix) gửi
bởi máy tính của bạn và các thông điệp ICMP TTL-exceeded trở về máy tính của bạn bởi
các Router trung gian. Trong câu hỏi dưới đây, chúng ta giả sử bạn đang sử dụng
Windows, các câu hỏi tương ứng cho trường hợp dùng Unix sẽ được nêu rõ. Khi trả lời
một câu hỏi bên dưới, SV cần nộp một bản in (printout) của các gói tin đối với truy vết
(trace) mà bạn sử dụng để trả lời các câu hỏi. Khi nộp bài báo cáo, SV cần chú thích vào
kết quả output để làm rõ bạn lấy thông tin ở đâu trong output để dùng cho câu trả lời của
bạn. Việc in một gói tin có thể thực hiện tương tự như đã hướng dẫn ở các phần trên.

1. Chọn gói tin ICMP Echo Request đầu tiên gửi bởi máy tính của bạn, và mở phần nội
dung của phần Internet Protocol của gói tin trong cửa sổ hiển thị chi tiết về gói tin. Địa
chỉ IP của máy đang dùng là gì?

2. Trong Header của gói tin IP, giá trị trong trường thông tin về giao thức lớp cao hơn
là gì?

3. IP Header có bao nhiêu byte? Trong Payload của gói tin IP có bao nhiêu byte? Giải
thích.

4. Gói tin IP có bị phân mảnh không? Giải thích.

Tiếp theo, sắp xếp các gói tin đã theo vết tùy theo địa chỉ IP nguồn bằng cách click vào
header của cột ‘Source’, một mũi tên đổ xuống sẽ xuất hiện kế bên từ “Source”. Chọn
thông điệp ICMP Echo Request gửi bởi máy tính của bạn, và mở hiển thị mục Internet
Protocol trong “details of selected packet header”. Trong cửa sổ “listing of captured
packets”, bạn có thể thấy tất cả các thông điệp ICMP đến sau nằm bên dưới ICMP đầu

Khoa CNTT – Trường ĐH Công Nghệ Sài Gòn Trang 11


Bài 4: GIAO THỨC ICMP VÀ IP

tiên này. Dùng mũi tên hướng xuống để di chuyển các gói tin ICMP gửi bởi máy tính của
bạn.

5. Các trường thông tin (field) nào trong gói tin IP luôn thay đổi từ một gói tin này
sang gói tin kế tiếp trong chuỗi các gói ICMP gửi bởi máy tính của bạn?

6. Các trường thông tin nào là không đổi (hằng sô)? Các trường thông tin nào phải cố
định không thay đổi? Các trường thông tin nào phải thay đổi? Tại sao?

7. Mô tả mẫu mà bạn thấy trong các giá trị trong trường thông tin về định danh của gói
tin IP.

8. Giá trị trong trường thông tin định danh và trường về TTL là gì?

9. Có phải các giá trị này vẫn không thay đổi đối với tất cả các gói tin trả lời ICMP
TTL-exceeded gửi đến máy tính của bạn bởi Router gần nhất? Tại sao?

Phân mảnh (Fragmentation)

10. Tìm gói tin ICMP EchoRequest được gửi bới máy tính của bạn sau khi thay đổi
Packet Size trong Pingplotter thành 2000. Có phải gói tin đó được phân mảnh qua nhiều
hơn một gói tin IP?

11. In ra phân mảnh đầu tiên của gói IP đã bị phân mảnh. Thông tin nào trong IP
Header chỉ ra rằng gói tin đã bị phân mảnh? Thông tin nào trong IP Header chỉ ra rằng
liệu đây có phải là phân mảnh đầu tiên hay là các phân mảnh sau? Gói tin IP này dài bao
nhiêu?

12. In ra phân mảnh thứ hai của gói tin IP đã bị phân mảnh. Thông tin nào trong IP
Header chỉ ra rằng nó không phải là phân mảnh đầu tiên? Có các phân mảnh nào khác
nữa không?

13. Những trường thông tin nào thay đổi trong IP Header giữa phân mảnh đầu tiên và
thứ hai?

Khoa CNTT – Trường ĐH Công Nghệ Sài Gòn Trang 12


Bài 4: GIAO THỨC ICMP VÀ IP

Bây giờ hãy tìm gói tin ICMP Echo Request đầu tiên được gửi bởi máy tính của bạn
sau khi bạn thay đổi kích thước gói tin trong Pingplotter thành 3500.

14. Có bao nhiêu phân mảnh được tạo ra từ gói tin gốc?

15. Những trường thông tin nào thay đổi trong IP Header giữa các phân mảnh?

Khoa CNTT – Trường ĐH Công Nghệ Sài Gòn Trang 13


Bài 5: ETHERNET VÀ ARP

I. MỤC TIÊU:

Quan sát hoạt động của Ethernet và ARP.

II. NỘI DUNG THỰC HÀNH:

1 Bắt và phân tích Ethernet frame

Ghi chú rằng nếu bạn không thể chạy Wireshark trên Internet thật sự thì có thể mở file
ethernet-ethereal-trace-1 có sẵn trong thư mục wireshark-traces.
Thực hiện các bước sau khi có kết nối Internet:

- Mở trình duyệt, đảm bảo cache của trình duyệt đã trống. Đối với Firefox, chọn
Tool ->Clear Recent History, đánh dấu vào mục Cache.

- Mở Wireshark và bắt đầu bắt gói.

- Truy cập URL: http://gaia.cs.umass.edu/wireshark-labs/HTTP-ethereal-lab-


file3.html trên trình duyệt. Sau khi thông tin của trang web đã được hiển thị đầy
đủ, ngưng bắt gói.

- Đầu tiên, tìm số thứ tự của gói tin HTTP GET được gửi từ máy tính của bạn đến
gaia.cs.umass.edu.

Khoa CNTT – Trường ĐH Công Nghệ Sài Gòn Trang 0


Bài 5: ETHERNET VÀ ARP

- Vì bài thực hành về Ethernet và ARP nên ta không cần quan tâm đến IP hoặc tầng
cao hơn. Để Wireshark chỉ hiển thị các thông tin về giao thức tầng liên kết, chọn
Analyze -> Enable Protocol. Bỏ chọn IP hoặc IPv4 -> OK. Khi đó, Wireshark sẽ
hiển thị như sau

- Để trả lời các câu hỏi bên dưới, các bạn cần quan sát phần chi tiết gói tin và nội
dung gói tin (cửa sổ giữa và cuối của Wireshark)

- Chọn Ethernet frame có chứa thông điệp của HTTP GET. Mở rộng phần thông tin
của Ethernet frame trong cửa sổ chi tiết gói tin. Phần nội dung của Ethernet frame
được hiển thị trong cửa sổ nội dung gói tin.

Trả lời các câu hỏi bên dưới, dựa vào nội dung của Ethernet frame chứa HTTP GET.
để có minh chứng cho câu trả lời, các bạn cần chụp lại màn hình hoặc dùng chức năng
“Print” của Wireshark: File -> Print Chọn Selected packet only và Packet summary line

1. Địa chỉ Ethernet 48 bit của máy tính bạn?

2. Địa chỉ đích (Ethernet 48 bit) trong Ethernet frame? Đó có phải là địa chỉ của
gaia.cs.umass.edu hay không (Gợi ý: là không). Địa chỉ đó là của thiết bị nào?
(trang 468-469 trong giáo trình)

Khoa CNTT – Trường ĐH Công Nghệ Sài Gòn Trang 1


Bài 5: ETHERNET VÀ ARP

3. Giá trị hệ 16 của trường Frame type (2 byte). Giao thức tầng trên tương ứng là gì?

4. Tính từ ký tự “G” (GET) trong frame đến hết frame có bao nhiêu byte?

Trả lời các câu hỏi bên dưới dựa vào nội dung của thông điệp đầu tiên phản hồi cho
thông điệp HTTP GET

5. Địa chỉ nguồn trong Ethernet frame? Có phải là địa chỉ của máy tính bạn hay của
gaia.cs.umass.edu? (Gợi ý: là không). Địa chỉ đó của thiết bị nào?

6. Địa chỉ đích của Ethernet frame? Có phải đó là địa chỉ của máy tính bạn hay
không?

7. Giá trị hệ 16 của trường Frame type (2 byte). Giao thức tầng trên tương ứng là gì?

8. Tính từ ký tự “O” (OK) trong frame đến hết frame có bao nhiêu byte?

2 ARP

2.1 ARP caching

ARP duy trì một bảng ánh xạ giữa IP và MAC (ARP cache). Lệnh arp trên Windows
và Linux được dùng để xem nội dung của bảng ánh xạ ARP. Tuy lệnh arp và giao thức
ARP cùng tên nhưng chức năng khác nhau:

- Lệnh arp dùng để xem bảng ánh xạ giữa IP và MAC

- Giao thức ARP định nghĩa định dạng, các thông điệp được gửi và nhận, các hành
động khi các thông điệp được gửi và nhận

Quan sát nội dung của ARP cache trên máy tính của bạn bằng cách:

- Trên Windows: gõ arp –a hoặc “C:\windows\system32\arp - a” trên command


line

- Trên Linux/Unix/MacOS: lệnh arp có thể ở các thư mục khác nhau, thông thường
là /sbin/arp hoặc /usr/etc/arp

Trả lời câu hỏi sau:

Khoa CNTT – Trường ĐH Công Nghệ Sài Gòn Trang 2


Bài 5: ETHERNET VÀ ARP

9. Viết nội dung của ARP cache trong máy tính của bạn. Giải thích ý nghĩa của từng
dòng trong ARP cache?

2.2 Quan sát hành vi của ARP

Để quan sát được quá trình gửi và nhận các thông điệp ARP, ta cần phải xóa nội dung
của ARP cache, vì nếu máy tính của bạn đã có một ánh xạ IP – MAC cần thiết thì ARP
không cần được sử dụng.

- Trên Windows: Sử dụng arp –d *

- Trên Linux/Unix/MacOS: Sử dụng arp –d * nhưng phải có quyền root.

Ghi chú rằng nếu bạn không thể chạy Wireshark trên Internet thật sự thì có thể mở file
ethernet-ethereal-trace-1 có sẵn trong thư mục wireshark-traces.

Thực hiện các bước sau khi có kết nối Internet:

- Xóa ARP cache

- Xóa cache của trình duyệt

- Mở Wireshark và tiến hành bắt gói

- Truy cập trang web http://gaia.cs.umass.edu/wireshark-labs/HTTP-wireshark-lab-


file3.html

- Sau khi nội dung của trang web đã được hiển thị, ngưng bắt gói. Vì bài thực hành
về ARP nên ta không cần quan tâm đến IP hoặc tầng cao hơn. Để Wireshark chỉ
hiển thị các thông tin về giao thức tầng liên kết, chọn Analyze -> Enable Protocol.
Bỏ chọn IP hoặc IPv4-> OK. Khi đó, Wireshark sẽ hiển thị như sau

Khoa CNTT – Trường ĐH Công Nghệ Sài Gòn Trang 3


Bài 5: ETHERNET VÀ ARP

Trả lời các câu hỏi sau:

10. Giá trị hệ 16 của địa chỉ nguồn và đích trong thông điệp ARP request?

11. Giá trị hệ 16 của trường Frame type (2 byte). Giao thức tầng trên tương ứng là gì?

12. Download bản miêu tả ARP từ ftp://ftp.rfc-editor.org/in-notes/std/std37.txt . Một


bản miêu tả chi tiết khác dễ theo dõi hơn
http://www.erg.abdn.ac.uk/~gorry/course/inet-pages/arp.html

a. Tính từ trương opcode , một gói tin ARP dài bao nhiêu byte?

b. Giá trị của trường opcode trong phần payload của ARP request

c. Thông điệp ARP có chứa địa chỉ IP của bên gửi không?

d. Tìm trong phần payload của ARP: Câu hỏi mà ARP request yêu cầu – Tìm
địa chỉ Ethernet tương ứng với địa chỉ IP đã cho?

13. Tìm thông điệp ARP reply trả lời cho thông điệp ARP request

a. Tính từ trương opcode , một gói tin ARP dài bao nhiêu byte?

Khoa CNTT – Trường ĐH Công Nghệ Sài Gòn Trang 4


Bài 5: ETHERNET VÀ ARP

b. Giá trị của trường opcode trong phần payload của ARP request

c. Tìm trong phần payload của ARP: Câu trả lời cho ARP request tương ứng –
Địa chỉ Ethernet tương ứng với địa chỉ IP đã yêu cầu?

14. Giá trị hệ 16 của địa chỉ nguồn và đích trong thông điệp ARP reply?

15. Mở file ethernet-ethereal-trace-1 đã được cung cấp trong thư mục wireshark-
traces. 2 gói tin đầu là ARP request và ARP reply tương ứng. Tuy nhiên, gói tin
thứ 6 là một ARP request khác , tại sao không có gói tin ARP reply trả lời cho gói
tin ARP request này?

Khoa CNTT – Trường ĐH Công Nghệ Sài Gòn Trang 5

You might also like