Trong đồ án này, về phần Nguyên lí hệ điều hành, em nghiên cứu và tìmhiểu để xây dựng chương trình quản lí bộ nhớ máy tính, còn phần Lập trình mạng, đề tài được chọn là xây dựng DNS Serv
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA - ĐẠI HỌC ĐÀ NẴNG
KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO ĐỒ ÁN
CƠ SỞ NGÀNH MẠNG
Đề tài
1 Xây dựng DNS Server phân giải tên miền cho trước
2 Tìm hiểu và xây dựng một chương trình quản lý bộ nhớ máy tính
Giảng viên hướng dẫn: Lê Trần Đức Sinh viên thực hiện: Đoàn Quốc Bảo MSSV: 102170137 Lớp: 17T3
Trang 2LỜI MỞ ĐẦU
Đồ án cơ sở ngành mạng là một trong những đồ án quan trọng của ngành CôngNghệ Thông Tin Thông qua đồ án này, chúng em - là những sinh viên của trường đạihọc Bách Khoa Đà Nẵng sẽ đạt được những kiến thức nền tảng và có cơ hội đượcnghiên cứu chuyên sâu hơn về bộ môn Lập trình mạng và Nguyên lí hệ điều hành
Trong đồ án này, về phần Nguyên lí hệ điều hành, em nghiên cứu và tìmhiểu để xây dựng chương trình quản lí bộ nhớ máy tính, còn phần Lập trình mạng,
đề tài được chọn là xây dựng DNS Server phân giải tên miền cho trước Với sựđồng hành và hỗ trợ nhiệt tình của các thầy cô bộ môn ngành Mạng cùng sự nỗ lực
cố gắng của bản thân, bản báo cáo Đồ án cơ sở ngành mạng đã hoàn thành đúngvới thời hạn được giao
Đặc biệt em xin trân trọng cảm ơn thầy TS Lê Trần Đức đã hướng dẫn vàchỉ bảo tận tình trong quá trình nghiên cứu đồ án này
Sinh viên thực hiện
Đoàn Quốc Bảo
Trang 3MỤC LỤC
MỞ ĐẦU 1
MỤC LỤC 2
PHẦN 1: LẬP TRÌNH MẠNG 3
I CỞ SỞ LÝ THUYẾT 3
II PHÂN TÍCH VÀ THIẾT KẾ 6
III TRIỂN KHAI VÀ ĐÁNH GIÁ 10
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 13
PHẦN 2: NGUYÊN LÝ HỆ ĐIỀU HÀNH 14
I CƠ SỞ LÝ THUYẾT 14
II PHÂN TÍCH THIẾT KẾ HỆ THỐNG 16
III TRIỂN KHAI VÀ ĐÁNH GIÁ 20
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 21
KẾT LUẬN CHUNG 22
TÀI LIỆU THAM KHẢO 23
Trang 4PHẦN 1: LẬP TRÌNH MẠNG
Đề tài: Xây dựng DNS Server phân giải tên miền cho trước.
Yêu cầu đề tài:
Xây dựng chương trình nhập domain và trả về địa chỉ IP cho người dùng.
Chương trình có danh sách các domain từng nhập.
Có chức năng xóa các domain từng nhập.
Xây dựng giao diện thân thiện với người dùng.
I CƠ SỞ LÝ THUYẾT
1 Tên miền (Domain)
Mục đích chính của tên miền là để cung cấp một hình thức đại diện, hay nói cách khác, dùng những tên dễ nhận biết, thay cho những tài nguyên Internet mà đa
số được đánh địa chỉ bằng số Cách nhìn trừu tượng này cho phép bất kỳ tài
nguyên nào (ở đây là website) đều có thể được di chuyển đến một địa chỉ vật lý khác trong cấu trúc liên kết địa chỉ mạng, có thể là toàn cầu hoặc chỉ cục bộ trong một mạng intranet, mà trên thực tế là đang làm thay đổi địa chỉ IP Việc dịch từ tênmiền sang địa chỉ IP (và ngược lại) do hệ thống DNS trên toàn cầu thực hiện
2 Địa chỉ IP
Địa chỉ IP (Internet Protocol - giao thức Internet) là một địa chỉ đơn nhất mà những thiết bị điện tử hiện nay đang sử dụng để nhận diện và liên lạc với nhau trênmạng máy tính bằng cách sử dụng giao thức Internet
Có 2 loại địa chỉ IP là IPv4 và IPv6:
Địa chỉ IPv4 sử dụng 32 bit để mã hoá dữ liệu (Ví dụ: 192.168.24.10)
Địa chỉ IPv6 sử dụng 128 bit để mã hoá dữ liệu, nó cho phép sử dụng nhiều địa chỉ hơn so với IPv4
3 DNS Server
DNS Server (hay được viết tắt là DNS do tên tiếng Anh Domain Name System)
là 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 trên Internet.
Hệ thống phân giải tên miền (DNS) về căn bản là một hệ thống giúp cho việc
Trang 5sang địa chỉ IP vật lý (dạng số, ví dụ 123.11.5.19) tương ứng của tên miền đó DNS giúp 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ị trên Internet.
Mỗi website có một tên (là tên miền hay đường dẫn URL: Uniform
Resource Locator) 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 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 để 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ớ)
Hình 1 Tên miền và địa chỉ IP
4 Giao thức TCP/IP
TCP – TCP là viết tắt của Transmission Control Protocol TCP thường được
sử dụng qua giao thức Internet (Internet Protocol), được gọi là TCP/IP Giao thứcnày cho phép giao tiếp tin cậy giữa hai ứng dụng
Socket cung cấp cơ chế truyền thông giữa hai máy tính sử dụng TCP Socketcho phép thiết lập các kênh giao tiếp mà hai đầu kênh được đánh dấu bởi hai cổng(port) Thông qua các cổng này một quá trình có thể nhận và gởi dữ liệu với cácquá trình khác
Trang 6Một máy khách (client) tạo ra socket để kết nối đến với máy chủ (server).Khi được chạy, server cần được xác định rõ địa chỉ IP và sẽ “lắng nghe” trên mộtport cụ thể Server sẽ nằm trong trạng thái này cho đến khi client gửi đến một yêucầu kết nối Sau khi được server chấp nhận, một connection sẽ hình thành cho phépserver và client giao tiếp với nhau.
Trong đồ án này, trọng tâm để giao tiếp giữa client và server là thông quaSocket TCP, và có thể mô tả thông qua mô hình dưới đây
Hình 2 Sơ đồ quá trình trao đổi dữ liệu giữa Client và Server thông qua TCP
Trang 7Các bước thiết lập kết nối TCP giữa hai máy tính sử dụng socket:
1 Máy chủ khởi tạo một đối tượng ServerSocket với một cổng giao tiếp (port)
2 Máy chủ gọi phương thức accept() của lớp ServerSocket Phương pháp này đợi cho đến khi một máy khách kết nối đến máy chủ trên cổng đã cho
3 Trong khi máy chủ đang chờ đợi, một máy khách khởi tạo đối tượng Socket,xác định tên máy chủ (IP hoặc domain) và số cổng để kết nối
4 Đối tượng socket của máy khách cố gắng kết nối máy khách tới máy chủ đãchỉ định và số cổng Nếu truyền thông được thiết lập, máy khách bây giờ có mộtđối tượng socket có khả năng giao tiếp với máy chủ
5. Ở phía máy chủ, phương thức accept() trả về một tham chiếu đến một socketmới trên máy chủ được kết nối với socket của máy khách
II PHÂN TÍCH VÀ THIẾT KẾ
1 Mô tả
Xây dựng trang web để người dùng truy cập, trả về địa chỉ IPv4 của một tên
miền bất kỳ khi nhận được yêu cầu truy xuất từ người dùng
Chương trình chia làm 2 phần:
Giao diện Client được thiết kế bằng Python Tkinter, đồng thời tiếp nhận, xử
lý và gửi các request từ phía người dùng cho phía Server
Server được viết bằng ngôn ngữ lập trình Python, tạo cổng kết nối thông qua
giao thức TCP/IP để tiếp nhận các request từ phía Client, đồng thời truy vấn cơ sở
dữ liệu để trả về kết quả cho phía Client
Database sử dụng MySQL để chứa các dữ liệu cần thiết.
Trang 82 Sơ đồ hoạt động của chương trình
Chương trình có 4 vật thể chính đó là Client, Server, API và Cơ sở dữ liệu
Hình 3 Sơ đồ hoạt động của chương trình
Trang 93 Các chức năng chính của chương trình
Chức năng nhận địa chỉ IP trả về
Khi server nhận kết quả Domain từ phía client, sẽ tiến hành request api
từ trang https://ip-api.com/ để nhận địa chỉ IP trả về, nếu địa chỉ IP vàDomain không hợp lệ sẽ trả về kết quả “Domain is not valid!”
Hình 4 Chức năng nhận địa chỉ IP trả về
Chức năng truy vấn cơ sở dữ liệu
Ta tiến hành tạo cơ sở dữ liệu trên MySQL với dữ liệu bao gồm địa chỉ
IP bắt đầu (ip from), địa chỉ IP kết thúc (ip to), mã quốc gia (country code), tên quốc gia (country name), tên khu vực (region name), tên thành phố (cityname), nhà cung cấp mạng (isp), tên miền của nhà cung cấp mạng (domain),mục đích sử dụng (usage type), mã định danh công ty (asn) và tên định danhcông ty (ass) được lấy từ trang https://lite.ip2location.com/
Trang 10Hình 5 Cơ sở dữ liệu MySQL
Tiếp theo, ta kết nối tới cơ sở dữ liệu và tiến hành lấy cơ sở dữ liệu như
country code, country name, region name, isp từ địa chỉ IP ta nhận được ở trên
Hình 6 Chức năng truy vấn cơ sở dữ liệu
Chức năng hiển thị danh sách các tên miền từng nhập
Tiến hành lưu các tên miền đã từng nhập vào cơ sở dữ liệu, hiển thị chúng trênmột bảng danh sách
Hình 7 Chức năng hiển thị danh sách các tên miền từng nhập
Trang 11 Chức năng xóa tên miền trong danh sách
Hình 8 Chức năng xóa tên miền trong danh sách
III TRIỂN KHAI VÀ ĐÁNH GIÁ
1 Môi trường làm việc
- Hệ điều hành Windows
- Ngôn ngữ lập trình Python
- Cơ sở dữ liệu MySQL
- Công cụ Visual Studio Code
Trang 122 Thực hiện chương trình
Tiến hành biên dịch và khởi chạy trang web bằng command line hoặc dùng IDE, ởđây sẽ dùng IDE Visual Studio Code để thuận tiện cho việc thao tác cũng như viết
mã, debug
Khởi chạy Server
Hình 9 Màn hình khởi chạy Server
Khởi chạy Client, ta có giao diện chính của phía Client
Hình 10 Màn hình khởi chạy Client
Trang 13 Nhập tên miền bất kỳ, trả về kết quả hiện ở danh sách List Domain
Hình 11 Màn hình trả về kết quả khi nhập tên miền bất kỳ
3 Đánh giá
- Chương trình đáp ứng được yêu cầu
- Chương trình trả về kết quả nhanh và chính xác
Nhược điểm
- Giao diện chưa đẹp mắt
- Cần kết nối tới mạng để trả về địa chỉ IP
Trang 14KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
Kết luận
Qua đồ án lập trình mạng này, em học được rất nhiều kiến thức, trong đó
những phần quan trọng nhất có thể kể ra dưới đây đó là:
1 Cách thức vận hành mô hình TCP/IP và thực hành truyền nhận dữ liệu giữa Client, Server thông qua TCP
2 Kỹ năng phân tích, thiết kế và xây dựng một ứng dụng
3 Rèn luyện kỹ năng lập trình với ngôn ngữ Python
4 Kỹ năng triển khai ứng dụng và vận hành ứng dụng
Hướng phát triển
Dự định sắp tới của em trong việc mở rộng dự án này đó là:
- Xây dựng lại giao diện thân thiện với người dùng
- Xây dựng thêm các chức năng nâng cao có thể xử lý các yêu cầu phức tạp
- Xây dựng ứng dụng trên di động
Trang 15PHẦN 2: NGUYÊN LÝ HỆ ĐIỀU HÀNH
Đề tài: Tìm hiểu và xây dựng một chương trình quản lý bộ nhớ máy tính
Yêu cầu đề tài:
Xây dựng chương trình hiển thị bộ nhớ máy tính.
Chức năng hiển thị bộ nhớ tiêu tốn của từng ứng dụng.
Chức năng dừng chạy một ứng dụng.
Xây dựng giao diện thân thiện với người dùng.
I CƠ SỞ LÝ THUYẾT
1 Bộ nhớ lưu trữ tạm thời (RAM) là gì?
RAM (Random Access Memory) là một loại bộ nhớ khả biến cho phép truy xuất đọc-ghi ngẫu nhiên đến bất kỳ vị trí nào trong bộ nhớ dựa theo địa chỉ bộ nhớ Thông tin lưu trên RAM chỉ là tạm thời, chúng sẽ mất đi khi mất nguồn điện cung cấp
RAM là bộ nhớ chính của máy tính và các hệ thống điều khiển, để lưu trữ các thông tin thay đổi đang sử dụng Các hệ thống điều khiển còn sử dụng SRAM như làm một thiết bị lưu trữ thứ cấp Khi cần thiết thì bố trí một pin nhỏ làm nguồnđiện phụ để duy trì dữ liệu trong RAM RAM có một đặc tính là thời gian thực hiện thao tác đọc hoặc ghi đối với mỗi ô nhớ là như nhau, cho dù đang ở bất kỳ vị trí nào trong bộ nhớ Mỗi ô nhớ của RAM đều có một địa chỉ Thông thường, mỗi
ô nhớ là một byte (8 bit); tuy nhiên hệ thống lại có thể đọc ra hay ghi vào nhiều byte (2, 4, 8 byte) một lúc
RAM khác biệt với các thiết bị bộ nhớ tuần tự chẳng hạn như các băng từ, CD-RW, DVD-RW, ổ đĩa cứng, trong đó bắt buộc phải tìm đến sector và đọc/ghi
cả khối dữ liệu ở đó để truy xuất RAM là thuật ngữ phân biệt tương đối theo ý
nghĩa sử dụng, với các chip nhớ truy xuất ngẫu nhiên là EEPROM (read-only
memory) cấm hoặc hạn chế chiều ghi, và bộ nhớ flash được phép đọc/ghi
Trang 16Hình 12 Thanh RAM máy tính
2 RAM có cấu tạo như thế nào?
Thanh RAM được cấu tạo từ nhiều các chi tiết nhỏ khác nhau, gồm có: điện trở, là phần bao quanh các chip nhớ (resistor); tụ điện (capacitor) Dãy điện trở và tụ điện thường được thiết kế nằm cạnh tham RAM để cung cấp điện áp mộtcách ổn định và chính xác cho các chip nhớ
Chi tiết bản mạch in của RAM (PCB) gồm nhiều lớp đồng khác nhau,
thường gồm từ 6 – 8 lớp đồng Các lớp đồng được liên kết chặt chẽ với nhau
bằng quy trình sản xuất mạch in phức tạp
Nếu nhìn từ trên xuống các bạn có thể thấy được các lớp nối tiếp nhau: trên cùng là lớp tín hiệu thứ nhất, lớp nối mát, tiếp đến lớp tín hiệu thứ hai, lớp nối mát, tương tự đến các lớp nối mát và các lớp tín hiệu thứ ba, tư, lớp cuối cùng Công dụng của lớp nối mát chính là tạo ra các điểm có điện áp bằng 0 để hạn chế các trường hợp nhiễu trong mạch điện
Các chân cắm của thanh RAM thường được mạ vàng để làm giảm tối đa
trường hợp bị oxy hóa Nhờ đó giúp thanh RAM truyền dẫn tín hiệu tốt hơn
3 Quá trình làm việc của RAM?
Khi CPU chuyển các dữ liệu từ ổ cứng vào RAM để lưu trữ tại đó tạm
thời, vùng nhớ tại RAM đã bị chiếm dụng trước đó sẽ được trả lại khi người dùngtắt các ứng dụng, tắt máy tính Bộ nhớ của RAM đủ lớn để lưu trữ cùng lúc nhiều
dữ liệu khác nhau, tuy nhiên vẫn có giới hạn
RAM được chia làm hai loại chính là SRAM và DRAM:
- SRAM (Static RAM): RAM tĩnh không bị mất các nội dung sau khi nạp trừ từ lúc khởi động máy tính Các nội dung được ứng dụng vào lưu trữ dữ liệu khởi động
Trang 17- DRAM (Dynamic RAM): RAM động – Đây là phần lưu trữ dữ liệu tạmthời khi chạy các ứng dụng Khi các ứng dụng được đóng lại hay người dùng tắtmáy thì các vùng nhớ bị chiếm dữ để lưu trữ dữ liệu sẽ được trả lại.
4 Dung lượng của RAM
Dung lượng của RAM được tính bằng đơn vị MB và GB Các RAM thông thường sẽ được thiết kế với dung lượng từ 256mb, 512mb,1gb, 2gb, 3gb, 4gb, 8gb… Dung lượng RAM lớn thì sẽ có nhiều không gian lưu trữ thông tin hơn, điều này có nhiều lợi ích cho bạn khi sử dụng Tuy nhiên không phải hệ thống phần cứng và CPU nào cũng hỗ trợ các loại RAM với dung lượng lớn
5 BUS của RAM
Có hai loại BUS cơ bản đó là BUS speed và BUS width:
- BUS Speed (BUS tốc độ): tốc độ xử lý các dữ liệu trong vòng thời gian 1giây
- BUS Width (BUS chiều rộng): chiều rộng của bộ nhớ Với các loại RAMthông thường như DDR, DDR2, DDR3, DDR4 đều có BUS Width cố định là 64
II PHÂN TÍCH VÀ THIẾT KẾ
Trang 182 Sơ đồ hoạt động của chương trình
Chương trình gồm 3 thực thể là Người dùng, Task Manager, Memory Details
Hình 13 Sơ đồ hoạt động của chương trình
Trang 193 Các chức năng chính
Chức năng lấy thông tin bộ nhớ
Tiến hành lấy thông tin bộ như tổng số bộ nhớ của máy tính, tổng số bộ nhớ đã tiêu tốn, số bộ nhớ còn lại, phần trăm số bộ nhớ chiếm dụng nhờ thư viện Psutil có trong ngôn ngữ lập trình Python
Hình 14 Chức năng lấy thông tin bộ nhớ
Chức năng lấy thông tin bộ nhớ cho từng ứng dụng
Tiến hành lấy thông tin bộ nhớ các ứng dụng đang chạy nhờ thư viện Psutil
có trong Python, ta sẽ lấy thông tin bộ nhớ sắp xếp theo thứ tự giảm dần vàtrả về danh sách 30 ứng dụng ngốn bộ nhớ nhất
Hình 15 Chức năng lấy thông tin bộ nhớ cho từng ứng dụng
Trang 20 Chức năng vẽ biểu đồ bộ nhớ
Từ các thông số bộ nhớ ở trên, ta tiến hành vẽ biểu đồ nhờ thư viện
Matplotlib với hàng dọc là phần trăm số bộ nhớ tiêu tốn, hàng ngang là
thời gian thực của chương trình
Hình 16 Chức năng vẽ biểu đồ bộ nhớ
Chức năng dừng chạy chương trình
Từ danh sách các ứng dụng tiêu tốn bộ nhớ máy tính ở trên, ta sẽ tiến
hành dừng chạy chương trình bất kỳ
Hình 17 Chức năng dừng chạy chương trình
Trang 21III TRIỂN KHAI VÀ ĐÁNH GIÁ
1 Môi trường làm việc
- Hệ điều hành Windows
- Ngôn ngữ lập trình Python
- Công cụ Visual Studio Code
2 Triển khai
Màn hình khởi chạy chương trình
Hình 18 Màn hình khi khởi chạy chương trình
Màn hình chi tiết quản lý bộ nhớ máy tính
Trang 223 Đánh giá
- Chương trình đáp ứng được yêu cầu của đề tài
- Chương trình trả về kết quả chính xác của hệ thống
Nhược điểm
- Giao diện chưa đẹp mắt
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
Kết luận
Qua đồ án lập trình mạng này, em học được rất nhiều kiến thức, trong đó
những phần quan trọng nhất có thể kể ra dưới đây đó là:
1 Cách thức vận hành của bộ nhớ máy tính
2 Kỹ năng phân tích, thiết kế và xây dựng một ứng dụng
3 Rèn luyện kỹ năng lập trình với ngôn ngữ Python
4 Kỹ năng triển khai ứng dụng và vận hành ứng dụng
Hướng phát triển
Dự định sắp tới của em trong việc mở rộng dự án này đó là:
- Xây dựng lại giao diện thân thiện với người dùng
- Xây dựng thêm các chức năng nâng cao có thể xử lý các yêu cầu phức tạp
- Xây dựng ứng dụng trên di động