NHÓM 2_KHMT1-K4_UDP & ARP
MỤC LỤC
MỤC LỤC 1
LỜI NÓI ĐẦU 2
Kỹ thuật truyền số liệu là một mảng kiến thức không thể thiếu đối với sinh viên ngành điện tử viễn
thông và công nghệ thông tin. Đây là nền tảng nghiên cứu chuyên sau trong chuyên ngành này. Mặc
dù mạng đậm giải pháp cho dịch vụ số liệu, nhưng kỹ thuật truyền số liệu ngày nay lại là xuất phát
điểm cho đa dịch vụ một xu thế tất yếu trong mạng viễn thông và mạng máy tính hiện đại. Chúng ta
đều biết rằng không có kiến thức cơ sở vững vàng sẽ không có phát triển ứng dụng vì vậy bài tập lớn
này sẽ trình bày những kiến thức cơ bản nhất và thiết thực nhất. Do phạm vi đề tài là “Giao thức UDP
và ARP” nên nhóm chúng em chỉ trình bày một phần nhỏ trong ngành truyền dữ liệu. 2
Với sự hướng dẫn tận tình của thầy giáo Th.S Đoàn Văn Trung, cộng với kiến thức đã học được của
môn Mạng máy tính, Kỹ thuật truyền số liệu chúng em đã hoàn thành bài tập lớn này đúng thời gian
quy định. Nhưng do còn hạn chế về mặt kiến thức và thực hành trực tiếp trên các hệ thống thật nên
bài tập lớn này không thể tránh khỏi những sai sót. Rất mong những ý kiến đóng góp của thầy giáo đề
bài tập lớn này hoàn thiện hơn 2
GIAO THỨC UDP VÀ ARP 3
A.Tìm hiểu về giao thức UDP 3
1.Tầng giao thức 3
2.Nguyên lý làm việc 3
3.Cấu trúc đơn vị dữ liệu 6
4.Ưu và nhược điểm của giao thức UDP 7
5.Những vấn đề cần giải quyết 8
6.Ví dụ minh họa giao thức UDP 10
B.Tìm hiểu về giao thức ARP 10
1.Tầng giao thức 10
2.Nguyên lý làm việc 11
3.Cấu trúc đơn vị dữ liệu 13
4.Những vấn đề cần giải quyết 14
5.ARP Caching 16
6.Proxy ARP 18
I-PHÂN TÍCH CÁC GÓI TIN DÙNG WIRESHARK 20
KẾT LUẬN 21
TÀI LIỆU THAM KHẢO 22
1
BTL KỸ THUẬT TRUYỀN SỐ LIỆU
NHÓM 2_KHMT1-K4_UDP & ARP
LỜI NÓI ĐẦU
Kỹ thuật truyền số liệu là một mảng kiến thức không thể thiếu đối với
sinh viên ngành điện tử viễn thông và công nghệ thông tin. Đây là nền tảng
nghiên cứu chuyên sau trong chuyên ngành này. Mặc dù mạng đậm giải pháp
cho dịch vụ số liệu, nhưng kỹ thuật truyền số liệu ngày nay lại là xuất phát
điểm cho đa dịch vụ một xu thế tất yếu trong mạng viễn thông và mạng máy
tính hiện đại. Chúng ta đều biết rằng không có kiến thức cơ sở vững vàng sẽ
không có phát triển ứng dụng vì vậy bài tập lớn này sẽ trình bày những kiến
thức cơ bản nhất và thiết thực nhất. Do phạm vi đề tài là “Giao thức UDP và
ARP” nên nhóm chúng em chỉ trình bày một phần nhỏ trong ngành truyền dữ
liệu.
Với sự hướng dẫn tận tình của thầy giáo Th.S Đoàn Văn Trung, cộng với
kiến thức đã học được của môn Mạng máy tính, Kỹ thuật truyền số liệu
chúng em đã hoàn thành bài tập lớn này đúng thời gian quy định. Nhưng do
còn hạn chế về mặt kiến thức và thực hành trực tiếp trên các hệ thống thật
nên bài tập lớn này không thể tránh khỏi những sai sót. Rất mong những ý
kiến đóng góp của thầy giáo đề bài tập lớn này hoàn thiện hơn.
2
BTL KỸ THUẬT TRUYỀN SỐ LIỆU
NHÓM 2_KHMT1-K4_UDP & ARP
GIAO THỨC UDP VÀ ARP
A. Tìm hiểu về giao thức UDP
1. Tầng giao thức
TCP/IP là một họ các giao thức được gọi là họ giao thức IP, bao gồm bốn
tầng. Cần nhớ rằng TCP/IP không phải là một giao thức mà thực sự là một họ
các giao thức, và bao gồm các giao thức mức thấp khác như IP, TCP, và
UDP. UDP nằm ở tầng giao vận, phía trên giao thức IP. Tầng giao vận cung
cấp khả năng truyền tin giữa các mạng thông qua các gateway. Nó sử dụng
các địa chỉ IP để gửi các gói tin trên Internet hoặc trên mạng thông qua các
trình điều khiển thiết bị khác nhau. TCP và UDP là một phần của họ giao
thức TCP/IP; mỗi giao thức có những ưu và nhược điểm riêng của nó. Giao
thức UDP là giao thức đơn giản, phi liên kết và cung cấp dịch vụ trên tầng
giao vận với tốc độ nhanh. Nó hỗ trợ liên kết một-nhiều và thường được sử
dụng thường xuyên trong liên kết một-nhiều bằng cách sử dụng các datagram
multicast và unicast. Giao thức IP là giao thức cơ bản của Internet. TCP và
UDP đều là hai giao thức tầng giao thức vận trên cơ sở của giao thức IP.
Hình dưới đây chỉ ra cách ánh xạ mô hình OSI ánh xạ vào kiến trúc TCP/IP
và họ giao thức TCP/IP.
2. Nguyên lý làm việc
a. Một số thuật ngữ
3
BTL KỸ THUẬT TRUYỀN SỐ LIỆU
NHÓM 2_KHMT1-K4_UDP & ARP
Trước khi kiểm tra xem giao thức UDP hoạt động như thế nào, chúng ta
cần làm quen với một số thuật ngữ. Trong phần dưới đây, chúng ta sẽ định
nghĩa một số thuật ngữ cơ bản có liên quan đến giao thức UDP.
• Packet
Trong truyền số liệu, một packet là một dãy các số nhị phân, biểu diễn dữ
liệu và các tín hiệu điều khiển, các gói tin này được chuyển đi và chuyển tới
tới host. Trong gói tin, thông tin được sắp xếp theo một khuôn dạng cụ thể.
• Datagram
Một datagram là một gói tin độc lập, tự chứa, mang đầy đủ dữ liệu để định
tuyến từnguồn tới đích mà không cần thông tin thêm. MTU. MTU là viết tắt
của Maximum Transmission Unit. MTU là một đặc trưng của tầng lien kết
mô tả số byte dữ liệu tối đa có thể truyền trong một gói tin. Mặt khác, MTU
là gói dữ liệu lớn nhất mà môi trường mạng cho trước có thể truyền. Ví dụ,
Ethernet có MTU cố định là 1500 byte. Trong UDP, nếu kích thước của một
datagram lớn hơn MTU, IP sẽ thực hiện phân đoạn, chia datagram thành các
phần nhỏ hơn (các đoạn), vì vậy mỗi đoạn nhỏ có kích thước nhỏ hơn MTU.
• Port
UDP sử dụng các cổng để ánh xạ dữ liệu đến vào một tiến trình cụ thể đang
chạy trên một máy tính. UDP định đường đi cho packet tại vị trí xác định
bằng cách sử dụng số hiệucổng được xác định trong header của datagram.
Các cổng được biểu diễn bởi các số 16-bit,vì thế các cổng nằm trong dải từ 0
đến 65535. Các cổng cũng được xem như là các điểm cuối của các liên kết
logic, và được chia thành ba loại sau:
o Các cổng phổ biến: Từ 0 đến 1023
o Các cổng đã đăng ký: 1024 đến 49151
o Các cổng động/dành riêng 49152 đến 65535
Chú ý rằng các cổng UDP có thể nhận nhiều hơn một thông điệp ở một thời
điểm.
4
BTL KỸ THUẬT TRUYỀN SỐ LIỆU
NHÓM 2_KHMT1-K4_UDP & ARP
Trong một số trường hợp, các dịch vụ TCP và UDP có thể sử dụng cùng một
số hiệu cổng như 7 (Echo) hoặc trên cổng 23 (Telnet).
UDP có các cổng thông dụng sau:
• TTL (Time To Live)
Giá trị TTL cho phép chúng ta thiết lập một giới hạn trên của các router mà
một datagram có thể đi qua. Giá trị TTL ngăn ngừa các gói tin khỏi bị kẹt
trong các vòng lặp định tuyến vô hạn. TTL được khởi tạo bởi phía gửi và giá
trị được giảm đi bởi mỗi router quản lý datagram. Khi TTL bằng 0, datagram
bị loại bỏ.
• Multicasting
Multicasting là phương pháp dựa trên chuẩn có tính chất mở để phân phối
các thông tin giống nhau đến nhiều người dùng. Multicasting là một đặc
trưng chính của giao thức UDP.
Multicasting cho phép chúng ta truyền tin theo kiểu một nhiều, ví dụ gửi tin
hoặc thư điện tử tới nhiều người nhận, đài phát thanh trên Internet, hoặc các
chương trình demo trực tuyến.
b. Nguyên lý hoạt động
UDP truyền dữ liệu (datagram) giữa 2 thiết bị mạng (2 máy) thông qua các
cổng ứng dụng. Các thông số về địa chỉ máy gửi và máy nhận (Soure address
và Destination address) được xác nhận ở phần header của IP Datagram. Từ
thông số về Destination Port cho biết máy nhận sẽ nhận dữ liệu qua cổng
5
BTL KỸ THUẬT TRUYỀN SỐ LIỆU
NHÓM 2_KHMT1-K4_UDP & ARP
nào, nếu như ứng dụng bên trong không mở cổng tương ứng thì việc nhận
không thể thực hiện được. Trong quá trình chuyền nhận UDP chỉ cung cấp
một cơ chuyền lại khi có lỗi, trường checksum sử dụng thuật toán để đảm
bảo data gửi sang bên kia không bị xuyên tạc. Khi máy nhận nhận được dữ
liệu nó sẽ tính lại checksum mới và s2 với checksum nhận được, nếu có sự
sai khác yêu cầu thông tin gửi lại
3. Cấu trúc đơn vị dữ liệu
Giao thức UDP là một giao thức “không liên kết” được sử dụng thay thế trên
IP theo yêu cầu của các ứng dụng. Khác với TCP, UDP không có các chức
năng thiết lập và giải phóng liên kết. Nó cũng không cung cấp các cơ chế báo
nhận, không sắp xếp tuần tự các đơn vị dữ liệu đến và có thể dẫn tới tình
trạng dữ liệu bị mất hoặc trùng mà không hề có thông báo lỗi cho người gửi.
Tóm lại nó cung cấp các dịch vụ giao vận không tin cậy như trong TCP. Do
ít chức năng phức tạp nên UDP có xu thế hoạt động nhanh hơn TCP. Nó
thường được dùng cho các ứng dụng không đòi hỏi độ tin cậy cao trong giao
vận.
Cấu trúc của một đơn vị dữ liệu UDP như sau:
Trong đó:
• Soure Port (16 bit): Trường này xác định cổng của trạm gửi và có ý
nghĩa nếu muốn nhận thông tin phản hồi từ người nhận. Nếu không
dùng đến thì đặt nó bằng 0.
• Destination Port (16 bit): Trường xác nhận cổng của trạm nhận
thông tin. Trường này là bắt buộc.
6
BTL KỸ THUẬT TRUYỀN SỐ LIỆU
NHÓM 2_KHMT1-K4_UDP & ARP
• Length (16 bit): Xác định chiều dài của toàn bộ datagram: phần
header và dữ liệu. Chiều dài tối thiểu là 8 byte khi gói tin không có
dữ liệu, chỉ có header.
• Checksum (16 bit): Trường Checksum 16 bit dùng cho việc kiểm
tra lỗi của phần header và dữ liệu.
4. Ưu và nhược điểm của giao thức UDP
a. Ưu điểm
• Không cần thiết lập liên kết: UDP là giao thức phi liên kết, vì thế
không cần phải thiết lập liên kết. Vì UDP không sử dụng các tín hiệu
handshaking, nên có thể tránh được thời gian trễ. Đó chính là lý do tại sao
DNS thường sử dụng giao thức UDP hơn là TCP-DNS sẽ chậm hơn rất nhiều
khi dùng TCP.
• Tốc độ: UDP nhanh hơn so với TCP. Bởi vì điều này, nhiều ứng
dụng thường được cài đặt trên giao thức UDP hơn so với giao thức TCP.
• Hỗ trợ hình trạng (Topology): UDP hỗ trợ các liên kết 1-1, 1-n,
ngược lại TCP chỉ hỗ trợ liên kết 1-1.
• Kích thước header: UDP chỉ có 8 byte header cho mỗi đoạn, ngược
lại TCP cần các header 20 byte, vì vậy sử dụng băng thông ít hơn.
Bảng dưới đây tổng kết những sự kác nhau giữa hai giao thức TCP và UDP:
b. Nhược điểm
7
BTL KỸ THUẬT TRUYỀN SỐ LIỆU
NHÓM 2_KHMT1-K4_UDP & ARP
So với giao thức TCP, UDP có những nhược điểm sau:
• Thiếu các tín hiệu bắt tay: Trước khi gửi một đoạn, UDP không gửi
các tín hiệu bắt tay giữa bên gửi và bên nhận. Vì thế phía gửi không có cách
nào để biết datagram đã đến đích hay chưa. Do vậy, UDP không đảm bảo
việc dữ liệu đã đến đích hay chưa
• Sử dụng các phiên: Để TCP là hướng liên kết, các phiên được duy
trì giữa các host. TCP sử dụng các chỉ số phiên (session ID) để duy trì các
liên kết giữa hai host. UDP không hỗ trợ bất kỳ phiên nào do bản chất phi
liên kết của nó.
• Độ tin cậy: UDP không đảm bảo rằng chỉ có một bản sao dữ liệu
tới đích. Để gửi dữ liệu tới các hệ thống cuối, UDP phân chia dữ liệu thành
các đoạn nhỏ. UDP không đảm bảo rằng các đoạn này sẽ đến đích đúng thứ
tự như chúng đã được tạo ra ở nguồn. Ngược lại, TCP sử dụng các số thứ tự
cùng với số hiệu cổng và các gói tin xác thực thường xuyên, điều này đảm
bảo rằng các gói tin đến đích đúng thứ tự mà nó đã được tạo ra.
• Bảo mật: TCP có tính bảo mật cao hơn UDP. Trong nhiều tổ chức,
firewall và router cấm các gói tin UDP, điều này là vì các hacker thường sử
dụng các cổng UDP.
• Kiểm soát luồng. UDP không có kiểm soát luồng; kết quả là, một
ứng dụng UDP được thiết kế tồi có thể làm giảm băng thông của mạng.
5. Những vấn đề cần giải quyết
a. Nhận các gói tin
Trước khi một ứng dụng có thể đọc các gói tin UDP được gửi bởi các máy ở
xa, nó phải gán một socket với một cổng UDP bằng cách sử dụng
DatagramSocket, và tạo ra một DatagramPacket sẽ đóng vai trò như là một
bộ chứa cho dữ liệu của gói tin UDP. Hình vẽ dưới đây chỉ ra mối quan hệ
giữa một gói tin UDP với các lớp Java khác nhau được sử dụng để xử lý nó
và các ứng dụng thực tế.
8
BTL KỸ THUẬT TRUYỀN SỐ LIỆU
NHÓM 2_KHMT1-K4_UDP & ARP
Khi một ứng dụng muốn đọc các gói tin UDP, nó gọi phương thức
DatagramSocket.receive(), phương thức này sao chép gói tin UDP vào một
DatagramPacket xác định. Xử lý nội dung nói tin và tiến trình lặp lại khi cần
Khi xử lý gói tin ứng dụng phải làm việc trực tiếp với một mảng byte. Tuy
nhiên nếu ứng dụng là đọc văn bản thì ta có thể sử dụng các lớp từ gói vào ra
để chuyển đổi giữa mảng byte và luồng stream và reader. Bằng cách gắn kết
luồng nhập ByteArrayInputStream với nội dung của một datagram và sau đó
kết nối với một kiểu luồng khác, khi đó bạn có thể truy xuất tới nội dung của
gói UDP một cách dễ dàng. Rất nhiều người lập trình thích dung các luồng
vào ra I/O để xử lý dữ liệu, bằng cách sử dụng luồng DataInputStream hoặc
BufferedReader để truy xuất tới nội dung của các mảng byte.
b. Gửi các gói tin
Lớp DatagramSocket cũng được sử dụng để gửi các gói tin. Khi gửi gói tin,
ứng dụng phải tạo ra một DatagramPacket, thiết lập địa chỉ và thông tin cổng,
và ghi dữ liệu cần truyền vào mảng byte. Nếu muốn gửi thông tin phúc đáp
thì ta cũng đã biết địa chỉ và số hiệu cổng của gói tin nhận được. Mỗi khi gói
tin sẵn sàng để gửi, ta sử dụng phương thức send() của lớp DatagramSocket
để gửi gói tin đi.
9
BTL KỸ THUẬT TRUYỀN SỐ LIỆU
NHÓM 2_KHMT1-K4_UDP & ARP
6. Ví dụ minh họa giao thức UDP
Để minh họa các gói tin UDP được gửi và nhận như thế nào, chúng ta sẽ viết,
biên
dịch và chạy ứng dụng sau.
Viết chương trình theo mô hình Client/Server để:
Client thực hiện các thao tác sau đây:
- Client gửi một xâu ký tự do người dùng nhập từ bàn phím cho server
- Client nhận thông tin phản hồi trở lại từ Server và hiển thị thông tin đó trên
màn hình.
Server thực hiện các thao tác sau:
- Server nhận xâu ký tự do client gửi tới và in lên màn hình
- Server biến đổi xâu ký tự thành chữ hoa và gửi trở lại cho Client
B. Tìm hiểu về giao thức ARP
1. Tầng giao thức
Mạng LAN nhỏ hoạt động dựa trên hai lớp một và hai trong mô hình OSI
( lớp physical và datalink). Nhưng các giao thức liên mạng ( internet-work )
lại dựa trên địa chỉ lớp ba (lớp network). Việc phân giải địa chỉ giữa lớp
datalink và lớp network nhằm giúp cho việc truyền dữ liệu được liên tục qua
mạng.
10
BTL KỸ THUẬT TRUYỀN SỐ LIỆU
NHÓM 2_KHMT1-K4_UDP & ARP
Có hai phương pháp phân giải địa chỉ là : map trực tiếp và phân giải động.
Việc map trực tiếp gặp nhiều khó khăn do địa chỉ MAC (lớp datalink) là địa
chỉ 48 bit trong khi địa chỉ IP là 32 bit. Bên cạnh đó các nhà phát triển muốn
tạo ra một cơ chế linh hoạt trong sử dụng. Chính vì vậy họ phát triển ARP
( Address Resolution Protocol ). Giao thức này được định nghĩa trong RFC
826
- ARP là phương thức phân giải địa chỉ động giữa địa chỉ lớp network và địa
chỉ lớp datalink. Quá trình thực hiện bằng cách: một thiết bị IP trong mạng
gửi một gói tin broadcast đến toàn mạng yêu cầu thiết bị khác gửi trả lại địa
chỉ phần cứng ( địa chỉ lớp datalink ) của mình.
- Ban đầu ARP chỉ được sử dụng trong mạng Ethernet để phân giải địa chỉ IP
và địa chỉ MAC. Nhưng ngày nay ARP đã được ứng dụng rộng rãi và dùng
trong các công nghệ khác dựa trên lớp hai.
2. Nguyên lý làm việc
a. Nguyên tắc làm việc của ARP trong mạng LAN
Khi một thiết bị mạng muốn biết địa chỉ MAC của một thiết bị mạng nào đó
mà nó đã biết địa chỉ ở tầng network (IP, IPX…) nó sẽ gửi một ARP request
bao gồm địa chỉ MAC address của nó và địa chỉ IP của thiết bị mà nó cần
biết MAC address trên toàn bộ một miền broadcast. Mỗi một thiết bị nhận
được request này sẽ so sánh địa chỉ IP trong request với địa chỉ tầng network
của mình. Nếu trùng địa chỉ thì thiết bị đó phải gửi ngược lại cho thiết bị gửi
ARP request một gói tin (trong đó có chứa địa chỉ MAC của mình). Trong
một hệ thống mạng đơn giản, ví dụ như PC A muốn gửi gói tin đến PC B và
nó chỉ biết được địa chỉ IP của PC B. Khi đó PC A sẽ phải gửi một ARP
broadcast cho toàn mạng để hỏi xem "địa chỉ MAC của PC có địa chỉ IP này
là gì ?" Khi PC B nhận được broadcast này, nó sẽ so sánh địa chỉ IP trong gói
tin này với địa chỉ IP của nó. Nhận thấy địa chỉ đó là địa chỉ của mình, PC B
sẽ gửi lại một gói tin cho PC A trong đó có chứa địa chỉ MAC của B. Sau đó
PC A mới bắt đầu truyền gói tin cho B.
b. Nguyên tắc hoạt động của ARP trong 1 hệ thống mạng
Hoạt động của ARP trong một môi trường phức tạp hơn đó là hai hệ thống
mạng gắn với nhau thông qua một Router C. Máy A thuộc mạng A muốn gửi
11
BTL KỸ THUẬT TRUYỀN SỐ LIỆU
NHÓM 2_KHMT1-K4_UDP & ARP
gói tin đến máy B thuộc mạng B. Do các broadcast không thể truyền qua
Router nên khi đó máy A sẽ xem Router C như một cầu nối hay một trung
gian (Agent) để truyền dữ liệu. Trước đó, máy A sẽ biết được địa chỉ IP của
Router C (địa chỉ Gateway) và biết được rằng để truyền gói tin tới B phải đi
qua C. Tất cả các thông tin như vậy sẽ được chứa trong một bảng gọi là bảng
định tuyến (routing table). Bảng định tuyến theo cơ chế này được lưu giữ
trong mỗi máy. Bảng định tuyến chứa thông tin về các Gateway để truy cập
vào một hệ thống mạng nào đó. Ví dụ trong trường hợp trên trong bảng sẽ
chỉ ra rằng để đi tới LAN B phải qua port X của Router C. Bảng định tuyến
sẽ có chứa địa chỉ IP của port X. Quá trình truyền dữ liệu theo từng bước
sau :
• Máy A gửi một ARP request (broadcast) để tìm địa chỉ MAC của port X.
• Router C trả lời, cung cấp cho máy A địa chỉ MAC của port X.
• Máy A truyền gói tin đến port X của Router.
• Router nhận được gói tin từ máy A, chuyển gói tin ra port Y của Router.
Trong gói tin có chứa địa chỉ IP của máy B. Router sẽ gửi ARP request để
tìm địa chỉ MAC của máy B.
• Máy B sẽ trả lời cho Router biết địa chỉ MAC của mình. Sau khi nhận
được địa chỉ MAC của máy B, Router C gửi gói tin của A đến B.
Trên thực tế ngoài dạng bảng định tuyến này người ta còn dùng phương pháp
proxyARP, trong đó có một thiết bị đảm nhận nhiệm vụ phân giải địa chỉ cho
tất cả các thiết bị khác.Theo đó các máy trạm không cần giữ bảng định tuyến
nữa Router C sẽ có nhiệm vụ thực hiện, trả lời tất cả các ARP request của tất
cả các máy .
Các bước hoạt động của ARP :
- Source Device Checks Cache : Trong bước này, thiết bị sẽ kiểm tra cache
( bộ đệm ) của mình. Nếu đã có địa chỉ IP đích tương ứng với MAC nào đó
rồi thì lập tức chuyển lên bước 9
- Source Device Generates ARP Request Message : Bắt đầu khởi tạo gói tin
ARP Request với các trường địa chỉ như trên
12
BTL KỸ THUẬT TRUYỀN SỐ LIỆU
NHÓM 2_KHMT1-K4_UDP & ARP
- Source Device Broadcasts ARP Request Message : Thiết bị nguồn quảng
bá gói tin ARP Request trên toàn mạng
- Local Devices Process ARP Request Message : Các thiết bị trong mạng
đều nhận được gói tin ARP Request. Gói tin được xử lý bằng cách các thiết
bị đều nhìn vào trường địa chỉ Target Protocol Address. Nếu trùng với địa
chỉ của mình thì tiếp tục xử lý, nếu không thì hủy gói tin
- Destination Device Generates ARP Reply Message : Thiết bị với IP trùng
với IP trong trường Target Protocol Address sẽ bắt đầu quá trình khởi tạo gói
tin ARP Reply bằng cách lấy các trường Sender Hardware Address và
Sender Protocol Address trong gói tin ARP nhận được đưa vào làm Target
trong gói tin gửi đi. Đồng thời thiết bị sẽ lấy địa chỉ datalink của mình để đưa
vào trường Sender Hardware Address
- Destination Device Updates ARP Cache : Thiết bị đích ( thiết bị khởi tạo
gói tin ARP Reply ) đồng thời cập nhật bảng ánh xạ địa chỉ IP và MAC của
thiết bị nguồn vào bảng ARP cache của mình để giảm bớt thời gian xử lý cho
các lần sau
- Destination Device Sends ARP Reply Message : Thiết bị đích bắt đầu gửi
gói tin Reply đã được khởi tạo đến thiết bị nguồn. Gói tin reply là gói tin gửi
unicast
- Source Device Processes ARP Reply Message : Thiết bị nguồn nhận được
gói tin reply và xử lý bằng cách lưu trường Sender Hardware Address trong
gói reply như địa chỉ phần cứng của thiết bị đích
- Source Device Updates ARP Cache : Thiết bị nguồn update vào ARP
cache của mình giá trị tương ứng giữa địa chỉ network và địa chỉ datalink của
thiết bị đích. Lần sau sẽ không còn cần tới request
3. Cấu trúc đơn vị dữ liệu
Cấu trúc của 1 bản tin ARP bao gồm các trường:
13
BTL KỸ THUẬT TRUYỀN SỐ LIỆU
NHÓM 2_KHMT1-K4_UDP & ARP
Trong đó:
• Hardware type và Protocol type quy định kiểu của phần cứng và của
protocol được dùng ở lớp network
• Opcode: cho biết bản tin ARP là yêu cầu (=1) hoặc phúc đáp (=2)
• HW addr length: dộ dài của địa chỉ vật lý
• Protocol addr length: độ dài của địa chỉ logic
• 4 trường còn lại là địa chỉ vật lý và địa chỉ logic của nguồn và đích.
4. Những vấn đề cần giải quyết
Mỗi ánh xạ IP-MAC trong ARP cache đều chỉ tồn tại trong một khoảng thời
gian cố định (trừ các ánh xạ đã được đặt tĩnh). Việc đề ra khoảng thời gian
này là cần thiết khi một host nào đó:
a. Di dời khỏi mạng hoặc kết nối của host vào mạng bị hỏng
b. Địa chỉ logic của host được gán lại cho một địa chỉ vật lí mới.Khi đó bảng
ARP cache của host có thể bị xoá trắng, tuy nhiên ánh xạ địa chỉ MAC-địa
chỉ logic của nó vẫn còn tồn tại trong các bảng ARP cache của các máy khác.
Điều này có thể dẫn đến trường hợp gói tin vẫn truyền đi được nhưng không
đến được đích.
Biện pháp khắc phục trong trường hợp thứ nhất có thể là:
- Khi thiết lập kết nối bị hỏng, module Address Resolution cần phải được
thông báo để loại bỏ ánh xạ ra khỏi bảng ARP cache của nó hoặc đặt một
khoảng thời gian timeout cho mỗi kết nối giữa hai máy. Mỗi khi một máy
nhận được bất kì một gói tin nào đó từ máy kia, nó sẽ gia hạn thời gian
timeout cho ánh xạ và sau khoảng thời gian timeout mà nó vẫn không nhận
14
BTL KỸ THUẬT TRUYỀN SỐ LIỆU
NHÓM 2_KHMT1-K4_UDP & ARP
được bản tin nào từ máy kia, ánh xạ giữa địa chỉ MAC-địa chỉ logic của máy
kia sẽ bị loại bỏ khỏi bảng ARP cache của nó.
- Sử dụng một module xử lí thời gian timeout. Sau một khoảng thời gian
nào đó, module này sẽ thực hiện việc loại bỏ ánh xạ ra khỏi bảng ARP cache.
Tuy nhiên, trước khi tiến hành việc loại bỏ, module sẽ gửi đi một bản tin
ARP request đến host cần phải loại bỏ. Nếu sau một khoảng thời gian rất
ngắn mà nó không nhận được bản tin ARP reply từ host đó, nó sẽ tiến hành
loại bỏ ánh xạ ra khỏi bảng.
Biện pháp khắc phục trong trường hợp thứ hai: khi nhận được một bản tin
ARP, host sẽ kiểm tra xem địa chỉ vật lí nguồn đã tồn tại trong bảng ARP
cache của nó chưa, nếu đã tồn tại rồi thì nó sẽ ghi đè địa chỉ mới này lên.
c. Qúa trình gửi 1 bản tin ARP
Khi một gói tin được gửi từ lớp mạng xuống, module Address Resolution ở
lớp dưới cần phải chuyển đổi <kiểu protocol, kiểu địa chỉ logic đích> thành
địa chỉ vật lí 48 bit. Khi đó module này sẽ kiểm tra trong bảng ánh xạ của nó
gọi là ARP cache để tìm xem có một cặp ánh xạ giữa địa chỉ logic đích với
một địa chỉ vật lí nào đó hay không. Nếu tìm được một ánh xạ như vậy,
module sẽ trả về địa chỉ vật lí và địa chỉ này sẽ được dùng để chuyển đến
đúng đích. Nếu không có ánh xạ như vậy, nó sẽ gửi đi bản tin ARP có địa chỉ
vật lí đích là địa chỉ broadcast và Opcode=1. Bản tin này sẽ được gửi đến tất
cả các thiết bị có trong mạng.
Ví dụ: một máy có địa chỉ IP là 192.168.1.1 muốn gửi đi bản tin ARP để tìm
địa chỉ vật lí của máy có địa chỉ IP 192.168.1.2 thì bản tin ARP request sẽ có
cấu trúc.
15
BTL KỸ THUẬT TRUYỀN SỐ LIỆU
NHÓM 2_KHMT1-K4_UDP & ARP
d. Quá trình nhận 1 bản tin ARP
Khi một host trên mạng nhận được bản tin yêu cầu ARP, nó sẽ xử lí như sau:
- Kiểm tra xem có cùng HW type, Protocol type không. Nếu có, nó sẽ kiểm
tra xem <protocol type, kiểu địa chỉ logic người gửi> có tồn tại trong bảng
ARP cache của nó hay không. Nếu có thì cập nhật lại địa chỉ MAC tương
ứng nếu thấy có thay đổi và đặt cờ Merge-flag = true.
- Kiểm tra xem địa chỉ logic của nó có trùng với địa chỉ logic đích mà gói
tin gửi đến hay không. Nếu có và cờ Merge là false, nó sẽ cập nhật <protocol
type, kiểu địa chỉ logic và vật lí của người gửi> vào bảng ARP cache của
mình. Nếu không, gói tin ARP request sẽ bị hủy.
- Kiểm tra opcode: nếu opcode là request thì gửi lại bản tin ARP theo dạng
unicast thông báo cho máy yêu cầu biết được địa chỉ MAC của mình.
- Thiết bị yêu cầu, sau khi nhận được bản tin ARP reply, sẽ cập nhật lại
bảng ARP cache của mình và chuyển frame đến đích theo địa chỉ MAC nhận
được. Trong trường hợp không có một bản tin reply nào đến có nghĩa là thiết
bị mà nó muốn trao đổi không nằm cùng mạng LAN với nó, nếu trong mạng
có cấu hình proxy ARP (thiết bị dùng để trả lời các ARP request) thì proxy
ARP này sẽ có nhiệm vụ gửi bản tin ARP phúc đáp với địa chỉ MAC của nó
như thể là phúc đáp của máy đích. Khi đó gói tin lớp 2 sẽ được đóng gói với
địa chỉ MAC là địa chỉ MAC của proxy ARP và mọi thông tin sẽ được gửi
đến proxy ARP này. Nếu không tồn tại proxy ARP trong mạng; gói tin sẽ bị
huỷ và thông báo lỗi lên lớp trên.
5. ARP Caching
ARP là một giao thức phân giải địa chỉ động. Quá trình gửi gói tin Request
và Reply sẽ tiêu tốn băng thông mạng. Chính vì vậy càng hạn chế tối đa việc
gửi gói tin Request và Reply sẽ càng góp phần làm tăng khả năng họat động
của mạng.Từ đó sinh ra nhu cầu của ARP Caching
Static and Dynamic ARP Cache Entries
16
BTL KỸ THUẬT TRUYỀN SỐ LIỆU
NHÓM 2_KHMT1-K4_UDP & ARP
ARP Cache có dạng giống như một bảng tương ứng giữa địa chỉ hardware và
địa chỉ IP. Có hai cách đưa các thành phần tương ứng vào bảng ARP :
• Static ARP Cache Entries: Đây là cách mà các thành phần tương ứng trong
bảng ARP được đưa vào lần lượt bởi người quản trị. Công việc được tiến
hành một cách thủ công
• Dynamic ARP Cache Entries: Đây là quá trình mà các thành phần địa chỉ
hardware/IP được đưa vào ARP cache một cách hoàn toàn tự động bằng phần
mềm sau khi đã hoàn tất quá trình phân giải địa chỉ. Chúng được lưu trong
cache trong một khoảng thời gian và sau đó sẽ được xóa đi
Dynamic Cache được sử dụng rộng rãi hơn vì tất cả các quá trình diễn ra tự
động và không cần đến sự tương tác của người quản trị. Tuy nhiên static
cache vẫn có phạm vi ứng dụng nhất định của nó. Đó là trường hợp mà các
workstation nên có static ARP entry đến router và file server nằm trong
mạng. Điều này sẽ hạn chế việc gửi các gói tin để thực hiện quá trình phân
giải địa chỉ.
Tuy nhiên ngoài hạn chế của việc phải nhập bằng tay, static cache còn thêm
hạn chế nữa là khi địa chỉ IP của các thiết bị trong mạng thay đổi thì sẽ dẫn
đến việc phải thay đổi ARP cache
Quá trình xóa thông tin trong cache
Ta xét trường hợp bảng cache của một thiết bị A, trong đó có chứa thông tin
về thiết bị B trong mạng. Nếu các thông tin trong cache được lưu mãi mãi, sẽ
có một số vấn đề như sau xảy ra :
• Địa chỉ phần cứng thiết vị đựoc thay đổi : Đây là trường hợp khi thiết bị B
được thay đổi card mạng hay thiết bị giao tiếp, làm thay đổi địa chỉ MAC của
thiết bị. Điều này làm cho các thông tin trong cache của A không còn đúng
nữa
• Địa chỉ IP của thiết bị được thay đổi : Người quản trị hay nhà cung cấp thay
đổi địa chỉ IP của B, cũng làm cho thông tin trong cache của A bị sai lệch
17
BTL KỸ THUẬT TRUYỀN SỐ LIỆU
NHÓM 2_KHMT1-K4_UDP & ARP
• Thiết bị được rút ra khỏi mạng : Khi B được rút ra khỏi mạng nhưng A
không được biết, và gây lãng phí về tài nguyên của A để lưu thông tin không
cần thiết và tốn thời gian để tìm kiếm.
Để tránh được những vấn đề này, các thông tin trong dynamic cache sẽ được
tự động xóa sau một khoảng thời gian nhất định. Quá trình này được thực
hiện một cách hoàn toàn tự động khi sử dụng ARP với khoảng thời gian
thường là 10 hoặc 20 phút. Sau một khoảng thời gian nhất định được lưu
trong cache , thông tin sẽ được xóa đi. Lần sử dụng sau, thông tin sẽ được
update trở lại
6. Proxy ARP
ARP được thiết kế cho các thiết bị nằm trong nội mạng, có tính chất local.
Tuy nhiên nếu hai thiết bị A và B bị chia cắt bởi 1 router thì chúng sẽ được
coi như là không local với nhau nữa. Khi A muốn gửi thông tin đến B, A sẽ
không gửi trực tiếp được đến B theo địa chỉ lớp hai, mà phải gửi qua router
và được coi là cách nhau 2 hop ở lớp ba.
Vì sao cần phải có Proxy ARP ?
Khác với các trường hợp thông thường, nhiều trường hợp hai thiết bị A và B
nằm trên 2 segment vật lý khác nhau nhưng được kết nối qua một router và
cùng nằm trong một mạng IP hay một IP subnet. Lúc này A và B sẽ coi nhau
có quan hệ local.
Giả sử ta có tình huống A muốn gửi thông tin cho B. A nghĩ B trong cùng
nội mạng và tìm trong bảng ARP cache. A không lưu địa chỉ MAC của B và
bắt đầu tiến hành quá trình phân giải địa chỉ. A broadcast gói ARP request
trong nội mạng để tìm địa chỉ MAC của B. Sẽ có vấn đề xảy ra : B không
cùng nằm trong mạng và sẽ không nhận được gói tin broadcast cũng như
router kết nối sẽ không forward gói broadcasr từ A qua B ( router không
truyền các gói broadcast ở lớp datalink ). Vì vậy B không bao giờ nhận được
request từ A cũng như A sẽ không bao giờ có được địa chỉ MAC của B
Hoạt động của Proxy ARP:
18
BTL KỸ THUẬT TRUYỀN SỐ LIỆU
NHÓM 2_KHMT1-K4_UDP & ARP
Giải pháp cho tình huống này được gọi là ARP proxying hay Proxy ARP.
Trong công nghệ này, router nằm giữa 2 mạng local sẽ được cấu hình để đáp
ứng các gói tin broadcast gửi từ A thay cho B. Router sẽ không gửi cho A địa
chỉ MAC của B, vì dù thế nào A và B cũng nằm trên hai mạng khác nhau và
không thể gửi trực tiếp đến nhau được. Thay vào đó router sẽ gửi cho A các
địa chỉ MAC cảu chính router. A sau đó sẽ gửi thông các gói tin cho router,
và router sẽ forward sang cho B. Quá trình cũng hoàn toàn diễn ra tương tự
khi B muốn gửi thông tin cho A, hay cho bất cứ thiết bị nào mà đích đến của
gói tin là một thiết bị ở một mạng khác.
Trong ví dụ, một router kết nối hai mạng LAN cùng trong một mạng IP hoặc
subnet với nhau. Router sẽ không truyền các gói tin ARP broadcast nhưng
được cấu hình để hoạt động như một ARP proxy. Hai thiết bị A và D có nhu
cầu gửi các gói tin IP cho nhau, chính vì vậy chúng broadcast các gói ARP
request. Router sẽ đáp ứng lại các gói tin request từ A như thể là D ( router
không truyền gói request đến D ). Tương tự, router cũng sẽ dùng địa chỉ của
mình để gửi trả các gói tin từ D gửi cho A.
Ưu điểm và nhược điểm của Proxying
Ưu điểm dễ nhận thấy của Proxy ARP là các router hoạt động nhưng các
thiết bị không hề cảm nhận được sự hoạt động của nó. Các hoạt động gửi
nhận giữa hai thiết bị thuộc hai LAN khác nhau vẫn diễn ra bình thường
Tuy nhiên nó vẫn có những mặt trái và những điểm hạn chế của mình :
• Thứ nhất, nó làm tăng độ phức tạp của mạng
• Thứ hai, nếu nhiều hơn một router kết nối tới hai LAN cùng nằm trong một
mạng IP, nhiều vấn đề có thể phát sinh
• Thứ ba, công nghệ này cũng tạo nên những mối nguy cơ tiềm ẩn về an ninh
và bảo mật, khi các router được cấu hình proxy, tạo nguy cơ về giả mạo địa
chỉ.
Do vậy, giải pháp tốt nhất là thiết kế lại topo mạng để chỉ một router kết nối
tới hai LAN nằm trong một mạng IP.
19
BTL KỸ THUẬT TRUYỀN SỐ LIỆU
NHÓM 2_KHMT1-K4_UDP & ARP
I- PHÂN TÍCH CÁC GÓI TIN DÙNG WIRESHARK
20
BTL KỸ THUẬT TRUYỀN SỐ LIỆU
NHÓM 2_KHMT1-K4_UDP & ARP
KẾT LUẬN
Truyền dữ liệu và mạng máy tính ngày nay đã trở thành một lĩnh vực
nghiên cứu phát triển và ứng dụng cốt lõi của công nghệ thông tin, bao gồm
rất nhiều vấn đề, từ kiến trúc đến các nguyên lý thiết kế, cài đặt và các mô
hình ứng dụng. Mạng máy tính và truyền dữ liệu là một lĩnh vực đã được
nghiên cứu sâu và ứng dụng mạnh mẽ trong thực tế cuộc sống. Tuy nhiên,
tiểu luận được trình bày có tính cơ bản và tổng quan. Đây chỉ là tóm tắt
những tri thức mà bản thân đã thu nhận được qua một thời gian học tập ngắn
và qua tham khảo một số tài liệu. Tiểu luận đã tóm tắt được những kiến thức
cơ bản về mạng và truyền số liệu như khái nhiệm về mạng, dữ liệu, truyền
tin, môi trường truyền tin, kỹ thuật dồn/tách kênh, kỹ thuật chuyển mạch
Tiểu luận đã đưa ra được một số đánh giá và nhận xét ưu nhược điểm của
một số dạng mạng thông qua phần phân loại mạng. Cuối cùng tiểu luận cũng
đã lấy được ba ví dụ cụ thể của ba mạng và nêu lên đặc trưng và kiến trúc
của ba mạng đó. Trong tiểu luận chưa đề cập kỹ về giao thức bởi vì phần này
liên quan rất nhiều đến các tầng của mô hình kiến trúc.
Để hoàn thành được tiểu luận này, ngoài sự nỗ lực và cố gắng của bản thân,
tác giả đã nhận ngoài sự nỗ lực và cố gắng của bản thân, tác giả đã nhận được
sự giúp đỡ qúy báu của Thầy Th.S Đoàn Văn Trung. Là một học viên chuyên
ngành Công nghệ thông tin và dù rất tâm đắc với đề tài đang nghiên cứu
nhưng với thời gian có hạn và khối lượng kiến thức của bản thân còn ít ỏi
nên chắc chắn tiểu luận không tránh khỏi những hạn chế trong việc tiếp cận,
nghiên cứu và trình bày. Nhóm chúng em xin kính trọng cảm ơn sự giúp đỡ
quý báu của Thầy và mong được đón nhận từ Thầy sự góp ý để bản thân có
được hiểu biết đúng hơn đối với vấn đề đang nghiên cứu đồng thời mong
được sự lượng thứ của Thầy về những vấn đề mà nhóm chưa hoàn thiện
được.
21
BTL KỸ THUẬT TRUYỀN SỐ LIỆU
NHÓM 2_KHMT1-K4_UDP & ARP
TÀI LIỆU THAM KHẢO
1.
2. Kỹ thuật truyền số liệu – Ths. Phạm Ngọc Đĩnh - Học viện công nghệ
bưu chính viễn thông.
3. Nguyễn hồng Sơn, Hoàng Đức Hải. Kỹ thuật truyền số liệu. Nhà xuất bản
Lao động 2002.
22
BTL KỸ THUẬT TRUYỀN SỐ LIỆU