You are on page 1of 7

Machine Translated by Google

Phòng thí nghiệm

Wireshark: HTTP v8.0

Bổ sung cho Mạng máy tính: Cách tiếp cận từ trên xuống, tái

bản lần thứ 8 , JF Kurose và KW Ross

“Nói cho tôi biết và tôi sẽ quên. Chỉ cho tôi và tôi nhớ. Hãy để tôi
tham gia và tôi hiểu.” Tục ngữ Trung Quốc

© 2005-2020, JF Kurose và KW Ross, Bảo lưu mọi quyền

Sau khi đã làm quen với công cụ nghe lén gói Wireshark trong phòng thí nghiệm giới thiệu, giờ đây

chúng tôi đã sẵn sàng sử dụng Wireshark để điều tra các giao thức đang hoạt động. Trong phòng thí nghiệm

này, chúng ta sẽ khám phá một số khía cạnh của giao thức HTTP: tương tác GET/phản hồi cơ bản, định dạng

thông báo HTTP, truy xuất các tệp HTML lớn, truy xuất các tệp HTML có đối tượng được nhúng cũng như

xác thực và bảo mật HTTP. Trước khi bắt đầu những bài thí nghiệm này, bạn có thể muốn xem lại Phần 2.2
của văn bản.1

1. Tương tác HTTP GET/phản hồi cơ bản

Hãy bắt đầu khám phá HTTP bằng cách tải xuống một tệp HTML rất đơn giản - một tệp rất ngắn và không chứa

các đối tượng được nhúng. Thực hiện như sau:

1. Khởi động trình duyệt web của bạn.

2. Khởi động trình nghe lén gói Wireshark, như được mô tả trong Phòng thí nghiệm giới thiệu (nhưng

chưa bắt đầu chụp gói). Nhập “http” (chỉ các chữ cái, không phải dấu ngoặc kép) trong cửa sổ

đặc tả bộ lọc hiển thị để chỉ các tin nhắn HTTP đã chụp mới được hiển thị sau trong cửa sổ

danh sách gói. (Ở đây chúng tôi chỉ quan tâm đến giao thức HTTP và không muốn thấy sự lộn

xộn của tất cả các gói đã bắt được).

3. Đợi hơn một phút một chút (chúng ta sẽ sớm biết lý do tại sao) rồi bắt đầu

Chụp gói Wireshark.

4. Nhập thông tin sau vào trình duyệt của bạn

http://gaia.cs.umass.edu/wireshark-labs/HTTP-wireshark-file1.html

Trình duyệt của bạn sẽ hiển thị tệp HTML một dòng rất đơn giản.

5. Dừng việc chụp gói Wireshark.

1
Tài liệu tham khảo về các số liệu và phần dành cho ấn bản thứ 8 của văn bản của chúng tôi, Mạng máy tính, Phương
pháp tiếp cận từ trên xuống, 8h ed., JF Kurose và KW Ross, Addison-Wesley/Pearson, 2020.
Machine Translated by Google

Cửa sổ Wireshark của bạn sẽ trông giống như cửa sổ được hiển thị trong Hình 1. Nếu
bạn không thể chạy Wireshark trên kết nối mạng trực tiếp, bạn có thể tải xuống dấu
vết gói đã được tạo khi thực hiện theo các bước trên.2

Hình 1: Hiển thị Wireshark sau khi http://gaia.cs.umass.edu/wireshark-labs/ HTTP-


wireshark-file1.html được trình duyệt của bạn truy xuất

Ví dụ trong Hình 1 cho thấy trong cửa sổ liệt kê gói có hai thông báo HTTP đã được
ghi lại: thông báo GET (từ trình duyệt của bạn đến máy chủ web gaia.cs.umass.edu)
và thông báo phản hồi từ máy chủ đến trình duyệt của bạn. Cửa sổ nội dung gói hiển
thị chi tiết về tin nhắn đã chọn (trong trường hợp này là tin nhắn HTTP OK, được
đánh dấu trong cửa sổ danh sách gói). Hãy nhớ lại rằng vì thông báo HTTP được mang bên
trong một phân đoạn TCP, được mang bên trong một gói dữ liệu IP, được mang trong khung
Ethernet, Wireshark cũng hiển thị thông tin gói Frame, Ethernet, IP và TCP. Chúng tôi
muốn giảm thiểu lượng dữ liệu không phải HTTP được hiển thị (ở đây chúng tôi
quan tâm đến HTTP và sẽ nghiên cứu các giao thức khác này trong các phòng thí nghiệm
sau này), vì vậy hãy đảm bảo các hộp ở phía bên trái của Khung, Ethernet, IP và
Thông tin TCP có dấu cộng hoặc hình tam giác chỉ xuống (có nghĩa là có thông tin ẩn,
không hiển thị) và dòng HTTP có dấu trừ hoặc hình tam giác chỉ xuống (có nghĩa
là tất cả thông tin về thông báo HTTP được hiển thị) .

