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

Đồ án chương trình mô tả hoạt động hệ thống phân giải tên miền domain name system

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 (621.45 KB, 26 trang )

Trang 1

Trường Đại Học Kĩ thuật Công Nghệ TP HCM
Khoa Công Nghệ Thông Tin



BÁO CÁO ĐỒ ÁN

CHƯƠNG TRÌNH MÔ TẢ HOẠT ĐỘNG HỆ THỐNG
PHÂN GIẢI TÊN MIỀN
DOMAIN NAME SYSTEM – DNS

Chương 1: Giới thiệu

Chương 2: Domain Name System
Chương 3: Sơ đồ hoạt động
Chương 4: Code cụ thể của chương trình DNS client và chương
trình DNS server


Nhóm sinh viên thực hiện :
Sinh viên: Nguyễn An Cương
Mã số sinh viên: 0851020008
Sinh viên: Trần Minh Tân
Mã số sinh viên: 0851020179
Sinh viên: Nguyễn Văn Thành
Mã số sinh viên: 0851020187

Trang 2



Mục lục
Chương 1: Giới thiệu 1

Chương 2: Domain Name System (DNS) 2

2.1 Khái Niệm DNS: 2

2.2 Chức năng của DNS 2

2.3 Các thành phần của DNS 3

2.4 Nguyên tắc hoạt động của chương trình : 4

2.4.1 Mô hình nguyên tắt hoạt động: 5

Chương 3: Sơ đồ hoạt động 7

3.1 Sơ đồ hoạt động của DNS server 7

3.2 Sơ đồ hoạt động của DNS client 7

Chương 4: Code cụ thể của chương trình DNS client và chương trình DNS server 8

4.1 Chương trình DNS client: 8

4.2 Chương trình DNS server: gồm có 4 lớp: lớp Connection, lớp Main, lớp
ServerThreadDns, lớp ResolveDNS: 13

4.2.1 Lớp dùng để kết nối tới cơ sở dữ liệu: 13


4.2.2

Lớp Main: lớp chính trong chương trình: 14

4.2.3 Lớp ServerThreadDns: lớp xem cần phân giải IP hay phân giải Domain: . 16

4.2.4 Lớp ResolveDNS: lớp phân giải IP hay Domain , và cập nhật dữ liệu vào
cơ sở dữ liệu: 18











Trang 1

Chương 1: Giới thiệu
Mỗi máy tính trong mạng muốn liên lạc hay trao đổi thông tin, dữ liệu cho nhau
cần phải biết rõ địa chỉ IP của nhau. Nếu số lượng máy tính trong mạng nhiều thì việc
nhớ những IP này là rất khó khăn.
Mỗi máy tính ngoài địa chỉ IP ra còn có tên máy (host name). Đối với con người
thì việc nhớ tên máy bao giờ cũng dễ nhớ hơn địa chỉ IP vì chúng có tính trực quang và
gợi nhớ hơn. Do đó người ta tìm cách ánh xạ địa chỉ IP thành tên máy.
Vì thế dịch vụ DNS ra đời, và người thiết kế cấu trúc của dịch vụ DNS là Paul

Mockapetris – USC’s Information Sciences Institute và các kiến nghị RFC của DNS là
RFC 882 và 883, sau đó là RFC 1034 và 1035 cùng với 1 số RFC bổ xung như bảo mật
trên hệ thống DNS, cập nhật các record của DNS.
Hệ thống phân giải tên miền có vai trò rất quan trọng trong môi trường mạng. Bởi
vì nếu không có hệ thống phân giải tên miền thì mạng Internet sẽ rất mau chóng “ chết ”,
vì lý do là con người không thế nhớ hết những địa chỉ ip của website mà họ muốn truy
cập, cái mà con người dễ nhớ hơn địa chỉ ip là tên của website , tức là tên miền của
website đó.
Giả sử như địa chỉ ip của một website www.abcdef.com nào đó là
123.123.123.123. Trong trường hợp không có hệ thống phân giải tên miền thì khi người
dùng muốn truy cập vào website www.abcdef.com thì họ phải đánh địa chỉ ip
123.123.123.123 vào trình duyệt, thế nhưng nếu người quản lý website này di chuyển
server của website đến một nơi khác thì họ sẽ có một địa chỉ ip mới 11.11.11.11 cho
website của họ, lúc này người dùng đánh địa chỉ ip 123.123.123.123 để truy cập vào
www.abcdef.com sẽ không thể được, họ sẽ phải đánh địa chỉ 11.11.11.11 mới có thế truy
cập được trang www.abcedef.com. Và nếu liên tục di chuyển server website nhiều lần
như vậy thì người dùng sẽ cảm thấy không thoải mái vì phải nhớ nhiều địa chỉ ip của
cùng một trang web, và cảm thấy khó khăn khi mỗi lần truy cập vào website
www.abcdef.com là đánh một địa chỉ ip mới nên trang web này có thể sẽ không thu hút
được khách hàng và sẽ không tồn tại được lâu. Tương tự như vậy cho nhiều website khác
thì dể dàng thấy được rằng sẽ không có nhiều lượt người truy cập vào website và website
không thể tồn tại khi không thu hút được khách hàng. Dần dần sẽ không còn ai truy cập
vào bất cứ website nào, không còn website nào tồn tại, các dịch khác như mail, ftp…
cũng sẽ tương tự, sẽ “ chết ”.
Nhưng nếu có hệ thống phân giải tên miền thì việc người dùng truy cập vào
website sẽ rất dễ dàng, vì họ không cần biết địa chỉ ip của website đó dù địa chỉ ip của
website thay đổi liên tục họ chỉ cần nhớ tên miền của website, tương tự cho các dịch vụ
như mail, ftp….



