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ì?
20 trang |
Chia sẻ: lylyngoc | Lượt xem: 2016 | Lượt tải: 1
Bạn đang xem nội dung tài liệu Lập trình mạng căn bản, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Lập Trình Mạng Căn Bản 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:
Nguyễn Xuân Toàn 09520312
Xây dựng DHCP Server
Nguyễn Anh Vũ 09520358
Xây dựng DHCP Server
Phạm Xuân Mạnh 09520422
Xây dựng DHCP Client và thiết kế giao diện. 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
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 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 I: KHẢO SÁT BÀI TOÁN
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.
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.
Lợi ích của việc sử dụng DHCP
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 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 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.
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
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.
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 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
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 3
Client 2
Hình 3.1.1. Mô hình thực nghiệm của chương trình mô phỏng
Thiết kế chương trình về mặt chức năng
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.
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...
3. Nhận gói tin DHCP ACK từ Server, chính thức dùng IP, Subnet Mac… do Server đó cung cấp.
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.
DHCP Client
DHCP Server
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
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
{
CloseConnection("Disconnected at user's request.");
}
}
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);
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];
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();
}
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 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 Serv