1. Trang chủ
  2. » Thể loại khác

bài thực hành 15 môn thực tập cơ sở lập trình clientserver để trao đổi thông tin an toà

14 1 0
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

Tiêu đề Lập trình client/server để trao đổi thông tin an toàn
Tác giả Nguyễn Khắc Hưng
Người hướng dẫn Ninh Thị Thu Trang
Trường học Học viện Công nghệ Bưu chính Viễn thông
Chuyên ngành Thực tập cơ sở
Thể loại Bài thực hành
Năm xuất bản 2024
Thành phố Hà Nội
Định dạng
Số trang 14
Dung lượng 3,09 MB

Nội dung

Trong lập trình mạng, sockets được sử dụng để thiết lập các kết nối truyền thông dữ liệu qua mạng, bao gồm cả Internet.. Lắng nghe Listen cho kết nối đến: Sử dụng hàm listen để bắt đầu l

Trang 1

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG

KHOA AN TOÀN THÔNG TIN

Môn học: THỰC TẬP CƠ SỞ

BÀI THỰC HÀNH SỐ 15

Lập trình client/server để trao đổi thông tin an toàn

Sinh viên thực hiện: Nguyễn Khắc Hưng

Mã sinh viên: B21DCAT099 Giảng viên: Ninh Thị Thu Trang

Số điện thoại:0974299896

~ Hà Nội, tháng 5/2024 ~

Trang 2

1

1 Mục đích 2

2 Tìm hiểu lý thuyết 2

3 Kết quả thực hành 4

3.1 Lập trình client và server với TCP socket 4

3.2.Trao đổi thông điệp giữa client và server và đảm bảo tính toàn vẹn của thông điệp khi trao đổi 8

3.2.1.Phía Client 8

3.2.2.Phía Server

3.2.3.Kiểm nghiệm 10

4 Tài liệu tham khảo 13

Trang 3

2

BÀI 15: Lập trình client/server để trao đổi thông tin an toàn

1 Mục đích

• Sinh viên hiểu về cơ chế client/server và có thể tự lập trình client/server dựa trên socket, sau đó thực hiện ca đặt giao thức đơn giản để trao đổi thông tin an toàn

Socket là một giao diện lập trình ứng dụng (API) cho việc tạo và quản lý kết nối mạng giữa các thiết bị Trong lập trình mạng, sockets được sử dụng để thiết lập các kết nối truyền thông dữ liệu qua mạng, bao gồm cả Internet Các ứng dụng có thể sử dụng sockets để gửi và nhận dữ liệu qua mạng thông qua giao thức TCP/IP hoặc các giao thức mạng khác

Mô hình máy khách, máy chủ TCP

Hình 2.1 Mô hình máy khách máy chủ TCP

Trang 4

3

Các bước tạo nên 1 chương trình phía server

Import thư viện cần thiết: Đầu tiên, bạn cần import các thư viện hoặc module

cần thiết cho việc lập trình sockets Trong Python, bạn sẽ thường import socket

Tạo socket: Sử dụng hàm socket() để tạo một đối tượng socket Bạn cần chỉ định

loại socket (ví dụ: socket.AF_INET cho IPv4) và loại giao thức (ví dụ:

socket.SOCK_STREAM cho TCP) khi tạo socket

Bind socket tới một địa chỉ và cổng: Sử dụng hàm bind() để liên kết socket với

một địa chỉ IP và cổng cụ thể trên máy chủ Điều này cho phép máy chủ lắng nghe các kết nối đến địa chỉ và cổng đó

Lắng nghe (Listen) cho kết nối đến: Sử dụng hàm listen() để bắt đầu lắng nghe

các kết nối đến từ phía máy khách Bạn cần chỉ định số lượng tối đa của các kết nối đang chờ đợi (thường được gọi là backlog)

Chấp nhận (Accept) kết nối: Sử dụng hàm accept() để chấp nhận kết nối từ một

máy khách Khi có một yêu cầu kết nối đến, hàm này trả về một đối tượng socket mới được sử dụng để truyền dữ liệu giữa máy chủ và máy khách

Xử lý dữ liệu: Khi kết nối được thiết lập, bạn có thể gửi và nhận dữ liệu qua socket được tạo ra từ bước trước

Đóng kết nối: Sau khi hoàn thành việc giao tiếp, đóng kết nối bằng cách gọi hàm

close() trên đối tượng socket

Các bước tạo nên 1 chương trình phía client

Import thư viện cần thiết: Đầu tiên, bạn cần import các thư viện hoặc module

cần thiết cho việc lập trình sockets Trong Python, bạn sẽ thường import socket

Tạo socket: Sử dụng hàm socket() để tạo một đối tượng socket Bạn cần chỉ định

loại socket (ví dụ: socket.AF_INET cho IPv4) và loại giao thức (ví dụ:

socket.SOCK_STREAM cho TCP) khi tạo socket

Kết nối tới máy chủ: Sử dụng hàm connect() để kết nối tới máy chủ thông qua

