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

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



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

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

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ự
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 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")

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() {

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;

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;

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);

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;
}

}
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


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;


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status