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

Xây dựng firewall trên nền tảng FPGA

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.9 MB, 77 trang )

TRẦN TRƯỜNG PHAN

BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
---------------------------------------

TRẦN TRƯỜNG PHAN

KỸ THUẬT ĐIỆN TỬ

XÂY DỰNG FIREWALL TRÊN NỀN TẢNG FPGA

LUẬN VĂN THẠC SĨ KHOA HỌC
KỸ THUẬT ĐIỆN TỬ

2008-2010
Hà Nội 03 – 2011


Xây dựng FireWall trên nền tảng FPGA

Mục lục
Danh sách chữ viết tắt……………………………………………………………….
Danh sách các bảng biểu…………………………………………………………….
Danh sách các hình vẽ, sơ đồ………………………………………………………..
Mở đầu .................................................................................................................................. 7
Chương 1
Tổng quan........................................................................................................ 8
1.1. Giao thức mạng TCP/IP [17] ..................................................................................... 8
1.1.1. Kiến trúc phân tầng OSI.......................................................................................... 8
1.1.2. Chồng giao thức TCP/IP ....................................................................................... 10


1.1.4 . TCP và UDP......................................................................................................... 20
1.3. Các vấn đề trong việc lọc gói tin[12][13][14][15][16] ............................................ 29
1.4. Các giải pháp phân loại gói tin[15][16] ................................................................... 30
Chương 2 Thiết kế phần cứng ............................................................................................. 36
2.1 Tree Bitmap của Eatherton và Dittia[10] [11] .......................................................... 36
2.1.1 Mô tả cấu trúc của Tree Bitmap ......................................................................... 36
2.1.2 Kỹ thuật tìm kiếm trên Tree Bitmap .................................................................. 40
2.2 Mô hình thiết kế phần cứng................................................................................... 45
2.2.1 Ethernet Control Module.................................................................................... 46
2.2.2 FPL Module........................................................................................................ 48
2.2.3 Forward Module................................................................................................. 52
2.2.4 TCAM ................................................................................................................ 54
2.2.5 NodeRAM .......................................................................................................... 54
2.2.6 BVRAM ............................................................................................................. 54
Chương 3 Thiết kế phần mềm............................................................................................. 55
3.1. Thiết kế mô hình tổ chức bộ nhớ ............................................................................. 55
3.1.1. Giải pháp thứ nhất ............................................................................................. 56
3.1.2. Giải pháp thứ hai ............................................................................................... 56
3.2 Giải thuật cập nhật thông tin bảng lọc vào bộ nhớ.................................................... 61
Chương 4 Thực hiện............................................................................................................ 66
4.1. Xây dựng bo mạch phần cứng [19][20][21]............................................................. 66
4.2. Sơ đồ chi tiết phần cứng........................................................................................... 68
4.3. Phần cứng giải thuật thực hiện trên FPGA............................................................... 68
4.4. Hệ thống phần mềm để thêm nút vào RAM………………………………………..68
4.5. Kết quả thực hiện ………………………………………………………………….68
KẾT LUẬN ......................................................................................................................... 73
TÀI LIỆU THAM KHẢO................................................................................................... 74  

Học viên: Trần Trường Phan  


 1 


Xây dựng FireWall trên nền tảng FPGA

Danh sách chữ viết tắt
Tên viết tắt

Tên đầy đủ

ý nghĩa

LAN

Local Area Network

Mạng cục bộ

MAN

Metropolitan Area Network

Mạng đô thị

WAN

Wide Area Network

Mạng diện rộng


OSI

Open System Interconnect

Mô hình kết nối các hệ thống mở

IP

Internet Protocol

Giao thức liên mạng

TCP

Transmission Control Protocol Giao thức truyền dẫn hướng kết nối

UDP

User Datagram Protocol

ICMP

Internet
Protocol

IGMP

Internet Gateway
Protocol


ARP

Address Resolution Protocol

SMTP

Simple Mail
Protocol

SNMP

Simple Network Management Giao thức quản lý mạng đơn giản
Protocol

HTTP

Hyper Text
Protocol

MAC

Media Access Control

Điều khiển truy nhập môi trường

ACL

Access Control List

Danh sách điều khiển truy nhập


NAT

Network Address Translation

Dịch địa chỉ mạng

MTU

Maximum Transmit Unit

Đối tượng truyền tối đa

CPU

Central Processing Unit

Bộ xử lý trung tâm

PC

Personal Computer

Máy tính cá nhân

FPGA

Field Programmable
Gate Array


Mảng cổng lập trình được

Control

Học viên: Trần Trường Phan  

Giao thức truyền dẫn không hướng
kết nối

Message Giao thức điều khiển các thông báo
lỗi.
Manager Giao thức quản lý nhóm Multicast
Giao thức phân giải địa chỉ

Transmission Giao thức truyền thư điện tử đơn
giản

Transmission Giao thức truyền siêu văn bản
(Web)

 2 


Xây dựng FireWall trên nền tảng FPGA

RAM
ROM
TCAM
BV-TCAM
BVRAM

NodeRAM

Random Access
Memory
Read Only Memory
Ternary Content
Addressable Memory
Bit Vector- Ternary
Content Addressable Memory
Bit Vector RAM
Node RAM

PIX

Học viên: Trần Trường Phan  

Bộ nhớ truy cập ngẫu nhiên
Bộ nhớ chỉ đọc
Bộ nhớ có khả năng tìm kiếm
Mảng Vec tơ bit TCAM
Mảng Bit Vec tơ trên RAM
Một nút của bảng luật lọc IP trên
RAM
Tên một thiết bị tưởng lửa của
hãng Cisco

 3 


Xây dựng FireWall trên nền tảng FPGA


Danh sách các bảng biểu
Bảng 1.1 Các địa chỉ multicast dành riêng
Bảng 1.2 Các cờ trong TCP header và ý nghĩa của nó
Bảng 1.3 Cấu trúc của UDP Header
Bảng 1.4 Cấu trúc gói số liệu ARP
Bảng 1.5: Ví dụ bảng lọc gói tin
Bảng 1.6: Bảng lọc các luật khác nhau
Bảng 1.7: Các tiền tố của trường cổng nguồn trong bảng lọc ở hình 1.2 và BitVector
tương ứng
Bảng 2.1: Số bit để mã hóa một node
Bảng 2.2: Thống kê các thông số thay đổi theo S

Học viên: Trần Trường Phan  

 4 


Xây dựng FireWall trên nền tảng FPGA

