Tải bản đầy đủ (.pdf) (31 trang)

TÌM HIỂU WIRESHARK VÀ GIAO THỨC HTTP DÙNG WIRESHARK ĐỂ MINH HỌA GIAO THỨC HTTP

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 (1.94 MB, 31 trang )

TRƯỜNG ĐẠI HỌC TRÀ VINH

Chủ đề:
TÌM HIỂU WIRESHARK VÀ GIAO THỨC HTTP
DÙNG WIRESHARK ĐỂ MINH HỌA GIAO THỨC HTTP

- Nhóm thực hiện:
+ Bùi Thống Nhứt
+ Trần Tiểu Bang
+ Nguyễn Quốc Khánh Trung
- Lớp: Cao học CNTT Trà Vinh

(Tài liệu phục vụ giảng dạy, học tập. Lưu hành nội bộ)
Trà Vinh, tháng 7 năm 2017


MỤC LỤC
PHẦN I GIỚI THIỆU VỀ WIRESHARK
1. Giới thiệu Wireshark
2. Chạy thử Wireshark

1
1
6

PHẦN 2 TÌM HIỂU CẤU TRÚC VỀ GÓI TIN
1. Cấu trúc Packet Sniffer
2. Tiến trình gửi gói tin
2.1. Tiến trình đóng gói tại trạm gửi (Data Encapsulation)
2.2. Quá trình truyền dữ liệu từ máy gửi đến máy nhận.
2.3. Tiến trình mở gói tại trạm nhận (Data De-encapsulation)


3. Phân tích gói tin DNS thu thập

10
10
11
11
13
14
15

PHẦN 3 TÌM HIỂU CẤU TRÚC CỦA FRAME ETHERNET
1. Cấu trúc gói tin của IPv4
2. Frame Ethernet được thu thập bởi Wireshark

18
18
19

PHẦN 4 TÌM HIỂU VÀ MINH HỌA GIAO THỨC HTTP
1. Giao thức HTTP
1.1. Lịch sử hình thành
1.2. Giởi thiệu HTTP
1.3. Browser
1.4. HTTP Request

22
22
22
22
22

23

1.5. HTTP Response
2. Labs
2.1. Lab 1 - HTTP GET/response cơ bản
2.2. Lab 2 - HTTP GET/response có điều kiện
2.3. Lab 3 - Truy xuất tài liệu dài
2.4. Lab 4 - Tài liệu HTML với đối tượng nhúng
2.5. Lab 5 - HTTP Authentication

24
25
25
26
28
29
29


LỜI MỞ ĐẦU
Mục đích của tài liệu này là dùng trong giảng dạy, học tập và các thí
nghiệm dùng để phân tích giao thức mạng nhằm giúp cho chúng ta nắm vững
quá trình trao đổi dữ liệu diễn ra giữa các giao thức thuộc các lớp mạng tương
ứng của bộ giao thức TCP/IP sử dụng trong Internet. Các bài thí nghiệm phân
tích giao thức HTTP sẽ giúp cho chúng ta trực tiếp thực hiện thiết lập cấu hình,
thu kết dữ liệu và phân tích kết quả, quan sát chuỗi các bản tin trao đổi giữa hai
thực thể (entities) giao thức, đào sâu vào chi tiết của hoạt động giao thức, và
điều khiển các giao thức thực hiện một số hoạt động nhất định rồi quan sát các
hoạt động đó và hiệu quả của chúng. Các nội dung này có thể được thực hiện
theo hai phương pháp: mô phỏng hoặc phân tích môi trường mạng thực. Trong

phạm vi tài liệu này chúng ta sẽ sử dụng phương pháp thứ hai nhờ sử dụng gói
phần mềm phân tích giao thức mạng Wireshark. Đây là gói phần mềm mã mở
được sử dụng phổ biến ở nhiều trường đại học và các viện nghiên cứu trên thế
giới. Nội dung các bài thí nghiệm trong tài liệu này được biên soạn lại từ tài liệu
do J.F.Kurose and Keith W. Ross biên soạn. Để xem toàn bộ các bài thí nghiệm
chi tiết bằng tiếng Anh, xin truy nhập địa chỉ sau đây:
/>Công cụ cơ bản để quan sát các bản tin trao đổi giữa các thực thể giao thức
đang chấp hành được gọi là “packet sniffer”. Một chương trình packet sniffer
bắt bản tin đang được phát/thu từ/bởi máy tính của học viên; nó cũng cho phép
lưu giữ và/hoặc hiển thị nội dung của các trường giao thức của các bản tin bắt
được. Bản thân packet sniffer là một chương trình thụ động với ý nghĩa là nó chỉ
quan sát các bản tin đang được phát và thu bởi các ứng dụng và giao thức đang
chạy trên máy tính chứ không tự phát đi các gói tin. Một cách tương tự, các bản
tin cũng không bao giờ được đánh địa chỉ đến packet sniffer một cách rõ ràng
(trực tiếp). Thay bằng, một packet sniffer nhận một bản sao của các packet được
phát/thu từ/bởi ứng dụng hay các giao chức chạy đang trên máy tính.

