network tcpip http socket udp ipv4 tcp ip ipv6 http-request http-response - It costs 9 mins to read

Đây là bài tập về nhà của Khóa Linux Network Administrators

Để hiểu cấu trúc và hoạt động của Web Server (Quan trọng và cần thiết đối với một Web Developer như mình) thì việc nắm các kiến thức nền tảng liên quan như Giao thức liên mạng TCP/IP, TCP, UDP, Giao thức HTTP, Khác nhau giữa HTTP 0.9, 1.0, 1.1 và 2.0, Web Socket… là rất hữu ích. Dĩ nhiên, trong khuôn khổ một bài viết thì mình cũng không đi sâu vào từng phần, mà chỉ dừng lại ở mức tổng quan để có khái niệm về những thành phần trên.

TCP/IP và các tầng của nó nếu muốn hiểu rõ, hiểu cặn kẽ thì cần có nhiều kiến thức rất sâu về Mạng máy tính và mỗi tầng trong đó xứng đáng cả một khóa học.


Tìm hiểu tổng quan về TCP/IP

Bộ giao thức TCP/IP (Internet Protocol Suite) là bộ giao thức mà Internet và các mạng máy tính đang sử dụng và chạy trên đó. Nó gồm 2 giao thức chính là TCP (Transmission Control Protocol - Giao thức điều khiển giao vận) và IP (Internet Protocol - Giao thức liên mạng).

Bộ giao thức TCP/IP được coi là một tập hợp các tầng. Mỗi tầng giải quyết một tập các vấn đề liên quan đến việc truyền tải dữ liệu, và cung cấp cho các giao thức tầng cấp trên một dịch vụ được định nghĩa rõ ràng dựa trên việc sử dụng các dịch vụ của các tầng thấp hơn. Hay nói cách khác, các tầng trên gần với người dùng hơn và làm việc với dữ liệu trừu tượng hơn, chúng dựa vào các tầng cấp dưới để biến đổi dữ liệu thành các dạng mà cuối cùng có thể truyền đi một cách vật lý.

4 tầng của TCP/IP

Mô hình 4 tầng của TCP / IP và 7 tầng của mô hình OSI (Một giao thức liên mạng đã cũ và bị thay thế bởi TCP/IP)

TCP/IP

Mô hình vận chuyển dữ liệu qua giao thức TCP/IP

TCP/IP Transmission Data

Sơ lược về nhiệm vụ của mỗi tầng:

TCP/IP

TCP/IP

Đọc thêm Bài viết Hành trình của một gói tin

Application Layer

Tầng cao nhất trong cấu trúc phân lớp của TCP/IP. Tầng này bao gồm tất cả các chương trình ứng dụng sử dụng các dịch vụ sẵn có thông qua một chồng giao thức TCP/IP như DHCP, DNS, HTTP, FTP, Telnet, SMTP, … Chúng sẽ tương tác với tầng vận chuyển để truyền hoặc nhận dữ liệu.

Transport Layer

Gồm 2 đại biểu chính là giao thức TCP và giao thức UDP mà mình giới thiệu tiếp đây.

Tầng mạng

IP (IPv4, IPv6)

Tầng liên kết

Ethernet, Wifi, Token Ring, PPP, Frame Relay…

TCP và UDP

TCPUDP thuộc tầng giao vận (Transport Layer) của TCP/IP. Trong đó TCP là giao thức định hướng kết nối và UDP (User Datagram Protocol) là giao thức phi kết nối.

TCP tạo ra các kết nối giữa 2 máy cần trao đổi dữ liệu (Tạo ra một “đường ống” riêng) mà qua đó các gói tin được bảo đảm chuyển tới nơi nhận một cách đáng tin cậy và đúng thứ tự. Nguyên tắc hoạt động: TCP tại máy nguồn phân chia các byte dữ liệu cần truyền đi thành các đoạn (Segment) có kích thước thích hợp. Sau đó, TCP chuyển các gói tin này qua giao thức IP để gửi nó qua một liên mạng đến TCP ở máy đích. TCP nguồn kiểm tra để không có một gói tin nào bị thất lạc bằng cách gán cho mỗi gói tin một số thự tự (Sequence Number). Khi TCP đích nhận được, họ gửi về TCP nguồn một thông báo đã nhận (Acknowledgement) cho các gói tin đã nhận thành công. Một đồng hồ tại TCP nguồn sẽ báo time-out nếu không nhận được tin báo nhận trong khoản thời gian bằng một RRT (Round Trip Time), và dữ liệu (được coi như thất lạc) sẽ được gửi lại. TCP đích sẽ kiểm tra checksum xem có byte nào bị hỏng trong quá trình vận chuyển hay không, giá trị checksum này được tính toán cho mỗi gói dữ liệu tại nơi gửi trước khi nó được gửi và được kiểm tra tại nơi nhận.