Danh sách các hình vẽ, sơ đồ
Hình 1.1 Cấu trúcphân lớp mô hình OSI
Hình1.2 Các lớp trong chồng giao thức TCP/IP
Hình 1.3 Giao tiếp vật lý và logic giữa các lớp
Hình 1.4 Cấu trúc IP Header
Hình 1.5 Cấu trúc trường Type of Service
Hình 1.6 Cấu trúc trường Flags
Hình 1.7 Nguyên tắc phân mảnh gói số liệu IP
Hình 1.8 Cấu trúc chung của một địa chỉ IP
Hình 1.9 Khuôn dạng địa chỉ các lớp IP

Hình 1.10 Cấu trúc TCP Header
Hình 1.11 Thiết lập một kết nối TCP/IP
Hình1.12 Dịch vụ định tuyến lại (ICMP Redirect)
Hình 1.13: Mô hình tường lửa
Hình 1.14: Kiến trúc đa bộ vi xử lý
Hình 1.15: Mô hình cây quyết định
Hình 1.16: TCAM trong kiến trúc BV - TCAM
Hình 1.17: Chuyển một dải “số hiệu cổng ≥ 1024 ” thành các tiền tố
Hình 1.18: Mô hình Tree Bitmap và BitVector tương ứng của cổng nguồn
Hình 1.19: Sơ đồ khối của bộ lọc gói tin sử dụng kiến trúc BV – TCAM
Hình 2.1: Mô hình Tree Bitmap
Hình 2.2: Chuyển một node thành bitmap
Hình 2.3: Xây dựng Internal PrefixBitmap của node trong hình 2.2
Hình 2.4: Cây có chiều sâu 16
Hình 2.5: Ví dụ về cây quyết định
Hình 2.6: Thông tin bitmap của node gốc
Hình 2.7: Thông tin của node con tương ứng
Hình 2.8: Ví dụ về Count_Ones
Hình 2.9: Ví dụ về Prefix_Search
Hình 2.10: Sơ đồ giải thuật của Prefix_Search
Hình 2.11: Sơ đồ các mô đun phần cứng
Hình 2.12: Sơ đồ diễn tiến các trạng thái của Ethernet Control Module
Hình 2.13: Sơ đồ nguyên lý của FPL
Hình 2.14: Sơ đồ diễn tiến các trạng thái của FPL
Hình 2.15: Sơ đồ khối của Forward module
Hình 3.1: Chèn một node mới vào trong NodeRAM
Hình 3.2: Mô hình tổ chức bộ nhớ theo kiểu chia vùng bộ nhớ
Hình 3.3: Đề xuất cấu trúc dữ liệu của NodeRAM
Hình 3.4: Đề xuất cấu trúc dữ liệu của BVPtrRAM
Hình 3.5: Sơ đồ thuật toán tìm kiếm tiền tố

Học viên: Trần Trường Phan  

 5 


Xây dựng FireWall trên nền tảng FPGA

Hình 3.6: Sơ đồ thuật toán thêm tiền tố mới
Hình 3.7: Sơ đồ giải thuật chèn node mới vào trong NodeRAM
Hình 4.1: Mô hình kết nối mạng có ứng dụng Firewall(FW)
Hình 4.2: Sơ đồ khối của hệ thống FireWall
Hình 4.3: Hình vẽ sơ đồ thiết kế phần cứng
Hình 4.4: Mạch chuyển mạch gói tin
Hình 4.5 : Giao diện MPLAD IDE phát triển phần mềm.
Hình 4.6 : Báo cáo tốc độ sau khi thực hiện tổng hợp trên FPGA

Học viên: Trần Trường Phan  

 6 


Xây dựng FireWall trên nền tảng FPGA