Hình 1 - Packet sniffer

3


Hình 1 chỉ ra cấu trúc của một packet sniffer. Ở bên phải là các giao thức
(trong trường hợp này là các giao thức Internet) và các ứng dụng (ví dụ như
trình duyệt web hay một ftp client) thường chạy trên máy tính. Packet sniffer
được mô tả bên trong hình chữ nhật đứt nét là một phần chương trình được cài
đặt vào máy tính, và gồm hai phần. Phần thư viện bắt gói tin (packet capture
library) thu các bản sao của các frame của lớp liên kết (link layer) được phát đi
hoặc thu từ máy tính. Theo lý thuyết thì các bản tin trao đổi bởi các giao thức
lớp phía trên như HTTP, FTP, TCP, UDP, DNS, hay IP đều được đóng gói vào

các frame của lớp liên kết được phát đi qua môi trường vật lý như cáp trong
mạng Ethernet chẳng hạn. Ở sơ đồ trên, môi trường giả thiết là Ethernet, vì vậy,
các giao thức lớp trên được đóng gói vào trong một Ethernet frame. Việc bắt tất
cả các frame của lớp liên kết cho phép thu được tất cả các bản tin phát/thu từ/bởi
tất cả các giao thức và ứng dụng đang chạy trên máy tính.
Thành phần thứ hai của một packet sniffer là bộ phân tích gói tin (packet
analyzer), cho phép hiển thị nội dung của tất cả các trường trong một bản tin
giao thức. Để làm được điều này, packet analyzer cần phải “hiểu” cấu trúc của
tất cả các bản tin trao đổi giữa các giao thức. Ví dụ, giả sử chúng ta quan tâm
đến việc hiển thị các trường trong các bản tin trao đổi bởi giao thức HTTP
Packet analyzer hiểu cấu trúc của định dạng Ethernet frame, vì vậy có thể xác
định được IP datagram bên trong Ethernet frame. Packet analyzer cũng hiểu
định dạng của IP datagram, và có thể tách được TCP segment bên trong IP
datagram. Tương tự, packet analyzer cũng biết cấu trúc của TCP segment và, vì
vậy, cho phép tách được bản tin HTTP chứa trong TCP segment. Cuối cùng,
packet analyzer hiểu giao thức HTTP, vì vậy, biết được byte đầu tiên trong một
bản tin HTTP có chứa các lệnh điều khiển như các tự “GET,” “POST,” hoặc
“HEAD”.
Trong phạm vi tài liệu này, chúng ta sẽ sử dụng Wireshark packet sniffer
để hiển thị nội dung của các bản tin đang phát/thu từ/bởi các giao thức ở các lớp
khác nhau của chồng giao thức TCP/IP mà chủ yếu là giao thức HTTP, các giao
thức khác, có thể tham khảo thêm tài liệu bằng tiếng Anh tại địa chỉ
Chương trình này hoạt động trên các
máy tính có sử dụng Ethernet hay ADSL để kết nối tới Internet, cũng như các
giao thức điểm-nối-điểm như PPP (Point-to-Point Protocol).

4


PHẦN 1

TÌM HIỂU WIRESHARK
1.1. Giới thiệu Wireshark
- Phần mềm phân tích gói tin miễn phí và mã nguồn mở.
- Là một phần mềm đa nền tảng, hỗ trợ hầu hết các hệ điều hành hiện tại:
GNU/Linux, OS X, BSD, Windows, etc. Với các hệ điều hành không hỗ trợ
GUI, wireshark có phiên bản terminal-based là TShark.
- WireShark vượt trội về khả năng hỗ trợ các giao thức (khoảng 2000), từ
những loại phổ biến như TCP, IP đến những loại đặc biệt như là AppleTalk và
Bit Torrent.
1.2. Mục đích sử dụng
Nhằm mục đích khắc phục lỗi mạng, phân tích hệ thống mạng, phát triển
các giao thức và cũng được sử dụng trong giảng dạy. Có thể nói Wireshark là
Chuyên gia phân tích gói tin.
1.3. Tại sao phải sử dụng Wireshark?
- Xác định ai đang nói chuyện trong dấu vết file
- Xác định các ứng dụng đang được sử dụng
- Lọc trên các cuộc đàm thoại quan tâm
- Biểu đồ tỷ lệ IO để tìm lưu lượng bị rơi
- Mở cho các chuyên gia để tìm kiếm sự cố
- Xác định thời gian đi lại để xác định độ trễ đường dẫn
1.4. Các tính năng cơ bản
- Bắt các gói tin theo thời gian thực trên các NIC.
- Mở các file captured của các công cụ bắt gói tin khác như
tcpdump/WinDump
- Import các packet từ file text chứa mã hex của dữ liệu các packet
- Hiển thị dữ liệu với các thông tin chi tiết của các giao thức.
- Lưu lại các bản tin các bắt được
- Export các packet đã bắt được từ file capture
- Lọc các gói theo patern
- Tìm kiếm các gói tin và tô màu cho các packet đã lọc