2
Tải xuống tệp zip http://gaia.cs.umass.edu/wireshark-labs/wireshark-traces.zip và giải nén tệp http-
ethereal-trace-1. Các dấu vết trong tệp zip này được Wireshark chạy trên một trong các máy tính của tác giả
thu thập trong khi thực hiện các bước được chỉ ra trong phòng thí nghiệm của Wireshark. Khi bạn đã tải
xuống dấu vết, bạn có thể tải nó vào Wireshark và xem dấu vết bằng menu kéo xuống Tệp , chọn Mở, sau đó chọn
tệp dấu vết http-ethereal-trace-1. Màn hình hiển thị kết quả sẽ giống như Hình 1.
(Giao diện người dùng Wireshark hiển thị hơi khác một chút trên các hệ điều hành khác nhau và trong các phiên
bản Wireshark khác nhau).
Machine Translated by Google

(Lưu ý: Bạn nên bỏ qua mọi HTTP GET và phản hồi cho favicon.ico. Nếu bạn thấy tham chiếu đến tệp này, thì đó
là trình duyệt của bạn sẽ tự động hỏi máy chủ xem nó (máy chủ) có tệp biểu tượng nhỏ sẽ được hiển thị bên
cạnh không URL được hiển thị trong trình duyệt của bạn. Chúng tôi sẽ bỏ qua các tham chiếu đến tệp phiền
toái này trong phòng thí nghiệm này.).

Bằng cách xem thông tin trong HTTP GET và thông báo phản hồi, hãy trả lời các câu hỏi sau. Khi trả

lời các câu hỏi sau, bạn nên in ra các thông báo GET và phản hồi (xem phần giới thiệu của Wireshark lab

để biết giải thích về cách thực hiện việc này) và cho biết vị trí trong thông báo bạn đã tìm thấy thông

tin trả lời các câu hỏi sau. Khi bạn nộp bài tập, hãy chú thích đầu ra để biết rõ bạn đang lấy thông

tin cho câu trả lời của mình ở đâu trong đầu ra (ví dụ: đối với các lớp học của chúng tôi, chúng tôi yêu

cầu học sinh đánh dấu các bản sao trên giấy bằng bút hoặc chú thích các bản sao điện tử bằng văn bản có

phông chữ màu).

1. Trình duyệt của bạn đang chạy HTTP phiên bản 1.0 hay 1.1? Phiên bản HTTP là gì

máy chủ đang chạy?

2. Trình duyệt của bạn cho biết trình duyệt của bạn có thể chấp nhận những ngôn ngữ nào (nếu có)
máy chủ?

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

4. Mã trạng thái được máy chủ trả về trình duyệt của bạn là gì?

5. Tệp HTML mà bạn đang truy xuất được sửa đổi lần cuối trên máy chủ là khi nào?

6. Có bao nhiêu byte nội dung được trả về trình duyệt của bạn?

7. Bằng cách kiểm tra dữ liệu thô trong cửa sổ nội dung gói, bạn có thấy bất kỳ tiêu đề nào trong dữ

liệu không được hiển thị trong cửa sổ danh sách gói không? Nếu vậy thì tên
một.

Trong câu trả lời cho câu hỏi 5 ở trên, bạn có thể ngạc nhiên khi thấy rằng tài liệu bạn vừa truy

xuất được sửa đổi lần cuối trong vòng một phút trước khi bạn tải tài liệu xuống. Đó là bởi vì (đối với

tệp cụ thể này), máy chủ gaia.cs.umass.edu đang đặt thời gian sửa đổi lần cuối của tệp thành thời gian

hiện tại và thực hiện như vậy một lần mỗi phút. Do đó, nếu bạn đợi một phút giữa các lần truy cập,

tệp sẽ có vẻ như đã được sửa đổi gần đây và do đó trình duyệt của bạn sẽ tải xuống bản sao tài liệu

“mới”.

2. Tương tác GET/phản hồi CÓ ĐIỀU KIỆN HTTP

Hãy nhớ lại Phần 2.2.5 của văn bản, rằng hầu hết các trình duyệt web đều thực hiện bộ nhớ đệm đối tượng và

do đó thực hiện GET có điều kiện khi truy xuất một đối tượng HTTP. Trước khi thực hiện các bước bên dưới,

