0

Mạng máy tính hoạt động như thế nào?

Từ một lá thư gửi crush đến một HTTP Request: Mạng máy tính hoạt động như thế nào?

Đi làm dev hơn một năm, ngày nào mình cũng gọi API, deploy, debug. Vậy mà nếu có ai hỏi “dữ liệu đi từ máy bạn tới server như thế nào?", chắc mình chỉ trả lời được là qua request thôi quá =)) (ngại ghê).

Thế nên tuần này mình quyết định ngồi học lại networking từ đầu.

Để dễ hình dung, hãy tưởng tượng networking giống như dịch vụ bưu điện. Bạn muốn gửi một lá thư cho crush ở một thành phố khác. Bạn cần biết cách viết địa chỉ, đóng gói lá thư, gửi cho bưu điện và chờ nó được chuyển đến đúng người.

Máy tính cũng làm một việc tương tự, chỉ khác là thay vì gửi thư giấy, chúng ta gửi dữ liệu.

Trong bài này, mình sẽ đi qua một số khái niệm networking cơ bản thông qua hành trình của lá thư đó.

1. Protocol (Giao thức)

Giả sử bạn muốn gửi một lá thư cho crush. Bạn không thể viết địa chỉ tùy ý, dán tem ở bất cứ đâu rồi mong bưu điện hiểu được.

  • Hai bên cần thống nhất một số quy tắc chung:
  • Địa chỉ người nhận được viết ở đâu?
  • Địa chỉ người gửi được viết ở đâu?
  • Tem được dán ở vị trí nào?
  • Bưu điện sẽ xử lý lá thư theo quy trình nào?

Những quy tắc chung đó giúp mọi người hiểu và giao tiếp được với nhau. Trong networking cũng vậy. Các thiết bị cần thống nhất cách gửi, nhận và xử lý dữ liệu. Tập hợp những quy tắc đó được gọi là Protocol (giao thức).

Ví dụ:

  • HTTP: quy định cách client và server giao tiếp trên web.
  • TCP: giúp hai thiết bị thiết lập kết nối và truyền dữ liệu đáng tin cậy.
  • DNS: giúp tìm địa chỉ IP tương ứng với một tên miền.
  • SMTP: dùng để gửi email.

Các loại giao thức

Có thể chia giao thức mạng thành hai nhóm lớn để dễ hình dung:

1. Giao thức vật lý (Physical layer)

Quy định cách truyền tín hiệu qua môi trường vật lý. Ví dụ:

  • Truyền dữ liệu qua dây cáp mạng Ethernet.
  • Truyền tín hiệu điện qua cáp đồng.
  • Truyền tín hiệu ánh sáng qua cáp quang.
  • Truyền sóng vô tuyến qua Wi-Fi.

Nếu ví mạng máy tính như bưu điện, đây giống như việc quy định xe tải, đường đi và phương tiện được sử dụng để vận chuyển thư.

2. Giao thức logic (Logical protocols)

Quy định cách dữ liệu được định dạng, gửi đi và hiểu bởi các thiết bị. Ví dụ:

  • HTTP cho web.
  • SMTP, IMAP, POP3 cho email.
  • FTP cho truyền file.
  • TCP và UDP cho việc truyền dữ liệu giữa các ứng dụng.

Nói đơn giản, phần vật lý quan tâm đến việc truyền tín hiệu như thế nào, còn các giao thức logic quan tâm đến việc dữ liệu được tổ chức và trao đổi ra sao.

2. OSI Model

Quay lại câu chuyện gửi thư. Để một lá thư đến được tay crush, có rất nhiều công việc cần thực hiện: viết nội dung, đóng phong bì, ghi địa chỉ, phân loại thư, vận chuyển và giao đến người nhận.

Không phải một người làm tất cả mọi việc. Mỗi công đoạn có một nhiệm vụ riêng.

Mạng máy tính cũng có thể được chia thành nhiều tầng, mỗi tầng phụ trách một phần công việc. Một mô hình nổi tiếng dùng để mô tả cách này là OSI Model (Open Systems Interconnection), gồm 7 tầng: image.png

