1. Trang chủ
  2. » Luận Văn - Báo Cáo

Báo cáo Đồ án lập trình mạng

22 0 0
Tài liệu được quét OCR, nội dung có thể không chính xác
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 22
Dung lượng 1,08 MB

Nội dung

Thông tin về một tên miền do PDS được phân cấp quản lý thì được lưu trữ tại đây và sau đó có thể được chuyên sang các Secondary DNS Server SDS.. DNS được khuyến nghị nên sử dụng ít nhấ

Trang 1

TRƯỜNG ĐHBK ĐÀ NẴNG KHOA CÔNG NGHỆ THÔNG TIN

00 beg BAO CAO DO AN

Trang 2

Báo cdo đóô án lập trình mạng

Để tài 24: Xây dựng chương trình giả lập dịch vụ DNS

I LOIMO DAU

Ngày nay, với sự phát triển của khoa học kỹ thuật, hàng loạt máy tính ra đời Tuy

nhiên, chúng sẽ không hoạt động hiệu quả nếu hoạt động độc lập với nhau Vì vậy, việc

kết nối các máy tính lại mới nhau là vô cùng quan trọng, không những tăng hiệu quá công việc mà còn giúp chúng ta có thê thông tin liên lạc với nhau đễ dàng hơn, tạo sự phát triển cho xã hội

“Lập trình mang’ ' là môn học giúp chúng ta nắm rõ cơ chế hoạt động cũng như cách thức đề kết nối các máy tính lại với nhau, đồng thời thực hiện việc trao đôi dữ liệu qua lại giữa nhiều máy “Đỗ án môn học Lập trình mạng” giúp sinh viên hiểu rõ hơn về

cách môn học cũng như đưa môn học ứng dụng vào thực tiễn

II GIOI THIEU VE DICH VU DNS

1 Máy chủ phân giải tên miền DNS là gì ?

Mỗi máy tính, thiết bị mạng tham gia vào mạng Internet đều giao tiếp với

nhau bằng địa chỉ IP (Internet Protocol) Dé thuận tiện cho việc sử dụng và dễ

nhớ ta dùng tên (Domain name) đề xác định thiết bị đó Hệ thống tên miền DNS

(Domain Name ŠSystem) được sử dụng để ánh xạ tên miền thành địa chỉ IP Vì

vậy, khi muốn liên hệ tới các máy, chúng chỉ cần sử dụng chuỗi ký tự dễ nhớ

(domain name) nhu: www.microsoft.com, www.ibm.com , thay vi st dụng địa chỉ IP là một dãy số đài khó nhớ

Trang 3

miền mà nó được phép quản lý Thông tin về một tên miền do PDS được phân

cấp quản lý thì được lưu trữ tại đây và sau đó có thể được chuyên sang các

Secondary DNS Server (SDS) Các tên miền do PDS quản lý thì được tạo, và sửa

đổi tại PDS và sau đó được cập nhật dén cac SDS

- Secondare DNS Server(SDS)

DNS được khuyến nghị nên sử dụng ít nhất là hai DNS server để lưu địa chỉ cho mỗi một vùng (zone) PDS quản lý các vùng và SDS được sử dụng đề lưu trữ dự phòng cho vùng, và cho cả PDS SDS không nhất thiết phải có những khuyến

khích hãy sử dụng SDS được phép quản lý tên miền nhưng dữ liệu về tên miền

không phải được tạo ra từ ŠDS mà được lấy về từ PDS

SDS có thể cung cấp các hoạt động ở chế độ không tải trên mạng Khi lượng

truy vẫn vùng tăng cao, PDS sẽ chuyên bớt tai sang SDS (qua trình này còn được

gọi là cân bằng tải), hoặc khi PDS bị sự cô thì SDS hoạt động thay thế cho đến

khi PDS hoạt động trở lại, SDS thường được sử dụng tại nơi gần với các máy

trạm (client) để có thể phục vụ cho các truy vấn một cách dễ dàng Tuy nhiên,

cài đặt SDS trên cùng một subnet hoặc dùng một kết nối với PDS là không nên

Điều đó sẽ là một giải pháp tốt đề dự phòng cho PDS, vì khi kết nối đến PDS bị hỏng thì cũng không ảnh hưởng gì tới đến SDS