hãy đảm bảo bộ nhớ đệm của trình duyệt của bạn trống. (Để thực hiện việc này trong Firefox, chọn Công cụ-

>Xóa lịch sử gần đây và chọn hộp Bộ nhớ đệm hoặc đối với Internet Explorer, chọn Công cụ->Tùy chọn

Internet->Xóa tệp; những hành động này sẽ xóa các tệp được lưu trong bộ nhớ đệm khỏi bộ nhớ đệm của trình

duyệt của bạn.) Bây giờ hãy thực hiện sau đây:

• Khởi động trình duyệt web của bạn và đảm bảo bộ nhớ đệm của trình duyệt đã được xóa, như đã
thảo luận ở trên.

• Khởi động trình nghe gói tin Wireshark

• Nhập URL sau vào trình duyệt của bạn

http://gaia.cs.umass.edu/wireshark-labs/HTTP-wireshark-file2.html

Trình duyệt của bạn sẽ hiển thị một tệp HTML năm dòng rất đơn giản.
Machine Translated by Google

• Nhập nhanh lại cùng một URL vào trình duyệt của bạn (hoặc chỉ cần chọn nút làm mới trên trình duyệt

của bạn)

• Dừng việc chụp gói Wireshark và nhập “http” vào cửa sổ đặc tả bộ lọc hiển thị để chỉ các thông báo

HTTP đã chụp mới được hiển thị sau trong cửa sổ danh sách gói. • (Lưu ý: Nếu bạn không thể

chạy Wireshark trên kết nối

mạng trực tiếp, bạn có thể sử dụng gói theo dõi http-ethereal-trace-2 để trả lời các câu hỏi bên dưới;

xem chú thích cuối trang 1. Tệp theo dõi này được thu thập trong khi thực hiện các bước trên

trên một trong các máy tính của tác giả.)

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

8. Kiểm tra nội dung của yêu cầu HTTP GET đầu tiên từ trình duyệt của bạn đến máy chủ. Bạn có thấy

dòng “IF-MODIFIED-SINCE” trong HTTP GET không?

9. Kiểm tra nội dung phản hồi của máy chủ. Máy chủ có trả lại một cách rõ ràng

nội dung của tập tin? Làm thế nào bạn có thể nói?

10. Bây giờ hãy kiểm tra nội dung của yêu cầu HTTP GET thứ hai từ trình duyệt của bạn đến máy chủ. Bạn

có thấy dòng “IF-MODIFIED-SINCE:” trong HTTP GET không? Nếu vậy, thông tin nào theo sau tiêu đề

“IF-MODIFIED-SINCE:”?

11. Mã và cụm từ trạng thái HTTP được máy chủ trả về để phản hồi HTTP GET thứ hai này là gì? Máy chủ

có trả về rõ ràng nội dung của tệp không?

Giải thích.

3. Truy xuất tài liệu dài

Trong các ví dụ của chúng tôi cho đến nay, tài liệu được truy xuất là các tệp HTML đơn giản và ngắn.

Tiếp theo hãy xem điều gì xảy ra khi chúng ta tải xuống một tệp HTML dài. Thực hiện như sau:

• Khởi động trình duyệt web của bạn và đảm bảo bộ nhớ đệm của trình duyệt đã được xóa, như đã thảo
luận ở trên.

• Khởi động trình nghe gói tin Wireshark

• Nhập URL sau vào trình duyệt của bạn

http://gaia.cs.umass.edu/wireshark-labs/HTTP-wireshark-file3.html

Trình duyệt của bạn sẽ hiển thị Tuyên ngôn Nhân quyền Hoa Kỳ khá dài.

• Dừng việc chụp gói Wireshark và nhập “http” vào cửa sổ đặc tả bộ lọc hiển thị để chỉ các thông báo

HTTP đã chụp mới được hiển thị. • (Lưu ý: Nếu bạn không thể chạy Wireshark trên

kết nối mạng trực tiếp, bạn có thể sử dụng gói theo dõi http-ethereal-trace-3 để trả lời các câu hỏi bên

dưới; xem chú thích cuối trang 1. Tệp theo dõi này được thu thập trong khi thực hiện các bước

trên trên một trong các máy tính của tác giả.)

Trong cửa sổ liệt kê gói, bạn sẽ thấy thông báo HTTP GET, theo sau là phản hồi TCP nhiều gói cho yêu cầu

HTTP GET của bạn. Phản hồi nhiều gói này xứng đáng được giải thích một chút. Nhớ lại Phần 2.2 (xem

Hình 2.9 trong văn bản) rằng thông báo phản hồi HTTP bao gồm một dòng trạng thái, theo sau là các dòng