Trang 2

Chương 2: Domain Name System (DNS)
2.1 Khái Niệm DNS:

D
NS là từ
viết tắt của Domain Name System, là hệ thống tên miền được phát minh
vào năm 1984 cho Internet, chỉ một hệ thống cho phép thiết lập tương ứng giữa địa chỉ ip
và tên miền. Hệ thống tên miền (DNS) là một hệ thống đặt tên theo thứ tự cho máy vi
tính, dịch vụ, hoặc bất kì nguồn lực tham gia vào Internet. Nó liên kết nhiều thông tin đa
dạng với tên miền được gán cho những người tham gia. Quan trọng nhất là, nó chuyển
tên miền có ý nghĩa cho con người vào số định danh (nhị phân), liên kết với các trang
thiết bị mạng cho các mục đích định vị và địa chỉ hóa các thiết bị khắp thế giới.
Hệ thống tên miền giúp cho nó có thể chỉ định tên miền cho các nhóm người sử
dụng Internet trong một cách có ý nghĩa, độc lập với mỗi địa điểm của người sử dụng.
Bởi vì điều này, World-Wide Web (www) siêu liên kết và trao đổi thông tin trên Internet
có thể duy trì ổn định và cố định ngay cả khi định tuyến dòng Internet thay đổi hoặc
những người tham gia sử dụng một thiết bị di động. Tên miền internet dễ nhớ hơn các địa
chỉ IP như là 208.77.188.166 (IPv4) hoặc 2001: db8: 1f70:: 999: de8: 7648:6 e8 (IPv6).
Hệ thống tên miền phân phối trách nhiệm gán tên miền và lập bản đồ những tên
tới địa chỉ IP bằng cách định rõ những máy chủ có thẩm quyền cho mỗi tên miền.

Trên
thế giới có khoảng 13 DNS root Server. DNS root server quản lý tất cả các tên miền Top
level. Các tên miền này như là: .com, .org, .vn,.net, Khi có một yêu cầu phân giải một
Domain Name thành một địa chỉ IP, máy khách sẽ gửi yêu cầu tới DNS gần nhất(DNS
ISP). DNS ISP sẽ kết nối tới DNS root Server để hỏi địa chỉ của một Domain Name.
DNS root Server sẽ căn cứ vào những Top Level của một Domain Name mà từ đó có
những hướng dẫn thích hợp nhằm chuyển hướng cho máy khách đến đúng địa chỉ nó cần