địa chỉ IP và cổng cụ thể của máy chủ

Gửi dữ liệu: Khi kết nối được thiết lập, bạn có thể gửi dữ liệu tới máy chủ sử

dụng hàm send() trên đối tượng socket

Nhận dữ liệu: Có thể nhận dữ liệu từ máy chủ sử dụng hàm recv()

Xử lý dữ liệu và hiển thị kết quả: Sau khi nhận dữ liệu từ máy chủ, bạn có thể

xử lý và hiển thị kết quả

Trang 5

4

Đóng kết nối: Khi hoàn thành việc giao tiếp, đóng kết nối bằng cách gọi hàm

close() trên đối tượng socket

*Chuẩn bị môi trường :

• Môi trường Python hoặc Java để chạy được ứng dụng client/server đã lập trình

• Phần mềm Wireshark

- Lập trình Server tại máy Kali linux

Hình 3.1 Lập trình Server tại máy Kali linux -Lập trình máy Client tại máy Windows 10

Trang 6

5

Hình 3.2 Lập trình máy Client tại máy Windows 10

*Tiến hành thử nghiệm

Kết quả của thử nghiệm:

-Server sẽ mở cổng và cho phép kết nối tới

-Sau khi chạy thì Server sẽ mở cho đến khi nào có Client kết nối tới

Trang 7

6

Hình 3.4 Khởi động Server chờ đợi kết nối -Chạy Client.py bên máy sẽ nhận được thông báo kết nối tới Server có ip như hình

Hình 3.5 Kết nối tới máy Server

Hình 3.6 Từ máy Client gửi tin nhắn “Hello, I am B21DCAT099 Client.”

Trang 8

7

Hình 3.7 Máy Clinet sau khi gửi thông điệp thì sẽ nhận lại thông điệp từ Server -Thử gửi thông điệp để bắt gói tin với WireShark

Hình 3.8 Thử gửi thông điệp để bắt gói tin với WireShark

-Lọc thông tin trên WireShark với cổng = 3333

-Bắt được thông tin đã được gửi từ máy Client

Trang 9

8

Hình 3.9 Bắt được gói tin gửi từ máy Client

khi trao đổi

-Khởi tạo 1 hàm để mã hóa với key = “B21DCAT099” và sử dụng hàm băm SHA256 để hash

-Tạo 1 hàm Encrypt để băm giá trị gửi đi từ phía client

-Giá trị được dùng để hash =bằng với message + với key

-Gửi toàn bộ đến phía server

-Nếu giá trị nhận được ừ pht ía bên server là như trên thì in ra ã kđ ết nối thành công

-Còn nếu không thì tự động hủy hết nối với server

-Thay đổi cổng vào từ 3333 sang 4444 để thử nghiệm trên nhiều cổng khác nhau

Trang 10

9

Hình 3.8 Khởi tạo hàm b m và g tin nhă ửi ắn đến máy Server

-Thêm 1 phần để tách 2 giá trị message và hash để kiểm tra xem dữ liệu có đúng không

-2 biến message và hashkey được dùng để lấy message từ phía gửi và hashkey

để kiểm tra xem dữ liệu đúng hay không

-Tiến hành hash ra tương tự phía Client với đầu vào là message + key

-Nếu đúng thì gửi về phía Client kết nối thành công

-Nếu sai thì in ra thông báo vào óng k nđ ết ối với Client

-Thay đổi ổng ết ối từ 3333 c k n -> 4444

Trang 11

10

Hình 3.9 Khởi tạo hàm b m vă à nhận tin nhắn từ Client và kiểm tra

Hình 3.10 ở kết nối v M à nhận được tin nhắn ừ Clientt

Trang 12

11

Hình 3 11 Nhận thông báo kết nối thành công từ máy Server

*Thử sửa lại key sao cho 2 bên Client và Server ác nhau kh

-Sửa lại key thành B21DCAT0100 ở phía Clie nt

Hình 3.12 Sửa lại key ở phía Client -Sau khi mở kết nối vào Client k t nế ối vào , gửi 1 tin nhắn và máy server thấy không trùng , Server tự động n ắt g

Hình 3.12 Server tự ngắt kết nối với Client sau khi nhận ra bất thường

Trang 13

12

-Phía Client sau khi bị ngắt thì tin nhắn cũng không thể đến Server và dẫn đến lỗi

Hình 3.12 Client Không thể gửi tin nhắn đến Server

*Th bử ắt thông tin bằng WireShark

-Bắt thành công gói tin gửi từ Client đến Server với thông tin gồm message và hash

Hình 3.13 Bắt thành công gói tin

Trang 14

13

• Chapter 2: Application Layer V8.1 13

• http://gaia.cs.umass.edu/kurose_ross/ppt.php

• The classical client/server model is used by C-IoT proposed model | Download Scientific Diagram (researchgate.net)

Ngày đăng: 26/06/2024, 17:14

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

TÀI LIỆU LIÊN QUAN

w