tiêu đề, theo sau là một dòng trống, tiếp theo là phần thân thực thể. Trong trường hợp HTTP GET của chúng

tôi,
Machine Translated by Google

nội dung thực thể trong phản hồi là toàn bộ tệp HTML được yêu cầu. Trong trường hợp của chúng
tôi ở đây, tệp HTML khá dài và ở mức 4500 byte là quá lớn để vừa với một gói TCP. Do đó, thông
báo phản hồi HTTP đơn được chia thành nhiều phần bởi TCP, với mỗi phần được chứa trong một phân
đoạn TCP riêng biệt (xem Hình 1.24 trong văn bản). Trong các phiên bản gần đây của Wireshark,
Wireshark chỉ ra mỗi phân đoạn TCP là một gói riêng biệt và thực tế là phản hồi HTTP duy nhất
bị phân mảnh trên nhiều gói TCP được biểu thị bằng “phân đoạn TCP của PDU được tập hợp lại” trong
cột Thông tin của màn hình Wireshark . Các phiên bản trước của Wireshark đã sử dụng cụm từ “Tiếp
tục” để chỉ ra rằng toàn bộ nội dung của thông báo HTTP đã bị chia nhỏ trên nhiều phân đoạn TCP.. Ở
đây chúng tôi nhấn mạnh rằng không có thông báo “Tiếp tục” trong HTTP!

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


12. Trình duyệt của bạn đã gửi bao nhiêu tin nhắn yêu cầu HTTP GET? Số gói nào trong dấu vết
chứa thông báo GET cho Dự luật hoặc Quyền?
13. Số gói nào trong dấu vết chứa mã trạng thái và cụm từ liên quan
với phản hồi cho yêu cầu HTTP GET?
14. Mã trạng thái và cụm từ trong phản hồi là gì?
15. Cần bao nhiêu phân đoạn TCP chứa dữ liệu để mang một HTTP duy nhất
phản hồi và văn bản của Tuyên ngôn Nhân quyền?

4. Tài liệu HTML có đối tượng nhúng

Bây giờ chúng ta đã thấy cách Wireshark hiển thị lưu lượng gói đã ghi cho các tệp HTML lớn, chúng ta
có thể xem điều gì xảy ra khi trình duyệt của bạn tải xuống một tệp có các đối tượng được nhúng,
tức là một tệp bao gồm các đối tượng khác (trong ví dụ bên dưới là các tệp hình ảnh). ) được lưu trữ
trên (các) máy chủ khác.

Thực hiện như sau:

• Khởi động trình duyệt web của bạn và đảm bảo bộ nhớ đệm của trình duyệt đã được xóa, như
đã thảo luận ở trên.

• Khởi động trình nghe gói tin Wireshark

• Nhập URL sau vào trình duyệt của bạn


http://gaia.cs.umass.edu/wireshark-labs/HTTP-wireshark-file4.html
Trình duyệt của bạn sẽ hiển thị một tệp HTML ngắn có hai hình ảnh. Hai cái này
hình ảnh được tham chiếu trong tệp HTML cơ sở. Nghĩa là, bản thân hình ảnh không có trong
HTML; thay vào đó, URL của hình ảnh được chứa trong tệp HTML đã tải xuống. Như đã thảo luận
trong sách giáo khoa, trình duyệt của bạn sẽ phải truy xuất các logo này từ các trang web
được chỉ định. Logo của nhà xuất bản của chúng tôi được lấy từ trang web
gaia.cs.umass.edu. Hình ảnh bìa cho số 5 của chúng tôi
ấn bản (một trong những bìa yêu thích của chúng tôi) được lưu trữ tại máy chủ caite.cs.umass.edu.

(Đây là hai máy chủ web khác nhau bên trong cs.umass.edu).

• Dừng việc chụp gói Wireshark và nhập “http” vào cửa sổ đặc tả bộ lọc hiển thị để chỉ các thông
báo HTTP đã chụp mới được hiển thị.
Machine Translated by Google

• (Lưu ý: Nếu bạn không thể chạy Wireshark trên kết nối mạng trực tiếp, bạn có thể
sử dụng dấu vết gói http-ethereal-trace-4 để trả lời các câu hỏi bên dưới; xem chú
thích cuối trang 1. Tệp theo dõi này được thu thập trong khi thực hiện các bước trên trên
một trong các máy tính của tác giả.)

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