- ...
1.5. Các tính năng nâng cao
1.5.1. Name Resolution
5


Dữ liệu truyền trong mạng thông qua một vài hệ thống địa chỉ, các địa chỉ
này thường dài và khó nhớ (Ví dụ: MAC). Phân giải điạ chỉ là quá trình mà một
giao thức sử dụng để chuyển đổi một địa chỉ loại này thành một địa chỉ loại khác
đơn giản hơn. Chúng ta có thể tiết kiệm thời gian bằng cách sử dụng một vài
công cụ phân giải địa chỉ để file dữ liệu ta bắt được dễ đọc hơn. Ví dụ như là
chúng ta có thể sử dụng phân giải tên DNS để giúp định danh tên của một máy
tính mà ta đang có gắng xác định như là nguồn của các gói cụ thể.
Các kiểu công cụ phân giải tên trong Wireshark: có 3 loại
- MAC Name Resolution: phân giải địa chỉ MAC tầng 2 sang địa chỉ IP
tầng 3. Nếu việc phân giải này lỗi, Wireshark sẽ chuyển 3 byte đầu tiên của địa
chỉ MAC sang tên hãng sản xuất đã được IEEE đặc tả, ví dụ: Netgear_01:02:03.
- Network Name Resolution: chuyển đổi địa chỉ tầng 3 sang một tên DNS
dễ đọc như là UserPC1.
- Transport Name Resolution: chuyển đổi một cổng sang một tên dịch vụ
tương ứng với nó, ví dụ: cổng 80 là http.
1.5.2. Protocol Dissection
Một protocol dissector cho phép Wireshark phân chia một giao thức thành
một số thành phần để phân tích. ICMP protocol dissector cho phép Wireshark
phân chia dữ liệu bắt được và định dạng chúng như là một gói tin ICMP. Bạn có
thể nghĩ rằng một dissector như là một bộ phiên dịch giữa dòng dữ liệu trên
đường truyền và chương trình Wireshark. Với mục đích để hỗ trợ một giao thức
nào đó, một dessector cho giao thức đó phải được tích hợp trong Wireshark.
Wireshark sử dụng đồng thời vài dissector để phiên dịch mỗi gói tin. Nó quyết
định dissector nào được sử dụng bằng cách sử dụng phân tích lôgic đã được cài

đặt sẵn và thực hiện việc dự đoán. Thật không may là Wireshark không phải lúc
nào cũng đúng trong việc lựa chọn dissector phù hợp cho một gói tin. Tuy nhiên,
ta có thể thay đổi việc lựa chọn này trong từng trường hợp cụ thể.
1.5.3. Following TCP Streams
Một trong những tính năng hữu ích nhất của Wireshark là khả năng xem
các dòng TCP như là ở tầng ứng dụng. Tính năng này cho phép bạn phối hợp tất
cả các thông tin liên quan đến các gói tin và chỉ cho bạn dữ liệu mà các gói tin
này hàm chứa giống như là người dùng cuối nhìn thấy trong ứng dụng. Còn hơn
cả việc xem các dữ liệu đang được truyền giữa máy trạm và máy chủ trong một
mớ hỗn độn, tính năng này sắp xếp dữ liệu để có thể xem một cách đơn giản.
Bạn có thể sử dụng công cụ này để bắt và giải mã một phiên instant messages
được gửi bởi một người làm thuê (người này đang bị nghi ngờ phát tán các
thông tin tài chính của công ty).
1.5.4. Cửa sổ thống kê phân cấp giao thức
Khi bắt được một file có kích thước lớn, chúng ta cần biết được phân bố
các giao thức trong file đó, bao nhiêu phần trăm là TCP, bao nhiêu phần trăm là
6


IP và DHCP là bao nhiêu phần trăm,... Thay vì phải đếm từng gói tin để thu
được kết quả, chúng ta có thể sử dụng cửa sổ thống kê phân cấp giao thức của
Wireshark. Đây là cách tuyệt với để kiểm thử mạng của bạn. Ví dụ, nếu bạn biết
rằng 10% lưu lượng mạng của bạn được sử dụng bởi các lưu lượng ARP, và một
ngày nào đó, bạn thấy lưu lượng ARP lên tới 50%, bạn hoàn toàn có thể hiểu
rằng đang có một cái gì đó không ổn xảy ra.
1.5.5. Xem các Endpoints
Một Endpoint là chỗ mà kết nối kết thúc trên một giao thức cụ thể. Ví dụ,
có hai endpoint trong kết nối TCP/IP: các địa chỉ IP của các hệ thống gửi và
nhận dữ liệu, 192.168.1.5 và 192.168.0.8. Một ví dụ ở tầng 2 có thể là kết nối
giữa hai NIC vật lý và địa chỉ MAC của chúng. Các NIC gửi và nhận dữ liệu,