Ví dụ khi bạn mở một website:

  • Tầng 7: Trình duyệt tạo HTTP request.
  • Tầng 6: Dữ liệu được mã hóa nếu sử dụng HTTPS.
  • Tầng 4: TCP chia dữ liệu thành các segment và quản lý việc truyền.
  • Tầng 3: IP xác định địa chỉ nguồn, đích và hỗ trợ định tuyến.
  • Tầng 2: Ethernet đóng gói dữ liệu thành frame để truyền trong mạng nội bộ.
  • Tầng 1: Các bit được chuyển thành tín hiệu điện, ánh sáng hoặc sóng vô tuyến.

Các tầng 5 và 6 thường được tích hợp vào cách triển khai của ứng dụng và các giao thức hiện đại, chứ không nhất thiết tồn tại thành những thành phần độc lập.

Lưu ý: OSI là mô hình tham chiếu để hiểu networking, không phải mô tả chính xác từng thành phần trong mọi hệ thống thực tế. Trong thực tế, TCP/IP được sử dụng phổ biến hơn.

Mình đọc được một bài phân biệt OSI và TCP/IP khá dễ hiểu ở đây: https://jvns.ca/blog/2021/05/11/what-s-the-osi-model-/

3. MAC Address và IP Address

Đây là hai loại địa chỉ rất dễ nhầm lẫn khi mới học networking.

Tiếp tục với câu chuyện lá thư:

MAC Address giống như thông tin nhận diện thiết bị trong một mạng nội bộ.

IP Address giống như địa chỉ mạng giúp xác định thiết bị hoặc giao diện mạng trên các mạng khác nhau.

3.1. MAC Address

MAC (Media Access Control) Address là địa chỉ được sử dụng ở tầng Data Link (Layer 2).

Một địa chỉ MAC thông thường dài 48 bit (6 byte), thường được biểu diễn dưới dạng 6 cặp ký tự hexadecimal.

Ví dụ:

00:1A:2B:3C:4D:5E

Địa chỉ này thường được nhà sản xuất gán cho card mạng (Network Interface Card – NIC).

Hãy tưởng tượng MAC Address giống như mã nhận diện của một thiết bị trong mạng nội bộ.

Khi máy tính của bạn muốn gửi dữ liệu đến một thiết bị khác trong cùng LAN, nó cần biết MAC Address của thiết bị đích để đóng gói Ethernet frame.

Ví dụ:

  • Laptop của bạn muốn gửi dữ liệu đến router.
  • Laptop cần biết MAC Address của router trên mạng LAN.
  • ARP sẽ giúp tìm MAC Address tương ứng với một địa chỉ IPv4 trong mạng nội bộ.

Một lưu ý nhỏ: MAC Address thường được gán cho card mạng, nhưng không phải lúc nào cũng cố định. Một số hệ điều hành hỗ trợ MAC randomization hoặc cho phép thay đổi địa chỉ MAC bằng phần mềm.

image.png

3.2. IP Address

Nếu MAC Address giúp nhận diện thiết bị trong mạng nội bộ, thì IP Address giúp xác định địa chỉ mạng để dữ liệu có thể đi qua nhiều mạng khác nhau.

Có hai phiên bản IP phổ biến:

IPv4

Dài 32 bit.

Có khoảng 4,3 tỷ địa chỉ.

Ví dụ: 192.168.1.10.

IPv6

Dài 128 bit.

Có không gian địa chỉ lớn hơn IPv4 rất nhiều.

Ví dụ: 2001:db8::1.


Vậy tại sao IPv4 vẫn còn được sử dụng rất nhiều dù không gian địa chỉ đã không còn đủ cho nhu cầu hiện nay?

Một trong những lý do là chi phí chuyển đổi. Hệ thống cũ vẫn còn rất nhiều, việc nâng cấp hạ tầng cần thời gian và tiền bạc. Ngoài ra, NAT (Network Address Translation) giúp nhiều thiết bị trong mạng nội bộ sử dụng chung một địa chỉ IPv4 public để truy cập Internet.

