0
0
Lập trình
Thaycacac
Thaycacac thaycacac

[JavaNet P5] Khám Phá Giao Thức Mạng và WebServer

Đăng vào 2 tuần trước

• 4 phút đọc

Bài Viết về Giao Thức Mạng và WebServer

Bài viết này được trích dẫn từ trang web. Nội dung bài viết dài khoảng 4000 từ, vì vậy hãy xem trên máy tính để có trải nghiệm tốt nhất. Nếu bạn đang đọc trên điện thoại, hãy ghi chú và mở máy tính để tiếp tục nhé.

Mở Bài

Trong các bài viết trước, chúng ta đã cùng nhau xây dựng Client và Server, và thực hành với bài toán tính bình phương một số. Trong phần này, chúng ta sẽ cùng nhau tìm hiểu về giao thức mạng.

Giao Thức Mạng

Để nhắc lại: Trong các phần trước, chúng ta đã triển khai một ứng dụng Client và Server, trong đó Client nhập một số và Server trả về bình phương của số đó. Nếu người dùng nhập số 0, kết nối sẽ được đóng lại.

Bài toán ở trên khá đơn giản chỉ với một phép toán. Tuy nhiên, trong thực tế, có rất nhiều cách để giao tiếp, từ phép cộng, trừ, nhân, chia cho đến những cuộc trò chuyện phức tạp hơn. Để thực hiện những điều đó, con người đã phát minh ra ngôn ngữ giao tiếp.

Trong mạng máy tính, khi hai máy tính trao đổi thông tin, chúng cũng cần phải sử dụng ngôn ngữ, được gọi là giao thức. Trong thế giới mạng máy tính, có rất nhiều giao thức khác nhau.

Socket - Chiếc Điện Thoại Kết Nối

Như đã đề cập trong các bài viết trước, Socket giống như chiếc điện thoại; chúng ta sử dụng điện thoại để liên lạc với nhau, còn các máy tính sử dụng Socket để giao tiếp với nhau.

Chúng ta, những người sử dụng, không cần quan tâm đến cách mà hai chiếc điện thoại kết nối hay dữ liệu được chuyển tải như thế nào. Chúng ta chỉ cần sử dụng nó.

Và trong tương tự, các ứng dụng mạng cũng sử dụng một phương thức nào đó để giao tiếp qua “chiếc điện thoại” - Socket - mà không cần bận tâm về cách kết nối hay truyền tải dữ liệu.

Cũng như có nhiều ngôn ngữ trong đời sống hàng ngày, trong mạng máy tính có rất nhiều giao thức. Khi hai ứng dụng sử dụng chung một giao thức, chúng có thể hiểu được nhau.

Trong bài viết này, chúng ta sẽ cùng tìm hiểu một giao thức rất phổ biến: HTTP.

Lịch Sử và Khái Niệm về HTTP

HTTP (HyperText Transfer Protocol) ra đời khoảng những năm 80-90 của thế kỷ trước, do nhà khoa học người Anh Tim Berners-Lee phát minh. Ông đã tạo ra một mạng lưới thông tin cho phép mọi người truy cập thông tin một cách tự do. Để thực hiện điều này, ông phát triển ngôn ngữ HTML (HyperText Markup Language) và trình duyệt web đầu tiên: WorldWideWeb. Để truyền tải HTML giữa các máy tính, HTTP cũng được sáng chế.

Ban đầu, HTTP chỉ được sử dụng để vận chuyển HTML giữa Client và Server, nhưng thực tế cho thấy rằng HTTP không bị giới hạn chỉ trong HTML, mà có thể vận chuyển bất kỳ dạng dữ liệu nào.

Các Phiên Bản của HTTP

Hiện nay, đã có nhiều phiên bản HTTP được phát hành, bao gồm:

  1. HTTP/0.9 (1991)
  2. HTTP/1.0 (1996)
  3. HTTP/1.1 (1997, cập nhật 1999 và 2014)
  4. HTTP/2 (2015)
  5. HTTP/3 (2020)

Trong bài viết này, chúng ta sẽ tìm hiểu về HTTP/1.1.

Cách Thức Giao Tiếp của HTTP

HTTP sử dụng hình thức giao tiếp Request-Response, nghĩa là một bên gửi yêu cầu (Request) và bên kia sẽ đáp lại yêu cầu đó (Response). Điều này được biểu diễn qua cặp Request và Response.

Cấu Trúc của HTTP

Giống như ngôn ngữ tự nhiên có ngữ pháp, HTTP cũng có cấu trúc của nó bao gồm hai phần chính: Header và Body. Header là phần bắt buộc và được phân chia thành Start-Line và Request-Headers.

HTTP Header

HTTP Header chứa các dòng dữ liệu, trong đó dòng đầu tiên là Start-Line (Request-Line cho Request và Status-Line cho Response).

Request-Line

Request-Line có dạng:

Copy
METHOD TARGET VERSION
  • Method: (Ví dụ: GET, POST)
  • Target: (thường là một URI)
  • Version: (phiên bản HTTP đang sử dụng)
Status-Line

Đối với Response, Status-Line có dạng:

Copy
VERSION CODE TEXT
  • Version: (phiên bản HTTP Server sử dụng)
  • Code: (trạng thái của phản hồi như 200, 404, 500)
  • Text: (mô tả trạng thái với ngôn ngữ dễ hiểu)

Request/Response Headers

Dưới Start-Line là các dòng Key:Value biểu thị các thông số của Request/Response.

HTTP Body

Khi Server trả về Response, hoặc khi Client muốn gửi dữ liệu lên Server, dữ liệu sẽ được biểu diễn trong Body của HTTP Request.

HTTP Chỉ Là Những Dòng Text Có Quy Ước

HTTP chỉ là những quy tắc định sẵn, và chúng ta có thể tùy biến theo ý thích. Tuy nhiên, để có thể giao tiếp với các hệ thống khác, ta cần tuân theo các quy ước đó.

Các Loại Giao Thức: Text-based và Binary-based

HTTP là một text-based protocol rất thân thiện với con người, nhưng lại chiếm nhiều tài nguyên. Ngược lại, Binary-based protocol gọn nhẹ và nhanh hơn trong việc truyền tải và parse dữ liệu.

Web Server

Nếu máy chủ hỗ trợ giao thức HTTP, chúng ta gọi đó là Web Server. Trong phần này, chúng ta sẽ tạo một Web Server đơn giản để tính bình phương một số.

HTTP Parser

Để hiểu thông tin từ HTTP, ta cần một chương trình để parse dữ liệu. Chúng ta sẽ viết một Web Server cơ bản hỗ trợ phương thức GET.

Kết Luận

Tổng kết lại, HTTP là một giao thức quan trọng trong việc phát triển ứng dụng web và đã giúp chúng ta xây dựng một Web Server đơn giản để tính bình phương một số. Hy vọng bạn sẽ tìm thấy thông tin trong bài viết này hữu ích và mở rộng hiểu biết của mình về mạng máy tính.

Link gốc bài viết: trang web.
source: viblo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào