Tải bản đầy đủ (.docx) (39 trang)

ĐỀ TÀI: TÌM HIỂU GIAO THỨC TCP VÀ DÙNG PHẦM MỀM WIRESHARK BẮT GÓI TIN docx

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.85 MB, 39 trang )

BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO BÀI TẬP LỚN
MÔN: KỸ THUẬT TRUYỀN DỮ LIỆU
ĐỀ TÀI: TÌM HIỂU GIAO THỨC TCP VÀ DÙNG
PHẦM MỀM WIRESHARK BẮT GÓI TIN
Giảng viên hướng dẫn : Th.S Đoàn Văn Trung
Sinh viên thực hiện :
1. Nguyễn Mạnh Tiến
2. Nguyễn Thế Trọng
Lớp : CĐ tin3 – k12
Hà Nội, tháng 12 năm 2012
LỜI CÁM ƠN
Chúng em chân thành cảm ơn sự hướng dẫn chỉ bảo tận tình của thầy Đoàn
Văn Trung Giảng viên bộ môn kỹ thuật truyền dữ liệu trường ĐH Công Nghiệp Hà
Nội. Thầy đã cho chúng em nhiều kiến thức quý giá về kỹ thuật truyền dữ liệu.
Trong quá trình thực hiện đề tài này, do kiến thức chưa sâu sắc nên chúng em
còn nhiều sai sót, mong thầy và mọi người góp ý chân thành để giúp chúng em hoàn
thành đề tài này một cách tốt nhất.
Xin chân thành cảm ơn.
Mục Lục
Lời Nói Đầu
Phần I : Tìm Hiểu Giao Thức TCP
1. Giới Thiệu Và Khái Niệm
1.1 Giới Thiệu
Việc hiểu biết mỗi giao thức được xếp đặt vào trong mô hình OSI như thế nào là một
điều cần thiết cho mọi người quan tâm về mạng. Bài này phân tích TCP được xếp vào
loại “giao thức vận chuyển” như thế nào và cho ta một sự thấu hiểu điều gì mình có
thể mong đợi nơi giao thức này.
Việc sắp xếp TCP vào mô hình OSI


Như mọi người đã biết, mỗi giao thức có chỗ của nó trong mô hình OSI. Mô hình OSI
là một biểu thị tính phức tạp và độ thông minh của giao thức đó. Theo qui tắc tổng
quát, khi chúng ta càng lên cao trong mô hình OSI, thì giao thức đó càng trở nên
thông minh. Việc đặt vị trí của tầng cũng phản ánh mức độ làm việc nhiều của CPU,
trong khi đó các tầng thấp hơn của mô hình OSI thì hoàn toàn ngược lại, nghĩa là, mức
độ làm việc của CPU ít hơn và bớt thông minh hơn.

TCP được đặt ở lớp thứ tư của mô hình OSI, mà người ta còn gọi là tầng vận chuyển.
Tầng vận chuyển chịu trách nhiệm thiết lập phiên kết nối, chuyển dữ liệu và phân nhỏ
các kết nối ảo.
Với ý nghĩ này, chúng ta sẽ mong đợi bất cứ giao thức nào nằm trong tầng vận
chuyển phải thực hiện một vài tính năng và đặc tính cho phép nó hỗ trợ những chức
năng mà tầng vận chuyển quy định.
Vì thế sau khi phân tích TCP, chúng ta chắc chắn rằng TCP phải được xếp vào
tầngvận chuyển mà thôi.
Sơ đồ bên dưới đây cho chúng ta thấy TCP header nằm ở vị trí nào trong frame do
một máy tính đã tạo ra và gởi vào mạng. Nếu chúng ta xoay sơ đồ 90 độ qua trái,
chúng ta cũng lại có được điều tương tự trong sơ đồ trước. Điều này dĩ nhiên vì mỗi
tầng chức năng gắn thêm thông tin của mình, hay còn gọi là header .
Frame được tạo thành bởi 6 khối 3 chiều để chúng ta có thể thấy khối nào được thêm
vào trong mỗi tầng OSI. Chúng ta có thể thấy rằng TCP header chứa đựng mọi tuỳ
chọn mà giao thức hổ trợ, được đặt ngay đằng sau IP header (tầng 3), và trước phần
dữ liệu chứa đựng các thông tin của các tầng cao hơn (các tầng 5,6,7)
Ghi chú: khối FCS ở cuối cùng là một tổng kiểm tra đặc biệt do tầng datalink tạo ra để
cho phép máy nhận phát hiện xem frame hiện thời có bị hư hỏng do quá trình vận
chuyển hay không.
Chúng ta sử dụng TCP ở đâu và vì sao phải sử dụng?
Người ta dùng TCP hầu như cho mọi loại mạng. Là một giao thức, nó không bị hạn
chế trong bất cứ một sơ đồ nối mạng nào, dù đó là mạng LAN hay mạng WAN. Là
một giao thức vận chuyển, chúng ta gọi nó là một giao thức vận chuyển vì nó được

định vị trong tầng vận chuyển của mô hình OSI, công việc đầu tiên của nó là chuyển
dữ liệu từ nơi này tới nơi khác, bất kể đó là mạng vật lý nào hay nằm ở đâu.
Như phần lớn chúng ta đã biết, có hai loại giao thức vận chuyển. TCP là một, còn kia
là UDP. Sự khác biệt giữa hai giao thức vận chuyển này là TCP cho một phương pháp
vận chuyển dữ liệu mạnh mẽ và vô cùng đáng tin cậy, đảm bảo rằng dữ liệu chuyển đi
không bị hư hao cách này hay cách khác. Mặt khác, UDP cho một phương pháp
chuyển dữ liệu không đáng tin cậy vì nó không đảm bảo dữ liệu đã đến hay tính toàn
vẹn của nó khi nó đến nơi.
1.2. Khái Niệm
Giao thức TCP (Transmission Control Protocol - "Giao thức điều khiển truyền vận")
là một trong các giao thức cốt lõi của bộ giao thức TCP/IP. Sử dụng TCP, các ứng
dụng trên các máy chủ được nối mạng có thể tạo các "kết nối" với nhau, mà qua đó
chúng có thể trao đổi dữ liệu hoặc các gói tin. Giao thức này đảm bảo chuyển giao dữ
liệu tới nơi nhận một cách đáng tin cậy và đúng thứ tự. TCP còn phân biệt giữa dữ liệu
của nhiều ứng dụng (chẳng hạn, dịch vụ Web và dịch vụ thư điện tử) đồng thời chạy
trên cùng một máy chủ.
TCP hỗ trợ nhiều giao thức ứng dụng phổ biến nhất trên Internet và các ứng dụng kết
quả, trong đó có WWW, thư điện tử và Secure Shell.
Trong bộ giao thức TCP/IP, TCP là tầng trung gian giữa giao thức IP bên dưới và
một ứng dụng bên trên. Các ứng dụng thường cần các kết nối đáng tin cậy kiểu đường
ống để liên lạc với nhau, trong khi đó, giao thức IP không cung cấp những dòng kiểu
đó, mà chỉ cung cấp dịch vụ chuyển gói tinkhông đáng tin cậy. TCP làm nhiệm vụ
của tầng giao vận trong mô hình OSI đơn giản của các mạng máy tính.
Các ứng dụng gửi các dòng gồm các byte 8-bit tới TCP để chuyển qua mạng. TCP
phân chia dòng byte này thành các đoạn (segment) có kích thước thích hợp (thường
được quyết định dựa theo kích thước của đơn vị truyền dẫn tối đa (MTU) của tầng liên
kết dữ liệu của mạng mà máy tính đang nằm trong đó). Sau đó, TCP chuyển các gói
tin thu được tới giao thức IP để gửi nó qua một liên mạng tới mô đun TCP tại máy tính
đích. TCP kiểm tra để đảm bảo không có gói tin nào bị thất lạc bằng cách gán cho mỗi
gói tin một "số thứ tự" (sequence number). Số thứ tự này còn được sử dụng để đảm

bảo dữ liệu được trao cho ứng dụng đích theo đúng thứ tự.
Mô đun TCP tại đầu kia gửi lại "tin báo nhận" (acknowledgement) cho các gói tin đã
nhận được thành công; một "đồng hồ" (timer) tại nơi gửi sẽ báo time-out nếu không
nhận được tin báo nhận trong khoảng thời gian bằng một round-trip time(RTT), và dữ
liệu (được coi là bị thất lạc) sẽ được gửi lại. TCP sử dụng checksum (giá trị kiểm tra)
để xem có byte nào bị hỏng trong quá trình truyền hay không; giá trị này được tính
toán cho mỗi khối dữ liệu tại nơi gửi trước khi nó được gửi, và được kiểm tra tại nơi
nhận.
2.Hoạt Động Của Giao Thức TCP
Không như giao thức UDP - giao thức có thể lập tức gửi gói tin mà không cần thiết
lập kết nối, TCP đòi hỏi thiết lập kết nối trước khi bắt đầu gửi dữ liệu và kết thúc kết
nối khi việc gửi dữ liệu hoàn tất.
Các kết nối TCP chia làm 3 phần:
a.Thiết lập kết nối
b.Truyền dữ liệu
c.Kết thúc kết nối
Trước khi miêu tả các pha này, ta cần lưu ý các trạng thái khác nhau của một socket:
LISTEN đang đợi yêu cầu kết nối từ một TCP và cổng bất kỳ ở xa (trạng thái này
thường do các TCP server đặt)
SYN-SENT đang đợi TCP ở xa gửi một gói tin TCP với các cờ SYN và ACK được bật
(trạng thái này thường do các TCP client đặt)
SYN-RECEIVED đang đợi TCP ở xa gửi lại một tin báo nhận sau khi đã gửi cho TCP
ở xa đó một tin báo nhận kết nối (connection acknowledgment) (thường do TCP server
đặt)
ESTABLISHED cổng đã sẵn sàng nhận/gửi dữ liệu với TCP ở xa (đặt bởi TCP client
và server)
FIN-WAIT-1 đang đợi qua đủ thời gian để chắc chắn là TCP ở xa đã nhận được tin
báo nhận về yêu cầu kết thúc kết nối của nó. Theo RFC 793, một kết nối có thể ở tại
trạng thái TIME-WAIT trong vòng tối đa 4 phút.
Còn 1 số trạng thái khác như : FIN-WAIT-2,CLOSE-WAIT,CLOSING,LAST-

ACK,TIME-WAIT,CLOSED
2.1 Thiết Lập Kết Nối
Để thiết lập một kết nối, TCP sử dụng một quy trình bắt tay 3 bước (3-way
handshake) Trước khi client thử kết nối với một server, server phải đăng ký một cổng
và mở cổng đó cho các kết nối: đây được gọi là mở bị động. Một khi mở bị động đã
được thiết lập thì một client có thể bắt đầu mở chủ động. Để thiết lập một kết nối, quy
trình bắt tay 3 bước xảy ra như sau:
a . Client yêu cầu mở cổng dịch vụ bằng cách gửi gói tin SYN (gói tin TCP) tới
server, trong gói tin này, tham số sequence number được gán cho một giá trị ngẫu
nhiên X.
b . Server hồi đáp bằng cách gửi lại phía client bản tin SYN-ACK, trong gói tin này,
tham số acknowledgment number được gán giá trị bằng X + 1, tham số sequence
number được gán ngẫu nhiên một giá trị Y
c . Để hoàn tất quá trình bắt tay ba bước, client tiếp tục gửi tới server bản tin ACK,
trong bản tin này, tham số sequence number được gán cho giá trị bằng X + 1 còn tham
số acknowledgment number được gán giá trị bằng Y + 1
Tại thời điểm này, cả client và server đều được xác nhận rằng, một kết nối đã được
thiết lập.
2.2 Truyền Dữ Liệu
Một số đặc điểm cơ bản của TCP để phân biệt với UDP:
• Truyền dữ liệu không lỗi (do có cơ chế sửa lỗi/truyền lại)
• Truyền các gói dữ liệu theo đúng thứ tự
• Truyền lại các gói dữ liệu mất trên đường truyền
• Loại bỏ các gói dữ liệu trùng lặp
• Cơ chế hạn chế tắc nghẽn đường truyền
Ở hai bước đầu tiên trong ba bước bắt tay, hai máy tính trao đổi một số thứ tự gói ban
đầu (Initial Sequence Number -ISN). Số này có thể chọn một cách ngẫu nhiên. Số thứ
tự này được dùng để đánh dấu các khối dữ liệu gửi từ mỗi máy tính. Sau mỗi byte
được truyền đi, số này lại được tăng lên. Nhờ vậy ta có thể sắp xếp lại chúng khi tới
máy tính kia bất kể các gói tới nơi theo thứ tự thế nào.

Trên lý thuyết, mỗi byte gửi đi đều có một số thứ tự và khi nhận được thì máy tính
nhận gửi lại tin báo nhận (ACK). Trong thực tế thì chỉ có byte dữ liệu đầu tiên được
gán số thứ tự trong trường số thứ tự của gói tin và bên nhận sẽ gửi tin báo nhận bằng
cách gửi số thứ tự của byte đang chờ.
Ví dụ: Máy tính A gửi 4 byte với số thứ tự ban đầu là 100 (theo lý thuyết thì 4 byte sẽ
có thứ tự là 100, 101, 102, 103) thì bên nhận sẽ gửi tin báo nhận có nội dung là 104 vì
đó là thứ tự của byte tiếp theo nó cần. Bằng cách gửi tin báo nhận là 104, bên nhận đã
ngầm thông báo rằng nó đã nhận được các byte 100, 101, 102 và 103. Trong trường
hợp 2 byte cuối bị lỗi thì bên nhận sẽ gửi tin báo nhận với nội dung là 102 vì 2 byte
100 và 101 đã được nhận thành công.
Giả sử ta có 10.000 byte được gửi đi trong 10 gói tin 1.000 byte và có 1 gói tin bị mất
trên đường truyền. Nếu gói bị mất là gói đầu tiên thì bên gửi sẽ phải gửi lại toàn bộ 10
gói vì không có cách nào để bên nhận thông báo nó đã nhận được 9 gói kia. Vấn đề
này được giải quyết trong giao thức SCTP (Stream Control Transmission Protocol -
"Giao thức điều khiển truyền vận dòng") với việc bổ sung báo nhận chọn lọc.
Số thứ tự và tin báo nhận giải quyết được các vấn đề về lặp gói tin, truyền lại những
gói bị hỏng/mất và các gói tin đến sai thứ tự. Để phục vụ mục đích kiểm tra, các gói
tin có trường giá trị tổng kiểm (checksum - Xem thêm phần #Cấu trúc gói).
Với trình độ hiện tại, kỹ thuật kiểm tra tổng trong TCP không đủ mạnh. Các tầng liên
kết dữ liệu với xác suất lỗi bit cao có thể cần được bổ sung các khả năng phát hiện lỗi
tốt hơn. Nếu như TCP được thiết kế vào thời điểm hiện tại, nhiều khả năng nó sẽ bao
gồm trường kiểm tra độ dư tuần hoàn (cyclic redundancy check - CRC) với độ dài 32
bit.
Điểm yếu này một phần được bù đắp bằng CRC hay những kỹ thuật khác tại tầng thứ
2 (trong mô hình 7 lớp OSI) ở bên dưới cả TCP và IP như trong các giao thức điểm-
điểm (PPP) hoặc Ethernet. Tuy nhiên điều này cũng không có nghĩa là trường kiểm tra
tổng của TCP là không cần thiết: thống kê cho thấy các sai sót do cả phần cứng và
phần mềm gây ra giữa các điểm áp dụng kỹ thuật kiểm tra CRC là khá phổ biến và kỹ
thuật kiểm tra tổng có khả năng phát hiện phần lớn các lỗi (đơn giản) này.
Điểm cuối cùng là khả năng hạn chế tắc nghẽn.Tin báo nhận (hoặc không có tin báo

nhận) là tín hiệu về tình trạng đường truyền giữa 2 máy tính. Từ đó, hai bên có thể
thay đổi tốc độ truyền nhận dữ liệu phù hợp với điều kiện. Vấn đề này thường được đề
cập là điều khiển lưu lượng, kiểm soát tắc nghẽn.
TCP sử dụng một số cơ chế nhằm đạt được hiệu suất cao và ngăn ngừa khả năng
nghẽn mạng. Các cơ chế này bao gồm:cửa sổ trượt (sliding window), thuật toán slow-
start, thuật toán tránh nghẽn mạng (congestion avoidance), thuật toán truyền lại và
phục hồi nhanh, Hiện nay, vấn đề cải tiến TCP trong môi truyền truyền dẫn tốc độ
cao đang là một hướng nghiên cứu được quan tâm.
Kích thước cửa sổ TCP
Chuỗi số thứ tự gói và cửa sổ trong TCP hoạt động giống như một cái đồng hồ. Kích
thước của cửa sổ (đo bằng byte) được thiết lập bởi khả năng tiếp nhận của máy tính
nhận. Cửa sổ này được dịch đi mỗi khi máy tính nhận nhận được dữ liệu và gửi tin
báo nhận. Khi chuỗi thứ tự tăng đến tối đa thì lại quay lại về 0.
Kích thước của cửa sổ là chiều dài (byte) của khối dữ liệu có thể lưu trong bộ đệm của
bên nhận. Bên gửi chỉ có thể gửi tối đa lượng thông tin chứa trong cửa sổ này trước
khi nhận được tin báo nhận.
2.3 Dãn kích thước cửa sổ
Để tận dụng khả năng truyền dẫn của mạng thì cửa sổ dùng trong TCP cần được tăng
lên. Trường điều khiển kích thước cửa sổ của gói TCP có độ dài là 2 byte và do đó
kích thước tối đa của cửa sổ là 65.535 byte.
Do trường điều khiển không thể thay đổi nên người ta sử dụng một hệ số dãn nào đó.
Hệ số này được định nghĩa trong tài liệu RFC 1323 có thể sử dụng để tăng kích thước
tối đa của cửa sổ từ 65.535 byte lên tới 1 gigabyte. Tăng kích thước cửa sổ lớn hơn
nữa cũng cần thiết trong TCP Tuning.
Việc tăng kích thước cửa sổ chỉ được dùng trong giao thức bắt tay 3 pha. Giá trị của
trường co dãn cửa sổ thể hiện số bit cần được dịch trái đối với trường kích thước cửa
sổ. Hệ số dãn có thể thay đổi từ 0 (không dãn) tới 14 (dãn tối đa).
2.4 Kết Thúc Kế Nối
Để kết thúc kết nối hai bên sử dụng quá trình bắt tay 4 bước và chiều của kết nối kết
thúc độc lập với nhau. Khi một bên muốn kết thúc, nó gửi đi một gói tin FIN và bên

kia gửi lại tin báo nhận ACK. Vì vậy, một quá trình kết thúc tiêu biểu sẽ có 2 cặp gói
tin trao đổi.
Một kết nối có thể tồn tại ở dạng "nửa mở": một bên đã kết thúc gửi dữ liệu nên chỉ
nhận thông tin, bên kia vẫn tiếp tục gửi.
3. Các Cổng Của Giao Thức TCP
TCP sử dụng khái niệm số hiệu cổng (port number) để định danh các ứng dụng gửi và
nhận dữ liệu. Mỗi đầu của một kết nối TCP có một số hiệu cổng (là số không dấu 16-
bit) được gán cho ứng dụng đang nhận hoặc gửi dữ liệu. Các cổng được phân thành ba
loại cơ bản: nổi tiếng, được đăng ký và động/cá nhân. Các cổng nổi tiếng đã được gán
bởi tổ chức Internet Assigned Numbers Authority (IANA) và thường được sử dụng
bởi các tiến trình mức hệ thống hoặc các tiến trình của root.
Ví dụ: FTP (21), TELNET (23), SMTP (25) và HTTP (80). Các cổng được đăng ký
thường được sử dụng bởi các ứng dụng người dùng đầu cuối (end user application)
với vai trò các cổng phát tạm thời (khi dùng xong thì hủy đăng ký) khi kết nối với
server, nhưng chúng cũng có thể định danh các dịch vụ có tên đã được đăng ký bởi
một bên thứ ba.
Các cổng động/cá nhân cũng có thể được sử dụng bởi các ứng dụng người dùng đầu
cuối, nhưng không thông dụng bằng. Các cổng động/cá nhân không có ý nghĩa gì nếu
không đặt trong một kết nối TCP. Có 65535 cổng được chính thức thừa nhận.
4 . Sự Phát Triển Của Giao Thức TCP
TCP là một giao thức phức tạp và vẫn còn tiếp tục được phát triển. Tuy nhiên, mặc dù
có nhiều cải tiến đã được áp dụng và đề xuất nhưng các hoạt động cơ bản của giao
thức vẫn giữ nguyên như mô tả ban đầu trong tài liệu RFC 793 ban hành năm 1981.
Tài liệu RFC 1122 - Các yêu cầu của máy mạng Internet - đưa ra một số yêu cầu khi
thực hiện TCP. RFC 2581 - Điều khiển tránh nghẽn mạng, một trong những tài liệu
quan trọng trong bộ RFC trong những năm gần đây - mô tả thuật toán dùng để giảm
khả năng tắc nghẽn mạng. Năm 2001, RFC 3168 mô tả một cơ chế báo hiệu chống
nghẽn mạng có tên là Thông báo nghẽn mạng (Explicit Congestion Notification).
Vào thời điểm đầu thế kỷ 21, khoảng 95% gói tin trên Internet là TCP. Các ứng dụng
tiêu biểu sử dụng TCP là HTTP/HTTPS (World Wide Web), SMTP/POP3/IMAP (e-

mail) và FTP (truyền file). Sự phổ biến của TCP chứng tỏ rằng nó đã được thiết kế rất
tốt.
Cơ chế điều khiển tránh tắc nghẽn của TCP ban đầu là TCP Reno và gần đây đã có
một số thuật toán khác được đề xuất:
 High Speed TCP của Sally Floyd trong tài liệu RFC 3649
 TCP Vegas của Brakmo và Peterson (làm việc tại Đại học Arizona)
 TCP Westwood của Đại học California tại Los Angeles
 BIC TCP của Injong Rhee (làm việc tại Đại học North Carolina)
 H-TCP của Viện Hamilton
 Fast TCP (Fast Active queue management Scalable Transmission Control
Protocol) của Caltech.
 TCP Hybla của Đại học Bologna
Bên cạnh đó cũng có rất nhiều nghiên cứu so sánh sự công bằng và hiệu suất của TCP
khi sử dụng các thuật toán tránh tắc nghẽn khác nhau.
5. TCP Trên Mạng Không Dây
TCP cũng được sử dụng cho mạng không dây. Ở đây trường hợp mất gói tin cũng
được xem là nghẽn mạng và kích thước cửa sổ do đó cũng sẽ được giảm xuống. Tuy
nhiên trong nhiều trường hợp đối với các mạng không dây thì việc mất các gói tin
thường xẩy ra một cách ngẫu nhiên do ảnh hưởng của fading, chuyển giao giữa các
cell và chúng ta không thể xem đây là nghẽn mạng.
Do đó, việc giảm kích thước cửa sổ không đúng sẽ làm cho hiệu quả sử dụng đường
truyền giảm một cách đáng kể. Nhiều nghiên cứu đã tập trung để giải quyết vấn đề
này. Các giải pháp được đề ra có thể phân loại thành các nhóm: giải pháp đầu cuối
(liên quan tới việc thay đổi tại client/server), giải pháp tại tầng liên kết dữ liệu (chẳng
hạn giao thức RLP trong chuẩnCDMA2000) và giải pháp dựa trên proxy (thay đổi
trong mạng mà không cần thay đổi các thiết bị đầu cuối).
6. Gỡ Rối Trong Giao Thức TCP
Các phần mềm đọc gói (packet sniffer) TCP có thể sử dụng để gỡ rối/theo dõi bằng
cách đọc tất cả các gói TCP được truyền trong mạng. Ví dụ : Wireshark(trên Windows
và Linux), tcpdump(trên Linux)

7. Các Lựa Chọn Khác Ngoài TCP
Đối với một số ứng dụng thì TCP không thích hợp. Vấn đề lớn nhất là phía nhận
không thể tiếp nhận các gói tin đến sau một gói bị lỗi trước khi chính gói bị lỗi được
truyền lại. Điều này khiến TCP không thích hợp cho các ứng dụng thời gian
thực (real-time) chẳng hạn như đa phương tiện trực tuyến, trò chơi trực tuyến và thoại
trên nền IP (VoIP) bởi vì các ứng dụng này cần các gói tin kịp thời hơn là nhận đủ các
gói tin theo đúng thứ tự.
Ngoài ra sự phức tạp của TCP cũng gây ra vấn đề với các hệ thống nhúng (embedded
system). Ví dụ tiêu biểu là netbooting sử dụng giao thức TFTP. Cuối cùng, độ phức
tạp của TCP cũng gây khó khăn cho một số vấn đề khác như truyền thông tin giữa 2
máy tính nằm sau hệ thống chuyển đổi địa chỉ (NAT).
Thông thường, khi TCP không thích hợp thì UDP được sử dụng. UDP cung cấp một
số tính năng giống TCP như đa công và kiểm tra tổng nhưng nó không đảm bảo việc
truyền lại gói tin lỗi hay thứ tự các gói tin. Vì thế, người phát triển ứng dụng có thể áp
dụng các phương thức khác ở các tầng trên để giải quyết vấn đề tùy theo yêu cầu cụ
thể.
Giao thức điều khiển truyền vận dòng (Stream Control Transmission Protocol -SCTP)
cũng là một giao thức dựa trên nền IP không khác nhiều so với TCP. SCTP được phát
triển sau và có cấu trúc phức tạp hơn TCP. SCTP được thiết kế để sử dụng trong điều
kiện yêu cầu độ tin cậy và gần thời gian thực. Tuy nhiên SCTP chưa được sử dụng
rộng rãi.

+ Bít 0 - 3 4 - 9
10 -
15
16 - 31
0 Source Port
Destination
Port
32 Sequence Number

64 Acknowledgement Number
96
Data
Offset
Reserved Flags Window
128 Checksum Urgent Pointer
160 Options (optional)
160/192+

Data

TCP cũng bộc lộ một số vấn đề khi
dùng trong môi trường truyền dẫn tốc
độ cao. Thuật toán tránh nghẽn mạng
làm việc tốt trong môi trường không
dự tính trước nhưng đối với môi
trường xác định hơn chẳng hạn như
ATM (Asynchronous Transfer Mode)
thì TCP không tận dụng được khả
năng của hệ thống bên dưới.
96 Data Offset Reserved Flags Window
128 Checksum Urgent Pointer
160 Options (optional)
160/192+

Data

8. Cấu Trúc Gói Tin
Một gói tin TCP bao gồm 2 phần
 header

 dữ liệu
Phần header có 11 trường trong đó 10 trường bắt buộc. Trường thứ 11 là tùy chọn
(trong bảng minh họa có màu nền đỏ) có tên là: options

8.1 HEADER
Source port
Số hiệu của cổng tại máy tính gửi. Destination port
Số hiệu của cổng tại máy tính nhận .Sequence number
Trường này có 2 nhiệm vụ. Nếu cờ SYN bật thì nó là số thứ tự gói ban đầu và byte
đầu tiên được gửi có số thứ tự này cộng thêm 1. Nếu không có cờ SYN thì đây là số
thứ tự của byte đầu tiên.
Acknowledgement number
Nếu cờ ACK bật thì giá trị của trường chính là số thứ tự gói tin tiếp theo mà bên nhận
cần.
Data offset
Trường có độ dài 4 bít qui định độ dài của phần header (tính theo đơn vị từ 32 bít).
Phần header có độ dài tối thiểu là 5 từ (160 bit) và tối đa là 15 từ (480 bít).
Reserved
Dành cho tương lai và có giá trị là 0.
Flags (hay Control bits)
Bao gồm 6 cờ:
URG
Cờ cho trường Urgent pointer
ACK
Cờ cho trường Acknowledgement
PSH
Hàm Push
RST
Thiết lập lại đường truyền
SYN

Đồng bộ lại số thứ tự
FIN
Không gửi thêm số liệu
Window
Số byte có thể nhận bắt đầu từ giá trị của trường báo nhận (ACK)
Checksum
16 bít kiểm tra cho cả phần header và dữ liệu. Phương pháp sử dụng được mô tả
trong RFC 793:
16 bít của trường kiểm tra là bổ sung của tổng tất cả các từ 16 bít trong gói tin. Trong
trường hợp số octet (khối 8 bít) của header và dữ liệu là lẻ thì octet cuối được bổ
sung với các bít 0. Các bít này không được truyền. Khi tính tổng, giá trị của trường
kiểm tra được thay thế bằng 0,
Nói một cách khác, tất cả các từ 16 bít được cộng với nhau. Kết quả thu được sau khi
đảo giá trị từng bít được điền vào trường kiểm tra. Về mặt thuật toán, quá trình này
giống với IPv4.
Điểm khác nhau chỉ ở chỗ dữ liệu dùng để tính tổng kiểm tra. Dưới đây là một header
của IP:
+ Bít 0 - 3 4 - 7 8 - 9 10 - 15 16 - 31
0 Source address
32 Destination address
64 Zeros Protocol TCP length
96 Source Port Destination Port
128 Sequence Number
160 Acknowledgement Number
192 Data Offset Reserved Flags Window
225 Checksum Urgent Pointer
257 Options (optional)
257/289+

Data


Các địa chỉ nguồn và đích là các địa chỉ IPv4. Giá trị của trường protocol là 6 (giá trị
dành cho TCP, xem thêm: Danh sách số hiệu giao thức IPv4). Giá trị của trường TCP
length field là độ dài của toàn bộ phần header và dữ liệu của gói TCP.
Urgent pointer
Nếu cờ URG bật thì giá trị trường này chính là số từ 16 bít mà số thứ tự gói tin
(sequence number) cần dịch trái.
Options
Đây là trường tùy chọn. Nếu có thì độ dài là bội số của 32 bít.
8.2 Dữ Liệu
Trường cuối cùng không thuộc về header. Giá trị của trường này là thông tin dành cho
các tầng trên (trong mô hình 7 lớp OSI). Thông tin về giao thức của tầng trên không
được chỉ rõ trong phần header mà phụ thuộc vào cổng được chọn.
9. Vận Chuyển Đáng Tin Cậy
TCP vận chuyển đáng tin cậy vì nhờ các kỹ thuật khác nhau mà nó sử dụng để đảm
bảo dữ liệu nhận được là không bị lỗi. TCP là một giao thức mạnh được dùng để vận
chuyển tập tin mà lỗi của dữ liệu không thể nào là một sự tùy chọn. Khi chúng ta
quyết định tải về một tập tin là 50MB từ một website, chúng ta không muốn phát hiện
ra sau khi tải tập tin về hoàn tất mà tập tin thì bị lỗi. Mặc dù vậy trong thực tế, điều
này vẫn xảy ra, để chỉ cho chúng ta thấy rằng chúng ta không thể nào hoàn thiện về 1
điều nào đó.
Hình ảnh này cho thấy header của TCP trong khung ethernet II. Ngay dưới đây, các
bạn sẽ thấy sơ đồ thứ hai thu nhỏ lại chỉ trong TCP header, hiển thị các trường mà
giao thức chứa đựng
Sơ đồ bên trên cho thấy từng phần chia nhỏ là mỗi trường bên trong TCP header cùng
với số bit.
Trường phổ biến nhất trong TCP header là cổng nguồn (source port), cổng đích
(destination port),và các bit mã (Code bits). Các bit mã này còn gọi là “cờ’ (flag) .
Các trường còn lại giúp đảm bảo mọi đoạn TCP đi được đến đích và được ráp lại đúng
thứ tự, nhưng trong cùng một lúc cung cấp một cơ chế khắc phục lỗi nếu có một vài

đoạn bị mất hay không đi đến đích được.

PHẦN II : PHÂN TÍCH GÓI TIN VỚI WIRESHARK
1.Giới Thiệu Về Phần Mềm Wireshark
WireShark có một bề dầy lịch sử. Gerald Combs là người đầu tiên phát triển phần
mềm này. Phiên bản đầu tiên được gọi là Ethereal được phát hành năm 1998. Tám
năm sau kể từ khi phiên bản đầu tiên ra đời, Combs từ bỏ công việc hiện tại để theo
đuổi một cơ hội nghề nghiệp khác.
Thật không may, tại thời điểm đó, ông không thể đạt được thoả thuận với công ty đã
thuê ông về việc bản quyền của thương hiệu Ethereal. Thay vào đó, Combs và phần
còn lại của đội phát triển đã xây dựng một thương hiệu mới cho sản phẩm “Ethereal”
vào năm 2006, dự án tên là WireShark.
WireShark đã phát triển mạnh mẽ và đến nay, nhóm phát triển cho đến nay đã lên tới
500 cộng tác viên. Sản phẩm đã tồn tại dưới cái tên Ethereal không được phát triển
thêm.
Lợi ích Wireshark đem lại đã giúp cho nó trở nên phổ biến như hiện nay. Nó có thể
đáp ứng nhu cầu của cả các nhà phân tích chuyên nghiệp và nghiệp dư và nó đưa ra
nhiều tính năng để thu hút mỗi đối tượng khác nhau.
Các giao thực được hỗ trợ bởi WireShark:
WireShark vượt trội về khả năng hỗ trợ các giao thức (khoảng 850 loại), 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. Và
cũng bởi Wireshark được phát triển trên mô hình mã nguồn mở, những giao thức mới
sẽ được thêm vào. Và có thể nói rằng không có giao thức nào mà Wireshark không thể
hỗ trợ.
• Thân thiện với người dùng: Giao diện của Wireshark là một trong
những giao diện phần mềm phân tích gói dễ dùng nhất. Wireshark là ứng
dụng đồ hoạ với hệ thống menu rât rõ ràng và được bố trí dễ hiểu. Không
như một số sản phẩm sử dụng dòng lệnh phức tạp như TCPdump, giao
diện đồ hoạ của Wireshark thật tuyệt vời cho những ai đã từng nghiên cứu
thế giới của phân tích giao thức.

• Giá rẻ: Wireshark là một sản phẩm miễn phí GPL. Bạn có thể tải về và
sử dụng Wireshark cho bất kỳ mục đích nào, kể cả với mục đích thương
mại.
• Hỗ trợ: Cộng đồng của Wireshark là một trong những cộng đồng tốt và
năng động nhất của các dự án mã nguồn mở.
• Hệ điều hành hỗ trợ Wireshark: Wireshark hỗ trợ hầu hết các loại hệ
điều hành hiện nay.
1.1 Một số tính năng nâng cao của Wireshark
Name Resolution
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 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à MarketingPC1.
• 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.
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ể.
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).
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à 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.
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.

Hàng ngày, có hàng triệu vấn đề lỗi trong một mạng máy tính, từ việc đơn giản là
nhiễm Spyware cho đến việc phức tạp như lỗi cấu hình router, và các vấn đề này
không thể được xử lý tất cả lập tức. Tốt nhất là chúng ta có thể hi vọng thực hiện công
việc đó bằng cách chuẩn bị đầy đủ các kiến thức và các công cụ tương ứng với các
vấn đề.
Tất cả các vấn đề trên mạng đều xuất phát ở mức gói, nơi mà không có gì được che
dấu đối với chúng ta, nơi mà không có thứ gì bị ẩn đi bởi các cấu trúc menu, các hình
ảnh bắt mắt hoặc là các nhân viên không đáng tin cậy. Không có gì bí mật ở đây, và
chúng ta có thể điều khiển được mạng và giải quyết các vấn đề. Đây chính là thế giới
của phân tích gói tin.
1.2 Thế Nào Là Phân Tích Gói Tin?
Phân tích gói tin, thông thường được quy vào việc nghe các gói tin và phân tích giao
thức, mô tả quá trình bắt và phiên dịch các dữ liệu sống như là các luồng đang lưu
chuyển trong mạng với mục tiêu hiểu rõ hơn điều gì đang diễn ra trên mạng. Phân tích
gói tin thường được thực hiện bởi một packet sniffer, một công cụ được sử dụng để
bắt dữ liệu thô trên đang lưu chuyển trên đường dây. Phân tích gói tin có thể giúp
chung ta hiểu cấu tạo mạng, ai đang ở trên mạng, xác định ai hoặc cái gì đang sử dụng
băng thông, chỉ ra những thời điểm mà việc sử dụng mạng đạt cao điểm, chỉ ra các
khả năng tấn công và các hành vi phá hoại, và tìm ra các ứng dụng không được bảo
mật.
Có một vài kiểu chương trình nghe gói tin, bao gồm cả miễn phí và sản phẩm thương
mại. Mỗi chương trình được thiết kế với các mục tiêu khác nhau. Một vài chương
trình nghe gói tin phổ biến như là tcpdump (a command-line program), OmniPeek, và
Wireshark (cả hai đều là chương trình có giao diện đồ hoạ). Khi lựa chọn chương trình
nghe gói tin, ta cần phải quan tâm đến một số vấn đề: các giao thức mà chương trình
cần hỗ trợ, tính dễ sử dụng, chi phí, hỗ trợ kỹ thuật và chương trình hỗ trợ cho hệ điều
hành nào.
1.3 Các Bước Để Nghe Gói Tin
Quá trình nghe gói tin được chia làm 3 bước: thu thập dữ liệu, chuyển đổi dữ liệu và
phân tích.

Thu thập dữ liệu: đây là bước đầu tiên, chương trình nghe gói tin chuyển giao diện
mạng được lựa chọn sang chế độ Promiscuous. Chế độ này cho phép card mạng có thể
nghe tất cả các gói tin đang lưu chuyển trên phân mạng của nó. Chương trình nghe gói
sử dụng chế độ này cùng với việc truy nhập ở mức thấp để bắt các dữ liệu nhị phân
trên đường truyền.
Chuyển đổi dữ liệu: trong bước này, các gói tin nhị phân trên được chuyển đổi thành
các khuôn dạng có thể đọc được.
Phân tích: phân tích các gói tin đã được chuyển đổi.
Có vài chương trình khác nhau về nghe gói tin, trong tiểu luận này, chúng tôi xin giới
thiệu một chương trình điển hình với nhiều tính năng mạnh hỗ trợ việc bắt và phân
tích gói tin. Đó là WireShark.
Nội dung các phần chính:
Phần I: Các cách thức nghe gói tin trên mạng
Phần II: Giới thiệu WireShark
Phần III: Các tính huống với WireShark
Phần IV: Xử lý các tình huống mạng với WireShark
2. Các Cách Thức Nghe Gói Tín Trên Mạng
Để thực hiện việc bắt các gói tin trên mạng, ta phải chỉ ra những vị trí tương ứng để
đặt “máy nghe” vào hệ thống đường truyền của mạng. Quá trình này đơn giản là đặt
“máy nghe” vào đúng vị trí vật lý nào trong một mạng máy tính.
Việc nghe các gói tin không đơn giản chỉ là cắm một máy xách tay vào mạng và bắt
gói. Thực tế, nhiều khi việc đặt máy nghe vào mạng khó hơn việc phân tích các gói
tin. Thách thức của việc này là ở chỗ là có một số lượng lớn các thiết bị mạng phần
cứng được sử dụng để kết nối các thiết bị với nhau.
Lý do là vì 3 loại thiết bị chính (hub, switch, router) có nguyên lý hoạt động rất khác
nhau. Và điều này đòi hỏi ta phải nắm rõ được cấu trúc vật lý của mạng mà ta đang
phân tích.
Chúng ta sẽ nghiên cứu một số mạng thực tế để chỉ ra cách tốt nhất để bắt các gói tin
trong từng môi trường mạng sử dụng Hub, Switch và Router.
2.1 Living Promiscuously (chế độ bắt tất cả các gói tin đi qua)

Trước khi nghe các gói tin trên mạng, ta cần một card mạng có hỗ trợ chế độ
Promiscuous. Chế độ Promiscuous cho phép card mạng nhìn thấy thất cả các gói tin đi
qua hệ thống dây mạng.
Khi một card mạng không ở chế độ này, nó nhìn thấy một số lượng lớn các gói tin
trên mạng nhưng không gửi cho nó, nó sẽ huỷ (drop) các gói tin này. Khi nó ở chế độ
Promiscuous, nó bắt tất cả các gói tin và gửi toàn bộ tới CPU.
2.2 “Nghe” trong mạng có Hub
Việc nghe trong một mạng có hub là một điều kiện trong mơ cho việc phân tích gói
tin. Cơ chế hoạt động của Hub cho phép gói tin được gửi tất cả các cổng của hub. Hơn
nữa, để phân tích một máy tinh trên một hub, tất cả các công việc mà bạn cần làm là
cắm máy nghe vào một cổng còn trống trên hub.
Bạn có thể nhìn thấy tất cả các thông tin truyền và nhận từ tất cả các máy đang kết nối
với hub đó, của sổ tầm nhìn của bạn không bị hạn chế khi mà máy nghe của bạn được
kết nối với một mạng hub.
2.3 “Nghe” trong mạng Switched
Một môi trường switched là kiểu mạng phổ biến mà bạn làm việc. Switch cung cấp
một phương thức hiệu quả để vận chuyển dữ liệu thông qua broadcast, unicast,
multicast. Switch cho phép kết nối song công (full-duplex), có nghĩa là máy trạm có
thể truyền và nhận dữ liệu đồng thời từ switch.
Khi bạn cắm một máy nghe vào một cổng của switch, bạn chỉ có thể nhìn thấy các
broadcast traffic và những gói tin gửi và nhận của máy tính mà bạn đang sử dụng.
Có 3 cách chính để bắt được các gói tin từ một thiết bị mục tiêu trên mạng
switch: port mirroring, ARP cache poisoning và hubbing out.
Port Mirroring
Port mirroring hay còn gọi là port spanning có thể là cách đơn giản nhất để bắt các lưu
lượng từ thiết bị mục tiêu trên mạng switch. Với cách này, bạn phải truy cập được giao
diện dòng lệnh của switch mà máy mục tiêu cắm vào.
Tất nhiên là switch này phải hỗ trợ tính năng port mirroring và có một port trống để
bạn có thể cắm máy nghe vào. Khi ánh xạ cổng, bạn đã copy toàn bộ lưu lượng đi qua
cổng này sang một cổng khác.