Ngoài ra PDS luôn duy trì một lượng lớn đữ liệu và thường xuyên thay đôi hoặc thêm các địa chỉ mới vào các vùng Do đó, DNS server sử đụng một cơ chế cho phép chuyên các thông tin từ PDS sang SDS và lưu giữ trên đĩa Khi cần phục

hồi đữ liệu về các vùng, chúng ta có thê sử dụng giải pháp lấy toàn bộ hoặc chỉ lấy phần thay đổi

3 Chức năng của DNS

Mỗi Website có một tên ( là tên miền hay đường dẫn URL: Universal Resource Locator) và một địa chỉ IP Dia chỉ IP gồm 4 nhóm số cách nhau bằng dấu chấm

Trang 4

Báo cdo đóô án lập trình mạng

Khi mở một trình duyệt Web và nhập tên website, trình duyệt sẽ đến thăng

website mà không cần phải thông qua việc nhập địa chỉ IP của trang web Quá

trình "dịch" tên miền thành địa chỉ IP dé cho trình duyệt hiểu và truy cập được

vào website là công việc của một DNS server Các DNS trợ giúp qua lại với

nhau đề dịch địa chỉ "IP” thành "tên” và ngược lại Người sử dụng chỉ cần nhớ "tên"

không cân phải nhớ địa chỉ IP (địa chỉ IP là những con sô rât khó nhớ)

Nguyên tắc làm việc của DNS

Mỗi nhà cung cấp dịch vụ vận hành và duy trì DNS server riêng của mình, gồm các máy bên trong phần riêng của mỗi nhà cung cấp dịch vụ đó trong Internet

Tức là, nều một trình duyệt tìm kiếm địa chỉ của một website thì DNS server

phân giải tên website này phải là DNS server của chính tổ chức quản lý website

đó chứ không phải là của một tô chức (nhà cung cấp địch vụ) nào khác

INTERNIC ( Internet Network Information Center) chịu trách nhiệm theo đối các

tên miền và các DNS server tương ứng INTERNIC là một tô chức được thành

lap boi NFS (National Science Foundation), AT&T va Network Solution, chiu

trách nhiệm đăng ký các tên miễn của Internet INTERNIC chỉ có nhiệm vụ quản

lý tất cả các DNS server trên Internet chứ không có nhiệm vụ phân giải tên cho

từng địa chỉ

DNS co kha nang tra vấn các DNS server khác đề có được một cái tên đã được phân giải DNS server của mỗi tên miền thường có hai việc khác biệt Thứ nhất, chịu trách nhiệm phân giải tên từ các máy bên trong miền về các địa chỉ Internet,

cả bên trong lẫn bên ngoài miền nó quản lý Thứ hai, chúng trả lời các DNS

server bên ngoài đang có gắng phân giải những cái tên bên trong miền nó quản

lý - DNS server có khả năng ghi nhớ lại những tên vừa phân giải Đề dùng cho những yêu cầu phân giải lần sau Số lượng những tên phân giải được lưu lại tùy thuộc vào quy mô của từng DNS

Trang 5

HH XAY DUNG CHUONG TRINH MO PHONG DICH VU DNS

Phuong phap trién khai dé tai

* Tim hiéu m6 hinh mang client/server, m6 hinh OSI va TCP/IP dé nam ving

kiến thức cơ bản về mạng máy tính

« _ Tìm hiều một số giao thức trong họ UDP biết thêm về cách thức lập trình và tô chức thành phân

« _ Tìm hiều thêm về kỹ thuật lập trình với datagramsocket sau đó ứng dụng vào

Thực hiện nhập một chuỗi là một domain name hoặc IP address Dong gói chuỗi

đã nhập vào một đôi tượng theo giao thức UDP gửi lên server, nhận đôi tượng đáp ứng trả về từ server phân tích và hiện thị kết quả

mà nó quản lý Server 3 là máy chủ mức cao nhất, có khả năng trả đáp ứng cho bất

cứ truy vấn nào tới nó

2 Cấu trúc dữ liệu

Toàn bộ mã của chương trình được chứa trong 3 gói sau:

a) Object Package

Chứa các lớp

© public DataBase (String dbname) throws ClassNotFoundException

