Tải bản đầy đủ (.doc) (20 trang)

Giáo trình lập trình mạng căn bản

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 (721.85 KB, 20 trang )

Lập Trình Mạng Căn Bản

1

MỞ ĐẦU
Ngày nay, cho dù là hệ thống mạng nhỏ, cỡ vừa và lớn thì mỗi máy tính đều sử
dụng địa chỉ IP động được cấp phát từ dịch vụ DHCP server.
Mạng nhỏ thì DHCP cấp IP động cho các máy trạm (làm việc trong môi trường
Workgroup) nằm ở các thiết bị mạng (Switch, Modem, Router, AP ...). Còn các
mạng lớn (mô hình mạng sẽ phức tạp hơn), các máy trạm nằm trong môi
trường Domain. Khi đó các nhà quản trị mạng họ dùng ngay dịch vụ DHCP
server có sẵn trên Windows Server 2003, 2008 để cấp phát IP động cho các
máy trạm trong hệ thống mạng thay vì sử dụng DHCP server tích hợp sẵn trong
các thiết bị mạng phần cứng. Vậy DHCP là gì? Nó có ưu điểm gì?
Dynamic Host Configuration Protocol (DHCP - giao thức cấu hình động máy
chủ) là một giao thức cấu hình tự động địa chỉ IP. Máy tính được cấu hình một
cách tự động vì thế sẽ giảm việc can thiệp vào hệ thống mạng. Nó cung cấp
một database trung tâm để theo dõi tất cả các máy tính trong hệ thống mạng.
Mục đích quan trọng nhất là tránh trường hợp hai máy tính khác nhau lại có
cùng địa chỉ IP.
Nếu không có DHCP, các máy có thể cấu hình IP thủ công. Ngoài việc cung
cấp địa chỉ IP, DHCP còn cung cấp thông tin cấu hình khác, cụ thể như DNS.
Hiện nay DHCP có 2 version: cho IPv4 và IPv6.
Nói một cách tổng quan hơn DHCP là dich vụ mang đến cho chúng ta nhiều lợi
điểm trong công tác quản trị và duy trì một mạng TCP/IP như:
+ Tập chung quản trị thông tin về cấu hình IP.
+ Cấu hình động các máy.
+ Cấu hình IP cho các máy một cách liền mạch
+ Sự linh hoạt
+ Khả năng mở rộng.
Nhiệm vụ của từng thành viên trong nhóm:


1. Nguyễn Xuân Toàn

09520312

- Xây dựng DHCP Server
2. Nguyễn Anh Vũ

-

Xây dựng DHCP Server

3. Phạm Xuân Mạnh

-

09520358

09520422

Xây dựng DHCP Client và thiết kế giao diện.

Chương Trình Mô Phỏng DHCP


Lập Trình Mạng Căn Bản

2

MỤC LỤC
Trang


Mở đầu.....................................................................................................................
1
Chương 1: Khảo sát bài toán .................................................................................
4
1.1.DHCP là gì ?......................................................................................................
4
1.2.DHCP làm việc như thế nào ? ..........................................................................
4
1.3.Lợi ích của việc sử dụng DHCP........................................................................
4
1.3.1. Quản lý TCP/IP tập trung............................................................................
5
1.3.2. Giảm gánh nặng cho các nhà quản trị hệ thống..........................................
5
1.3.3. Giúp hệ thống mạng luôn được duy trì ổn định..........................................
5
1.3.4. Linh hoạt và khả năng mở rộng...................................................................
5
Chương 2: Cơ sở lý thuyết......................................................................................
6
2.1. Địa chỉ IP động.................................................................................................
6
2.1.1. Địa chỉ IP động đặc biệt là gì ? ....................................................................
6
2.1.2. Cách thức cấp phát địa chỉ IP động.............................................................
6
2.2. Cấu hình phạm vi cấp phát của dịch vụ DHCP.............................................
6
2.2.1. Phạm vi cấp phát DHCP là gì ?....................................................................

6
2.2.2. Tại sao phải sử dụng phạm vi cấp phát DHCP ?........................................
6
Chương Trình Mô Phỏng DHCP


