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

BÁO CÁO ĐỒ ÁN 4 ĐỀ TÀI: TÌM HIỂU VÀ XÂY DỰNG CHƯƠNG TRÌNH HTTP SERVER . Th.S Nguyễn Văn Bình

46 267 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 46
Dung lượng 1,14 MB

Cấu trúc

  • LỜI CẢM ƠN

  • LỜI NÓI ĐẦU

  • CHƯƠNG 1. CƠ SỞ LÝ THUYẾT

    • 1.1. Tổng quan về lập trình mạng

      • 1.1.1. Khái niệm

      • 1.1.2. Ngôn ngữ lập trinh mạng

      • 1.1.3. Thư viện hỗ trợ

      • 1.1.4. Mô hình phân tầng

      • 1.1.5. Giao thức mạng

    • 1.2. Tìm hiểu về web server

      • 1.2.1. Web server là gì?

      • 1.2.2. Những phần chính quan trọng của web server

      • 1.2.3. Chức năng của web server

      • 1.2.4. Web server hoạt động như thế nào?

      • 1.2.5. Những lưu ý khi sử dụng web server

    • 1.3. Giới thiệu về giao thức HTTP

      • 1.3.1. HTTP là gì

      • 1.3.2. Các đặt trưng cơ bản của HTTP

      • 1.3.3. Cấu trúc cơ bản

      • 1.3.4. Ưu nhược điểm của giao thức HTTP

    • 1.4. Tổng quan về ngôn ngữ Java

      • 1.4.1. Ngôn ngữ Java là gì?

      • 1.4.2. Đặc điểm ngôn ngữ Java

      • 1.4.3. Tại sao nên sử dụng Java?

      • 1.4.4. Java được ứng dụng ở đâu?

  • CHƯƠNG 2. PHÂN TÍCH HỆ THỐNG

    • 2.1 HTTP là một Application Protocol dạng stateless

    • 2.2. Các phương thức giao tiếp HTTP 

      • 2.2.1. GET

      • 2.2.2. POST

      • 2.2.3. PUT

      • 2.2.4. DELETE

      • 2.2.5. HEAD

      • 2.2.6. CONNECT

      • 2.2.7. OPTIONS

      • 2.2.8. TRACE

    • 2.3. Các trường header trong HTTP

      • 2.3.1. General Header

      • 2.3.2. Request-Header (Các trường Header yêu cầu trên Client)

      • 2.3.3. Response-Header (Các trường Phản hồi từ Server)

      • 2.3.4.Entity Headers

    • 2.4. HTTP status codes

      • 2.4.1. HTTP status codes là gì?

      • 2.4.2. Các loại HTTP status code

  • CHƯƠNG 3. DEMO CHƯƠNG TRÌNH

    • 3.1 Chạy demo chương trình:

    • CHƯƠNG IV. ĐÁNH GIÁ KẾT QUẢ ĐẠT ĐƯỢC VÀ HƯỚNG PHÁT TRIỂN ĐỀ TÀI

    • 4.1. Đánh giá kết quả đạt được:

    • 4.2. Hướng phát triển đề tài:

  • KẾT LUẬN

  • TÀI LIỆU THAM KHẢO

Nội dung

CƠ SỞ LÝ THUYẾT

Tổng quan về lập trình mạng

Lập trình mạng là kỹ thuật xây dựng ứng dụng và phần mềm nhằm tối ưu hóa việc khai thác tài nguyên của mạng máy tính Sự phát triển không ngừng của mạng máy tính đã mang lại nhiều ứng dụng quan trọng, góp phần không nhỏ vào sự tiến bộ của công nghệ thông tin.

Hiện nay, khi đề cập đến phát triển ứng dụng phần mềm, người ta thường nhắc đến các chương trình hoạt động trong môi trường mạng, bao gồm cả mạng máy tính Các ứng dụng này có thể là chương trình kế toán doanh nghiệp, quản lý, trò chơi hay điều khiển, tất cả đều thuộc loại ứng dụng mạng.

Lập trình mạng là một lĩnh vực đa dạng, liên quan đến nhiều kiến thức như ngôn ngữ lập trình, phân tích thiết kế hệ thống, hệ thống mạng, và xây dựng ứng dụng mạng Nó cũng bao gồm kiến thức về cơ sở dữ liệu, truyền thông, và các công nghệ liên quan như mạng di động, PSTN, GPS, Bluetooth, WUSB, và mạng cảm biến Tuy nhiên, có ba vấn đề cốt lõi trong lập trình ứng dụng mạng mà người lập trình viên cần chú ý, thể hiện rõ trong quá trình phát triển ứng dụng.

Hay nói cách khác, vấn đề lập trình mạng có thể đươc định nghĩa với công thức sau: LTM = KTM + MH + NN.

LTM: Lập trình mạng.

KTM: Kiến thức mạng truyền thông (mạng máy tính, PSTN, ).

MH: Mô hình lập trình mạng.

NN: Ngôn ngữ lập trình mạng.

1.1.2 Ngôn ngữ lập trinh mạng

Hầu hết các ngôn ngữ lập trình đều có khả năng lập trình mạng, nhưng hiệu quả còn phụ thuộc vào các thư viện và môi trường lập trình hỗ trợ Một số ngôn ngữ lập trình phổ biến cho lập trình mạng bao gồm: Python, Java, C#, JavaScript và Ruby.

C/C++: Ngôn ngữ lập trình rất mạnh và phổ biến, dùng để viết mọi loại ứng dụng trong đó có ứng dụng mạng.

Java: Ngôn ngữ lập trình khá thông dụng và hổ trơ nhiều môi trường, tỏng đó có thể viết ứng dụng chạy trên điện thoại di động.

C#: Ngôn ngữ lập trình rất mạnh và dễ sử dụng, chỉ hổ trơ trên họ hệ điều hành Windows của Microsoft.

Python, Perl và PHP là những ngôn ngữ lập trình thông dịch, cho phép phát triển nhanh chóng các tiện ích nhỏ Chúng có thể được sử dụng để xây dựng ứng dụng web một cách hiệu quả.

Lập trình mạng chủ yếu dựa vào các thư viện hỗ trợ từ hệ thống Tùy thuộc vào nền tảng phát triển ứng dụng, người lập trình có thể chọn sử dụng các thư viện khác nhau để tối ưu hóa hiệu suất và tính năng của ứng dụng.

Có thể liệt kê một với thư viện hỗ trơ lập trình mạng như sau:

- Winsock: Thư viện liên kết động của Microsoft, đươc phân phối cùng hệ điều hành Windows Winsock cung cấp khá nhiều API để phát triển ứng dụng mạng.

Winsock có thể được sử dụng với bất kỳ ngôn ngữ lập trình nào, nhưng sự kết hợp giữa C/C++ và Winsock mang lại hiệu suất tối ưu nhất, mặc dù có phần khó khăn trong việc sử dụng.

Thư viện System.Net trong NET framework cung cấp nhiều API dễ sử dụng cho việc xây dựng ứng dụng mạng Người phát triển thường sử dụng C# để khai thác các tính năng của thư viện này, giúp quá trình phát triển ứng dụng mạng trở nên thuận tiện và hiệu quả hơn.

- Thư viện MFC Socket: Thư viện đi cùng bộ phát triển Visual Studio C++ Đây là thư viện cũng không dễ sử dụng

- Các thư viện trong Java Runtime, PHP,…

1.1.4 Mô hình phân tầng a Mô hình OSI:

Mô hình OSi có 7 lớp và đươc thiết kế theo các nguyên tắc sau:

- Một lớp đươc tạo ra tương đương với một khái niệm trừu tương.

- Một lớp thực hiện một chức năng hoàn chỉnh nào đó.

- Chức năng của mỗi lớp phải đươc chọn theo xu hướng phù hơp với các giao thức đã đươc chuẩn hóa.

- Biên của các lớp phải đươc thiết kế sao cho tối thiểu hóa đươc lương thông tin truyền qua các giao diện.

Vai trò và chức năng của 7 tầng OSI:

Trong mô hình OSI, khả năng kiểm soát được chuyển giao từ tầng này sang tầng khác, bắt đầu từ tầng 7 và dần dần hạ xuống các tầng dưới Quá trình này diễn ra qua các kênh đến các trạm, sau đó thực hiện sao lưu theo cấu trúc phân cấp.

Mô hình OSI 7 tầng tiếp nhận nhiệm vụ liên mạng, tiến hành chia thành các tầng tương ứng đươc xếp chồng lên nhau.

Mô hình OSI, hay còn gọi là Mô hình tham chiếu OSI, bao gồm 7 tầng và là một hệ thống mở, cho phép kết nối thông tin giữa các hệ thống khác nhau Nó giữ vai trò quan trọng trong giao tiếp, đảm bảo tính tương thích với các chuẩn OSI.

Tầng 1-4: là các tầng thực hiện chức năng di chuyển dữ liệu, đây là các tầng cấp thấp.

Tầng 5-7: tầng cấp cao chứa các dữ liệu ứng dụng Cách thức vận hành của hệ thống network nằm trong một quy tắc chung đó là chuyển dữ liệu đi Mỗi tầng sẽ thực hiện các chức năng chuyên biệt riêng sau đó mới chuyển các dữ liệu đi tới các tầng tiếp theo.

Application Layer – Tầng Ứng dụng:

Tầng Ứng dụng là lớp trên cùng trong mô hình, xác định giao diện giữa các đối tác và người sử dụng, cũng như chất lượng dịch vụ Nó cũng xác định quyền riêng tư và các ràng buộc liên quan đến cú pháp dữ liệu Tầng này chỉ cung cấp nền tảng làm việc cho các ứng dụng phía trên.

Khi thiết lập các đối tượng ứng dụng AE (Application Entity), chúng sẽ kết nối với các phần tử dịch vụ ứng dụng ASE (Application Service Element) Mỗi đối tượng ứng dụng có thể bao gồm một hoặc nhiều phần tử dịch vụ, được kết hợp trong môi trường thực thể ứng dụng thông qua các liên kết gọi là đối tượng liên kết đơn SAO (Single Association Object) Đối tượng liên kết SAO điều khiển việc truyền thông, cho phép tuần tự hóa các sự kiện truyền thông.

Tầng Application có các dịch vụ ứng dụng cho các tác vụ email, chuyển tệp, cho các phần mềm Telnet, FTP là 2 ứng dụng tồn tại ở tầng này.

Ví dụ ứng dụng ở tầng Application: WWW, Telnet, HTTP, FTP, NFS, SNMP.

Presentation Layer – Tầng trình bày:

Tầng thứ hai kế tiếp tầng ứng dụng là tầng trình bày, tầng này nhận lấy các dữ liệu từ tầng ứng dụng.

Chức năng của hệ thống là giải quyết các vấn đề liên quan đến cú pháp và ý nghĩa của thông tin được truyền tải Nó diễn giải thông tin từ người sử dụng sao cho phù hợp với dữ liệu làm việc của mạng và ngược lại, đảm bảo sự tương tác hiệu quả giữa người dùng và hệ thống.

Thông tin về các ứng dụng nguồn và ứng dụng đích có thể khác nhau do chúng hoạt động trên các hệ thống khác nhau.

Tìm hiểu về web server

Giao thức này là một trong năm giao thức chuẩn của Internet, được sử dụng để trao đổi thông tin giữa máy chủ (Web server) và máy khách (Web client) Nó hoạt động trong mô hình Client/Server, phục vụ cho việc truy cập và sử dụng World Wide Web (WWW).

Giao thức truyền tập tin (FTP) là một giao thức dùng để trao đổi tập tin qua mạng lưới truyền thông sử dụng giao thức TCP/IP Cổng mặc định của FTP là 20/21, giúp cho việc truyền tập tin được thực hiện một cách an toàn và hiệu quả.

Hệ thống phân giải tên miền (DNS) là một công nghệ quan trọng giúp liên kết địa chỉ IP với tên miền trên internet Nhờ vào giao thức DNS, người dùng có thể dễ dàng chuyển đổi tên miền thành địa chỉ IP Cổng mặc định cho DNS là 53.

1.2 Tìm hiểu về web server

Web server, hay máy chủ web, là thiết bị xử lý các yêu cầu từ trình duyệt máy khách và gửi thông tin đến client qua giao thức HTTP hoặc các giao thức khác Một số web server phổ biến hiện nay bao gồm Apache, Nginx và IIS.

Các chương trình trên máy chủ web được cài đặt để phục vụ ứng dụng web, giúp tiếp nhận các yêu cầu từ trình duyệt và gửi phản hồi đến client qua giao thức HTTP hoặc các giao thức khác Mỗi máy chủ web cần có dung lượng lớn và tốc độ cao để lưu trữ và vận hành hiệu quả mọi kho dữ liệu trên Internet Cấu hình máy chủ web được thiết lập thông qua các cổng giao tiếp riêng biệt, giúp điều hành hiệu quả cho toàn bộ hệ thống máy tính hoạt động trên Internet.