Giải pháp chuyển đổi hiện nay là Dual Stack: một thiết bị hoặc hệ thống có thể chạy đồng thời cả IPv4 và IPv6.

Ví dụ, khi bạn truy cập example.com, DNS có thể trả về:

  • Bản ghi A: địa chỉ IPv4.
  • Bản ghi AAAA: địa chỉ IPv6.

Thiết bị có thể thử kết nối bằng IPv6 và sử dụng IPv4 nếu cần, tùy vào cơ chế lựa chọn kết nối của hệ điều hành và ứng dụng.

4. Ethernet – Cách dữ liệu di chuyển trong mạng nội bộ

Giờ bạn đã có lá thư và địa chỉ người nhận. Nhưng làm thế nào để lá thư được chuyển từ thiết bị của bạn đến router?

Trong mạng có dây, một công nghệ rất phổ biến đảm nhận việc này là Ethernet.

Ethernet hoạt động chủ yếu ở tầng 1 (Physical) và tầng 2 (Data Link) của mô hình OSI.

Tại sao Ethernet phổ biến?

  • Là tiêu chuẩn mở IEEE 802.3.
  • Có nhiều tốc độ khác nhau, từ 10 Mbps đến hàng trăm Gbps và cao hơn.
  • Chi phí triển khai tương đối thấp.
  • Được hỗ trợ rộng rãi trên thiết bị mạng và máy tính.

5. Duplex – Hai thiết bị có thể nói chuyện cùng lúc không?

Cuối cùng, hãy tưởng tượng bạn đang gọi điện cho crush.

Có hai cách giao tiếp:

Half Duplex

Giống như sử dụng bộ đàm (walkie-talkie).

Khi bạn nói, người kia phải chờ bạn nói xong mới có thể trả lời. Hai bên không thể truyền dữ liệu cùng lúc trên cùng một kênh theo chế độ này.

Ví dụ: Hub Ethernet cũ sử dụng cơ chế half duplex.

Full Duplex

Giống như một cuộc gọi điện thoại thông thường.

Bạn có thể nói trong khi người kia vẫn đang nói. Hai bên có thể gửi và nhận dữ liệu đồng thời.

Ví dụ: Switch Ethernet hiện đại thường hỗ trợ full duplex.

Auto Negotiation

Vậy làm sao hai thiết bị biết nên sử dụng tốc độ và chế độ duplex nào?

Đó là lúc Auto Negotiation xuất hiện.

Khi kết nối, card mạng và switch có thể tự thỏa thuận các thông số như:

  • Tốc độ: 100 Mbps, 1 Gbps...
  • Chế độ duplex: Half Duplex hoặc Full Duplex.

Thông thường, bạn nên để cả hai đầu kết nối ở chế độ Auto.

Nếu một đầu được cấu hình thủ công còn đầu kia để Auto, có thể xảy ra tình trạng duplex mismatch. Khi đó, hai thiết bị không thống nhất được chế độ hoạt động, dẫn đến hiệu năng mạng kém, mất packet hoặc nhiều lỗi truyền dữ liệu.

Tổng kết

Vậy là chúng ta đã đi qua một số khái niệm nền tảng của networking:

  • Protocol: Bộ quy tắc giúp các thiết bị hiểu và giao tiếp với nhau.
  • OSI: Mô hình chia quá trình giao tiếp mạng thành 7 tầng.
  • MAC Address: Địa chỉ dùng ở tầng Data Link, phục vụ giao tiếp trong mạng nội bộ.
  • IP Address: Địa chỉ giúp dữ liệu được định tuyến giữa các mạng.
  • Ethernet: Công nghệ phổ biến để truyền dữ liệu trong mạng LAN có dây.
  • Duplex: Quy định hai thiết bị có thể gửi và nhận dữ liệu đồng thời hay không.

All Rights Reserved

Viblo
Let's register a Viblo Account to get more interesting posts.