các MAC đó tạo nên các endpoint trong kết nối.
Khi thực hiện phân tích gói tin, bạn có thể nhận ra rằng bạn đã khoanh
vùng vấn đề chỉ còn là một enpoint cụ thể trong mạng. Hộp thoại Wireshark
endpoints chỉ ra một vài thống kê hữu ích cho mỗi endpoint, bao gồm các địa chỉ
của từng máy cũng như là số lượng các gói tin và dung lượng đã được truyền
nhận của từng máy.
1.5.6. Cửa sổ đồ thị IO
Cách tốt nhất để hình dung hướng giải quyết là xem chúng dưới dạng hình
ảnh. Cửa sổ đồ thị IO của Wireshark cho phép bạn vẽ đồ thị lưu lượng dữ liệu
trên mạng. Bạn có thể sử dụng tính năng này để tìm kiếm các đột biến hoặc
những thời điểm không có dữ liệu truyền của các giao thức cụ thể mà bạn đang
quan tâm. Bạn có thể vẽ đồng thời 5 đường trên cùng một đồ thị cho từng giao
thức mà bạn quan tâm bằng các màu khác nhau. Điều này giúp bạn dễ dàng hơn
để thấy sự khác nhau của các đồ thị.
1.6. Khởi động WireShark
Để chạy Wireshark, máy tính cần phải được cài đặt cả hai phần mềm
packet sniffer Wireshark và thư viện bắt gói tin libpcap hoặc WinPCap. Nếu
phần mềm libpcap chưa được cài đặt vào trong hệ điều hành của máy, cần phải
cài đặt libpcap hoặc tải WinPCap tại địa chỉ Xem
thêm tại địa chỉ Giao diện Wireshark
có năm thành phần chính:

7


Hình 2 - Giao diện người dùng Wireshark

1. Menu câu lệnh (command menus) là các menu kéo xuống đặt ở phía
trên đầu của cửa sổ. Hai menu đáng quan tâm nhất là menu File và Capture.
Menu File cho phép lưu giữ dữ liệu gói tín bắt được và mở một tệp chứa dữ liệu

gói bắt được, và thoát khỏi ứng dụng Wireshark. Menu Capture cho phép bắt
đầu bắt gói tin.
2. Cửa sổ liệt kê gói tin (packet-listing window) hiển thị một dòng tóm
tắt về mỗi gói tin bắt được, bao gồm cả số thứ tự gói do Wireshark gán, thời
gian bắt được gói tin, địa chỉ nguồn và địa chỉ đích của gói tin, kiểu giao thức,
và thông tin về giao thức chứa trong gói tin. Phần liệt kê gói tin có thể được xắp
xếp phân loại theo bất kỳ loại nào nhờ bấm vào một tên cột. Trường kiểu giao
thức (protocol) liệt kê giao thức mức cao nhất thực hiện phát hoặc thu gói tin
này, tức là, giao thức nguồn hay đích của gói tin này.
3. Cửa sổ chi tiết về packet header (packet-header details window)
cung cấp chi tiết về gói tin được chọn (highlighted) ở trong cửa sổ liệt kê gói tin.
(Để chọn một gói tin trong của sổ liệt kê gói tin, đặt con trỏ vào dòng tóm tắt về
gói tin ở trong cửa sổ liệt kê gói tin và click bằng phím chuột trái). Các chi tiết
này bao gồm thông tin về Ethernet frame và IP datagram chứa gói tin này.
Lượng thông tin của Ethernet và lớp IP có thể được mở rộng hay thu hẹp lại
bằng cách clicking vào mũi tên chỉ sang phải hay xuống dưới về phía trái của
dòng Ethernet frame hay IP datagram ở cửa sổ chi tiết về gói tin. Nếu các gói tin
được mang bởi TCP hay UDP, chi tiết về TCP hay UDP sẽ được hiển thị. Cuối
cùng, chi tiết về giao thức lớp cao nhất phát hay thu gói tin này cũng được cung
cấp.
4. Cửa sổ nội dung gói tin (packet-contents window) hiển thị toàn bộ nội
dung của frame bắt được, cả ở dạng ASCII và cơ số 16 (hexadecimal).
5. Trường lọc hiển thị gói (packet display filter field) ở phía trên của
giao diện đồ họa người sử dụng Wireshark cho phép nhập tên hay các thông tin
khác về giao thức để lọc thông tin hiển thị cửa sổ liệt kê gói tin (và vì vậy, đầu
8


gói tin và cửa sổ nội dung gói tin). Ở ví dụ dưới đây chúng ta sử dụng trường lọc
hiển thị gói để lọc các gói Ethernet ẩn, ngoại trừ các gói tương ứng với các bản

tin HTTP.
1.7. Chạy thử Wireshark
Để chạy thử Wireshark thực hiện các bước sau đây
- Bước 1: Khởi động web browser, nhập vào trang website lựa chọn.
- Bước 2: Khởi động phần mềm Wireshark.

Hình 3 - Giao diện khởi động

- Bước 3: Để bắt đầu “bắt” gói, chọn menu kéo xuống Capture và chọn
Options hoặc chọn Start hoặc Double chuột vào Card mạng trên màn hình.

9


Hình 4 - Bắt đấu "bắt" gói tin