Xây dựng máy chủ web server yêu cầu đảm bảo quy trình hoạt động liên tục và ổn định, nhằm duy trì việc cung cấp dữ liệu cho mạng lưới máy tính Đây sẽ là nơi lưu trữ toàn bộ dữ liệu hoạt động trên internet, được quản lý một cách hiệu quả.

1.2.2 Những phần chính quan trọng của web server

Để cấu hình máy chủ web hiệu quả, hai yếu tố quan trọng không thể thiếu là phần cứng và phần mềm, đôi khi cần kết hợp cả hai để đạt được hiệu suất tối ưu.

Máy chủ web server kết nối với internet qua tên miền như mozilla.org, đóng vai trò quan trọng trong việc lưu trữ các tệp thành phần của website, bao gồm hình ảnh, CSS, Javascript và HTML Nó cũng chịu trách nhiệm chuyển các tệp này đến thiết bị của người dùng cuối.

Web server bao gồm các phần để điều khiển người dùng truy cập vào các file lưu trữ trên một HTTP server HTTP server là phần mềm có khả năng hiểu các URL và giao thức trình duyệt đang sử dụng Khi trình duyệt cần truy cập file dữ liệu trên máy chủ, nó sẽ gửi yêu cầu file đó thông qua giao thức HTTP.

Hình 1 3 Những phần chính quan trọng của web server

Với hai phần cứng và phần mềm, bạn có thể dễ dàng xây dựng một web server đơn giản hoặc phức tạp, phục vụ cho nghiên cứu, phát triển và kinh doanh.

1.2.3 Chức năng của web server

Chức năng cơ bản của web server không thể thiếu là lưu trữ, xử lý và phân phối nội dung website đến với khách hàng

Xử lý dữ liệu qua giao thức HTTP cho phép cung cấp thông tin cho khách hàng qua máy tính cá nhân trên Internet Nội dung được chia sẻ từ máy chủ web bao gồm các định dạng HTML, thẻ style sheets, hình ảnh và mã script hỗ trợ văn bản Khi người dùng truy cập vào Bizfly.vn, máy chủ sẽ truyền tải toàn bộ dữ liệu liên quan đến trang web đó thông qua lệnh giao tiếp.

Mọi máy tính đều có khả năng trở thành máy chủ khi được cài đặt phần mềm server và kết nối với internet, mang đến sự linh hoạt trong việc kết nối.

Chương trình chuyển đổi thông minh cho phép người dùng cài đặt phần mềm web server trên bất kỳ máy tính nào đáp ứng yêu cầu về bộ nhớ Người dùng có thể lưu trữ dữ liệu thông qua việc thuê các máy chủ nhỏ, máy chủ ảo VPS hoặc dịch vụ hosting, giúp tối ưu hóa hiệu suất và khả năng truy cập.

Sau khi hoàn thành thiết kế website, việc đăng tải lên web server là cần thiết để khách hàng có thể truy cập từ khắp nơi trên thế giới và nắm bắt nội dung bên trong.

1.2.4 Web server hoạt động như thế nào?

Dựa trên cấu hình máy chủ, muốn lấy một trang web, trình duyệt sẽ gửi một yêu cầu (request) tới webserver

Máy chủ sẽ tìm kiếm file yêu cầu trên ổ đĩa lưu trữ, sau đó đọc và xử lý file nếu cần, và cuối cùng gửi file đó đến trình duyệt Để hiểu rõ hơn về các bước cụ thể, bạn có thể xem phần bên dưới.

Hình 1 4 Hoạt động của web server

Mô hình hoạt động của web server:

Giới thiệu về giao thức HTTP

1.3 Giới thiệu về giao thức HTTP

Giao thức Hypertext Transfer Protocol (HTTP) là một giao thức thuộc tầng ứng dụng, chủ yếu được sử dụng để truyền tải các tài liệu đa phương tiện như HTML HTTP được thiết kế để tạo ra sự giao tiếp hiệu quả giữa trình duyệt web và máy chủ web, nhưng nó cũng có nhiều ứng dụng khác nhau trong lĩnh vực truyền thông trực tuyến.

HTTP hoạt động theo mô hình client-server truyền thống, trong đó client thiết lập một kết nối để gửi yêu cầu và sau đó chờ đợi phản hồi từ server.

HTTP là giao thức không lưu trạng thái, nghĩa là máy chủ không giữ dữ liệu giữa các yêu cầu Thường dựa trên lớp TCP/IP, HTTP có thể hoạt động trên bất kỳ tầng giao vận đáng tin cậy nào, bao gồm các giao thức không mất dữ liệu như UDP.

HTTP là một giao thức giao tiếp dựa trên TCP/IP, được sử dụng để phân phối dữ liệu như tệp HTML và hình ảnh trên WWW Cổng mặc định của HTTP là TCP 80, nhưng cũng có thể sử dụng các cổng khác Giao thức này cung cấp một cách tiêu chuẩn hóa để các máy tính giao tiếp với nhau Chi tiết kỹ thuật của HTTP xác định cách dữ liệu yêu cầu từ Client được xây dựng và gửi đến Server, cũng như cách Server phản hồi các yêu cầu này.

1.3.2 Các đặt trưng cơ bản của HTTP

Có 3 đặc trưng cơ bản mà làm HTTP trở thành một giao thức đơn giản nhưng đầy sức mạnh:

HTTP là giao thức kết nối không liên tục, trong đó client, như trình duyệt, khởi tạo yêu cầu HTTP và sau đó ngắt kết nối với server để chờ phản hồi Server sẽ xử lý yêu cầu và thiết lập lại kết nối với client để gửi lại phản hồi.

HTTP là một giao thức độc lập, cho phép truyền tải mọi loại dữ liệu giữa Server và Client Để đảm bảo việc truyền tải hiệu quả, cả Client và Server cần xác định kiểu nội dung thông qua việc sử dụng kiểu MIME phù hợp.

HTTP là một giao thức không trạng thái, có nghĩa là server và client chỉ duy trì thông tin trong một yêu cầu hiện tại Sau khi hoàn thành yêu cầu, cả hai bên sẽ không còn nhớ đến nhau Tuy nhiên, client và các trình duyệt có khả năng lưu trữ thông tin giữa các yêu cầu khác nhau trên các trang web.