truy vấn.
Những máy chủ có tên thẩm quyền được phân công chịu trách nhiệm đối với tên
miền riêng của họ, và lần lượt có thể chỉ định tên máy chủ khác độc quyền của họ cho các
tên miền phụ. Kỹ thuật này đã thực hiện các cơ chế phân phối DNS, chịu đựng lỗi, và
giúp tránh sự cần thiết cho một trung tâm đơn lẻ để đăng kí được tư vấn và liên tục cập
nhật.
Nhìn chung, hệ thống tên miền cũng lưu trữ các loại thông tin khác, chẳng hạn
như danh sách các máy chủ email mà chấp nhận thư điện tử cho một tên miền Internet.
Bằng cách cung cấp cho một thế giới rộng lớn, phân phối từ khóa – cơ sở của dịch vụ đổi
hướng , Hệ thống tên miền là một thành phần thiết yếu cho các chức năng của Internet.
Các định dạng khác như các thẻ RFID, mã số UPC, kí tự Quốc tế trong địa chỉ email và
tên máy chủ, và một loạt các định dạng khác có thể có khả năng sử dụng DNS.
2.2 Chức năng của DNS
Mỗi Website có một hostname (là tên miền) và một địa chỉ IP. Địa chỉ IP gồm 4
nhóm số cách nhau bằng dấu chấm(IPv4). Khi người dùng mở một trình duyệt Web và
Trang 3

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 để 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 "hostname" và ngược lại. Vì vậy người
sử dụng chỉ cần nhớ tên, không cần phải nhớ địa chỉ IP.
2.3 Các thành phần của DNS
Các thành phần của DNS:

 DNS Domain Name Space:
m
ỗi DNS domain sẽ có một tên duy nhất. Hệ thống
DNS là hệ thống có cấu trúc phân tầng có cấp bậc cụ thể. Gốc của domain (root
domain) nằm trên cùng, sau và được ký hiệu là dấu "." bao gồm 13 máy chủ gốc

của Internet thế giới, tiếp đến là Top-Layer, bao gồm các tên miền .com, .vn,
.net tầng này mỗi tên miền bao gồm từ 2 đến 5 ký tự, riêng tên miền 2 ký tự
dành riêng cho mỗi quốc gia. Tiếp đến là tầng Second-Level, có thể là tầng
subdomains như .com.vn hay có thể là host name như micrsosoft.com.

 Zones: một vấn đề quan trọng khác của DNS đó là Zone. Trong hệ thống DNS,
người ta chia nhỏ thành những phần để gán những quản lý riêng,vì vậy cần phải
chia ra các Zone để đảm bảo việc quản lý DNS một cách dễ dàng hơn - nói cách
khác khi một hệ thống tên miền được chia ra các phần nhỏ hơn để dễ quản lý đó là
các Zone.
Và trên thực tế dữ liệu DNS được chứa trên các máy chủ Zone, dữ liệu của
DNS là dữ liệu của các Zone.
Trong DNS khi tạo ra một Zone mới thì sẽ có 3 sự lựa chọn là:
 Primary Zone: máy chủ chứa dữ liệu Primary Zone là máy chủ có thể
toàn quyền trong việc update dữ liệu Zone.
 Secondary Zone: là 1 bản copy của Primary Zone, do nó chứa dữ liệu
Zone nên cung cấp khả năng phân giải cho các máy có yêu cầu. Muốn
cập nhật dữ liệu Zone phải đồng bộ với máy chủ Primary.
 Stub Zone: dữ liệu của Stub Zone chỉ bao gồm dữ liệu NS Record trên
máy chủ Primary Zone mà thôi, với việc chứa dữ liệu NS máy chủ Stub
Zone có vai trò chuyển các yêu cầu dữ liệu của một Zone nào đó đến
trực tiếp máy chủ có thẩm quyền của Zone đó.
Trong Forward Lookup có thể sử dụng để chuyển các yêu cầu đến một máy
chủ có thẩm quyền. Một điều quan trọng của sự khác nhau đó là Stub Zone có
khả năng chứa dữ liệu NS của Primary Zone nên có khả năng thông minh trong
quá trình cập nhật dữ liệu, địa chỉ của máy chủ NS của Zone đó nên việc chuyển
yêu cầu sẽ dễ dàng hơn.
Trang 4

Forward Lookup là nhờ một máy chủ phân giải tên hộ, và không thể tự

động cập nhật dữ liệu, nhưng đó cũng là một lợi thế và có thể sử dụng trên
Internet. Còn Stub Zone chỉ sử dụng khi trong một domain có nhiều Zone con và
chỉ dành cho một tổ chức khi truy cập vào các dữ liệu của tổ chức đó.
 Name Servers:

chính là máy chủ chứa dữ liệu Primary Zone.
2.4 Nguyên tắc hoạt động của chương trình :
DNS Server hoạt động sẽ lắng nghe yêu cầu từ DNS Client trên cổng 123. Sau khi
chấp nhận yêu cầu của client, client và server sẽ trao đổi thông tin trên một port thống
nhất của client và server chứ không trao đổi qua port 123. (port 123 chỉ nhầm khởi tạo kết
nối)
Khi muốn phân giải tên miền hay địa chỉ ip thì DNS Client sẽ gửi cho DNS Server
một chuổi kí tự cần phân giải, yêu cầu DNS Server phân giải.
Khi nhận được chuỗi kí tự thì DNS Server sẽ kiểm tra chuỗi nhận được là địa chỉ
ip hay domain, sau đó gọi hàm phân giải tương ứng với địa chỉ ip hay là domain. Khi
gọi hàm phân giải thì chương trình sẽ dò tìm trong cơ sở dữ liệu đã có domain hay địa
chỉ ip này chưa , nếu có rồi thì sẽ lấy ra rồi gửi kết quả về cho DNS Client; ngược lại,
nếu chưa có trong cơ sở dữ liệu thì chương trình sẽ đi ra ngoài mạng Internet nhờ các
DNS Server khác phân giải hộ.
Trường hợp nếu phân giải được thì địa chỉ ip hay domain sẽ được cập nhật vào cơ
sở dữ liệu, sau đó chương trình sẽ truy vấn trong cơ sở liệu một lần nữa để lấy ra địa chỉ
ip hay domain rồi gửi về cho DNS Client. Trường hợp không phân giải được thì chương
trình sẽ trả về mã lổi là 220 hoặc 230.
DNS Client khi nhận được kết quả là mã lổi thì sẽ xuất ra thông báo tương ứng.
220 : địa chỉ ip không tồn tại.
230 : tên miền không tồn tại.










Trang 5

2.4.1 Mô hình nguyên tắc hoạt động:


Trường hợp phân giải thành công

Trường hơp 220 : địa chỉ ip không tồn tại.
Trường hợp 230 : tên miền không tồn tại.
Trang 6




















Trang 7

Chương 3: Sơ đồ hoạt động
3.1 Sơ đồ hoạt động của DNS server



3.2 Sơ đồ hoạt động của DNS client

Trang 8


Chương 4: Code cụ thể của chương trình DNS client và chương
trình DNS server
4.1 Chương trình DNS client:
Trang 9


Ô “Dia chi server”: IP của máy chạy DNS server.
Ô “Nhap Domain/IP”: tên miền hoặc địa chỉ ip muốn phân giải.
Ô “Ket Qua”: nơi xuất ra kết quả là địa chỉ ip hoặc tên miền đã được phân giải. Nếu IP
hoặc tên miền sai cũng sẽ thông báo ở đây.
Nút “Phan giai”: phân giải tên miền hay địa chỉ ip.
Nút “Thoat”: tắt chương trình.







Ví dụ:
Trang 10


Code chương trình:
package baithiclient;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Scanner;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;

public class FmClient extends javax.swing.JFrame {
private Socket client=null;
private PrintWriter out=null;
private Scanner in=null;
private String hienthi=null;
public FmClient() {
Trang 11

initComponents();
txtChuoi.requestFocus();
}
@SuppressWarnings("unchecked")

//phương thức của nút Phân giải
private vo
id btnConectActionPerformed1(java.awt.event.ActionEvent evt) {
String chuoi=this.txtChuoi.getText(); //chuỗi sẽ truyền lên server
String diachi =this.txtdiahciserver.getText();
String ketqua=""; //chuỗi ghi nhận kết quả lấy về từ server
try {
client = new Socket(diachi,123);
// tạo mới socket kết nối tới server theo diachi và port 123
out=new PrintWriter(client.getOutputStream(),true); //đóng gói chuỗi
out.println(chuoi); //truyền chuỗi
out.flush(); // xoá bộ nhớ đệm
in=new Scanner(client.getInputStream()); // nhận chuỗi truyền về từ server
ketqua=in.nextLine().trim();
if(ketqua.equals("220")) { //220 là mã lỗi
txtKetQua.setText("IP này không tồn tại");
}
else if(ketqua.equals("230")) { //230 là mã lỗi
txtKetQua.setText("Tên miền này không tồn tại");
}
else {
String xuat=ThayTheKyTu(ketqua);
txtKetQua.setText(xuat);
}
client.close(); //đóng kết nối
}
catch (Exception ee) {
Trang 12

JOptionPane.showMessageDialog(null,"Không kết nối được tới máy

chủ");
}
finally{
try {
client.close();
} catch (IOException ex) {
Logger.getLogger(FmClient.class.getName()).log(Level.SEVERE, null,
ex);
}
}
}


// phương thức của nút Thoát
private void btnExitActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
System.exit(0);
}

//hàm thay thế
public String ThayTheKyTu(String st) //thay thế các khoảng trắng bằng cách xuống dòng
{
String sTim = " ";
String sThayThe = "\n";
st = st.replaceAll(sTim,sThayThe);
return st;
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {

Trang 13

new FmClient().setVisible(true);
}
});
}
4.2 Chương trình DNS server: gồm có 4 lớp: lớp Connection, lớp Main, lớp
ServerThreadDns, lớp ResolveDNS:
4.2.1 Lớp dùng để kết nối tới cơ sở dữ liệu:
package Database;
import java.io.FileInputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.Properties;