Lập Trình Mạng Căn Bản

3

2.3. Cấu hình địa chỉ DHCP giành sẵn (Reservations) và các tùy chọn của
DHCP.......................................................................................................................
6
2.3.1. Địa chỉ DHCP giành sẵn là gì ?....................................................................
6
2.3.2. Các thông tin của một địa chỉ DHCP giành sẵn..........................................
6
2.3.3. Tùy chọn DHCP là gì ?..................................................................................
6
2.3.4. Tại sao phải sử dụng tùy chọn DHCP ?.......................................................
7
2.3.5. Một số tùy chọn chung của DHCP...............................................................
7
2.4. Cấu hình DHCP - DHCP Relay Agent............................................................
7
2.4.1. DHCP relay agent là gì ?...............................................................................
7
2.4.2. Tại sao phải sử dụng DHCP relay agent ?...................................................
7
2.5. Phương thức hoạt động của dịch vụ DHCP....................................................

7
Chương 3: Phân tích thiết kế chương trình...........................................................
11
3.1. Mô hình thực nghiệm của chương trình mô phỏng chương trình
DHCP.......................................................................................................................
11
3.2. Thiết kế chương trình về mặt chức năng .......................................................
12
3.3. Thiết kế về mặt lập trình..................................................................................

Chương Trình Mô Phỏng DHCP


Lập Trình Mạng Căn Bản

4

Chương 4: Kết luận ................................................................................................
17
4.1. Các chức năng đã đạt được của chương trình ...............................................
17
4.2. Các vấn đề còn tồn tại .....................................................................................
17
Phụ lục I: Các hình ảnh sử dụng trong bài...........................................................
18
Phụ lục II: Tài liệu tham khảo...............................................................................
19

Chương Trình Mô Phỏng DHCP



Lập Trình Mạng Căn Bản

5

Chương I: KHẢO SÁT BÀI TOÁN
1.1. DHCP là gì?
 DHCP là viết tắt của Dynamic Host Configuration Protocol, là giao
thức Cấu hình Host Động được thiết kế làm giảm thời gian chỉnh cấu
hình cho mạng TCP/IP bằng cách tự động gán các địa chỉ IP cho khách
hàng khi họ vào mạng. Dich vụ DHCP là một thuận lới rất lớn đối với
người điều hành mạng. Nó làm yên tâm về các vấn đề cố hữu phát sinh
khi phải khai báo cấu hình thủ công. Nó bao gồm DHCP Server và
DHCP Client.

Hình 1.1. Mô hình DHCP


DHCP server là một máy chủ có cài đặt dịch vụ DHCP server. Nó
có chức năng quản lý sự cấp phát địa chỉ IP động và các dữ liệu cấu
hình TCP/IP. Ngoài ra còn có nhiệm vụ trả lời khi DHCP Client có
yêu cầu về hợp đồng thuê bao.

DHCP client là dịch vụ nằm cục bộ trên máy tính (kể cả máy trạm
và server). Nó dùng để đăng ký, cập nhật thông tin về địa chỉ IP và các
bản ghi DNS cho chính bản thân nó. DHCP client sẽ gửi yêu cầu đến
DHCP server khi nó cần đến 1 địa chỉ IP và các tham số TCP/IP cần
thiết để làm việc trong mạng nội bộ và trên Internet.
1.2. DHCP làm việc như thế nào?
 DHCP tự động quản lý các địa chỉ IP và loại bỏ được các lỗi có thể

làm mất liên lạc. Nó tự động gán lại các địa chỉ chưa được sử dụng và
cho thuê địa chỉ trong một khoảng thời gian.

Trình tự thuê Địa chỉ IP DHCP là một giao thức Internet có nguồn
gốc ở BOOTP (bootstrap protocol), được dùng để cấu hình các trạm
không đĩa. DHCP khai thác ưu điểm của giao thức truyền tin và các kỹ
thuật khai báo cấu hình được định nghĩa trong BOOTP, trong đó có khả
năng gán địa chỉ. Sự tương tự này cũng cho phép các bộ định tuyến hiện
nay chuyển tiếp các thông điệp BOOTP giữa các mạng con cũng có thể
chuyển tiếp các thông điệp DHCP. Vì thế, máy chủ DHCP có thể đánh
địa chỉ IP cho nhiều mạng con.
1.3.
Lợi ích của việc sử dụng DHCP
Chương Trình Mô Phỏng DHCP