UDP được dùng để gửi những dữ liệu ngắn (gọi là Datagram) tới những máy khác, UDP không cung cấp độ tin cậy và thứ tự truyền nhận như TCP làm. Các gói dữ liệu có thể đến không đúng thứ tự hoặc bị mất mà không có thông báo. Tuy nhiên, UDP nhanh và hiệu quả hơn đối với các mục tiêu như kích thước nhỏ và yêu cầu khắt khe về thời gian. Do bản chất không trạng thái của nó nên nó hữu dụng đối với việc trả lời các truy vấn nhỏ với số lượng lớn người yêu cầu. (Hèn chi mà Graylog lại sử dụng UDP để truyền tải các bản ghi Log từ Server Web đến Server Graylog và Tại sao UDP kém tin cậy hơn TCP nhưng vẫn tồn tại và được sử dụng.).

Ưu điểm của TCP so với UDP:

Danh sách các cổng TCP, UDP mặc định của một số ứng dụng mạng

List of TCP and UDP Port Numbers

HTTP - 80 FTP - 20, 21 SSH - 22 Telnet - 23 SMTPS - 465 POP3s - 995 …


IP - Internet Protocol

Xem thêm tại bài viết Tìm hiểu về IP

Trong Ipv4, Có 3 dải địa chỉ sử dụng trong Mạng riêng (và những địa chỉ còn lại được sử dụng cho mạng công cộng - Internet)

10.0.0.0–10.255.255.255 172.16.0.0–172.31.255.255 192.168.0.0–192.168.255.255

==Mở rộng: Tìm hiểu kỹ hơn IPv6==


HTTP - HyperText Transfer Protocol (Giao thức truyền siêu văn bản)

Giao thức này nằm trong tầng Application Layer, được sử dụng để truyền nội dung trang Web từ Web Server đến trình duyệt Web ở Client. Là giao thức Client/Server dùng cho Internet - World Wide Web, HTTP thuộc tầng ứng dụng của bộ giao thức TCP/IP (Các giao thức nền tảng cho Internet). Cơ chế hoạt động chính của HTTP là Request-Response: Web Client sẽ gửi Request đến Web Server, Web Server xử lý và trả về Response cho Web Client.

Lịch sử:

Phiên bản hoàn chỉnh đầu tiên của HTTP là HTTP 0.9 (Ra đời năm 1991), Tiếp theo là HTTP 1.0 (Giới thiệu chính thức năm 1996), HTTP 1.1 (1997) và mới đây nhất là HTTP 2.0. Các phiên bản sau ra đời nhằm thay thế phiên bản trước, kế thừa những chức năng cốt lõi của phiên bản trước nhưng có nhiều cải tiến và bổ sung. Hiện nay thì HTTP 2.0 chưa được dùng phổ biến do còn khá mới và do các doanh nghiệp Web cũng phần nào ngại chuyển đổi. Do vậy, HTTP 1.1 vẫn là giao thức HTTP phổ biến nhất. HTTP 1.0 vẫn còn được sử dụng nhiều trong hệ thống Proxy và một số ứng dụng cũ (wget). ==(Để tìm hiểu vì sao HTTP 1.0 vẫn còn được dùng nhiều trong các hệ thống Proxy thì ta phải nắm HTTP 1.0 và HTTP 1.1 cache dữ liệu như thế nào?)==

Request Method phổ dụng của HTTP:

Ngoài Method, URI (Địa chỉ định danh của tài nguyên), HTTP Version thì trong Request Header có một số trường thông dụng sau:

Đọc thêm: List of HTTP Headers

Phân biệt GET và POST

Hai phương thức được sử dụng nhiều nhất trong HTTP request là GET và POST

Với GET, câu truy vấn sẽ được đính kèm vào đường dẫn của HTTP request. Ví dụ: /?username=”abc”&password=”def”

Một số đặc điểm của phương thức GET:

Ngược lại, với POST thì câu truy vấn sẽ được gửi trong phần message body của HTTP request, một số đặc điểm của POST như:

HTTP Request

Response Code

Response Code chỉ ra trạng thái của một Repsonse khi phản hồi một request từ Web Client - Thành công hay thất bại, có lỗi hay không? Lỗi của ai?

Ví dụ về HTTP Response

Tham khảo chi tiết từng mã HTTP Status Code - https://en.wikipedia.org/wiki/List_of_HTTP_status_codes

Đặc điểm của HTTP

So sánh HTTP 1.0 và HTTP 1.1

Sự khác biệt của HTTP 2.0

Mở rộng: Tìm hiểu về HTTPS và SSL

Mở rộng: Tìm hiểu kỹ hơn về HTTP 2.0 - Tương lai của Web

Dương Vì Phát