Hubbing Out
Một cách đơn giản khác để bắt các lưu lượng của thiết bị mục tiêu trong một mạng
switch là hubbing out. Hubbing out là kỹ thuật mà trong đó bạn đặt thiết bị mục tiêu
và máy nghe vào cùng một phân mạng bằng cách đặt chúng trực tiếp vào một hub.
Rất nhiều người nghĩ rằng hubbing out là lừa dối, nhưng nó thật sự là một giải pháp
hoàn hảo trong các tình huống mà bạn không thể thực hiện port mirroring nhưng vẫn
có khả năng truy cập vật lý tới switch mà thiết bị mục tiêu cắm vào.
Trong hầu hết các tình huống, hubbing out sẽ giảm tính năng song công của thiết bị
mục tiêu (full to haft). Trong khi phương thức này không phải là cách sạch sẽ nhất để
nghe, và nó thường được bạn sử dụng như là một lựa chọn khi mà switch không hỗ trợ
port mirroring.
Khi hubbing out, chắc chắn rằng bạn sử dụng một cái hub chứ không phải là một
switch bị gắn nhầm nhãn. Khi mà bạn sử dụng hub, hãy kiểm tra để chắc chắn rằng nó
là một hub bằng cách cắm 2 máy tính vào nó và nhìn xem cái một máy có thể nhìn
thấy lưu lượng của cái còn lại không.
ARP Cache Poisoning
Địa chỉ tầng 2 (địa chỉ MAC) được sử dụng chung với hệ thống hệ thống địa chỉ tầng
2. Tất cả các thiết bị trong một mạng liên lạc với nhau thông qua địa chỉ IP. Do switch
làm việc tại tầng 2, vì vậy nó phải có khả năng phiên dịch địa chỉ tầng 2 (MAC) sang
địa chỉ tầng 3 (IP) hoặc ngược lại để có thể chuyển tiếp gói tin tới thiết bị tương ứng.
Quá trình phiên dịch được thực hiện thông qua một giao thức tầng 3 là ARP (Address
Resolution Protocol). Khi một máy tính cần gửi dữ liệu cho một máy khác, nó gửi một
yêu cầu ARP tới switch mà nó kết nối. Switch đó sẽ gửi một gói ARP broadcast tới tất
cả các máy đang kết nối với nó để hỏi.
Khi mà máy đích nhận được gói tin này, nó sẽ thông báo cho switch bằng cách gửi địa
chỉ MAC của nó. Sau khi nhận được gói tin phản hồi, Switch định tuyến được kết nối
tới máy đích. Thông tin nhận được được lưu trữ trong ARP cache của switch và switch
sẽ không cần phải gửi một thông điệp ARP broadcast mới mỗi lần nó cần gửi dữ liệu
tới máy nhận.
ARP cache poisoning là một kỹ thuật nâng cao trong việc nghe đường truyền trong