Sơ đồ dưới đây chỉ cấu trúc rất đơn giản của một ứng dụng web và miêu tả vị trí của HTTP:

Hình 1 5 Cấu trúc cơ bản của HTTP

Giao thức HTTP là một giao thức yêu cầu/phản hồi dựa trên cấu trúc Client/Server, trong đó các trình duyệt web và thiết bị tìm kiếm hoạt động như các Client, trong khi các Server web đóng vai trò là Server.

Khách hàng gửi yêu cầu đến máy chủ thông qua một phương thức yêu cầu, bao gồm URI và phiên bản giao thức, kèm theo một thông báo MIME chứa các bộ chỉnh sửa yêu cầu, thông tin của khách hàng và nội dung đối tượng qua kết nối TCP/IP.

Máy chủ phản hồi với một dòng trạng thái, bao gồm phiên bản giao thức thông báo và mã thành công hoặc lỗi, tiếp theo là thông báo MIME chứa thông tin về máy chủ, dữ liệu đa phương tiện và nội dung đối tượng có thể.

1.3.4 Ưu nhươc điểm của giao thức HTTP Ưu điểm:

- Giao thức HTTP độc lập, cho phép chuyển nền tảng chéo thẳng.

- Không đòi hỏi hỗ trơ khi thực hiện đẻ có thể chạy chính xác, nó có thể sử dụng trên tường lửa

- HTTP không phải là kết nối theo định hướng, không cần đầu vào mạng để tạo và duy trì trang thái phiên và thông tin.

HTTP không đảm bảo tính toàn vẹn của dữ liệu, cho phép dễ dàng thay đổi nội dung Bên cạnh đó, giao thức này không an toàn vì thiếu phương thức mã hóa, khiến nó trở thành mục tiêu dễ dàng cho các cuộc tấn công nhằm nghe lén thông tin nhạy cảm.

- Không có xác thực Bạn sẽ không có bất kỳ xác nhận rõ ràng nào về người và bạn bắt đầu giao tiếp.

- Bất kỳ ai cũng có thể chặn yêu cầu gửi đi, biết đươc tên người dùng và mật khẩu đang đươc sử dụng.

Tổng quan về ngôn ngữ Java

1.4.1 Ngôn ngữ Java là gì?

Java là ngôn ngữ lập trình hướng đối tượng phổ biến, được ứng dụng rộng rãi trong phát triển phần mềm, trang web, game và ứng dụng di động.

Java được sáng lập bởi James Gosling và các đồng nghiệp tại Sun Microsystems vào năm 1991 Ban đầu, ngôn ngữ lập trình này được phát triển để tạo phần mềm cho các sản phẩm gia dụng và mang tên là Oak.

Java được phát hành vào năm 1994 và được Oracle mua lại từ Sun MicroSystem vào năm 2010 Ngôn ngữ lập trình này được thiết kế với tiêu chí "Viết một lần, chạy khắp nơi" (WORA), cho phép các chương trình viết bằng Java có thể hoạt động trên nhiều nền tảng khác nhau, miễn là có môi trường thực thi phù hợp hỗ trợ cho nền tảng đó.

1.4.2 Đặc điểm ngôn ngữ Java

Tính trừu tượng là quá trình xác định và phân loại các thuộc tính cũng như hành động liên quan đến một thực thể cụ thể, trong bối cảnh ứng dụng đang được phát triển.

Tính đa hình (Polymorphism) cho phép một phương thức thực hiện các tác động khác nhau trên nhiều loại đối tượng khác nhau Khi áp dụng cùng một phương thức cho các đối tượng thuộc các lớp khác nhau, nó sẽ tạo ra những kết quả khác nhau Bản chất của tính đa hình là phương thức này sử dụng cùng một số lượng các tham số.

- Tính kế thừa (Inheritance): điều này cho phép các đối tương chia sẻ hay mở rộng các đặc tính sẵn có mà không phải tiến hành định nghĩa lại.

- Tính đóng gói (Encapsulation): là tiến trình che giấu việc thực thi những chi tiết của một đối tương đối với người sử dụng đối tương ấy.

Java có khả năng độc lập nền tảng (Write Once, Run Anywhere), nghĩa là khi được biên dịch, Java không chuyển đổi sang mã máy cụ thể như C hay C++, mà thay vào đó tạo ra mã byte code chạy trên máy ảo Java (JVM) Do đó, bất kỳ thiết bị nào cài đặt JVM đều có thể thực thi các chương trình Java.

- Đơn giản: nếu đã quen với các ngôn ngữ lập trình hướng đối tương thì việc học

Java sẽ dễ dàng hơn Java trở nên đơn giản hơn so với C/C++ do đã loại bỏ tính đa kế thừa và phép toán con trỏ từ C/C++.

Java cung cấp khả năng bảo mật mạnh mẽ nhờ vào các thuật toán mã hóa tiên tiến, bao gồm mã hóa một chiều (one way hashing) và mã hóa công khai (public key), giúp bảo vệ dữ liệu hiệu quả.

Đa luồng trong Java cho phép lập trình viên viết chương trình thực thi nhiều tác vụ đồng thời, điều này rất hữu ích trong lập trình game Tính năng này giúp tối ưu hóa hiệu suất và nâng cao trải nghiệm người dùng bằng cách xử lý nhiều nhiệm vụ cùng lúc.

- Hiệu suất cao: nhờ vào trình thu gom rác (garbage collection), giải phóng bộ nhớ đối với các đối tương không đươc dùng đến.

- Linh hoạt: Java đươc xem là linh hoạt hơn C/C ++ vì nó đươc thiết kế để thích ứng với nhiều môi trường phát triển.

1.4.3 Tại sao nên sử dụng Java?

Java là một ngôn ngữ lập trình đa nền tảng, hoạt động thông qua máy ảo Java (JVM) Ngôn ngữ này cũng được sử dụng để phát triển các ứng dụng Android, cho thấy tính linh hoạt và khả năng ứng dụng rộng rãi của nó.

Khoảng 90% các công ty trong danh sách Fortune 500 đã chọn Java để phát triển ứng dụng máy tính để bàn và hệ thống hỗ trợ trang web, nhờ vào những lợi ích vượt trội mà ngôn ngữ lập trình này mang lại.

- Thân thiện với người mới

- Tốc độ xử lý nhanh

- Hiệu suất tối ưu hóa