- Bước 4: Các giao diện mạng (tức là, các kết nối vật lý) mà máy tính có để
nối đến mạng sẽ được hiển thị ở menu kéo xuống Interface ở phía trên của cửa
sổ Capture Options. Trong trường hợp máy tính có nhiều giao diện mạng (ví dụ,
nếu máy tính có cả kết nối mạng hữu tuyến Ethernet và kết nối vô tuyến), bạn sẽ
cần chọn một giao tiếp sẽ sử dụng để thu và phát packets (thông thường là giao
diện hữu tuyến Ethernet). Sau khi chọn xong giao diện mạng (hoặc sử dụng giao
diện default của Wireshark), click Start. Chương trình bắt đầu bắt packet.

Hình 5 - Chọn card mạng để bắt gói tin

- Bước 5: Trong khi Wireshark đang chạy, nhập vào một địa chỉ URL:
để hiển thị nội dung trang ở web browser. Để hiển thị nội
dung trang web này, browser sẽ liên hệ với HTTP server tại
và trao đổi các bản tin HTTP với server để download

trang. Các Ethernet frames chứa các bản tin HTTP này sẽ bị Wireshark bắt để
phân tích.
- Bước 6: Sau khi browser hiển thị nội dung trang Đại học Trà Vinh, dừng
quá trình bắt packet của Wireshark bằng cách chọn Stop ở cửa sổ Wireshark
Capture, để hiển thị tất cả các packets bắt được từ khi bắt đầu bắt packet. Cửa sổ
chính của Wireshark sẽ có dạng tương tự như cửa sổ ở trên Hình 5. Lúc này
chúng ta có dữ liệu gói “thực” (live) chứa tất cả các bản tin trao đổi giữa máy
tính và các thực thể khác của mạng. Bản tin HTTP trao đổi với server của
tvu.edu.vn sẽ được hiển thị ở trong danh sách các gói bắt được. Tuy nhiên, cũng
có nhiều loại gói khác cũng sẽ được hiển thị. Điều này có nghĩa là mặc dù bạn
chỉ thực hiện thao thác download một trang web, nhưng đã có nhiều giao thức
khác chạy ngầm trong máy tính của bạn.
- Bước 7: Nhập vào “http” (không có dấu ngoặc kép và ở dạng chữ in
thường ở Wireshark thì tất cả các tên protocol đều ở dạng chữ in thường) vào
trong cửa sổ lọc hiển thị ở đầu cửa sổ Wireshark chính. Sau đó chọn Apply.
Thao tác này sẽ lọc hiển thị riêng bản tin HTTP ở cửa sổ packet-listing.

10


Hình 6 - Cửa sổ hiển thị thông tin của Wireshark sau bước 7

- Bước 8: Chọn bản tin http đầu tiên trong cửa sổ packet-listing. Đó phải là
bản tin HTTP GET được gửi đi từ máy của bạn tới HTTP server của trang
www.tvu.edu.vn. Khi bạn chọn bản tin HTTP GET, thông tin đầu khung của
Ethernet frame, IP datagram, TCP segment, và bản tin HTTP sẽ được hiển thị ở
cửa sổ packet-header. Bằng cách click vào đầu mũi tên sang phải và xuống dưới
ở phía bên trái của cửa sổ chi tiết về packet, có thể lọc bớt hiển thị thông tin của
Ethernet frame, IP, và TCP. Maximize lượng thông tin hiển thị về giao thức
HTTP.

- Bước 9: Thoát khỏi Wireshark.

11


PHẦN 2
TÌM HIỂU CẤU TRÚC VỀ GÓI TIN THU THẬP BỞI WIRESHARK
2.1. Tiến trình gửi gói tin
Tại mỗi tầng truyền thông gói tin đều có các thông tin bổ sung khác nhau
và cấu trúc gói tin vì thế cũng có sự thay đổi tuy nhiên một gói tin khi xuyên qua
các tầng nó đều các trường thông tin cơ bản như sau:
Header Information Data Information
Error check sequences
Cấu trúc cụ thể từng gói tin như sau:

Hình 8 Tên gọi dữ liệu ở các tầng trong mô hình OSI

Dữ liệu trải qua 2 tiến trình cơ bản là:
2.1.1. Tiến trình đóng gói tại trạm gửi (Data Encapsulation)
Đóng gói dữ liệu là quá trình đặt dữ liệu nhận được vào sau header (và
trước trailer) trên mỗi lớp. Lớp Physical không đóng gói dữ liệu vì nó không
dùng header và trailer. Việc đóng gói dữ liệu không nhất thiết phải xảy ra trong
mỗi lần truyền dữ liệu của trình ứng dụng. Các lớp 5, 6, 7 sử dụng header trong
quá trình khởi động, nhưng trong phần lớn các lần truyền thì không có header

12


của lớp 5, 6, 7 lý do là không có thông tin mới để trao đổi.
Các dữ liệu tại máy gửi được xử lý theo trình tự như sau:

- B1: Người dùng thông qua lớp Application để đưa các thông tin vào máy
tính. Các thông tin này có nhiều dạng khác nhau như: hình ảnh, âm thanh, văn
bản.
- B2: Tiếp theo các thông tin đó được chuyển xuống lớp Presentation để
chuyển thành dạng chung, rồi mã hoá và nén dữ liệu.
13