Lập Trình Mạng Căn Bản

6

1.3.1. Quản lý TCP/IP tập trung
• Thay vì phải quản lý địa chỉ IP và các tham số TCP/IP khác vào
một cuốn sổ nào đó (đây là việc mà quản trị mạng phải làm khi cấu
hình TCP/IP bằng tay) thì DHCP server sẽ quản lý tập trung trên
giao diện của nó. Giúp các nhà quản trị vừa dễ quản lý, cấu hình,
khắc phục khi có lỗi xảy ra trên các máy trạm.
1.3.2. Giảm gánh nặng cho các nhà quản trị hệ thống
• Thứ nhất, trước đây các nhà quản trị mạng thường phải đánh cấu
hình IP bằng tay (gọi là IP tĩnh) nhưng nay nhờ có DHCP server nó
sẽ cấp IP một cách tự động cho các máy trạm. Nhất là trong môi

trường mạng lớn thì sự cần thiết và hữu ích của dịch vụ mạng này
mới thấy rõ ràng nhất.
• Thứ hai, trước đây với kiểu cấu hình bằng tay thì người dùng họ
có thể thay đổi IP. Có người thay đổi lung tung DNS server sau đó
quên không nhớ IP của DNS server là gì để đặt lại cho đúng lại với
quản trị mạng, có người đặt IP làm trùng với IP của người khác,
người khác lại đặt IP trùng với Defaul Gateway ... làm cho quản trị
mạng khốn khổ vì phải chỉnh sửa. Nhưng vấn đề này không có ở IP
động. Chỉ có người quản trị DHCP server họ mới có quyền làm
những việc trên.
1.3.3. Giúp hệ thống mạng luôn được duy trì ổn định
• Địa chỉ IP cấp phát động cho các máy trạm lấy từ dải IP cấu hình
sẵn trên DHCP server. Các tham số (DG, DNS server ...) cũng cấp
cho tất cả các máy trạm là chính xác. Sự trùng lặp IP không bao giờ
xảy ra. Các máy trạm luôn luôn có một cấu hình TCP/IP chuẩn. Làm
cho hệ thống hoạt động liên tục, vừa giảm gánh nặng cho người
quản trị vừa tăng hiệu quả làm việc cho user nói riêng và doanh
nghiệp nói chung.
1.3.4. Linh hoạt và khả năng mở rộng
• Người quản trị có thể thay đổi cấu hình IP một cách dễ dàng khi
cơ sở hạ tầng mạng thay đổi. Do đó làm tăng sự linh hoạt cho người
quản trị mạng. Ngoài ra DHCP phù hợp từ mạng nhỏ đến mạng lớn.
Nó có thể phục vụ 10 máy khách cho đến hàng ngàn máy khách.

Chương Trình Mô Phỏng DHCP


Lập Trình Mạng Căn Bản

7


Chương II: CƠ SỞ LÝ THUYẾT
2.1. Địa chỉ IP động
2.1.1. Địa chỉ IP động đặc biệt là gì ?
 Địa chỉ IP động đặc biệt (Automatic private IP Addressing) hay
APIPA là một dặc trưng của hệ điều hành Microsoft windows cho phép
gán một dải địa chỉ IP tự động trên các máy Client dải địa chỉ này có giá
trị trong khoảng từ: 169.254.0.0 đến 169.254.255.255. khi mà dịch vụ
DHCP server không được phép cấp phát IP cho các máy Client.
2.1.2. Cách thức cấp phát địa chỉ IP động
 Dịch vụ DHCP sẽ thiết lập Hợp đồng thuê địa chỉ IP và ra gạn hợp