public class connection {
private static Connection conn = null;
private static String url = null;
public connection() {
}
public static Connection getConnectionUrl() {
String databaseName = "";
String serverName = "";
String portNumber = "";
String Instance = "";
String Password = "";
String Username = "";
try {
FileInputStream fis = new FileInputStream("config.properties");
Properties pp = new Properties();

pp.load(fis);
databaseName = pp.getProperty("databaseName");
serverName = pp.getProperty("serverName");
Trang 14

portNumber = pp.getProperty("portNumber");
Username = pp.getProperty("Username");
Password = pp.getProperty("Password");
Class.forName("com.mysql.jdbc.Driver");
url =
"jdbc:mysql://"+serverName+"/"+databaseName+"?user="+Username+"&password="+P
assword+"";
conn = DriverManager.getConnection(url);
if (conn!=null) {
System.out.println(" Kết nối cơ sở dữ liệu thành công");
}
} catch (Exception e) {
}
return conn;
}
public static void main(String[] args) {
getConnectionUrl();
}
}
4.2.2 Lớp Main: lớp chính trong chương trình:
package DnsServer;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.logging.Level;

import java.util.logging.Logger;

public class MainDnsServer {
static final int port=123;
private ServerSocket server=null;
public MainDnsServer()
Trang 15

{
try {
server = new ServerSocket(port);
int localport=server.getLocalPort();
System.out.println("Server lắng nghe kết nối trên port : "+localport);
}
catch (IOException ex)
{
Logger.getLogger(MainDnsServer.class.getName()).log(Level.SEVERE, null,
ex);
}
}
public void Action(){
Socket client=null;
int i=0;
try {
while ((client = server.accept()) != null) {
i++;
int portclient = client.getPort();
System.out.println("client: " + client.getInetAddress().getHostName() + " yêu
cầu được giải quyết trên port: " + portclient);
new ServerThreadDns(client, "Kết thúc lượt truy cập thứ: " + i); // tạo ra (làm

mới một đối tượng) để thực hiện các tác vụ
}
}
catch (IOException ex) {
Logger.getLogger(MainDnsServer.class.getName()).log(Level.SEVERE, null,
ex);
}
}
public static void main(String[] args) {
new MainDnsServer().Action();
Trang 16

}
}
4.2.3 Lớp ServerThreadDns: lớp xem cần phân giải IP hay phân giải Domain:
package DnsServer;

import Database.ResolveDNS;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Scanner;