- B3: Tiếp đó dữ liệu được chuyển xuống lớp Session để bổ sung các thông
tin về phiên giao dịch này.
- B4: Dữ liệu tiếp tục được chuyển xuống lớp Transport, tại lớp này dữ
liệu được cắt ra thành nhiều Segment và bổ sung thêm các thông tin về phương
thức vận chuyển dữ liệu để đảm bảo độ tin cậy khi truyền.
- B5: Dữ liệu tiếp tục được chuyển xuống lớp Network, tại lớp này mỗi
Segment được cắt ra thành nhiều Packet và bổ sung thêm các thông tin định
tuyến.
- B6: Tiếp đó dữ liệu được chuyển xuống lớp DataLink, tại lớp này mỗi
Packet sẽ được cắt ra thành nhiều Frame và bổ sung thêm các thông tin kiểm tra
gói tin (để kiểm tra ở nơi nhận).
- B7: Cuối cùng, mỗi Frame sẽ được tầng Physical chuyển thành một chuỗi
các bit, và được đẩy lên các phương tiện truyền dẫn để truyền đến các thiết bị
khác.
2.1.2. Quá trình truyền dữ liệu từ máy gửi đến máy nhận.
- B1: Trình ứng dụng (trên máy gửi) tạo ra dữ liệu và các chương trình
phần cứng, phần mềm cài đặt mỗi lớp sẽ bổ sung vào header và trailer (quá trình
đóng gói dữ liệu tại máy gửi).
- B2: Lớp Physical (trên máy gửi) phát sinh tín hiệu lên môi trường truyền
tải để truyền dữ liệu.
- B3: Lớp Physical (trên máy nhận) nhận dữ liệu.
- B4: Các chương trình phần cứng, phần mềm (trên máy nhận) gỡ bỏ

header và trailer và xử lý phần dữ liệu (quá trình xử lý dữ liệu tại máy nhận).
Giữa bước 1 và bước 2 là quá trình tìm đường đi của gói tin. Thông
thường, máy gửi đã biết địa chỉ IP của máy nhận. Vì thế, sau khi xác định được
địa chỉ IP của máy nhận thì lớp Network của máy gửi sẽ so sánh địa chỉ IP của
máy nhận và địa chỉ IP của chính nó:
Nếu cùng địa chỉ mạng thì máy gửi sẽ tìm trong bảng MACTable của mình
để có được địa chỉ MAC của máy nhận. Trong trường hợp không có được địa
chỉ MAC tương ứng, nó sẽ thực hiện giao thức ARP để truy tìm địa chỉ MAC.
Sau khi tìm được địa chỉ MAC, nó sẽ lưu địa chỉ MAC này vào trong bảng
MACTable để lớp Datalink sử dụng ở các lần gửi sau. Sau khi có địa chỉ MAC
thì máy gửi sẽ gởi gói tin đi.
Nếu khác địa chỉ mạng thì máy gửi sẽ kiểm tra xem máy có được khai báo
DefaultGateway hay không.
Nếu có khai báo DefaultGateway thì máy gửi sẽ gởi gói tin thông qua
DefaultGateway.
Nếu không có khai báo DefaultGateway thì máy gởi sẽ loại bỏ gói tin và
thông báo "Destination host Unreachable"

14


2.1.3. Tiến trình mở gói tại trạm nhận (Data De-encapsulation)

- B1: Lớp Physical kiểm tra quá trình đồng bộ bit và đặt chuỗi bit nhận
được vào vùng đệm. Sau đó thông báo cho lớp Data Link dữ liệu đã được nhận.
- B2: Lớp DataLink kiểm lỗi frame bằng cách kiểm tra FCS trong trailer.
Nếu có lỗi thì frame bị bỏ. Sau đó kiểm tra địa chỉ lớp DataLink (địa chỉ MAC)
xem có trùng với địa chỉ máy nhận hay không. Nếu đúng thì phần dữ liệu sau
khi loại header và trailer sẽ được chuyển lên cho lớp Network.
- B3: Địa chỉ lớp Network được kiểm tra xem có phải là địa chỉ máy nhận

hay không (địa chỉ IP) ? Nếu đúng thì dữ liệu được chuyển lên cho lớp
Transport xử lý.
- B4: Nếu giao thức lớp Transport có hỗ trợ việc phục hồi lỗi thì số định
danh phân đoạn được xử lý. Các thông tin ACK, NAK (gói tin ACK, NAK dùng
để phản hồi về việc các gói tin đã được gởi đến máy nhận chưa) cũng được xử lý
ở lớp này. Sau quá trình phục hồi lỗi và sắp thứ tự các phân đoạn, dữ liệu được
đưa lên lớp Session.
- B5: Lớp Session đảm bảo một chuỗi các thông điệp đã trọn vẹn. Sau khi
các luồng đã hoàn tất, lớp Session chuyển dữ liệu sau header lớp 5 lên cho lớp
Presentation xử lý.
- B6: Dữ liệu sẽ được lớp Presentation xử lý bằng cách chuyển đổi dạng
thức dữ liệu. Sau đó kết quả chuyển lên cho lớp Application.
- B7: Lớp Application xử lý header cuối cùng. Header này chứa các tham
số thoả thuận giữa hai trình ứng dụng. Do vậy tham số này thường chỉ được trao
đổi lúc khởi động quá trình truyền thông giữa hai trình ứng dụng.
15