Kết ni tới cơ sở dữ liệu có tên đbname

© public String search ( String txt)

Tìm kiếm domain hoac ip cho cac yéu cau từ máy tram

© public void insert (String ip, String domain)

Chèn thêm một hàng mới vào cơ sở dữ liệu với id tự cấp phat

và isBanned = false

© public void updateCheckbox (int id, Boolean vch)

Trang 6

Báo cdo đóô án lập trình mạng

public static final int SUCCESS =0;

public static final int REQUEST = 1;

public static final int FORWARD = 2;

public static final int ERROR = 3;

© Chua cac truong

private int type;

private String respond;

private String request;

private String notice;

© Cac phuong thitc get va set cho các trường

Lớp này chứa cài đặt cho một đối tượng phục vụ truyền tải thông tin

b) DNSClient Package

Lớp chứa các khai báo cho giao diện bên phía máy khách

Lớp chứa cài đặt cho một máy khách gồm các phương thức sau:

o public DNSChent()

Là constructor của lớp ClientGUI, nó tạo ra một đối tượng giao diện mới và

datagramsocket dé gin và nhan dir ligu trén client dong thoi dat timeout

© public void active ():

Thực hiện nhận chuỗi ký tự người dung cung cấp, đóng gói thành thông điệp, và gửi đến server

Trang 7

c) DNSServer Package

Lớp chứa các khai báo cho giao diện DNS Server, hiển thị bảng tên miền và địa

chỉ tương ứng, các quá trình diễn ra trên server và cho phép câm một địa chỉ

Lớp này chứa cài đặt cho một máy chủ với các phương thức:

© public ServerDNS (String dataname,int svport)

La constructor cua lớp, nơi tạo giao diện, kết nôi cơ sở dữ liệu và mở

datagramsocket dé doc ghi dữ liệu

© public void active (): kich hoat dich vu ( lang nghe, xu ly va dap img )

© public void sendMessage (Message fmsend, InetAddress fdes, int fdesport) Phuong thirc nay dong goi fmsend vao datagrampacket va gtr đối tượng từ server đên địa fdes trên công fdesport

© public void setProperty (InetAddress upsvadd,int upsvport, boolean mainsv)

Phương thức đề thiết đặt các thuộc tính cho server gồm: địa chỉ và số công

của server cấp trên, nó có phải mainserver

tạo ra 3 đối tượng DNSSecrver, thiết đặt các thuộc tính cho nó và khởi chạy

Trang 8

Báo cdo đóô án lập trình mạng

Nhận thông điệp gửi

tin tỚi máy trạm

Trang 9

Đã gửi yêu cau lén server MrKing/192.168.242.1 trên công 3333

Đã chuyễn lên server MrKing/192.168.242.1 trên công 5555

Đã chuyễn lên server MrKing/192 188.242 1 trên cong 7777

Trang 10

Báo cdo đóô án lập trình mạng

Đã gửi gói tin tới MrKing/192.188.242.1 trên công 5555

Đã chuyến lên server MirlKing/192 188.242 1 trên cổng 7777

Đã gửi gói tin tới /192.168.242.1 trên cỗng 53961

Trang 11

® Server 2

IP DOMAIN 165.465.80.89 www.facebook.com 74.125.128.106

184.105.178.85 209.37.248.24

nhan yéu tir /192.168.242.1 trén 3333

kiếm trong cơ sở dữ liệu

tìm

gửi gói tin tới MrKing/192.188.242.1 trên cỗng 7777

nhân được địa chỉ ip !

Trang 12

Báo cdo đóô án lập trình mạng

IP DOMAIN 208.65.153.238 www.youtube.com 74.125.128.106 Wwww.apache.com 209.37.248.24 www.galaxy.com

Đã nhận yêu cầu từ /192.168.242 1 trên 5555

Tìm kiếm trong cơ sở dữ liệu

Đã gửi gói tin tới /192.188.242.1 trên céng 5555

IV KET LUAN VA HUONG PHAT TRIEN

1) Những két quả đạt được

- Nắm vimg duoc ky thuat lap trinh Client/Server

- Hiểu rõ hơn về giao thức UDP và cách thức hoạt động của nó

2) Những vấn đề tồn tại