- Có nhiều thư viện mã nguồn mở phong phú

1.4.4 Java đươc ứng dụng ở đâu?

Java đươc dùng để viết các ứng dụng như:

- Ứng dụng máy chủ dùng trong các dịch vụ tài chính

PHÂN TÍCH HỆ THỐNG

HTTP là một Application Protocol dạng stateless

Stateless là thiết kế không lưu trữ dữ liệu của client trên server, nghĩa là sau khi client gửi dữ liệu và server xử lý xong, mối quan hệ giữa client và server sẽ bị "cắt đứt", không lưu lại bất kỳ dữ liệu nào Khái niệm "trạng thái" ở đây liên quan đến dữ liệu, và cụm "phi trạng thái" có thể khiến nhiều người hiểu sai bản chất của vấn đề.

Có 4 cách lưu data của client khi xây dựng Web Application:

Sử dụng URL Rewriter là một phương pháp hiệu quả để truyền tải dữ liệu trong HTML, ngôn ngữ chủ yếu dùng để định dạng tài liệu Mặc dù HTML không phải là ngôn ngữ lập trình và không hỗ trợ việc lưu trữ dữ liệu qua biến, nhưng bạn có thể chèn dữ liệu vào các liên kết Khi người dùng nhấp vào liên kết, dữ liệu sẽ được gửi lên server Thông thường, dữ liệu được đưa vào phần query thông qua các cặp parameters dạng key=value, và một số cài đặt cho phép đưa dữ liệu vào phần path hoặc trong các biến của JavaScript.

Để lưu dữ liệu một cách hiệu quả, thay vì sử dụng đường link, chúng ta sẽ sử dụng các thành phần của form với kiểu element là hidden Điều này cho phép mọi hành động của người dùng gửi dữ liệu lên server thông qua phương thức POST, thay vì GET như trong URL Rewriter Phương thức GET chỉ cho phép đọc dữ liệu, trong khi POST cho phép ghi dữ liệu Nhờ đó, dữ liệu của client sẽ được gửi lên server trong phần body của một HTTP Message, thay vì trong phần Header như khi sử dụng liên kết.

Sử dụng Cookie cho phép Web Application lưu trữ khoảng 4kb dữ liệu dưới dạng key/value trong trình duyệt Khi lưu dữ liệu từ lần truy vấn trước vào cookie, giá trị này sẽ được gửi lên server trong mỗi yêu cầu, và cookie trở thành một phần quan trọng trong header của HTTP Message.

HTTP Session cho phép các Web Server lưu trữ một lượng nhỏ dữ liệu cho mỗi client, khác với cookie Dữ liệu này được lưu dưới dạng key/value và sẽ tự động hết hạn nếu không có hoạt động từ client trong một khoảng thời gian nhất định, dẫn đến việc hủy bỏ thông tin lưu trữ.

2.2 Các phương thức giao tiếp HTTP

HTTP định nghĩa các phương thức để chỉ ra các hành động mong muốn thực hiện trên tài nguyên xác định, thường là tập tin hoặc đầu ra của một thực thi trên máy chủ Phiên bản HTTP/1.1 bao gồm các phương thức như GET, POST, HEAD, OPTIONS, PUT, DELETE, TRACE và CONNECT, trong đó GET và POST là hai phương thức được sử dụng phổ biến nhất.

GET Đươc sử dụng lấy tài nguyên từ server

HEAD Đươc sử dụng để lấy phần header mà không có phần body

POST Trình dữ liệu để xử lý đến tài nguyên đươc xác định

Các phương thức giao tiếp HTTP

DELETE Yêu cầu web server xóa tài nguyên đươc xác định

CONNECT Có thể cho phép client sử dụng website như một proxy

OPTIONS Trả lại danh sách các phương thức HTTP mà đươc bật trên web server

TRACE Dội lại cho client bất cứ chuỗi nào đươc gửi tới server

Bảng 1 1: Bảng mô tả ngắn gọn về hành động của các phương thức HTTP

Phương thức GET được sử dụng để truy xuất thông tin từ máy chủ thông qua một URI đã chỉ định Các yêu cầu GET chỉ nhận dữ liệu mà không thực hiện bất kỳ tác động nào khác.

Server phản hồi lại yêu cầu từ client, phản hồi chứa thông tin về trạng thái và có thể cũng chứa cả nội dung đươc yêu cầu.

Khi nhập URL để truy cập một trang tin tức trực tuyến, ví dụ như http://webdevstudios.org/phuong-thuc-http, bạn đang sử dụng phương thức GET Phương thức này cho phép lấy dữ liệu từ WebServer và gửi lại một thẻ Tag chứa địa chỉ dữ liệu của trang đó.

Phương thức POST cho phép web server tiếp nhận và lưu trữ dữ liệu trong phần body của request message, được xác định bởi URI Phương thức này thường được sử dụng khi tải lên tệp tin hoặc gửi các biểu mẫu web, nhóm tin, và chủ đề bình luận.

Phương thức PUT yêu cầu các thực thể kèm theo được lưu trữ dưới URI đã cấp Nếu URI tham chiếu đến tài nguyên tồn tại, tài nguyên đó sẽ được sửa đổi; ngược lại, nếu URI không trỏ đến tài nguyên nào, máy chủ web sẽ tạo ra tài nguyên mới với URI đó Khi một tài nguyên được tạo, máy chủ sẽ phản hồi với mã trạng thái 201 (Created) Nếu tài nguyên đã tồn tại và được sửa đổi, mã trạng thái phản hồi sẽ là 200 (OK) hoặc 204 (No Content).

Sự khác nhau cơ bản giữa POST và PUT nằm ở ý nghĩa của các Request-URI:

- POST request xác định tài nguyên mà sẽ xử lý các thực thể kèm theo.

Trong yêu cầu PUT, các URI xác định các thực thể đi kèm với yêu cầu, giúp user agent hiểu rõ mục đích của URI mà không cần máy chủ phải nỗ lực để xử lý các yêu cầu đến tài nguyên khác.

Dưới đây là ví dụ request và response phương thức PUT:

Nếu phương thức PUT được kích hoạt trên máy chủ web, kẻ tấn công có khả năng thay đổi tài nguyên hoặc tải lên mã độc, ví dụ như tệp tin thực thi lệnh cmd.exe.

Phương thức DELETE yêu cầu web server xóa tài nguyên đươc xác định với Request-URI