một mạng switch. Nó được sử dụng phổ biến bởi hacker để gửi các gói tin địa chỉ sai
tới máy nhận với mục tiêu để nghe trộm đường truyền hiện tại hoặc tấn công từ chối
dịch vụ, nhưng ARP cache poisoning chỉ có thể phục vụ như là một cách hợp pháp để
bắt các gói tin của máy mục tiêu trong mạng switch.
ARP cache poisoning là quá trình gửi một thông điệp ARP với địa chỉ MAC giả mạo
tới switch hoặc router nhằm mục đích nghe lưu lượng của thiết bị mục tiêu. Có thể sử
dụng chương trinh Cain & Abel để thực hiện việc này (oxid.it - Home).
2.4 Nghe trong mạng sử dụng Router
Tất cả các kỹ thuật nghe trong mạng switch đều có thể được sử dụng trong mạng
router. Chỉ có một việc cần quan tâm khi mà thực hiện với mạng router là sự quan
trọng của việc đặt máy nghe khi mà thực hiện xử lý một vấn đề liên quan đến nhiều
phân mạng.
Broadcast domain của một thiết bị được mở rộng cho đến khi nó gặp router. Khi đó,
lưu lượng sẽ được chuyển giao sang dòng dữ liệu router tiếp theo và bạn sẽ mất liên
lạc với các gói tin đó cho đến khi bạn nhận được một ACK của các máy nhận trả về.
Trong tình hướng này, dữ liệu sẽ lưu chuyển qua nhiều router, vì vậy rất quan trọng để
thực hiện phân tích tất cả lưu lượng trên các giao diện của router.
Ví dụ, liên quan đến vấn đề liên kết, bạn có thể gặp phải một mạng với một số phân
mạng được kết nối với nhau thông qua các router. Trong mạng đó, một phân mạng
liên kết với một phân mạng với mục đích lưu trữ và tham chiếu dữ liệu. Vấn đề mà
chúng ta đang cố gắng giải quyết là phân mạng D không thể kết nối với các thiết bị
trong phân mạng A.
Khi mà bạn nghe lưu lượng của một thiết bị trong phân mạng D. Khi đó, bạn có thể
nhìn tháy rõ ràng lưu lượng truyền tới phân mạng A, nhưng không có biên nhận
(ACK) nào được gửi lại.
Khi bạn nghe luồng lưu lượng ở phân mạng cấp trên để tìm ra nguyên nhân vấn đề,
bạn tìm ra rằng lưu lượng bị huỷ bởi router ở phân mạng B. Cuối cùng dẫn đến việc
bạn kiểm tra cấu hình của router, nếu đúng, hãy giải quyết vấn đề đó của bạn.
Đó là một ví dụ điển hình lý do vì sao cần nghe lưu lượng của nhiều thiết bị trên nhiều
phân mạng với mục tiêu xác định chính xác vấn đề.

Network Maps
Để quyết định việc đặt máy nghe ở đâu, cách tốt nhất là bạn phải biết được một cách
rõ ràng mạng mà bạn định phân tích. Nhiều khi việc xác định vấn đề đã chiếm nửa
khối lượng công việc trong việc xử lý sự cố.
3. Cách Thức Dùng Wireshark Bắt Gói Tin TCP
Quản Trị Mạng - Wireshark, hay còn gọi là Ethereal, công cụ này có lẽ không quá xa
lạ với phần lớn người sử dụng chúng ta, vốn được xem là 1 trong những ứng dụng
phân tích dữ liệu hệ thống mạng, với khả năng theo dõi, giám sát các gói tin theo thời
gian thực, hiển thị chính xác báo cáo cho người dùng qua giao diện khá đơn giản và
thân thiện.
Trong bài viết dưới đây, chúng tôi sẽ giới thiệu với các bạn một số đặc điểm cơ bản
cũng như cách dùng, phân tích và kiểm tra hệ thống mạng bằng wireshark.
Các bạn có thể tải wireshark phiên bản mới nhất tại Nếu
dùng Linux hoặc các hệ thống UNIX khác thì có thể tìm thấy wireshark trong
phần Package Repositories. Ví dụ, với Ubuntu thì wireshark sẽ có ở trong Ubuntu
Software Center. Tuy nhiên, các bạn cần lưu ý rằng không nên tự tiện sử dụng, vì có
công ty, tổ chức hoặc doanh nghiệp không cho phép dùng Wireshark trong hệ thống
mạng của họ.

×