- Giao diện chương trình chưa đẹp mắt

- Các thức hoạt động còn khá đơn giản

3) Hướng phát triển

- Khắc phục những vấn đề tồn tại giúp chương trình hoạt động hiệu quả hơn

Trang 13

import javax.swing.table DefaultTableModel:;

public class DataBase

String url = "jdbc:odbe:"+ dbname;

Connection con = DriverManager.getConnection(url);

ResultSet rset = stmt.executeQuery(query);

while (rset.next()) ip= rset getString(2);

catch( Exception e) { e.printStackTraceQ); } return null;

}

public void insert (String ip, String domain)

Trang 14

Báo cdo đóô án lập trình mạng

int autoid = 1 id;

try

{

ResultSet rset = stmt.executeQuery("SELECT ID FROM DATA"); while (rset.next())

id= rset getInt("ID");

if(autoid == id) autoid++;

sing query = String format ("INSERT INTO DATA (ID, IP, DOMAIN,isBANNED) VALUES (%d,'%s','%#',false)",autoid,ip,domain);

private static final long serialVersionUID = IL;

public static final int SUCCESS =0;

public static final int REQUEST = 1;

public static final int FORWARD = 2;

public static final int ERROR = 3;

private int type;

private String respond;

private String request;

private String notice;

public void setType (int type)

Trang 15

public void setNotice (String notice)

this notice = notice;

import java.sql ResultS etMetaData;

import java.util Vector;

import Object DataBase;

import javax.swing.JLabel;

import javax.swing.JScrollPane;

import javax.swing.JTable;

import javax.swing.event TableModelEvent;

import javax.swing.event TableModelListener;

Trang 16

Báo cdo đóô án lập trình mạng

JScrollPane scrollPane = new JScrollPane(table);

add(scrollPane, BorderLayout CENTER);

//South Center

console = new TextArea();

console setEditable(false);

add(console,BorderLayout SOUTH);

addWindowListener(new Window Adapter()

public void windowClosing(WindowEvent e) { System.exit(0); }

}}

setResizable(false);

setVisible(true);

}

public void fillTable

Vector rowdata = new Vector();

final Vector<String> colName = new Vector<String>();

¿

String query= "SELECT * FROM DATA";

ResultSet rset = svdata stmt.executeQuery(query);

ResultSetMetaData datalnfor = rset getMetaData();

for (int i = 1; i <= dataInfor.getColumnCount(); i++)

colName.add(datalnfor.getColumnName(i));

while (rset.next()) Vector coldata = new Vector();

coldata.add (rset getInt (1));

coldata.add (rset getString (2));

coldata.add (rset getString (3));

coldata.add (rset getBoolean(4));

rowdata.add (coldata);

table.setModel(new DefaultTableModel(rowdata,colName) private static final long serial VersionUID =1L;

public String getColumnNamecint column) { return colName.get(column);

Class[] types = new Class []

{ Integer.class, String.class,

String.class, Boolean.class};

boolean[] canEdit = new boolean []

{ false, false, false, true };

public Class getColumnClass(int columnIndex) { return types [columnIndex];

Trang 17

public boolean isCellEditable(int rowIndex

, int columnIndex) {

return canEdit [columnIndex];

tab p getColumnModel().getColumn(0) setPreferredWidth( 10);

table getColumnModel().getColumn(3) setPreferredWidth( 10);

DefaultTableCellRenderer centerRenderer = new DefaultTableCellRenderer(); centerRenderer.setHorizontalAlignment( JLabel.CENTER );

table setDefaultRenderer(String class, centerRenderer);

table setDefaultRenderer(Integer.class, centerRenderer);

table getModel().addTableModelL istener(this);

catch (Exception e) { e.printStackTrace(); }

}

public void writeConsole(String txt)

console.append("\n"+txt);

}

public void tableChanged(TableModelEvent e)

int row = e.getFirstRowQ);

int column = e.getColumn(Q;

TableModel model = (TableModel)e.getS ource();

String columnName = model.getColumnName(column);

int id = (int) model getValueAt(row, 0);

Boolean vch = (Boolean) model.getValueAt(row, column);

import java.net DatagramPacket;

import java.net DatagramSocket;

Ngày đăng: 20/12/2024, 16:25