Mở đầu
Ngày nay, với sự bùng nổ của Internet, dữ liệu truyền qua mạng cũng như tốc độ
truyền dữ liệu ngày càng tăng (đến GigaBit/s). Do đó, các thiết bị bảo mật tường lửa
(Firewall) thông thường dựa trên các vi xử lý (tường lửa bằng phần cứng (PIX router) và phần mềm (dựa trên máy tính PC) dần dần sẽ không đáp ứng được với tốc
độ truyền trong mạng. Vì vậy, việc thiết kế các thiết bị phần cứng để thiết lập cơ chế
bảo mật, nhờ có khả năng xử lý các luồng song song đang là xu hướng mới rất có tiềm
năng.

Giải pháp sử dụng FPGA cho các thiết bị mạng cũng như các thiết bị bảo mật đang
được rất nhiều các trung tâm nghiên cứu, đặc biệt là trung tâm nghiên cứu ứng dụng:
hệ thống mạng và truyền thông đa phương tiện - Network and Multimedia Systems
Research Lab của trường đại học Washington, Saint Louis ()
cũng như các nhà sản xuất quan tâm tới.
Ý tưởng sử dụng mạch cứng để tạo ra cơ chế lọc gói tin cho thiết bị tường lửa nhằm
mục đích:
- Tăng tốc độ lọc gói tin, tạo khả năng đáp ứng được tốc độ đường truyền ngày
càng cao.
-

Giảm tải gánh nặng cho CPU của máy trạm.

Thêm vào đó, ta có thể thiết kế để có thể ngăn chặn các kiểu tấn công ở tầng thấp
(tầng IP) như các kiểu tấn công phân mảnh gói tin IP có thể gây treo máy trạm (ví dụ
DoS).
Luận văn này được trình bày trong 4 chương:
Chương 1: Trình bày về tổng quan mạng IP và cơ bản vể tường lửa (firewall) và
đưa ra các phương pháp lựa chọn thiết kế.
Chương 2: Trình bày về thiết kế phần cứng (cấu hình cho FPGA)
Chương 3: Trình bày về các thiết kế phần mềm để nạp dữ liệu cho tường lửa
(firewall)
Chương 4: Trình bày về các kết quả đạt được (lập trình và mô phỏng)

Học viên: Trần Trường Phan  

 7 


Xây dựng FireWall trên nền tảng FPGA


Chương 1 Tổng quan
Trong chương này chúng ta đi từ tổng quan về mạng IP và tường lửa . Từ đó chúng
ta nghiên cứu và đề ra phương án thiết kế.

1.1. Giao thức mạng TCP/IP [17]
Vì nền FireWall hoạt động chủ yếu dựa trên giao thức mạng TCP/IP nên trước khi đi
vào tìm hiểu hoạt động của FireWall ta cần khảo sát các khía cạnh liên quan đến giao
thức này.
1.1.1. Kiến trúc phân tầng OSI
Để việc tổ chức trao đổi số liệu giữa các ứng dụng trong hệ thống mạng được
thuận tiện và không quá phức tạp, người ta phân chia hệ thống thành các chức năng
nhỏ, có phân cấp, độc lập và “dựa vào nhau, có tác dụng tương hổ cho nhau”.
Nguyên tắc tổ chức hệ thống bằng cách phân chia hệ thống thành các chức năng có
phân cấp không những cho phép giảm độ phức tạp thiết kế và thực hiện hệ thống
thông qua việc xác định các chức năng cấu thành hệ thống và giao diện giữa các
chức năng đó mà không qui định bắt buộc phải thực hiện các chức năng đó như thế
nào, mà còn cho phép thực hiện việc kết nối mở các hệ thống không đồng nhất,
nghĩa là kết nối giữa các hệ thống có kiến trúc phần cứng, phần mềm hệ thống và
cấu trúc số liệu không giống nhau. Mô hình 7 mức OSI là mô hình kết nối mở các hệ
thống tính toán được xây dựng trên nguyên tắc phân mức chức năng như vậy.
1.Tầng ứng dụng (Application Layer)
Có chức năng cung cấp các phương tiện để người sử dụng có thể truy nhập
được vào môi trường OSI. Đồng thời cung cấp các dịch vụ mạng.
2. Tầng biểu diển thông tin (Presentation Layer)
Tầng này hoạt động như bộ phiên dịch dữ liệu cho mạng. Nó thực hiện việc
chuyển đổi cú pháp dữ liệu để đáp ứng yêu cầu truyền dữ liệu của các ứng dụng qua
môi trường OSI.

Học viên: Trần Trường Phan  


 8 


Xây dựng FireWall trên nền tảng FPGA

Application
Presentation
Session
Transport
Network
Datalink
Physical
Hình 1.1 Cấu trúcphân lớp mô hình OSI
3. Tầng phiên (Session Layer)
Tầng phiên cung cấp các chức năng quản lý truyền thông giữa các ứng dụng chạy
trên các máy tính khác nhau như: Thiết lập, duy trì, đồng bộ hoá và huỷ bỏ các phiên
truyền thông giữa các ứng dụng. Ngoài ra nó còn thực hiện nhiều chức năng hỗ trợ
khác nhau, cho phép các quy trình giao tiếp trên mạng như chứng thực người sử dụng
và bảo vệ truy cập tài nguyên.
4. Tầng giao vận (Transport layer)
Thực hiện việc truyền dữ liệu giữa hai đầu giao tiếp, tiến hành kiểm soát lỗi và
điều khiển luồng dữ liệu giữa hai đầu mút truyền dữ liệu nếu cần. Nó cũng có thể thực
hiện việc ghép kênh, cắt hợp dữ liệu nếu cần. Nói chung, nhiệm vụ của tầng này đảm
bảo cho Datagram được chuyển giao theo thứ tự gửi đi và không bị mất mát hay trùng
lặp.
5. Tầng mạng ( Network Layer)
Tầng mạng chịu trách nhiệm điều khiển hoạt động của mạng con, nó quyết định dữ
liệu sẽ đi theo lộ trình vật lý nào, căn cứ vào điều kiện hiện tại của mạng, độ ưu tiên
của dịch vụ và các điều kiện khác. Thực hiện cả chức năng cắt hợp dữ liệu nếu cần.

6. Tầng liên kết dữ liệu(Datalink Layer)
Tầng này có chức năng cung cấp các phương tiện để truyền thông tin qua liên kết
vật lý đảm bảo tin cậy thông qua các cơ chế đồng bộ hoá, kiểm soát lỗi và điều khiển
luồng dữ liệu, báo nhận và phục hồi lỗi xảy ra ở tầng vật lý.
7. Tầng vật lý(Physical Layer)
Nhìn chung, chức năng của tầng vật lý liên quan tới việc biểu diễn các bit thông tin
các giao thức điều khiển việc truyền các bit qua đường truyền vật lý. Theo tiêu chuẩn
Học viên: Trần Trường Phan  

 9 


Xây dựng FireWall trên nền tảng FPGA

ISO thì tầng vật lý có các chức năng cung cấp các phương tiện điện cơ, chức năng, thủ
tục để kích hoạt, duy trì và đình chỉ liên kết vật lý giữa các hệ thống.
Mức này đảm bảo các công việc sau:
- Biến đổi số liệu từ dạng song song(Byte/Word) sang dạng nối tiếp(Bit) và
ngược lại.
- Biến đổi và truyền số liệu dưới dạng bit trên kênh truyền vật lý cụ thể.
- Thích ứng về tính chất điện, tính chất cơ học giữa thiết bị cuối với môi trường
truyền dẫn(ví dụ: mức tín hiệu điện, ổ nối dây dẫn...).
1.1.2. Chồng giao thức TCP/IP
Các mạng máy tính hiện nay và đặc biệt là mạng Internet chủ yếu sử dụng chồng
giao thức TCP/IP như là giao thức chuẩn chung. Do đó việc tìm hiểu một cách sâu
sắc các giao thức trong chồng giao thức TCP/IP cũng như sự hoạt động của nó giúp
cho chúng ta thấy được mạng máy tính hoạt động như thế nào, có những đặc trưng,
những điểm yếu gì. Những kẻ tấn công đã lợi dụng những yếu điểm đó như thế nào
để thực hiện các cuộc tấn công của mình và chúng ta cần phải làm gì để đảm bảo
cho mạng máy tính của mình được an toàn trước những cuộc tấn công đó.

TCP/IP thực chất là một họ giao thức cùng làm việc với nhau để cung cấp
phương tiện truyền thông liên mạng. TCP/IP được phân thành 4 lớp và được so sánh
với các lớp tương đương trong mô hình tham chiếu hệ thống mở OSI giống như hình
sau:

Hình1.2 Các lớp trong chồng giao thức TCP/IP

Học viên: Trần Trường Phan  

 10 


Xây dựng FireWall trên nền tảng FPGA

Hình 1.3 Giao tiếp vật lý và logic giữa các lớp
Dữ liệu được đưa xuống từ lớp ứng dụng, sau đó tới lớp transport, tiếp theo tới
lớp Internet và cuối cùng là tới lớp network, mỗi giao thức thực hiện chức năng xử lý
luồng dữ liệu này bằng cách bao bọc các giao thức ở trên nó và đặt thêm một header
điều khiển của mình vào phía trước luồng dữ liệu. Hệ thống nhận dòng dữ liệu này
theo thứ tự ngược lại, các header được loại bỏ và dòng dữ liệu lại được gửi lên các
lớp trên. Sự mở rộng này cung cấp sự linh hoạt bởi vì các lớp trên không cần quan
tâm đến các công nghệ được sử dụng ở các lớp dưới.
1.1.3. Giao thức liên mạng IP
Internet Protocol(IP) là giao thức đầu tiên của mô hình OSI, nó cũng là một
phần của TCP/IP. Mặc dù trong giao thức IP có từ Internet, nhưng nó không chỉ
được sử dụng trên mạng Internet mà nó còn được sử dụng ở các mạng chuyên dụng
khác mà không liên quan gì đến Internet. IP định nghĩa một giao thức kiểu không kết
nối(Connectionless) có nghĩa là không cần có giai đoạn thiết lập trước khi truyền dữ
liệu. Đơn vị dữ liệu được dùng trong IP gọi là Datagram. IP là sự lựa chọn tốt nhất
cho bất cứ mạng nào kết nối thông tin theo kiểu từ máy tới máy. Mặc dù nó phải

cạnh tranh với các giao thức khác như IPX của mạng Novell NetWare trên các mạng
cục bộ vừa và nhỏ sử dụng NetWare như là hệ điều hành trên máy PC.
Nhiệm vụ chính của IP là đánh địa chỉ các gói dữ liệu của thông tin giữa các
máy tính và quản lý các quá trình xử lý các gói dữ liệu này. Giao thức IP có một định
nghĩa hình thức về cách bố trí các gói dữ liệu và khuôn dạng của phần Header chứa
Học viên: Trần Trường Phan  

 11 


Xây dựng FireWall trên nền tảng FPGA

các thông tin về các gói dữ liệu đó. IP đảm nhiệm việc định tuyến đường truyền để
xác định gói dữ liệu phải đi đến đâu và có khả năng điều chỉnh đường truyền trong
trường hợp gặp trục trặc.
Một mục đích quan trọng nữa của IP là làm việc với việc phân phối không tin
cậy gói dữ liệu. Sự không tin cậy trong trường hợp này có nghĩa là việc phân phối
gói dữ liệu không được đảm bảo, có thể do trể trên đường truyền, mất đường truyền,
bị sai hỏng trong quá trình phân chia hoặc lắp ráp lại các bảng thông báo. Nếu IP
không có chức năng điều khiển dữ liệu đáng tin cậy thì không thể nào đảm bảo được
các gói dữ liệu đến nơi nhận một cách chính xác.
IP không sử dụng mã kiểm tra cho toàn bộ gói dữ liệu mà nó chỉ sử dụng cho
thông tin ở phần Header của gói tin. Giao thức IP cho phép một gói dữ liệu có kích
thước tối đa là 65.535 byte, kích thước này là quá lớn để các mạng có thể xử lý
được, do đó phải có quá trình phân mảnh các gói dữ liệu để truyền và lắp ráp lại
thông tin tại trạm đích nếu cần thiết.
Khi gói dữ liệu đầu tiên được phân mảnh và gửi đến trạm đích, một bộ đếm
thời gian được khởi động ở lớp IP máy thu. Nếu bộ đếm thời gian này đã đạt đến
một giá trị định trước mà vẫn chưa nhận hết các gói dữ liệu cần thiết thì tất cả các
gói dữ liệu ðã nhận sẽ bị huỷ bỏ toàn bộ. Nhờ những thông tin trong phần Header

của gói IP mà máy nhận có thể nhận biết được thứ tự của các gói dữ liệu được gửi đi
như thế nào. Một hậu quả của quá trình phân mảnh thông tin là các gói dữ liệu được
phân mảnh đến chậm hơn một gói tin không bị phân mảnh, vì vậy phần lớn các ứng
dụng thường tránh kỹ thuật phân mảnh nếu có thể.
1.1.3.1. Cấu trúc Header của IP Datagram
IP được so sánh là phần cứng của mạng như là Ethernet, bởi về cơ bản nó
cùng dựa trên sự đóng gói thông tin. Khi Ethernet nhận được gói IP, nó đặt phần
Header của lớp Ethernet ở phía trước để tạo khung, quá trình như vậy được gọi là
encapsulation. Một trong những vấn đề khác nhau cơ bản giữa các phần Header của
IP và Ethernet là phần Header của Ethernet bao gồm cả địa chỉ vật lý của máy đích,
trong khi đó phần Header của IP chỉ mang địa chỉ IP. Sự chuyển đổi giữa hai địa chỉ
này được thực hiện bởi một giao thức gọi là ARP(Address Resolution Protocol).
IP sử dụng Datagram làm đơn vị di chuyển. Tất cả các giao thức và dịch vụ trong họ
giao thức TCP/IP đều phải đảm bảo yêu cầu kỹ thuật, tức là độ dài của phần Header
là 32 bits.

Học viên: Trần Trường Phan  

 12 


Xây dựng FireWall trên nền tảng FPGA

Hình 1.4 Cấu trúc IP Header
ý nghĩa các tham số:
- VER( Version Number): 4bit, chỉ version hiện hành của IP đang được sử
dụng. Hiện nay hầu hết các hệ thống đều đang sử dụng IPv4, mặc dù có một
vài hệ thống thử nghiệm IP Version 6. Đối với mạng Internet và hầu hết các
mạng LAN IPv6 vẫn chưa được sử dụng.
- IHL(Header Length): 4 bit, chỉ độ dài của phần đầu Header của gói dữ liệu,

tính bằng đơn vị WORD(1 WORD=32bit). Độ dài tối thiểu của phần Header
là 5 từ (20 bytes), độ dài tối đa của phần Header là 6 từ (24 bytes).
- Type of Service: 8 bit, chỉ đặc tả các tham số về dịch vụ, có dạng cụ thể như
sau:
0
1
2
3
4
5
6
7
Precedence

D

T

R

Reserved

Hình 1.5 Cấu trúc trường Type of Service
Trong đó:
o Precedence : 3 bit, chỉ thị quyền ưu tiên gửi Datagram:
111 - Network Control(Cao nhất)
011 - Flash
110 - Internetwork Control
010 - Immediate
101 - CRICTIC/ECP

001 - Priority
100 - Flash Overide
000 - Routine(thấp nhất)
o D(Delay): 1 bit, chỉ độ trể yêu cầu:
Nếu D=0 độ trể bình thường.
D=1 độ trể thấp.
o T(Throughtput): 1 bit, chỉ thông lượng yêu cầu:
Nếu T=0 thông lượng bình thường.
Học viên: Trần Trường Phan  

 13 


Xây dựng FireWall trên nền tảng FPGA

T=1 thông lượng cao.
o R(Reliability): 1 bit, chỉ độ tin cậy yêu cầu:
Nếu R=0 độ tin cậy bình thường.
R=1 độ tin cậy cao.
- Total Length(Datagram length): 16 bits, chỉ độ dài toàn bộ Datagram(tính
theo đơn vị byte).
- Identification: 16 bit, cùng với các tham số khác như Source Address,
Destication Address dùng để định danh duy nhất cho một Datagram trong
khoảng thời gian nó vẫn còn ở trên mạng.
Chú ý: Nếu một Datagram bị phân đoạn, thì mỗi đoạn có cùng một số nhận
dạng.
- Flags: 3 bit, liên quan đến sự phân đoạn(fragment) các Datagram, có dạng cụ
thể như sau.
0
1

2
0

DF

MF

Hình 1.6 Cấu trúc trường Flags
Trong đó:
o Bit 0:(Reserved): Chưa sử dụng, luôn lấy giá trị 0.
o Bit 1: (Defragment):
Nếu DF=0 có thể phân mảnh.
DF=1 không thể phân mảnh.
o Bit 2: MF=0 đây là segment cuối cùng của gói tin bị phân mảnh.
MF=1 Đây chưa phải là segment cuối.
- Fragment Offset: 13 bit, chỉ vị trí của đoạn (segment) ở trong Datagram, tính
theo đơn vị 64 bit, có nghĩa là mỗi đoạn(trừ đoạn cuối) phải chứa một vùng
dữ liệu có độ dài là bội số của 64 bit.
- Time To Live: 8 bits, qui định thời gian tồn tại (tính bằng giây) của Datagram
trong liên mạng để tránh tình trạng một Datagram bị quẩn trên mạng. Thời
gian này được cho bởi trạm gửi và được giảm đi một đơn vị khi Datagram đi
qua mỗi Router trên mạng.
- Protocol(Transport Protocol): 8 bit, chỉ ra giao thức tầng trên kết tiếp nó là
gì, TCP, UDP, ICMP, hoặc ARP...mà được cài đặt trên IP.
- Header Checksum: 16 bit, mã kiểm soát lỗi 16 bit theo phương pháp CRC
(Cyclic Redundancy Code) dùng để kiểm tra lỗi cho vùng Header của
Datagram.
Học viên: Trần Trường Phan  

 14 



Xây dựng FireWall trên nền tảng FPGA

-

Source Address: 32 bit, là địa chỉ trạm nguồn.
Destination Address: 32 bit, địa chỉ trạm đích.
Options: độ dài thay đổi, dùng để khai báo các options do người gửi yêu cầu.
Padding: độ dài thay đổi, là vùng đệm được dùng để đảm bảo độ dài của vùng
Header luôn là bội số của 32 bit.
Data: độ dài thay đổi, là vùng dùng để chứa dữ liệu, có độ dài là bội số của 8
bit và tối đa là 65535 byte.

1.1.3.2. Quá trình phân mảnh gói dữ liệu
Các gói số liệu IP phải được nhúng trong các khung số liệu của mức liên kết số
liệu tương ứng, trước khi chuyển tiếp trong mạng. Quá trình nhận một gói số liệu IP
diễn ra ngược lại.Ví dụ: Mạng Ethernet ở mức liên kết số liệu, khi gửi một gói IP
cho mức Ethernet, IP chuyển cho mức liên kết số liệu các thông số địa chỉ Ethernet
đích, kiểu khung Ethernet(0x0800) và cuối cùng là gói IP. Mức liên kết số liệu đặt
địa chỉ Ethernet nguồn là địa chỉ kết nối mạng của mình và tính toán giá trị tổng
kiểm tra (checksum). Trường type chỉ ra kiểu khung là 0x0800 đối với số liệu IP.
Mức liên kết số liệu sẽ chuyển khung số liệu theo thuật toán truy nhập Ethernet.
Một gói IP có độ dài tối đa 65535 byte, trong khi đó hầu hết các mức liên kết số
liệu chỉ hổ trợ các khung số liệu nhỏ hơn độ lớn tối đa của gói số liệu IP nhiều lần(ví
dụ độ lớn tối đa cảu một khung số liệu Ethernet là 1500byte). Vì vậy, cần thiết phải
có cơ chế phân mảnh khi phát và hợp nhất mảnh khi thu đối với gói số liệu IP.
Người ta định nghĩa độ dài tối đa của một gói số liệu liên kết là MTU (Maximum
Transmit Unit). Khi cần chuyển một gói số liệu IP có độ dài lớn hơn MTU của một
mạng cụ thể, người ta phải chia gói số liệu IP đó thành những gói IP nhỏ hơn, gọi

chung là mảng (fragment). Trong phần tiêu đề của gói số liệu IP có thông tin về phân
mảnh và xác định các mảnh có quan hệ phụ thuộc để hợp thành sau này. Ví dụ:
Ethernet chỉ hỗ trợ các khung có độ dài tối đa 1500 byte. Nếu muốn gửi một gói số
liệu IP gồm 2000 byte qua Ethernet, phải chia gói IP thành 2 gó nhỏ hơn, mỗi gói vừa
với giới hạn MTU của Ethernet.

Học viên: Trần Trường Phan  

 15 


Xây dựng FireWall trên nền tảng FPGA

Gói tin ban đầu:
Original
Packet

IP

04 05

00

2000

1 1

1 1

0


0 0 0

05

06

checksume

128.83.24.13
192.10.2.5
Data
1980 Byte

Các gói tin sau khi được phân mảnh:

Fragment One
04 05

Fragment Two

00

1 1

1 1

05

06


0

1500
0 0 0

checksum

04 05

00

520

1 1

1 1

1

05

06

Checksume

128.83.24.13

128.83.24.13


192.10.2.5

192.10.2.5

Data
1480 Byte

Data
500 Byte

0 0 0

Hình 1.7 Nguyên tắc phân mảnh gói số liệu IP
IP dùng cờ MF (3 bít thấp của trường Flags trong phần đầu gói IP) và trường
Fragment Offset của gói IP (đã bị phân đoạn ) để định danh gói IP đó là một phân
đoạn và vị trí của phân đoạn này trong gói IP gốc. Các gói dùng trong chuỗi phân
mảnh đều có trường này giống nhau. Cờ MF bằng không nếu là gói đầu của chuỗi
phân mảnh và 1 nếu là gói cuối phân mảnh.
Quá trình hợp nhất diễn ra ngược lại với quá trình phân mảnh. Khi IP nhận
được một gói phân mảnh, nó giữ phân mảnh đó trong vùng đệm, cho đến khi nhận
được hết các gói IP trong chuỗi phân mảnh có cùng trường định danh. Khi phân mảnh
đầu tiên được nhận, IP khởi động một bộ đếm thời gian (giá trị ngầm định là 15s). IP
Học viên: Trần Trường Phan  

 16 


Xây dựng FireWall trên nền tảng FPGA

phải nhận hết các phân mảnh kế tiếp trước khi đồng hồ tắt. Nếu không, IP phải huỷ tất

cả các phân mảnh trong hàng đợi hiện thời có cùng trường định danh.
Khi nhận được hết các phân mảnh, IP thực hiện hợp nhất các gói phân mảnh
thành gói IP gốc và sau đó xử lý gói số liệu này như một gói số liệu IP bình thường.
IP thường chỉ thực hiện hợp nhất các gói tại hệ thống đích nơi gói số liệu được
chuyển đến.
Trong quá trình truyền dữ liệu, một gói dữ liệu (Datagram) có thể được truyền qua
nhiều mạng khác nhau. Một gói dữ liệu nhận được từ một mạng nào đó có thể quá
lớn để truyền đi trong một gói đơn ở một mạng khác, bởi vậy mỗi loại cấu trúc mạng
cho phép một đơn vị truyền cực đại MTU (Maximum Tranmission Unit) khác nhau.
Hậu quả của việc phân mảnh dữ liệu là các gói tin bị phân mảnh sẽ đến đích
chậm hơn so với một gói không bị phân mảnh. Vì vậy phần lớn các ứng dụng đều
tránh không sử dụng kỹ thuật này nếu có thể. Vì sự phân mảnh tạo ra các gói dữ liệu
với các header riêng biệt nên quá trình xử lý sẽ làm giảm tính năng của mạng. Hơn
nữa vì IP là một giao thức không tin cậy nên bất kỳ một gói tin phân mảnh nào bị
mất thì tất cả các mảnh khác sẽ phải truyền lại. Chính vì lý do này nên phải gửi các
gói dữ liệu lớn nhất cho phép để không bị phân mảnh, giá trị này là Path MTU.
1.1.3.3. Phương pháp đánh địa chỉ trong TCP/IP
Để có thể thực hiện truyền tin giữa các node trên mạng, mỗi node trên mạng
TCP/IP cần phải có một địa chỉ xác định gọi là địa chỉ IP. Hiện nay mỗi địa chỉ IP
được tạo bởi một số 32 bits(IPv4) và được tách thành 4 vùng, mỗi vùng có một byte
có thể biểu thị dưới dạng nhị phân, thập phân, thập lục phân hoặc bát phân. Cách viết
phổ biến nhất là dùng cách viết dùng ký tự thập phân. Một địa chỉ IP khi đó sẽ được
biễu diễn bởi 4 số thập phân có giá trị từ 0 đến 255 và được phân cách nhau bởi dấu
chấm(.). Mỗi giá trị thập phân biểu diễn 8 bits trong địa chỉ IP. Mục đích của địa chỉ
IP là định danh duy nhất cho một host ở trên mạng.
IPv4 sử dụng 3 loại địa chỉ trong trường nguồn và đích đó là:
1. Unicast:Để thể hiện một địa chỉ đơn hướng. Địa chỉ đơn hướng là địa chỉ dùng để
nhận dạng từng nút một trên mạng. Cụ thể, nếu một gói dữ liệu được gửi tới một địa
chỉ đơn hướng sẽ được chuyển tới nút mang địa chỉ đơn hướng đó.
2.Multicast: Địa chỉ đa hướng. Là địa chỉ dùng để nhận dạng một tập hợp các nút

nhưng không phải là tất cả. Gói dữ liệu IP được gửi tới địa chỉ Multicast sẽ được gửi
tới tất cả các nút tham dự trong nhóm Multicast này. Kỹ thuật multicasting dựa trên
một nhóm địa chỉ lớp D từ 224.0.0.0 cho đến 239.255.255.255.
Học viên: Trần Trường Phan  

 17 


Xây dựng FireWall trên nền tảng FPGA

Một số địa chỉ trong khoảng này được dành riêng cho những mục đích đặc biệt cụ
thể:
Bảng 1.1 Các địa chỉ multicast dành riêng
Địa chỉ multicast

Sử dụng

224.0.0.0

Địa chỉ cơ sở(để dành)

224.0.0.1

Tất cả các máy trên subnet

224.0.0.2

Tất cả các bộ định tuyến trên subnet

224.0.1.1


Giao thức thời gian mạng (Network time)

224.0.0.9

Nhóm địa chỉ RIP version 2

224.0.1.24

Nhóm địa chỉ WINS server

3. Broadcast: Thể hiện tất cả các trạm trên mạng. Khi một gói IP được gửi đến địa
chỉ này thì tất cả các host trên mạng đều nhận được gói tin này.
Các địa chỉ IP được chia làm hai phần, một phần để xác định mạng(netid) và một
phần dùng để xác định host(hostid). Các lớp mạng được xác định bởi số bits dành
cho mỗi phần mạng và host. Có năm lớp mạng là A,B,C,D và E, trong đó ba lớp đầu
là được dùng cho mục đích thông thường và là ba lớp chính, còn hai lớp D và E được
dùng cho những mục đích đặc biệt và những mục đích khác trong tương lai.
Cấu trúc một địa chỉ IP có dạng như sau:
0
Class ID

31
Network IP

Host ID

Hình 1.8 Cấu trúc chung của một địa chỉ IP
Mỗi lớp địa chỉ được đặc trưng bởi một số bits đầu tiên của byte đầu tiên, cấu
trúc chi tiếp của địa chỉ IP các lớp là như sau:


Học viên: Trần Trường Phan  

 18 


Xây dựng FireWall trên nền tảng FPGA

0

7

15 16

0

Network ID

0

1

Network ID

1

1

0


Network ID

1

1

1

0

Multicast address

1

1

1

1

0

31

Host ID
Host ID
Host ID

Reserved for future use


Hình 1.9 Khuôn dạng địa chỉ các lớp IP
Từ cấu trúc phân lớp địa chỉ ta có thể nhận thấy rằng giá trị đầu tiên trong một địa
chỉ IP sẽ xác định địa chỉ IP đó thuộc lớp nào.
- Nhỏ hơn 128 là địa chỉ lớp A. Byte đầu tiên xác định địa chỉ mạng, ba Bytes
còn lại xác định địa chỉ các máy trạm. Lớp A là lớp có số mạng ít nhất(126
mạng), nhưng mỗi mạng lại có nhiều địa chỉ host nhất(224-2=16.777.214
host).
- Từ 128 đến 191 là địa chỉ lớp B. Hai Bytes đầu xác định địa chỉ mạng, hai
Bytes tiếp theo xác định địa chỉ các máy trạm. Lớp B là lớp có số mạng và số
host vừa phải(16.382 mạng) và (16.382 host).
- Từ 192 đến 223 là địa chỉ lớp C. Ba Bytes đầu xác định địa chỉ mạng, Byte
cuối xác định địa chỉ các máy trạm. Lớp C là lớp có nhiều mạng nhưng mỗi
mạng chỉ có thể có đến 254 host.
- Các địa chỉ có giá trị byte đầu lớn hơn 223 là các địa chỉ dùng để quảng bá
hoặc dùng dự trử cho các mục đích đặc biệt và ta có thể không cần quan tâm.
Trên mạng Internet, việc quản lý và phân phối địa chỉ IP là được thực hiện bởi
NIC(Network Information Center). Với sự bùng nổ của số lượng máy tính kết nối
vào mạng Internet, địa chỉ IP đã trở thành một tài nguyên cạn kiệt. Hiện nay người ta
đã xây dựng và đưa vào thử nghiệm giao thức IPv6, một giao thức có thể đáp ứng
được vấn đề này.
1.1.3.4. Định tuyến IP
Định tuyến IP dựa trên nguyên tắc đánh địa chỉ IP như sau:

Học viên: Trần Trường Phan  

 19 


Xây dựng FireWall trên nền tảng FPGA


-

Các trạm làm việc kết nối trong một mạng “vật lý” phải có cùng phần địa chỉ
mạng IP. Việc định tuyến IP đồng nghĩa với việc xác định đường tới mạng IP.
- Mỗi kết nối mạng phải có một địa chỉ mức liên kết xác định, ứng với một địa
chỉ mức liên kết có một địa chỉ IP và ngược lại.
Việc định tuyến IP dựa trên bảng định tuyến, được lưu trử tại mỗi trạm làm việc và
thiết bị định tuyến. Bảng định tuyến cho biết các số liệu sau:
- Địa chỉ mạng đích.
- Địa chỉ IP của thiết bị chuyển tiếp(Gateway).
- Cờ cho biết, đối với mỗi địa chỉ mạng đích có thể đạt tới trực tiếp qua kết nối
mạng vật lý hay phải qua thiết bị chuyển tiếp khác(Flag).
Căn cứ vào những nguyên tắc nêu trên, thuật toán định tuyến IP được môt tả như
sau:
- Giảm trường TTL của gói IP.
- Nếu TTL=0 thì:
o Huỷ gói
o Gửi thông điệp ICMP báo lỗi cho thiết bị gửi.
- Nếu địa chỉ đích là một trong các địa chỉ IP của các kết nối mạng trên hệ thống,
nghĩa là gói số liệu IP được gửi cho chính hệ thống này, thì xử lý gói số liệu IP tại
chổ.
- Xác định địa chỉ mạng đích bằng cách nhân logic(AND) mặt nạ
mạng(network mask) với địa chỉ IP đích.
- Nếu địa chỉ mạng đích không tìm thấy trong bảng định tuyến thì huỷ bỏ gói
số liệu này và gửi thông điệp ICMP báo lỗi “mạng đích không đến được” cho
thiết bị gửi.
- Nếu địa chỉ mạng đích bằng địa chỉ mạng của hệ thống, nghĩa là thiết bị đích
được kết nối trong cùng mạng với hệ thống thì tìm địa chỉ mức liên kết tương
ứng trong bảng thích ứng địa chỉ IP-MAC, nhúng gói tin trong gói số liệu
mức liên kết và chuyển tiếp gói số liệu đến đích.

- Trong trường hợp địa chỉ mạng đích không bằng địa chỉ mạng của hệ thống
thì chuyển tiếp đến thiết bị định tuyến cùng mạng.
1.1.4 . TCP và UDP
Giao thức Transmission Control Protocol(TCP) và User Datagram Protocol (UDP) là
hai giao thức cơ bản hoạt động ở tầng Transport của mô hình TCP.

Học viên: Trần Trường Phan  

 20 


Xây dựng FireWall trên nền tảng FPGA

1.1.4.1. Giao thức TCP
a. Cấu trúc TCP Header
TCP là một giao thức kiểu “có liên kết”(connection oriented), nghĩa là cần
phải thiết lập liên kết logic giữa một cặp thực thể TCP trước khi chúng trao đổi dữ
liệu với nhau. Đơn vị dữ liệu sử dụng trong TCP được gọi là segment(đoạn dữ liệu)
có khuôn dạng như hình sau:

Hình 1.10 Cấu trúc TCP Header
Trong đó:
- Source Port: 16 bits, là số hiệu cổng của trạm nguồn, dùng để định danh cho
người sử dụng TCP cục bộ(thường ứng dụng chương trình ở lớp trên).
- Destinarion Port: 16 bits, là số hiệu cổng của trạm đích. Số hiệu này là địa chỉ
thâm nhập dịch vụ lớp giao vận(CCISAP Address) cho biết dịch vụ mà TCP
cung cấp là dịch vụ gì. TCP có số lượng cổng trong khoảng 0-(216-1), tuy
nhiên các cổng nằm trong khoảng 0-1023 là được biết nhiều nhất vì nó được
sử dụng cho việc truy cập các dịch vụ tiêu chuẩn, ví dụ 23 là dịch vụ Telnet,
25 là dịch vụ Mail...

- Sequence Number: 32 bits, là số hiệu chỉ dẫn cho vị trí của khối trong toàn bộ
thông báo. Đây là số hiệu của Byte đầu tiên của Segment trừ khi bit SYN
được thiết lập. Nếu bit SYN được thiết lập thì Sequence Number là số hiệu
tuần tự khởi đầu(ISN) và Byte dữ liệu dầu tiên là ISN+1.
- Acknowledgement Number: 32 bits, là số hiệu chỉ dẫn của segment tiếp theo
mà trạm nguồn đang chờ để nhận. Ngầm ý báo đã nhận tốt các Segment mà
trạm đích đã gửi cho trạm nguồn.
- Data offset: 4 bits, là số lượng của từ 32 bits trong TCP header. Tham số này
được sử dụng để chỉ ra vị trí bắt đầu của vùng dữ liệu.

Học viên: Trần Trường Phan  

 21 


Xây dựng FireWall trên nền tảng FPGA

-

Reserved: 6 bits, dành để dùng trong tương lai. Các bit này phải được thiết lập
giá trị 0.
TCP Flags: Chứa các cờ nhằm điều khiển quá trình thiết lập kết nối và trao
đổi dữ liệu, các cờ có ý nghĩa như sau:
Bảng 1.2 Các cờ trong TCP header và ý nghĩa của nó
Flag

ý nghĩa

URG


Vùng con trỏ khẩn(Urgent Pointer) có hiệu lực

ACK

Trường Acknowledgement có hiệu lực

PSH

Yêu cầu gửi dữ liệu

RST

Khởi động lại(resets) kết nối

SYN

Đồng bộ các số thứ tự(Sequence Numbers)

FIN

Phía gửi đã kết thúc quá trình gửi dữ liệu

-

Window: 16 bit, được dùng để kiểm soát luồng dữ liệu.
Checksum: 16 bit, mã kiểm soát lỗi theo phýõng pháp CRC cho toàn bộ
segment (bao gồm cả phần header và phần dữ liệu).
b. Thiết lập và kết thúc kết nối TCP
Như ta đã biết, TCP là một giao thức kiểu có liên kết, tức là cần phải có giai
đoạn thiết lập một liên kết giữa một cặp thực thể TCP trước khi truyền dữ liệu và

huỷ bỏ liên kết khi không còn nhu cầu trao đổi dữ liệu nữa.
Để thiết lập một kết nối TCP, hai thực thể tham gia giao tiếp sẽ thực hiện một quá
trình bắt tay với nhau gọi là three-way hanshake. Mỗi gói tin trao đổi trong quá trình
bắt tay này chứa một số thứ tự, các số thứ tự này là duy nhất đối với một kết nối giữa
hai thực thể giao tiếp.

Hình 1.11 Thiết lập một kết nối TCP/IP
Các bước cho việc thiết lập một kết nối TCP giữa máy tính A(client) và máy tính
B(Server) diễn ra như sau:

Học viên: Trần Trường Phan  

 22 


Xây dựng FireWall trên nền tảng FPGA

-

Bước 1: A gửi một gói yêu cầu kết nối tới B, với bit SYN trong gói này được
đặt là 1. A nói với B rằng trường Sequence Number là hợp lệ và nên được
kiểm tra. Bên A thiết lập giá trị trường Sequence Number là số thứ tự khởi
đầu của nó.
- Bước 2: B đáp ứng lại bằng cách gửi một gói có bit SYN và ACK được bật
lên. Số thứ tự khởi đầu chính là số thứ tự khởi đầu của A cộng thêm 1.
- Bước 3: Bên A xác nhận số thứ tự khởi đầu của bên B bằng việc gửi một gói
có bit ACK được bật lên và số thứ tự của nó là số thứ tự khởi đầu của B cộng
thêm 1.
Sau khi bên B nhận được gói tin xác nhận ở bên A, một kết nối TCP được thiết lập
và hai bên bắt đầu có thể trao đổi dữ liệu cho nhau.

Khi một thực thể tham gia kết nối(ví dụ A) muốn huỷ bỏ một kết nối, nó sẽ gửi cho
phía bên kia một gói tin có cờ FIN được bật lên để thông báo nó không còn dữ liệu
để trao đổi nữa. Bên B lúc này vẫn có thể tiếp tục truyền dữ liệu nếu còn, và khi
không còn dữ liệu để trao đổi nữa thì B sẽ gửi một gói tin có cờ FIN được bật lên và
ACK bằng số thứ tự của A cộng thêm 1 để báo cho bên A biết là nó đã nhận được
gói tin yêu cầu kết thúc kết nối của bên A. Bên A nhận được gói tin này sẽ đáp trả lại
bằng một gói tin báo nhận có ACK bằng số thứ tự của B cộng thêm 1 và kết nối TCP
giữa hai thực thể sẽ chính thức bị huỷ bỏ.
c. Giao thức UDP
Giống như TCP, User Datagram Protocol(UDP) là một giao thức lớp
transport. Tuy nhiên UDP cung cấp dịch vụ kết nối không hướng liên
kết(connectionless) và không tin cậy.
Bảng 1.3 Cấu trúc của UDP Header
0
15
31
Source UDP port

Destination UDP port

Length

Checksum
Data

Bởi vì không có điều khiển luồng và không có quá trình bắt tay thiết lập kết
nối nên việc giao tiếp sử dụng giao thức UDP diễn ra rất nhanh. Tuy nhiên, cũng vì
vậy mà các gói UDP dễ dàng bị giả mạo và các ứng dụng rất dễ bị tấn công.

Học viên: Trần Trường Phan  


 23 


Xây dựng FireWall trên nền tảng FPGA

1.1.5. Giao thức điều khiển ICMP và ARP
1.1.5.1. Giao thức ICMP
ICMP là một giao thức điều khiển của mức IP, được dùng để trao đổi các
thông tin điều khiển dòng số liệu, thông báo lỗi và các thông tin trạng thái khác của
bộ giao thức TCP/IP. Ví dụ:
- Điều khiển lưu lượng(Flow Control): khi các gói số liệu đến quá nhanh, thiết
bị đích hoặc thiết bị định tuyến ở giữa sẽ gửi một thông điệp ICMP trở lại
thiết bị gửi, yêu cầu thiết bị gửi tạm thời ngừng việc gửi số liệu.
- Thông báo lỗi: trong trường hợp địa chỉ đích không tới được thì hệ thống sẽ
gửi một thông báo lỗi “Destination Unreachable”.
- Định hướng lại các tuyến đường: một thiết bị định tuyến sẽ gửi một thông
điệp ICMP định tuyến lại “Redirect Router” để thông báo với một trạm là nên
dùng thiết bị định tuyến khác để tới đích. Thông điệp này chỉ có thể dùng khi
trạm nguồn ở trên cùng một mạng với cả hai thiết bị định tuyến.
- Kiểm tra các trạm ở xa: một trạm có thể gửi một thông điệp ICMP “Echo” để
kiểm tra xem một trạm ở xa có hoạt động hay không.
Source
Host
(1)IP Diagram

R1

(3)ICMP Redirect
(2)IP Diagram

R1

Host

Hình1.12 Dịch vụ định tuyến lại (ICMP Redirect)
1.1.5.2 Giao thức phân giải địa chỉ ARP
ARP(Address Resolution Protocol) là giao thức được sử dụng để xác định
thích ứng địa chỉ mạng IP và địa chỉ mức liên kết số liệu(địa chỉ MAC).
Thông thường, mỗi hệ thống lưu giử và cập nhật bảng thích ứng địa chỉ IP-MAC tại
chổ(còn gọi là ARP cache). Bảng thích ứng địa chỉ được cập nhật bởi người quản trị
hệ thống hoặc tự động bởi giao thức ARP sau mỗi lần xác định được một thích ứng
địa chỉ mới. Cấu trúc gói số liệu ARP được mô tả trong hình sau đây.
Học viên: Trần Trường Phan  

 24 


×