Phản hồi thành công trong giao thức HTTP sẽ có mã 200 (OK) nếu bao gồm một thực thể mô tả trạng thái, mã 202 (Accepted) nếu hành động chưa được thực hiện, và mã 204 (No Content) nếu hành động đã được thực hiện nhưng không có thực thể nào trong phản hồi.

Phương pháp này không đảm bảo việc thực hiện thao tác, mặc dù mã trạng thái từ máy chủ thông báo rằng hành động đã được thực hiện thành công.

Dưới đây là ví dụ request và response phương thức DELETE:

Phương thức này cho phép client xóa tệp tin trên web server, tạo cơ hội cho kẻ tấn công dễ dàng thực hiện việc deface website hoặc sử dụng nó để thực hiện các cuộc tấn công từ chối dịch vụ (DoS).

Phương thức HEAD trong HTTP yêu cầu phản hồi tương tự như phương thức GET, nhưng không bao gồm phần body Điều này rất hữu ích để lấy thông tin meta từ header mà không cần tải toàn bộ nội dung, giúp tiết kiệm băng thông và tăng tốc độ truy cập.

Dưới đây là ví dụ về Request và Response của phương thức HEAD:

Thiết lập một tunnel tới Server đươc xác định bởi URI đã cung cấp Phương thức này có thể cho phép client sử dụng website như một proxy.

Phương thức OPTIONS trả lại danh sách các phương thức HTTP mà đươc bật trên web server

Từ những thông tin này sẽ giúp dễ dàng xác định phương thức nào đang enable.

Dưới đây là ví dụ request và response phương thức OPTIONS:

Allow: OPTIONS, TRACE, GET, HEAD, POST

Public: OPTIONS, TRACE, GET, HEAD, POST

Từ những thông tin này sẽ giúp attacker dễ dàng xác định phương thức nào đang enable và từ đó thực hiện tấn công từ xa

Vì vậy, thừa nhận disable phương thức OPTIONS đến người dùng từ xa.

Phương thức TRACE dội lại cho client bất cứ chuỗi nào đươc gửi tới server, và nó đươc sử dụng cho mục đích debug.

Dưới đây là ví dụ request và response phương thức TRACE:

Các trường header trong HTTP

Các trường Header trong thông báo HTTP cung cấp thông tin cần thiết về yêu cầu hoặc phản hồi, cũng như về đối tượng được gửi trong phần thân thông báo Có bốn loại Header thông báo HTTP.

- Kiểu chung (General-Header): Các trường Header này có khả năng ứng dụng chung cho cả các thông báo yêu cầu và phản hồi.

- Kiểu yêu cầu (Request-Header): Các trường Header này có khả năng ứng dụng chỉ cho các thông báo yêu cầu.

- Kiểu phản hồi (Response-Header): Các trường Header này chỉ có khả năng áp dụng cho các thông báo phản hồi.

Kiểu thực thể (Entity-Header) bao gồm các trường xác định thông tin về thân thực thể, hoặc nếu không có phần thân hiển thị, nó sẽ cung cấp thông tin về nguồn được nhận diện qua yêu cầu.

Trường Header chung Cache-Control đươc sử dụng để xác định các chỉ dẫn mà phải đươc tuân theo bởi tất cả các hệ thống bộ nhớ ẩn

Header Cache-Control cho phép Client và Server xác định các tham số cho bộ nhớ đệm, cũng như yêu cầu các loại tài liệu cụ thể từ bộ nhớ đệm.

Các chỉ dẫn bộ nhớ ẩn đươc xác định trong một danh sách đươc phân biệt bởi dấu phảy

Ví dụ: Cache-control: no-cache.

STT Chỉ dẫn yêu cầu bộ nhớ ẩn và miêu tả

Một bộ nhớ ẩn phải không sử dụng phản hồi để làm thỏa mãn một yêu cầu theo sau mà không tái xác nhận thành công với Server ban đầu.

Bộ nhớ ẩn không nên lưu giữ bất cứ thứ gì về yêu cầu Client hoặc phản hồ Server.

Chỉ ra rằng Client đang muốn chấp nhận một phản hồi mà thời gian của nó không lớn hơn thời gian đã xác định bằng giây (s).

4 max-stale (tính bằng giây)

Khách hàng đang yêu cầu chấp nhận một phản hồi đã quá thời hạn Nếu thời gian được cung cấp, nó cần phải dài hơn thời gian đã hết hạn.

Khách hàng mong muốn chấp nhận một phản hồi, trong đó thời gian sống khỏe mạnh của họ không được dưới tuổi hiện tại cộng với khoảng thời gian đã xác định tính bằng giây.

Không chuyển đổi phần thân đối tương.

Bộ nhớ ẩn chỉ cho phép gửi tài liệu khi nó đã được lưu trữ trong bộ nhớ này, mà không cần liên hệ với máy chủ gốc để kiểm tra sự tồn tại của bản sao mới hơn.

Bảng 1 2: Bảng chỉ dẫn yêu cầu bộ nhớ ẩn được sử dụng bởi Client

STT Chỉ dẫn phản hồi bộ nhớ ẩn và Miêu tả

Chỉ ra rằng phản hồi có thể đươc giữ trong bộ nhớ ẩn bởi bất cứ bộ nhớ ẩn nào.

Tất cả hoặc một phần của thông báo phản hồi được coi là thông tin dành riêng cho một người sử dụng và không được lưu trữ trong bộ nhớ ẩn của hệ thống chia sẻ.

Một bộ nhớ ẩn phải không sử dụng phản hồi để thỏa mãn một yêu cầu theo sau mà không tái xác nhận thành công với Server ban đầu.

Bộ nhớ ẩn không nên lưu bất cứ gì về yêu cầu Client hoặc phản hồi Server.

Không chuyển đổi phần thân đối tương.

Trước khi sử dụng, bộ nhớ ẩn cần xác minh trạng thái của các tài liệu cũ, và các tài liệu đã hết hạn không nên được sử dụng.

Chỉ dẫn tái xác nhận ủy quyền tương tự như chỉ dẫn must-revalidate, nhưng không áp dụng cho các bộ nhớ ẩn của user agent không được chia sẻ Thời gian tối đa cho max-age được tính bằng giây.

Chỉ ra rằng Client đang muốn chấp nhận một yêu cầu mà tuổi của nó không lớn hơn thời gian đã xác định bằng giây.