đồng cho thuê địa chỉ IP nhằm cấp phát địa chỉ IP động cho các máy
Client.
2.2. Cấu hình phạm vi cấp phát của dịch vụ DHCP
2.2.1. Phạm vi cấp phát DHCP là gì ?
 Phạm vi cấp phát là dải địa chỉ IP hợp lệ được dùng để thuê hoặc gán
cho các máy Client trên cùng một Subnet. Ta cấu hình một pham vi cấp
phát trên DHCP Server để xác định dải địa chỉ IP mà các Server có thể
gán cho các máy Client.
2.2.2. Tại sao phải sử dụng phạm vi cấp phát DHCP ?
 Phạm vi cấp phát sẽ xác định xem những địa chỉ IP nào sẽ được phép
cấp phát cho các máy client.
2.3. Cấu hình địa chỉ DHCP giành sẵn (Reservations) và các tùy chọn của
DHCP
2.3.1. Địa chỉ DHCP giành sẵn là gì ?
 Địa chỉ IP dành sẵn là một dải địa chỉ IP được gán cố định. Nó là dải
địa chỉ IP được tạo ra trong một phạm vi (scope) dành riêng, dải địa chỉ
IP dành riêng này được dùng để gàn cho các máy Client (Chúng là các
địa chỉ IP tĩnh trong mạng được gán cho các máy client).
2.3.2. Các thông tin của một địa chỉ DHCP giành sẵn

 Reservation Name :Là tên được gán bởi nhà quản trị.
 IP Address : Là phạm vi dải địa chỉ IP được gán cho các máy Client.
 MAC Address: Là địa chỉ MAC của mỗi thiết bị mà bạn muốn dành
sẵn một địa chỉ IP cho nó.
 Description: Những mô tả do nhà quản trị đưa ra.
 Supported Type:Kiểu hỗ trợ này có thế là: DHCP dành sẵn, BOOTP
dành sẵn, hoặc cả hai.
2.3.3. Tùy chọn DHCP là gì ?
Các tùy chọn DHCP là các tham số cấu hình máy khách bổ sung mà
một máy chủ DHCP có thể gán khi phục vụ các máy khách DHCP.
2.3.4. Tại sao phải sử dụng tùy chọn DHCP ?
Các tùy chọn DHCP được cấu hình sử dụng bảng điều khiển DHCP
và có thể được áp dụng cho nhiều phạm vi và sự dành sẵn.Một tùy chọn
Chương Trình Mô Phỏng DHCP


Lập Trình Mạng Căn Bản

8

DHCP sẽ làm tăng thêm các chức năng cho hệ thống mạng. Các tùy
chọn DHCP cho phép bạn thêm dữ liệu cấu hình IP các client.
2.3.5. Một số tùy chọn chung của DHCP
 Router (Default Gateway): Địa chỉ của bất cứ cổng ra mặc định
(default gateway) hay bộ định tuyến (router) nào.
 DNS Domain Name: Tên miền DNS xác định miền mà máy
khách sẽ phụ thuộc. Máy khách có thể sử dụng thông tin này dể cập
nhật thông tin lên máy chủ DNS để các máy tính khác có thể tìm thấy
nó.
 DNS Servers: Địa chỉ của bất cứ máy chủ DNS nào mà máy

khách có thể sử dụng trong quá trình truyền thông.
 WINS Servers: Địa chỉ của bất cứ máy chủ WINS nào mà máy
khách có thể sử dụng trong quá trình truyền thông.
 WINS Node Type: Là một kiểu phương thức phân giải tên
NetBIOS mà các máy khách (Client) có thế sử dụng.
2.4. Cấu hình DHCP - DHCP Relay Agent
2.4.1. DHCP relay agent là gì ?
 DHCP relay agent là một máy tính hoặc một Router được cấu
hình để lắng nghe các thông điệp quảng bá DHCP/BOOTP từ DHCP
client, chuyển tiếp các thông điệp quảng bá từ một giao tiếp này đến
giao tiếp khác. và hướng chúng tới một hoặc nhiều máy chủ DHCP cụ
thể.
2.4.2. Tại sao phải sử dụng DHCP relay agent ?
 DHCP clients sử dụng một địa chỉ quảng bá (broadcast) để bảo