public class ServerThreadDns implements Runnable{
private Scanner in=null;
private PrintWriter out=null;
private Socket client;
private String name;
private String a;
private static ResolveDNS phangiai;

public ServerThreadDns(Socket client, String name) throws IOException {
this.client=client;
this.name=name;
in= new Scanner(this.client.getInputStream());
out= new PrintWriter(this.client.getOutputStream(),true);
new Thread(this).start();
}
public static boolean isNumberic(String str){
try{
Long.parseLong(str);
return (true);
}
catch (Exception e){
Trang 17

return (false);
}
}
public void run() {
try{
while(true)
{
phangiai=new ResolveDNS();
String chuoi=in.nextLine().trim();
Scanner sc=new Scanner(chuoi);
String get=sc.nextLine();
int dodai=get.length();
String kytu=get.substring(dodai-1,dodai);
if(isNumberic(kytu)){
String kq= phangiai.ResoleIP(get);

System.out.println("Client yêu cầu phân giải địa chỉ IP này: "+get);
if(kq==null)
{
System.out.println("Địa chỉ IP này không có trong cache, cần được cập
nhật");
int pg=phangiai.InsertIpData(get);
if(pg==1)
{
kq=phangiai.ResoleIP(get);
out.println(kq);
}
if(pg==0)
out.println("220");
}
out.println(kq);
System.out.println("Kết quả đã trả về : "+kq);
Trang 18

}
else
{
String kq= phangiai.ResoleDomainName(get);
System.out.println("Client yêu cầu phân giải tên miền này: "+get);
if(kq==null){
System.out.println("Tên miền này không có trong cache, cần được cập
nhật");
int pg=phangiai.InsertDomainData(get);
if(pg==1){
kq=phangiai.ResoleDomainName(get);
out.println(kq);

}
if(pg==0)
out.println("230");
}
out.println(kq);
System.out.println("Kết quả đã trả về client: "+kq);
}
}
}catch(Exception e){
System.out.println(name+" Ngắt kết nối BYE ");

}finally{
try{client.close();}catch(Exception e){}
}
}
}
4.2.4 Lớp ResolveDNS: lớp phân giải IP hay Domain , và cập nhật dữ liệu vào
cơ sở dữ liệu:
package Database;
Trang 19

import com.mysql.jdbc.Connection;
import com.mysql.jdbc.Statement;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.ImageIcon;

import javax.swing.JOptionPane;

public class ResolveDNS {
private static Connection conn = null;
private static Statement st = null;
private static ResultSet rs = null;
private static String kq=null;
private static String listIp=null;
private static String ip=null;
private static String domainname=null;

public ResolveDNS(){
}
public String ResoleIP(String chuoi)
{
ip=chuoi;
try
{
conn = (Connection) connection.getConnectionUrl();
st = (Statement) conn.createStatement();
String query = "SELECT * FROM dns where dns.ip='"+ ip +"' ";
rs = st.executeQuery(query);
Trang 20

kq="";
while (rs.next())
{
domainname = rs.getString(3);
kq= domainname;
}

} catch (SQLException ex)
{
return null;
}
if(kq!="")
return kq;
else
return null;
}
public String ResoleDomainName(String chuoi){
domainname=chuoi;
try {
conn = (Connection) connection.getConnectionUrl();
st = (Statement) conn.createStatement();
String query = "SELECT * FROM dns where dns.name='"+domainname+"' ";
rs = st.executeQuery(query);
listIp="";
while (rs.next()) {
String Ip = rs.getString(2);
listIp=listIp + " " + Ip;
}
} catch (SQLException ex) {
return null;
}
if (listIp!="")
Trang 21

return listIp;
else
return null;

}
public static boolean isNumberic(String str)
{
try
{
Long.parseLong(str);
return (true);
}
catch (Exception e)
{
return (false);
}
}
public int InsertIpData(String ip)
{
try
{
conn = (Connection) connection.getConnectionUrl();
try
{
st = (Statement) conn.createStatement();
}
catch (SQLException ex)
{
System.out.println("Lổi tạo statement");
return 0;
}
try
Trang 22


{
InetAddress addr = InetAddress.getByName(ip);
String host=addr.getHostName();
int dodai=host.length();
String kytu=host.substring(dodai-1,dodai);
if(this.isNumberic(kytu)==false)
{
String query = "Insert into dns values ( null,'" +ip+ "','" +host+ "') ";
st.executeUpdate(query);
System.out.println("Cập nhật tên miền cho IP thành công");
return 1;
}
else
{
System.out.println("Địa chỉ IP sai");
return 0;
}
}
catch (UnknownHostException ex)
{
System.out.println("Lỗi truy vấn cơ sở dữ liệu với IP");
return 0;
}
}
catch(Exception e)
{
System.out.println("Địa chỉ IP không tồn tại ");
return 0;
}
}

public int InsertDomainData(String domain){
Trang 23

try
{
int i ,j ;
conn = (Connection) connection.getConnectionUrl();
try
{
st = (Statement) conn.createStatement();
}
catch (SQLException ex)
{
System.out.println("Lổi tạo statement");
}
//Lay tat ca cac IP cua ten mien vua nhap
InetAddress addr[] = InetAddress.getAllByName(domain);

for(i = 0; i<addr.length;i++)
{
byte[] ipAddr = addr[i].getAddress();
String ipAddrStr="";
for(j=0;j<ipAddr.length;j++)
{
if(j>0)
{
ipAddrStr +=".";
}
ipAddrStr += ipAddr[j]&0xFF;


}
String query = "Insert into dns values ( null,'"+ipAddrStr+"','"+domain+"') ";
System.out.println("Cập nhật "+ipAddrStr+" cho tên miền "+domain+" thành
công");

×