Tuổi tối đa được xác định bởi chỉ dẫn này sẽ vượt quá tuổi tối đa đã được xác định bởi chỉ dẫn max-age hoặc Expires Header Lưu ý rằng chỉ dẫn s-maxage sẽ luôn bị bỏ qua bởi bộ nhớ cá nhân.

Bảng 1 3: Bảng chỉ dẫn phản hồi bộ nhớ ẩn được sử dụng bởi Server trong phản hồi

Trường Header chung Connection cho phép người gửi xác định các chức năng mong muốn cho kết nối cụ thể, đồng thời ngăn cản việc giao tiếp qua các trạm ủy nhiệm qua các kết nối xa hơn Cú pháp sử dụng là: Connection: "Connection".

HTTP/1.1 quy định chức năng kết nối "close", cho phép người gửi thông báo rằng kết nối sẽ được đóng sau khi phản hồi hoàn tất Ví dụ cụ thể là: Connection: close.

Theo mặc định, HTTP 1.1 sử dụng các kết nối liên tục, nơi mà kết nối không tự động đóng sau khi hoàn thành một giao dịch

HTTP 1.0 không hỗ trợ kết nối liên tục mặc định Để sử dụng kết nối liên tục, Client 1.0 cần sử dụng tham số keep-alive với cú pháp: Connection: keep-alive.

Tất cả các nhãn Ngày/Thời gian cần phải được biểu diễn theo định dạng GMT mà không có ngoại lệ Các ứng dụng HTTP được phép sử dụng một trong ba kiểu biểu diễn nhãn Ngày/Thời gian sau đây.

Sun, 06 Nov 1994 08:49:37 GMT ; RFC 822, updated by RFC 1123

Sunday, 06-Nov-94 08:49:37 GMT ; RFC 850, obsoleted by RFC 1036

Sun Nov 6 08:49:37 1994 ; ANSI C's asctime() format Ở đây, định dạng đầu tiên là đươc sử dụng nhiều nhất.

Trường Pragma được sử dụng để đưa ra các chỉ dẫn cụ thể cho việc thực hiện, áp dụng cho bất kỳ người nhận nào trong chuỗi Yêu cầu/Phản hồi Ví dụ về trường này là: Pragma: no-cache.

HTTP status codes

2.4.1 HTTP status codes là gì?

Mã trạng thái HTTP là mã được server trả về sau mỗi lần gửi yêu cầu Mỗi yêu cầu mà server nhận sẽ nhận được một phản hồi kèm theo mã trạng thái tương ứng.

Các HTTP status code là chuẩn để server trả về HTTP status code giúp xác định request thành công hay không, nếu thất bại thì nguyên nhân là gì.

Ví dụ bạn hay gặp nhất đó là mã HTTP status code = 404 khi gửi request/truy cập 1 đường link không tồn tại.

2.4.2 Các loại HTTP status code

HTTP status code gồm 3 chữ số, đươc chia thành 5 loại khác nhau, mỗi loại bắt đầu với 1 chữ số khác nhau và mang ý nghĩa riêng:

Các mã trạng thái loại 1xx (Thông tin) được sử dụng để thông báo cho client rằng server đã nhận được yêu cầu Những mã trạng thái này thường ít được sử dụng trong thực tế.

- 2xx (Sucess – Thành công): Các status code loại này có ý nghĩa rằng request đươc server và xử lý thành công.

Mã trạng thái 3xx (Chuyển hướng) cho biết rằng máy chủ sẽ chuyển tiếp yêu cầu hiện tại đến một yêu cầu khác, và khách hàng cần thực hiện việc gửi yêu cầu tiếp theo để hoàn tất quá trình Thông thường, khi trình duyệt nhận được mã trạng thái này, nó sẽ tự động gửi yêu cầu tiếp theo để lấy kết quả.

Mã trạng thái 4xx (Lỗi Client) chỉ ra rằng đã xảy ra lỗi từ phía client khi gửi yêu cầu, chẳng hạn như URL không đúng, phương thức HTTP không chính xác hoặc không có quyền truy cập vào trang.

Mã trạng thái 5xx (Lỗi Server) chỉ ra rằng đã xảy ra sự cố từ phía server trong quá trình xử lý yêu cầu Các lỗi này có thể bao gồm tình trạng server quá tải, hết bộ nhớ hoặc gặp sự cố kết nối với cơ sở dữ liệu.

100 Continue là một phần của yêu cầu mà máy chủ nhận được, có thể bao gồm header, và client cần tiếp tục gửi phần body Miễn là yêu cầu này không bị từ chối, client nên tiếp tục thực hiện yêu cầu của mình.

- 101 Switching Protocols: Server thay đổi protocol.

- 200 OK: Request đã đươc tiếp nhận và xử lý thành công.

- 201 Created: Request đã đươc tiếp nhận và xử lý thành công và 1 tài nguyên mới đươc tạo trên server.

- 202 Accepted: Request đươc chấp nhận xử lý nhưng việc sử lý không hoàn thành

- 204 No content: Request đươc xử lý thành công nhưng server không trả về dữ liệu nào.

- 205 Reset content: Giống với 205 nhưng yêu cầu phía client phải thiết lập lại document view.

- 206 Partial Content: Server chỉ trả về một phần dữ liệu.

3xx (Redirect – Chuyển hướng):

Danh sách 300 Multiple Choices cung cấp cho người dùng một loạt các liên kết để lựa chọn, cho phép truy cập đến các vị trí cụ thể Mỗi danh sách có thể chứa tối đa 5 địa chỉ khác nhau, chẳng hạn như danh sách các file video với các định dạng khác nhau.

- 301 Moved Permanently: Request hiện tại và các request sau đươc yêu cầu di chuyển tới một URI mới.

- 302 Found: Trang đươc yêu cầu đã đươc di chuyển tới vị trí mới.

- 303 See Other: Trang đươc yêu cầu cũng có thể đươc tả về ở một URL khác bằng cách sử dụng phương thức GET.

4xx: (Client Error – Lỗi Client):

- 400 Bad Request: Server không thể xử lý hoặc sẽ không xử lý các Request lỗi của phía client (ví dụ Request có cú pháp sai).

- 401 Unauthorized: Cần username, password để truy cập.

- 402 Payment Required: Mã này chưa đươc định nghĩa.

- 403 Forbidden: Truy cập bị từ chối (ví dụ ip bị chặn).

- 404 Not Found: Trang đươc yêu cầu không tồn tại tại thời điểm hiện tại, tuy nhiên có thể tồn tại trong tương lai.