mật việc thuê một địa chỉ IP từ DFHCP server. Một Router thong
thường không thể thông qua một broadcast trừ khi nó được cấu hình
riêng biệt.
 Tiết kiệm được số địa chỉ IP thật ( Public IP)
 Phù hợp với các máy tính thường xuyên di chuyển giữa các lớp
mạng.
 Kết hợp với hệ thống mạng không dây ( Wireless) cung cấp tại
các điểm. Hotspot như: nhà ga, sân bay, khách sạn, trường học.
 Thuận tiện cho việc bổ xung các thiết bị mới vào lớp mạng.
2.5. Phương thức hoạt động của dịch vụ DHCP
 Bước 1: Khi máy Client khởi động, máy sẽ gửi broadcast gói tin DHCP
DISCOVER, yêu cầu một Server phục vụ mình. Gói tin này cũng chứa địa
chỉ MAC của client.

Chương Trình Mô Phỏng DHCP



Lập Trình Mạng Căn Bản

9

Hình 2.5.1. Mô phỏng quá trình Client gửi DHCP Discover cho Server
Nếu client không liên lạc được với DHCP Server thì sau 4 lần truy vấn
không thành công nó sẽ tự động phát sinh ra 1 địa chỉ IP riêng cho chính
mình nằm trong dãy 169.254.0.0 đến 169.254.255.255 dùng để liên lạc tạm
thời. Và client vẫn duy trì việc phát tín hiệu Broad cast sau mỗi 5 phút để
xin cấp IP từ DHCP Server.
 Bước 2: Các máy Server trên mạng khi nhận được yêu cầu đó. Nếu còn
khả năng cung cấp địa chỉ IP, đều gửi lại cho máy Client một gói tin DHCP
OFFER, đề nghị cho thuê một địa chỉ IP trong một khoảng thời gian nhất
định, kèm theo là một Subnet Mask và địa chỉ của Server.

Hình 2.5.2. Mô phỏng quá trình Server gửi lại DHCPOFFER cho client

Chương Trình Mô Phỏng DHCP


Lập Trình Mạng Căn Bản

10

Server sẽ không cấp phát đia chỉ IP vừa đề nghị cho client thuê trong suốt
thời gian thương thuyết.
 Bươc 3:Máy Client sẽ lựa chọn một trong những lời đề nghị
(DHCPOFFER)


Hình 2.5.3. Mô phỏng quá trình Client lựa chọn Server
và gửi broadcast lại gói tin DHCPREQUEST và chấp nhận lời đề nghị đó.

Hình 2.5.4. Mô phỏng quá trình Client gửi DHCPREQUEST cho Server
Điều này cho phép các lời đề nghị không được chấp nhận sẽ được các
Server rút lại và dùng để cấp phát cho các Client khác.
 Bước 4: Máy Server được Client chấp nhận sẽ gửi ngược lại một gói tin
DHCP ACK như một lời xác nhận, cho biết địa chỉ IP đó, Subnet Mask đó
và thời hạn cho sử dụng đó sẽ chính thức được áp dụng.
Chương Trình Mô Phỏng DHCP


Lập Trình Mạng Căn Bản

11

Hình 2.5.5. Mô phỏng quá trình Server gửi DHCPACK cho client
Ngoài ra server còn gửi kèm những thông tin bổ sung như địa chỉ Gateway
mặc định, địa chỉ DNS Server...

Hình 2.5.6. Mô phỏng quá trình Client nhận được IP mới từ Server
(Nhưng cũng có thể Server sẽ gửi gói tin DHCP NAK (Negative
Acknowledgment) nếu lời đề nghị lúc đầu không chính xác nữa hoặc thông
Chương Trình Mô Phỏng DHCP


Lập Trình Mạng Căn Bản

12


số IP đó đã có máy tính khác sử dụng. Và lúc này Client lại phải bắt đầu lại
quy trình xin cấp IP từ đầu)

CHƯƠNG III: PHÂN TÍCH THIẾT KẾ CHƯƠNG TRÌNH
3.1.

Mô hình thực nghiệm của chương trình mô phỏng chương trình
DHCP
- Hình dưới đây mô tả 3 client kết nối tới DHCP server