2.2. Phân tích gói tin DNS thu thập
- Thông tin gói tin:

- Ethernet II

- Internet Version 4:

16


- User Datagram Protocol


- Truy vấn DNS

17


PHẦN 3
TÌM HIỂU CẤU TRÚC CỦA FRAME ETHERNET THU THẬP BỞI
WIRESHARK
1. Cấu trúc gói tin của IPv4

Internet Header Length (IHL)
Type Of Service (TOS)
Total Length (TL)
Time To Live (TTL)

18


2. Frame Ethernet được thu thập bởi Wireshark
Một packet data (gói dữ liệu) trên một link Ethernet được gọi là một packet
Ethernet. Frame Ethernet là payload (phần tải mang theo) do packet này vận
chuyển.
Một frame Ethernet có một preamble và một start frame delimiter (SFD) đi
đầu, cả hai đều là một phần của packet Ethernet ở tầng vật lý. Mỗi frame
Ethernet bắt đầu bởi một header Ethernet. Header này chứa địa chỉ MAC nguồn
và đích ở hai trường đầu tiên. Phần ở giữa frame là data payload chứa các header
bất kì của các protocol
khác (ví dụ, Internet
Protocol) được mang
trong frame này.

Frame kết thúc bởi
một frame check
sequence (FCS, chuỗi
kiểm tra frame). Đây là một cyclic redundancy check 32 bit được dùng để phát
hiện bất kì hư hỏng dữ liệu nào trong lúc truyền.
Một gói tin Ethernet ở tầng vật lý có cấu trúc như sau:
Preamble

Destination MAC
address

Source MAC
address

Type/Length

User
Data

Frame Check
Sequence (FCS)

8

6

6

2


46 1500

4

Để hiểu rõ hơn về frame Ethernet được thu thập bởi wireshark xem thêm ở
địa chi />Ví dụ: Phân tích gói tin ARP
*Các mô tả và độ dài trường tiêu đề Ethernet II.
19


Mở đầu

Địa chỉ đích

Địa chỉ
nguồn

Loại
khung

Dữ liệu

FCS

8 Bytes

6 Bytes

6 Bytes


2 Bytes

46 - 1500 Bytes

4 Bytes

* Các khung Ethernet trong một capture Wireshark.
Việc bắt giữ Wireshark dưới đây cho thấy các gói tin được tạo ra bởi một
lệnh ping được phát từ máy chủ PC tới cổng mặc định của nó. Một bộ lọc đã
được áp dụng cho Wireshark để xem các giao thức ARP và ICMP. Phiên bắt đầu
với một truy vấn ARP cho địa chỉ MAC của router gateway, tiếp theo là bốn yêu
cầu ping và trả lời.
* Kiểm tra nội dung tiêu đề Ethernet II của một yêu cầu ARP.

Bảng dưới đây sẽ lấy khung đầu tiên trong quá trình capture Wireshark và
hiển thị dữ liệu trong các trường header của Ethernet II.
Trường
(Field)
Mở đầu
Địa chỉ Đích
Địa chỉ nguồn

Giá trị

Miêu tả

Không được hiển
thị trong chụp
Broadcast
(ff:ff:ff:ff:ff:ff)

Cambridg_0c:
(fc:b6:98:0c:9d:42)

Trường này chứa các bit đồng bộ, được
xử lý bởi phần cứng NIC.
Địa chỉ lớp 2 cho khung. Mỗi địa chỉ dài
48 bit, hoặc 6 octet, thể hiện dưới dạng 12
chữ số thập lục phân, 0-9, A-F.
Một định dạng phổ biến là 12: 34: 56: 78:
9A: BC.
Sáu số sáu đầu tiên cho biết nhà sản xuất
card mạng (NIC), sáu con số cuối cùng là
số serial của NIC.
Địa chỉ đích có thể là một broadcast, có
chứa tất cả các địa chỉ, hoặc một
unicast. Địa chỉ nguồn luôn luôn là
unicast.

20


Loại Khung

0x0806

Dữ liệu

ARP

FCS


Không được hiển
thị trong chụp

Đối với khung Ethernet II, trường này
chứa một giá trị thập lục phân được sử
dụng để chỉ định loại giao thức lớp trên
trong trường dữ liệu. Có rất nhiều giao
thức lớp trên được hỗ trợ bởi Ethernet
II. Hai loại khung thông thường là:
Mô tả giá trị
0x0800 giao thức IPv4
0x0806 giao thức phân giải địa chỉ (ARP)
Bao gồm các giao thức cấp cao đóng
gói. Trường dữ liệu nằm trong khoảng 46
- 1,500 byte.
Frame Check Sequence, được sử dụng bởi
NIC để xác định lỗi trong quá trình
truyền. Giá trị được tính bằng máy gửi,
bao gồm địa chỉ khung, loại và trường dữ
liệu. Nó được xác nhận bởi người nhận.