16. Trình duyệt của bạn đã gửi bao nhiêu tin nhắn yêu cầu HTTP GET? Những yêu cầu GET này
được gửi tới địa chỉ Internet nào?
17. Bạn có thể biết liệu trình duyệt của bạn đã tải xuống hai hình ảnh một cách tuần tự
hay chúng được tải xuống song song từ hai trang web? Giải thích.

5 Xác thực HTTP

Cuối cùng, hãy thử truy cập một trang web được bảo vệ bằng mật khẩu và kiểm tra chuỗi thông báo HTTP
được trao đổi cho một trang web như vậy. URL http://
gaia.cs.umass.edu/wireshark-labs/protected_pages/HTTP-wireshark-file5.html được bảo vệ bằng mật
khẩu. Tên người dùng là “wireshark-students” (không có dấu ngoặc kép) và mật khẩu là “mạng” (một lần
nữa, không có dấu ngoặc kép). Vì vậy, hãy truy cập trang web được bảo vệ bằng mật khẩu “an
toàn” này. Thực hiện như sau:

• Đảm bảo bộ nhớ đệm của trình duyệt đã được xóa như đã thảo luận ở trên và đóng
trình duyệt của bạn. Sau đó, khởi động trình duyệt của bạn

• Khởi động trình nghe gói tin Wireshark

• Nhập URL sau vào trình duyệt của bạn


http://gaia.cs.umass.edu/wireshark-labs/protected_pages/HTTP-wireshark-file5.html

Nhập tên người dùng và mật khẩu được yêu cầu vào hộp bật lên.

• Dừng việc chụp gói Wireshark và nhập “http” vào cửa sổ đặc tả bộ lọc hiển thị để chỉ các thông
báo HTTP đã chụp mới được hiển thị sau trong cửa sổ danh sách gói. • (Lưu ý: Nếu bạn
không thể chạy Wireshark

trên kết nối mạng trực tiếp, bạn có thể sử dụng gói theo dõi http-ethereal-trace-5 để trả lời
các câu hỏi bên dưới; xem chú thích cuối trang 2. Tệp theo dõi này được thu thập trong
khi thực hiện các bước trên trên một trong các máy tính của tác giả.)

Bây giờ hãy kiểm tra đầu ra của Wireshark. Trước tiên, bạn có thể muốn đọc về xác thực HTTP
bằng cách xem lại tài liệu dễ đọc về “Khung xác thực truy cập HTTP” tại http://frontier.userland.com/
stories/storyReader$2159

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


18. Phản hồi của máy chủ (mã trạng thái và cụm từ) phản hồi lại yêu cầu ban đầu là gì?
Thông báo HTTP GET từ trình duyệt của bạn?
19. Khi trình duyệt của bạn gửi tin nhắn HTTP GET lần thứ hai, trường mới nào sẽ có trong tin
nhắn HTTP GET?

Tên người dùng (wireshark-students) và mật khẩu (mạng) mà bạn nhập được mã hóa thành chuỗi ký tự
(d2lyZXNoYXJrLXN0dWRlbnRzOm5ldHdvcms=) sau
Machine Translated by Google

tiêu đề “Ủy quyền: Cơ bản” trong thông báo HTTP GET của máy khách. Mặc dù có vẻ như tên người dùng

và mật khẩu của bạn đã được mã hóa nhưng chúng chỉ được mã hóa theo định dạng được gọi là định dạng
Base64. Tên người dùng và mật khẩu không được mã hóa! Để xem điều này, hãy truy cập http://
www.motobit.com/util/base64-decoding-encoding.asp và nhập chuỗi được mã hóa base64
d2lyZXNoYXJrLXN0dWRlbnRz và giải mã. Thì đấy! Bạn đã dịch từ mã hóa Base64 sang mã hóa ASCII và do
đó sẽ thấy tên người dùng của bạn!
Để xem mật khẩu, nhập phần còn lại của chuỗi Om5ldHdvcms= và nhấn giải mã. Vì bất kỳ ai cũng
có thể tải xuống một công cụ như Wireshark và đánh hơi các gói (không chỉ của riêng họ) đi qua
bộ điều hợp mạng của họ và bất kỳ ai cũng có thể dịch từ Base64 sang ASCII (bạn vừa làm được!),
bạn nên hiểu rõ rằng mật khẩu đơn giản trên WWW các trang web không an toàn trừ khi các biện pháp
bổ sung được thực hiện.

Đừng sợ! Như chúng ta sẽ thấy trong Chương 8, có nhiều cách để làm cho việc truy cập WWW an toàn hơn.
Tuy nhiên, rõ ràng chúng ta sẽ cần thứ gì đó vượt xa khuôn khổ xác thực HTTP cơ bản!

You might also like