Client 1

Server DHCP

Client 2

Client 3

Hình 3.1.1. Mô hình thực nghiệm của chương trình mô phỏng
Chương Trình Mô Phỏng DHCP


Lập Trình Mạng Căn Bản

3.2.

13

Thiết kế chương trình về mặt chức năng


DHCP Client

1. Gửi broadcast
gói tin
DHCPDISCOVER
tới Server. Gói tin
này cũng chứa địa
chỉ MAC của
client.

2. Lựa chọn một trong
những lời đề nghị
(DHCP OFFER) và
gửi broadcast lại gói
tin DHCPREQUEST
cho biết nó chấp nhận
DHCPOFFER nào.

3. Nhận gói tin
DHCP ACK từ
Server, chính thức
dùng IP, Subnet
Mac… do Server đó
cung cấp.

Hình 3.2.1. Mô tả các chức năng của DHCP Client

DHCP Server

1. Sau khi nhận được gói tin

DHCP DISCOVER từ Client sẽ
gửi một gói tin DHCP OFFER
đến Client, đề nghị cho thuê một
địa chỉ IP trong một khoảng thời
gian nhất định, kèm theo là một
Subnet Mask và địa chỉ của
Server

2. Máy Server được Client chấp
nhận sẽ gửi ngược lại một gói tin
DHCP ACK như một lời xác nhận,
cho biết địa chỉ IP đó, Subnet
Mask đó và thời hạn cho sử dụng
đó sẽ chính thức được áp dụng.
Ngoài ra server còn gửi kèm những
thông tin bổ sung như địa chỉ
Gateway mặc định, địa chỉ DNS
Server...

Hình 3.2.2. Mô tả các chức năng của DHCP Server
Chương Trình Mô Phỏng DHCP


Lập Trình Mạng Căn Bản

3.3.

14

Thiết kế về mặt lập trình

- Đầu tiên bên Server DHCP sẽ bắt đầu lắng nghe khi click vào
button Listen:

private void btnlisten_Click(object sender, EventArgs e)
{
DHCPServer mainServer = new
DHCPServer(IPAddress.Any);
DHCPServer.StatusChanged += new
StatusChangedEventHandler(mainServer_StatusChanged);
mainServer.StartListening();
btnlisten.Text = "Listening";
lblStatus.Text = "Bắt đầu lắng nghe kết nối từ phía
Client...";
}

-