21


PHẦN 4
TÌM HIỂU VÀ MINH HỌA GIAO THỨC HTTP
1. Giao thức HTTP
1.1. Lịch sử hình thành
1991 (http 0.9)  1996 (http 1.0)  1997 (http 1.1)  Hiện nay (http 2.0)

- Các phiên bản sau ra đời nhằm thay thế phiên bản trước, kế thừa những
chức năng cốt lõi của phiên bản trước nhưng có nhiều cải tiến và bổ sung.
- HTTP 2.0 chưa được dùng phổ biến do còn khá mới và do các doanh
nghiệp Web cũng phần nào ngại chuyển đổi.
- Do vậy, HTTP 1.1 vẫn là giao thức HTTP phổ biến nhất. HTTP 1.0 vẫn
còn được sử dụng nhiều trong hệ thống Proxy và một số ứng dụng cũ (wget).
1.2. Giởi thiệu HTTP
- HyperText Transfer Protocol
- Truyền tải dữ liệu giữa Web Server đến các
trình duyệt và ngược lại (client - server) TCP
transport service
- Port 80
- Tầng ứng dụng
- là giao thức không trạng thái “stateless”
1.3. Browser

- Cấu trúc: protocol://hostname:port/path-and-file-name
- Thành phần: Protocol (giao thức tầng ứng dụng được sử dụng bởi client
và server), Hostname (tên DNS domain), Port (Cổng TCP để server lắng nghe
request từ client), Path-and-file-name (Tên và vị trí của tài nguyên yêu cầu).
Bất cứ khi nào bạn tạo một URL trên trình duyệt của bạn mục đích lấy dữ
liệu (resource) từ server sử dụng HTTP. Trình duyệt đưa URL vào một request
message, và gửi yêu cầu đến máy chủ HTTP. Máy chủ HTTP phân tích tin yêu
cầu và trả lại bạn thông tin tương ứng, thông tin trả về có thể là một tài nguyên
22


bạn yêu cầu hoặc một thông báo lỗi. Một URL (Uniform Resource Locator)
được sử dụng để xác định duy nhất một tài nguyên trên Web.
1.4. HTTP Request

HTTP request bao gồm hai thành phần quan trọng là URL và Method
(phương thức), được gửi từ client
Method: OPTIONS, PUT, DELETE, TRACE và CONNECT Được sử
dụng bởi các proxy

HTTP Request Methods
Hành động
OPTIONS
GET
HEAD
POST
PUT
DELETE
TRACE
CONNECT

Mô tả
Yêu cầu thông tin về các tùy chọn hiện có
Lấy về tài liệu được xác định trong URL
Lấy về thông tin thô về tài liệu được xác định trong URL
Cung cấp thông tin cho server
Tải tài liệu lên server và đặt ở vị trí được xác định trong URL
Xóa tài liệu nằm ở vị trí URL trên server
Phản hồi lại thông điệp yêu cầu
Được sử dụng bởi các proxy

1.5. HTTP Response
1. Request line
- version status-code reason-phrase
23



- Các status line phổ biến: "200 OK", "404 Not Found", "403 Forbidden",
"500 Internal Server Error"
Ví dụ: HTTP/1.1 200 OK

- HTTP-version: Phiên bản HTTP được sử dụng trong sesstion đó.
HTTP/1.0 hoặc HTTP/1.1
- status-code: Gồm 3 số tạo ra bởi server để mô tả kết quả của yêu cầu.
- reason-phrase: Mô tả ngắn về status-code
2. Request headers
- name : value1, value2, ...
- Host, Accept, Accept-Language, Accept-Charset, User-Agent, ContentLength, Authorization, Cookie…

- Status code


Loại

1xx
2xx

Thông tin
Thành công

Lý do

Đã nhận được yêu cầu, đang tiếp tục xử lý
Thao tác đã được tiếp nhận, hiểu được và chấp nhận
được

3xx
Chuyển hướng Cần thực hiện thêm thao tác để hoàn tất yêu cầu
được đặt ra
4xx
Lỗi client
Yêu cầu có cú pháp sai hoặc không thể được đáp ứng
5xx
Lỗi server
Server thất bại trong việc đáp ứng một yêu cầu hợp
lệ
Các status code thông dụng:
24










200 OK: request thành công.
400 Bad Request: request không đúng dạng, cú pháp.
401 Unauthorized: client chưa xác thực.
403 Forbidden: client không có quyền truy cập.
404 Not Found: không tìm thấy tài nguyên.
500 Internal Server Error: có lỗi trong quá trình xử lý của server.
503: Service Unavailable: Server bị quá tải, hoặc bị lỗi xử lý.


2. Labs
2.1. Lab 1 - HTTP GET/response cơ bản
Link: />- http request

Server IP Adress
Client running http 1.1

Client IP Address

Language Accepted
Request header

Return status
Server running http
25


×