- 405 Method Not Allowed: Trang đươc yêu cầu không hỗ trơ method của request (ví dụ chỉ xử lý method POST, không xử lý method GET).

- 406 Not Acceptable: Server chỉ có thể tạo một Response mà không đươc chấp nhận bởi Client.

- 407 Proxy Authentication Required: Bạn phải xác nhận với một proxy server trước khi request này đươc phục vụ.

- 408 Request Timeout: Request tốn thời gian dài hơn thời gian Server đươc chuẩn bị để đơi.

- 409 Conflict: Request không thể đươc hoàn thành bởi vì sự xung đột.

- 410 Gone: Giống 404 nhưng tài nguyên/trang cũng không tồn tại trong tương lai.

- 411 Length Required: Chưa định nghĩa trường “Content-Length” trong header của request gửi đi.

- 412 Precondition Failed: Server sẽ không đáp ứng một trong những điều kiện tiên quyết của Client trong Request.

- 413 Payload Too Large: Server sẽ không chấp nhận yêu cầu, bởi vì đối tương yêu cầu là quá rộng.

- 414 URI Too Long: URI đươc cung cấp là quá dài để Server xử lý.

- 415 Unsupported Media Type: Server sẽ không chấp nhận Request, bởi vì kiểu phương tiện không đươc hỗ trơ.

- 416 Range Not Satisfiable: Client yêu cầu một phần dữ liệu nhưng không có sẵn trên server.

5xx (Server error – Lỗi server)

- 500 Internal Server Error: Một thông báo chung chung, đươc đưa ra khi Server bị lỗi bất ngờ (chủ yếu do lỗi lập trình, kết nối database).

- 501 Not Implemented: Server không hỗ trơ xử lý request này.

- 502 Bad Gateway: Server đã hoạt động như một gateway hoặc proxy và nhận đươc một Response không hơp lệ từ máy chủ nguồn.

- 503 Service Unavailable: Server hiện tại không có sẵn (Quá tải hoặc đươc down để bảo trì) Nói chung đây chỉ là trạng thái tạm thời.

- 504 Gateway Timeout: Server đã hoạt động như một gateway hoặc proxy và không nhận đươc một Response từ máy chủ nguồn.

- 505 HTTP Version Not Supported: Server không hỗ trơ phiên bản “giao thức HTTP”.

Có nhiều mã trạng thái mà tôi chưa từng gặp, và một số trong số đó khá khó hiểu Ngoài ra, còn nhiều mã trạng thái khác chưa được định nghĩa, nhưng chúng chỉ là tiêu chuẩn để bạn áp dụng, không phải là yêu cầu bắt buộc.

Khi lập trình, nếu server xử lý thành công và trả về dữ liệu nhưng lại có status code 500, điều này tạo ra sự không đồng nhất giữa client và server Do đó, phía client cần hiểu rằng status code 500 không nhất thiết là một lỗi.

DEMO CHƯƠNG TRÌNH

Ngày đăng: 26/12/2021, 23:35

HÌNH ẢNH LIÊN QUAN

Hình 1. 1: Mô hình OSI - BÁO CÁO ĐỒ ÁN 4 ĐỀ TÀI: TÌM HIỂU VÀ XÂY DỰNG CHƯƠNG TRÌNH HTTP SERVER . Th.S Nguyễn Văn Bình
Hình 1. 1: Mô hình OSI (Trang 10)
Hình 1. 2: Mô hình TCP/IP - BÁO CÁO ĐỒ ÁN 4 ĐỀ TÀI: TÌM HIỂU VÀ XÂY DỰNG CHƯƠNG TRÌNH HTTP SERVER . Th.S Nguyễn Văn Bình
Hình 1. 2: Mô hình TCP/IP (Trang 13)
Hình 1. 4. Hoạt động của web server - BÁO CÁO ĐỒ ÁN 4 ĐỀ TÀI: TÌM HIỂU VÀ XÂY DỰNG CHƯƠNG TRÌNH HTTP SERVER . Th.S Nguyễn Văn Bình
Hình 1. 4. Hoạt động của web server (Trang 17)
Hình 1. 3. Những phần chính quan trọng của web server - BÁO CÁO ĐỒ ÁN 4 ĐỀ TÀI: TÌM HIỂU VÀ XÂY DỰNG CHƯƠNG TRÌNH HTTP SERVER . Th.S Nguyễn Văn Bình
Hình 1. 3. Những phần chính quan trọng của web server (Trang 17)
Hình 1. 5. Cấu trúc cơ bản của HTTP - BÁO CÁO ĐỒ ÁN 4 ĐỀ TÀI: TÌM HIỂU VÀ XÂY DỰNG CHƯƠNG TRÌNH HTTP SERVER . Th.S Nguyễn Văn Bình
Hình 1. 5. Cấu trúc cơ bản của HTTP (Trang 20)
Bảng 1. 1: Bảng mô tả ngắn gọn về hành động của các phương thức HTTP - BÁO CÁO ĐỒ ÁN 4 ĐỀ TÀI: TÌM HIỂU VÀ XÂY DỰNG CHƯƠNG TRÌNH HTTP SERVER . Th.S Nguyễn Văn Bình
Bảng 1. 1: Bảng mô tả ngắn gọn về hành động của các phương thức HTTP (Trang 24)
Hình 3. 1 Giao diện đang mở cổn - BÁO CÁO ĐỒ ÁN 4 ĐỀ TÀI: TÌM HIỂU VÀ XÂY DỰNG CHƯƠNG TRÌNH HTTP SERVER . Th.S Nguyễn Văn Bình
Hình 3. 1 Giao diện đang mở cổn (Trang 41)
Hình 3. 4 Giao diện thông bao quản lý client - BÁO CÁO ĐỒ ÁN 4 ĐỀ TÀI: TÌM HIỂU VÀ XÂY DỰNG CHƯƠNG TRÌNH HTTP SERVER . Th.S Nguyễn Văn Bình
Hình 3. 4 Giao diện thông bao quản lý client (Trang 42)
Hình 3. 5Giao diện chạy HTTP - BÁO CÁO ĐỒ ÁN 4 ĐỀ TÀI: TÌM HIỂU VÀ XÂY DỰNG CHƯƠNG TRÌNH HTTP SERVER . Th.S Nguyễn Văn Bình
Hình 3. 5Giao diện chạy HTTP (Trang 42)

TRÍCH ĐOẠN

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

TÀI LIỆU LIÊN QUAN

w