Sau đó bên Client DHCP sẽ kết nối tới Server DHCP để bắt đầu
gửi và nhận dữ liệu khi click vào button Connect
private void btnConnect_Click(object sender, EventArgs e)
{
if (Connected == false)
{
InitializeConnection();
}
else
{
request.");

CloseConnection("Disconnected at user's


}

}

-

Nó sẽ gọi hàm InitializeConnection() để kết nối tới Server, bắt
đầu nhận thông tin, gửi Hostname và Mac Address đến cho
Server
private void InitializeConnection()
{
tcpServer = new TcpClient();
tcpServer.Connect(IPAddress.Parse("192.168.1.33"),

8080);

Connected = true;
btnConnect.Text = "Disconnect";
swSender = new StreamWriter(tcpServer.GetStream());
NetworkInterface[] nics =
NetworkInterface.GetAllNetworkInterfaces();
PhysicalAddress mac = nics[0].GetPhysicalAddress();
UserName = Dns.GetHostName();
swSender.WriteLine(UserName);
swSender.WriteLine(mac);
swSender.Flush();
ReceiveMessages();
}


-

Server khởi tạo hàm DHCPDISCOVER để chứa thông tin từ
Client:

public static void DHCPdiscover(TcpClient tcpUser, string strUsername, string
Message)
{
DHCPServer.htUsers.Add(strUsername, tcpUser);

Chương Trình Mô Phỏng DHCP


Lập Trình Mạng Căn Bản

15

DHCPServer.htConnections.Add(tcpUser, strUsername);
DHCPoffer(htConnections[tcpUser] + Message);
}

-

Server gửi cho Clien gói tin DHCPOFFER chứa thông tin về IP
Address, Subnet Mask cho Client: (IP Adress sẽ được cho trong
khoảng từ 192.168.1.2 cho đến 192.168.1.255, Subnet Mask mặc
định sẽ là 255.255.255.0)
public static void DHCPoffer(string Message)
{
StreamWriter swSenderSender;

TcpClient[] tcpClients = new
TcpClient[DHCPServer.htUsers.Count];
DHCPServer.htUsers.Values.CopyTo(tcpClients, 0);
Random r = new Random();
byte[] b = new Byte[4];
b[0] = 192;
b[1] = 168;
b[2] = 1;
b[3] = Byte.Parse((r.Next(2, 255)).ToString());
IPAddress ip = new IPAddress(b);
byte[] d = new Byte[4];
d[0] = 255;
d[1] = 255;
d[2] = 255;
d[3] = 0;
IPAddress dg = new IPAddress(d);
e = new StatusChangedEventArgs(ip + " ");
OnStatusChanged(e);
e = new StatusChangedEventArgs(dg+ " ");
OnStatusChanged(e);
for (int i = 0; i < tcpClients.Length; i++)
{
try
{

if (Message.Trim() == "" || tcpClients[i] ==

null)

{


continue;
}
swSenderSender = new
StreamWriter(tcpClients[i].GetStream());
swSenderSender.WriteLine("DHCPoffer:");
swSenderSender.WriteLine(ip);
swSenderSender.WriteLine(dg);
swSenderSender.Flush();
swSenderSender = null;

}

}
catch
{
RemoveUser(tcpClients[i]);
}

}

Sau đó bên Client sẽ tiếp nhận gói tin DHCPOFFER:
public static void DHCPoffer(string Message)
{
StreamWriter swSenderSender;
TcpClient[] tcpClients = new TcpClient[DHCPServer.htUsers.Count];

Chương Trình Mô Phỏng DHCP



Lập Trình Mạng Căn Bản

16

DHCPServer.htUsers.Values.CopyTo(tcpClients, 0);
Random r = new Random();
byte[] b = new Byte[4];
b[0] = 192;
b[1] = 168;
b[2] = 1;
b[3] = Byte.Parse((r.Next(2, 255)).ToString());
IPAddress ip = new IPAddress(b);
byte[] d = new Byte[4];
d[0] = 255;
d[1] = 255;
d[2] = 255;
d[3] = 0;
IPAddress dg = new IPAddress(d);
e = new StatusChangedEventArgs(ip + " ");
OnStatusChanged(e);
e = new StatusChangedEventArgs(dg+ " ");
OnStatusChanged(e);
for (int i = 0; i < tcpClients.Length; i++)
{
try
{
if (Message.Trim() == "" || tcpClients[i] == null)
{
continue;
}

swSenderSender = new
StreamWriter(tcpClients[i].GetStream());
swSenderSender.WriteLine("DHCPoffer:");
swSenderSender.WriteLine(ip);
swSenderSender.WriteLine(dg);
swSenderSender.Flush();
swSenderSender = null;
}
catch
{
RemoveUser(tcpClients[i]);
}
}

}

-

Server gửi cho Client gói tin DHCPACK và Client nhận về gói
tin này, sau đó gán IP nhận được vào:

public void ganiptinh()
{
string chuoiganip = ("netsh interface ip set address
name=\"Local Area Connection\" static " + ip + " " + sm + " " +
dg);
ProcessStartInfo p = new ProcessStartInfo("cmd.exe",
"/c" + chuoiganip);
p.RedirectStandardOutput = true;
p.UseShellExecute = false;

p.CreateNoWindow = true;
Process pro = new Process();
pro.StartInfo = p;
pro.Start();
}

Chương Trình Mô Phỏng DHCP


Lập Trình Mạng Căn Bản

-

17

Khi tắt kết nối, Client sẽ gán lại IP động (trường hợp thử nghiệm
trên máy có nối mạng, sau khi tắt kết nối tới DHCP Server, sẽ tự
động gán IP động sẵn có của máy)

public void ganipdong()
{
string chuoiganip = ("netsh interface ip set address name=\"Local
Area Connection\" dhcp");
ProcessStartInfo p = new ProcessStartInfo("cmd.exe", "/c" +
chuoiganip);
p.RedirectStandardOutput = true;
p.UseShellExecute = false;
p.CreateNoWindow = true;
Process pro = new Process();
pro.StartInfo = p;

pro.Start();
}

-

Client đóng kết nối:

private void CloseConnection(string Reason)
{
Connected = false;
lblStatus.Text = "Đã ngắt kết nối tới Server DHCP!";
listView1.Items.Clear();
btnConnect.Text = "Connect";
swSender.Close();
srReceiver.Close();
tcpServer.Close();
ganipdong();
\

}

Trên đây chỉ là một số đoạn code trong chương trình lấy ra để minh họa một số
quá trình mô phỏng chương trình DHCP.

Chương Trình Mô Phỏng DHCP


Lập Trình Mạng Căn Bản

18


CHƯƠNG IV: KẾT LUẬN
4.1. Các chức năng đã đạt được của chương trình
 Trong thời gian qua, chúng em đã cố gắng tìm hiểu về các yêu
cầu của đề tài. Những phần chúng em đã làm được bao gồm việc
xây dựng các hàm tạo kết nối giữa Client và Server, cho phép Client
và Server gửi và nhận thông tin qua lại với nhau.
 Client có thể gửi thông tin về Hostname, Mac Address trong gói
DHCP REQUEST cho Server, và nhận về gói DHCP ACK bao gồm
các thông tin về IP Address, Subnet Mask, Defaul Gateway từ
Server sau đó gán những thông tin đó cho Client.
 Server nhận được Hostname, Mac Address từ Client, sau đó gửi
cho Client gói DHCP ACK bao gồm các thông tin Server cấp cho
Client như: IP Address, Subnet Mask, Defaul Gateway.

4.2. Các vấn đề còn tồn tại
 Bên cạnh những điều đạt được thì vẫn còn những tồn tại:
o Chưa quản lí được thời gian cho thuê IP của Server
giành cho Client.
o Chưa khắc phục được lỗi thử nghiệm trên một số máy
sau khi Client nhận được gói tin DHCP ACK thì nó
không được gán vào cho Client.
o Chưa broadcast được gói tin DHCP REQUEST từ
Client cho nhiều Server…..

Chương Trình Mô Phỏng DHCP


Lập Trình Mạng Căn Bản


19

PHỤ LỤC 1
CÁC HÌNH ẢNH SỬ DỤNG TRONG BÀI
Hình 1.1. Mô hình DHCP.....................................................................................................
Hình 2.5.1. Mô phỏng quá trình Client gửi DHCP Discover cho Server.......................
Hình 2.5.2. Mô phỏng quá trình Server gửi lại DHCPOFFER cho client.....................
Hình 2.5.3. Mô phỏng quá trình Client lựa chọn Server..................................................
Hình 2.5.4. Mô phỏng quá trình Client gửi DHCPREQUEST cho Server.....................
Hình 2.5.5. Mô phỏng quá trình Server gửi DHCPACK cho client................................
Hình 2.5.6. Mô phỏng quá trình Client nhận được IP mới từ Server.............................
Hình 3.1.1. Mô hình thực nghiệm của chương trình mô phỏng.......................................
Hình 3.2.1. Mô tả các chức năng của DHCP Client................................................................
Hình 3.2.2. Mô tả các chức năng của DHCP Server...............................................................

Chương Trình Mô Phỏng DHCP


Lập Trình Mạng Căn Bản

20

PHỤ LỤC 2
TÀI LIỆU THAM KHẢO
1.
2.
3.
4.
5.


Tài liệu học môn lập trình mạng do thầy Nhiệm cung cấp.

/> /> /> />6. />7. />p=forum_thread&forum=688&thread=2119#p0
8. />9. />10. />11. http://125.234.239.108/~phuocnt/TKQL%20MANG
%20LAN/BaiGiang/CH03_BOOTROM/mo%20hinh
%20DHCP.swf

Chương Trình Mô Phỏng DHCP



×