TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN ĐHQG TPHCM KHOA: CÔNG NGHỆ THÔNG TIN BÁO CÁO ĐỒ ÁN PROXY MÔN: MẠNG MÁY TÍNH Đồ án Proxy Nội dung I. Thành viên nhóm và phân công công việc ................................3 II. Ý tưởng đồ án: ..........................................................................3 III. Mức độ hoàn thành tổng đồ án: ..............................................4 IV. Chi tiết các hàm trong tiến trình .............................................4 V. Các bước khi chương trình chạy và tập tin bắt được .................9 VI. Tài liệu tham khảo ................................................................12 Mạng máy tính -- KHTN 2 Đồ án Proxy I. Thành viên nhóm và phân công công việc Họ Tên MSSV Phân Công Mức độ hoàn thành Chung Minh Chánh 1712297 Xử lí BlackList, chặn các truy cập trang 100% Web bị cấm từ Client Phan Lê Hoài Bảo 1712289 Xây dựng tiến trình hỗ trợ http, cho 100% phép Client truy cập vào Server thông qua Proxy, hỗ trợ đơn tiến trình (HTTP 1.0), chung tay hoàn thành đa tiến trình( nếu rảnh) Đỗ Quang Vinh 1712207 Caching lại nội dung của trang web cho 100% lần truy cập sau Nguyễn Hồng Ân 1712268 Hỗ trợ Bảo hoàn thành liên kết truyền 60% nhận dữ liệu giữa client và server thông (phần đa tiến trình qua Proxy. Làm phần đa tiến trình. không hoàn thành ) Merger code và viết báo cáo. Ngôn ngữ lập trình: C++ Ý tưởng đồ án: II. Vì sao cần Proxy: Proxy là 1 Server trung gian giữa người dùng và Internet. Cung cấ nhiều tiện ích khi dùng để tiện lợi cho người dùng và đáp ứng các yêu cầu nhà cung cấp Proxy, trong đồ án Proxy lần này thì có các tiện ích chính như: - Tường lửa chặn các truy cập trang web không hợp lệ từ client. - Caching các trang web thường xuyên truy cập đê tăng tốc độ truy cập internet. Từ đó giảm lượng băng thông khi truy cập các trang đã cache. Ý tưởng đồ án: - Tạo 1 CSocket với kiểu truyền từ TCP và port 8888 để chuẩn bị tạo liên kết với Client. - Liên kết từ Client(Brower) kiểm soát các lỗi có thể xảy ra khi kết nối và kết thúc chương trình. Mạng máy tính -- KHTN 3 Đồ án Proxy III. - Khi kết nối thành công thì bắt đầu tiến trình truyền nhận dữ liệu giữa Brower và Server thông qua Proxy ( ngay tại bước này nên tạo thêm 1 Socket để chồ lắng nghe các yêu cầu khác từ Browser, nếu nhận được request thì bắt đầu 1 tiến trình riêng cho request đó). - Nhận 1 Request từ Browser(Client) tách trong request, để lấy các IP host và page để kiểm tra file bị chặn và kiểm tra phần caching đã lưu trước đó. - Nếu trang web không bị chặn và chưa có caching thì tạo liên kết với Server từ host IP lấy được. vòng lặp gửi yêu cầu từ browser tới Server cho tới khi kết thúc request. Sau đó nhận phản hồi từ Server và gửi tới lại cho Brower. Mức độ hoàn thành tổng đồ án: - Hoàn thành các chức năng 3,5,6,7 của đồ án. - Phần mềm có thể tải hoàn thiện 1 trang web( trừ các trang bị chặn trong black list). Nhưng trong thời gian tải trang web thì không thể nhận các request khác từ client. - Các chức năng khác như hỗ trợ HTTP 1.1, nhận đồng thời các request từ Client,… phải tiến hành đa tiến trình để có thể nhận và xử lý các yêu cầu của Client theo từng luồng khác nhau. - Chức năng caching chỉ có thể lưu hình ảnh ở những trường hợp đặc biệt. - Mức độ hoàn thành: 75% (chương trình chưa tối ưu cho tất cả trang web) IV. Chi tiết các hàm trong tiến trình Khai báo các hằng số sử dụng trong chương trình. Mạng máy tính -- KHTN 4 Đồ án Proxy Khởi tạo Socket để bắt đầu tiến trình theo yêu cầu của đồ án. Khởi tạo và lắng nghe thành công thì bắt đầu tiến trình. Hàm Process: hàm thể hiện tiến trình liên kết và trao đổi dữ liệu giữa client và server thông qua proxy. Bắt đầu nhận yêu cầu từ client sau đó host và page từ request thông qua hàm Get_Host. Mạng máy tính -- KHTN 5 Đồ án Proxy Kiểm tra trang web có trong tập tin blacklist không? Nếu có thì trả về client response 403 và kết thúc tiến trình. Tiếp theo kiểm tra xem có trong file cache. Cơ chế caching là sử dụng tên của host và page để tạo file lưu caching. Sau đó dựa trên host và page vừa lấy ra tạo thành tên file. Nếu mở file thành công thì trang web đã được cache và load từng dòng của file và gửi tới cilent sau đó kết thúc tiến trình. Vì gửi từng dòng nên không chính xác khi load hình ảnh. Mạng máy tính -- KHTN 6 Đồ án Proxy Nếu chưa caching thì tiến hành như bình thường. Kết nối tới Server dựa trên IP host vừa tìm được từ hàm get_ip. Sau đó build Query để gửi lên Server vừa kết nối. Gửi tới khi hết các request từ Browser. Mạng máy tính -- KHTN 7 Đồ án Proxy Tiếp theo chờ Server reponse và gửi các file theo request mới được gửi từ Client. Caching lại trang web mới vừa tải. Đóng socket và kết thúc tiến trình sau khi tải xong. Vòng lặp chờ cho tới khi lắng nghe được yêu cầu khác từ client hoặc nhập q để thoát chương trình. Mạng máy tính -- KHTN 8 Đồ án Proxy V. Các bước khi chương trình chạy và tập tin bắt được Đầu tiên phải cài đặt browser sử dụng proxy.Đối với Chrome, Ta vào setting-> advanced ->open proxy setting và cài đặt như trong hình. Khi mới bắt đầu chạy chương trình sẽ chờ kết nối từ Client và chạy từng bước như đã nêu ở trên, nếu trang web bị chặn thì sẽ hiện thông báo và gửi dữ liệu về cho client. Mạng máy tính -- KHTN 9 Đồ án Proxy Nếu trong chương trình có hiện lên Caching thì có nghĩa là trang web đã được lưu từ trước. Nếu không thì tiến trình sẽ chạy như bình thường. Mạng máy tính -- KHTN 10 Đồ án Proxy WireShark: Liên kết giữa client và Proxy. Đầu tiên Browser gửi yêu cầu cho Client để truy cập trang web(ở đây là cplusplus.com) Sau đó client tiếp tục gửi các request để yêu cầu tãi phần thân trang web và các liên kết được gắn trong trang web (infor GET http://…..). Bên phía proxy phản hồi lại các request đã được gửi thành công (HTTP 1.1 200 OK). Sau khi nhận hết các request từ client thì proxy bắt đầu xử lí các tập tin thu được như đã nêu ở trên. Sau đó, gửi cho Server nếu không có caching. File request được sửa lại thành HTTP 1.0 vì Proxy không thể xử lí đa tiến trình (HTTP 1.1) như request từ Client. Mạng máy tính -- KHTN 11 Đồ án Proxy VI. Tài liệu tham khảo - Các tài liệu hỗ trợ mà môn mạng máy tính cung cấp. - https://github.com/annguyen011197/Proxy-Server/blob/master/Proxy/Proxy.cpp Mạng máy tính -- KHTN 12