1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Nhập môn mạng máy tính báo cáo bài tập 4 vẽ bảng chú giải (stt, queryanswer) của truy vấn đệ quy dns trong slide 72

14 0 0

Đ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 14
Dung lượng 777,63 KB

Nội dung

- connection, address = server_socket.accept:Khi có một kết nối đến máy chủ, nó sẽ chấp nhận kết nối và trả về một đối tượng kết nối connection và địa chỉ của máy khách address.. - Sau đ

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN & NHẬP MƠN MẠNG MÁY TÍNH LỚP: IT005.O118 BÁO CÁO BÀI TẬP – NHÓM 12 Giảng viên hướng dẫn: ThS Trần Mạnh Hùng NoName – “Không tên không vô danh” IT005 - Nhập mơn Mạng máy tính MỤC LỤC I DANH SÁCH THÀNH VIÊN II BÁO CÁO BÀI TẬP Vẽ bảng giải (STT, Query/Answer) truy vấn đệ quy DNS slide 72 2 Xây dựng chương trình : Chat console theo mơ hình client - server dùng python a Dùng TCP b Dùng UDP .6 III NHẬN XÉT 11 IV THẮC MẮC .11 V NGUỒN THAM KHẢO .12 IT005 - Nhập môn Mạng máy tính I DANH SÁCH THÀNH VIÊN MSSV Họ tên Phân công Đánh giá 22521301 Mai Văn Tân (nhóm trưởng) Trình bày báo cáo, Cùng kiểm tra lại 100% Câu 2, phần TCP tất câu sau 22520512 Nguyễn Bá Hưng hoàn thành 100% 22521539 Nguyễn Thị Trinh Câu 2, phần TCP đáp án Đọc 100% 22521394 Trần Ỷ Thiên Câu hiểu, kiểm tra lại 100% 22520518 Nguyễn Thanh Hùng code 100% 22520108 Nguyễn Gia Bảo Câu 2, phần UDP 100% Câu 2, phần UDP Nhận xét, nêu Câu 2, phần UDP thắc mắc tồn đọng Giảng viên hướng dẫn: ThS Trần Mạnh Hùng IT005 - Nhập mơn Mạng máy tính II BÁO CÁO BÀI TẬP Vẽ bảng giải (STT, Query/Answer) truy vấn đệ quy DNS slide 72 Sơ đồ phân giải tên DNS: truy vấn đệ quy Bảng giải (STT, Query/Answer) truy vấn đệ quy DNS STT Query/Answer Q: who is gaia.cs.umass.edu? Q: who is gaia.cs.umass.edu? Q: who is gaia.cs.umass.edu? Q: who is gaia.cs.umass.edu? A: 128.119.245.12 A: 128.119.245.12 A: 128.119.245.12 A: 128.119.245.12 Giảng viên hướng dẫn: ThS Trần Mạnh Hùng IT005 - Nhập môn Mạng máy tính Xây dựng chương trình : Chat console theo mơ hình client - server dùng python a Dùng TCP Cách làm: tạo file python TCP_Server.py TCP_Client.py với mã sau: TCP_Server.py # TCP_Server.py import socket def main(): host = 'localhost' port = 1510 server_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM) 10 server_socket.bind((host, port)) 11 12 server_socket.listen() 13 print("Server is listening ") 14 15 connection, address = server_socket.accept() 16 print("Got connection from", address) 17 18 while True: 19 data = connection.recv(1024).decode() 20 21 if not data: 22 break 23 24 print("Received from client: " + data) 25 26 reply = "Message received: " + data 27 28 connection.send(reply.encode()) 29 30 connection.close() 31 32 if name == ' main ': 33 main() Giải thích: - import socket: Đây lệnh để nhập thư viện socket, mà sử dụng để làm việc với mạng giao thức TCP/IP - Hàm main(): Đây hàm chương trình, nơi thứ bắt đầu Giảng viên hướng dẫn: ThS Trần Mạnh Hùng IT005 - Nhập mơn Mạng máy tính - host port: Biến host xác định máy chủ lắng nghe địa IP localhost, có nghĩa máy chủ lắng nghe kết nối máy tính Biến port xác định cổng (port) mà máy chủ lắng nghe - server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM): Ở đây, tạo đối tượng socket sử dụng giao thức AF_INET (IPv4) SOCK_STREAM (TCP) - server_socket.bind((host, port)): Chúng ta ràng buộc (bind) đối tượng socket với địa máy chủ cổng - server_socket.listen(): Chúng ta cho phép máy chủ lắng nghe kết nối đến Điều tạo máy chủ lắng nghe địa host cổng port - connection, address = server_socket.accept(): Khi có kết nối đến máy chủ, chấp nhận kết nối trả đối tượng kết nối (connection) địa máy khách (address) - Trong vịng lặp vơ hạn while True, máy chủ nhận liệu từ máy khách cách sử dụng connection.recv(1024) Dữ liệu nhận sau giải mã từ dạng bytes thành chuỗi decode() Nếu khơng có liệu (hoặc kết nối bị đóng), vịng lặp - Sau đó, máy chủ in thơng điệp nhận từ máy khách gửi phản hồi lại máy khách cách sử dụng connection.send(reply.encode()) - Cuối cùng, kết thúc vòng lặp, máy chủ đóng kết nối connection.close() - Cuối cùng, if name == ' main ':, hàm main() gọi chương trình chạy TCP_Client.py # TCP_Client.py import socket def main(): host = 'localhost' port = 1510 client_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM) client_socket.connect((host, port)) 10 11 while True: 12 message = input('Enter message: ') 13 14 client_socket.send(message.encode()) 15 Giảng viên hướng dẫn: ThS Trần Mạnh Hùng IT005 - Nhập mơn Mạng máy tính 16 data = client_socket.recv(1024).decode() 17 18 print('Response from server:', data) 19 20 client_socket.close() 21 22 if name == ' main ': 23 main() Giải thích: - import socket: Đây lệnh để nhập thư viện socket, cần thiết để làm việc với mạng giao thức TCP/IP - def main(): Hàm chương trình bắt đầu - host port: Địa IP máy chủ cổng mà máy khách kết nối đến - Tạo đối tượng socket sử dụng giao thức IPv4 (AF_INET) TCP (SOCK_STREAM) - Kết nối đến máy chủ sử dụng địa cổng xác định - Bắt đầu vòng lặp vô hạn phép người dùng nhập liệu gửi đến máy chủ - Người dùng yêu cầu nhập liệu thông qua input(), liệu lưu biến message - Dữ liệu nhập từ người dùng sau gửi đến máy chủ sau mã hóa thành dạng bytes client_socket.send(message.encode()) - Máy khách nhận phản hồi từ máy chủ cách sử dụng client_socket.recv(1024), sau giải mã liệu thành chuỗi decode() - Phản hồi từ máy chủ sau in hình - Máy khách tiếp tục vịng lặp phép người dùng nhập gửi thêm liệu cần - Khi vòng lặp kết thúc, máy khách đóng kết nối client_socket.close() - Cuối cùng, mã kiểm tra xem chương trình có chạy chương trình khơng, có, gọi hàm main() Giảng viên hướng dẫn: ThS Trần Mạnh Hùng IT005 - Nhập môn Mạng máy tính Hình minh hoạ code chạy: Khi Run file TCP_Server.py: Khi Run file TCP_Client.py, nhập tin nhắn sau nhận phản hồi từ server: Server nhận liệu từ client: b Dùng UDP Cách làm: tạo file python UDP_Server.py UDP_Client.py với mã sau: UDP_Server.py # UDP_Server.py import socket def main(): host = "localhost" # Server IP address port = 1510 # Connection port # Create UDP socket 10 server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) Giảng viên hướng dẫn: ThS Trần Mạnh Hùng IT005 - Nhập mơn Mạng máy tính 11 12 # Bind the socket to the IP address and port 13 server_socket.bind((host, port)) 14 15 print("Server is ready") 16 17 while True: 18 # Receive data from client 19 data, addr = server_socket.recvfrom(1024) 20 print("Received from", addr[0] + ":", data.decode()) 21 22 # Send data back to the client 23 reply = "Message receive: " + data.decode() 24 server_socket.sendto(reply.encode(), addr) 25 26 27 if name == " main ": 28 main() Giải thích: - Import socket: Thư viện cung cấp hàm lớp để thực giao tiếp mạng - Xây dựng hàm main(): Trong hàm main, xây dựng hoạt động server - Khởi tạo biến host port: Biến host lưu trữ địa IP server (ở 'localhost') Biến port lưu trữ số cổng kết nối mà server lắng nghe - Tạo socket UDP: Sử dụng hàm socket.socket(socket.AF_INET, socket.SOCK_DGRAM) để tạo socket UDP - Gán địa IP cổng cho socket: Sử dụng phương thức bind() để gắn kết địa IP cổng với socket tạo Địa IP cổng lấy từ biến host port - In thông báo "Server is ready": Thông báo cho biết server khởi động lắng nghe kết nối từ client - Vào vịng lặp while: Server tiếp tục lắng nghe gói tin từ client phản hồi lại - Nhận liệu từ client: Sử dụng phương thức recvfrom() server_socket để nhận liệu từ client Đối số 1024 cho biết kích thước tối đa liệu nhận Dữ liệu nhận lưu biến data, địa client lưu biến addr Giảng viên hướng dẫn: ThS Trần Mạnh Hùng IT005 - Nhập mơn Mạng máy tính - In thơng tin liệu nhận được: In địa IP client (lấy từ addr[0]) nội dung liệu nhận (giải mã từ dạng bytes sang chuỗi ký tự phương thức decode()) - Gửi liệu đến client: Tạo phản hồi cách ghép chuỗi "Message receive:" với liệu nhận được, sau mã hóa phản hồi thành dạng bytes phương thức encode() Sử dụng phương thức sendto() để gửi phản hồi tới địa client (addr) thông qua server_socket - if name == ' main ': đảm bảo đoạn mã bên thực thi chương trình chạy trực tiếp, khơng phải import module UDP_Client.py # UDP_Client.py import socket def main(): host = 'localhost' # Server IP address port = 1510 # Connection port client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 10 11 while True: 12 message = input('Enter your message: ') 13 14 # Send the message to the server 15 client_socket.sendto(message.encode(), (host, port)) 16 17 # Receive the server's response 18 data, addr = client_socket.recvfrom(1024) 19 print("Response from server: ", data.decode()) 20 21 22 if name == ' main ': 23 main() Giải thích: - Import socket: Thư viện cung cấp hàm lớp để thực giao tiếp mạng Giảng viên hướng dẫn: ThS Trần Mạnh Hùng IT005 - Nhập môn Mạng máy tính - Xây dựng hàm main(): Trong hàm main, xây dựng hoạt động client - Khởi tạo biến host port: Biến host lưu trữ địa IP server (ở 'localhost') Biến port lưu trữ số cổng kết nối mà client sử dụng để kết nối tới server - Tạo socket UDP: Sử dụng hàm socket.socket(socket.AF_INET, socket.SOCK_DGRAM) để tạo socket UDP - Vào vòng lặp while: Client tiếp tục lặp lại bước để gửi nhận tin nhắn với server - Nhập tin nhắn người dùng: Sử dụng hàm input() để nhận tin nhắn từ người dùng lưu vào biến message - Gửi tin nhắn đến server: Sử dụng phương thức sendto() client_socket để gửi liệu mã hóa từ tin nhắn đến địa IP cổng server ((host, port)) - Nhận phản hồi từ server: Sử dụng phương thức recvfrom() client_socket để nhận liệu từ server Số 1024 cho biết kích thước tối đa liệu nhận Dữ liệu nhận lưu biến data, địa server lưu biến addr - In phản hồi từ server: Hiển thị nội dung liệu nhận từ server cách giải mã liệu từ dạng bytes sang chuỗi ký tự phương thức decode() - if name == ' main ': đảm bảo đoạn mã bên thực thi chương trình chạy trực tiếp, khơng phải import module Hình minh hoạ code chạy: Khi Run file UDP_Server.py: Giảng viên hướng dẫn: ThS Trần Mạnh Hùng IT005 - Nhập mơn Mạng máy tính Khi Run file UDP_Client.py, nhập tin nhắn sau nhận phản hồi từ server: Server nhận liệu từ client: Giảng viên hướng dẫn: ThS Trần Mạnh Hùng 10 IT005 - Nhập mơn Mạng máy tính III NHẬN XÉT Với nội dung báo cáo tập môn Nhập môn Mạng máy tính này, chúng em học số kiến thức sau: - Hiểu rõ chế hoạt động truy vấn đệ quy DNS, cách thức trao đổi thông điệp máy chủ DNS để phân giải tên miền - Nắm cách xây dựng chương trình chat console client-server ngôn ngữ Python sử dụng giao thức TCP UDP IV THẮC MẮC Nhóm chúng em có thắc mắc sau: Trong trường hợp xây dựng chat server với nhiều client kết nối đồng thời, cần lưu ý vấn đề để đảm bảo hoạt động ổn định hiệu quả? Giảng viên hướng dẫn: ThS Trần Mạnh Hùng 11 IT005 - Nhập mơn Mạng máy tính V NGUỒN THAM KHẢO Slide giảng môn học Computer Networking: A Top-Down Approach, 6th Edition By Kurros and Ross https://realpython.com/python-sockets/ https://codelearn.io/sharing/lap-trinh-socket-voi-tcpip-trong-python - Hết - Giảng viên hướng dẫn: ThS Trần Mạnh Hùng 12

Ngày đăng: 28/02/2024, 14:37

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w