** Lời dẫn: Bài dịch về để giải thích về một câu hỏi mà những người khi mới làm quen với môn học Mạng máy tính hay gặp phải, tiêu đề lấy cảm hứng "Du - Lượng" trong Tam quốc diễn nghĩa.
Xem bài gốc tại địa chỉ: Why do we have both MAC addresses and IP addresses? từ blog kỹ thuật fixedbyvonnie.com.
Xem bài gốc tại địa chỉ: Why do we have both MAC addresses and IP addresses? từ blog kỹ thuật fixedbyvonnie.com.
* Lưu ý về thuật ngữ:
- Để đảm bảo tính khách quan về mặt kỹ thuật, một số thuật ngữ như: host, frame, header, trailer sẽ được giữ nguyên trong bản dịch.
- Thuật ngữ "layer" trong ngữ cảnh mô hình TCP/IP có thể được dịch là "tầng" hoặc "lớp". Trong bản dịch, hai từ dịch đích được dùng lẫn lộn với cùng một ý nghĩa.
Nội dung bản dịch:
Cớ sao trời sinh MAC lại còn sinh IP?
Đây là thực sự là một câu hỏi đã làm bận lòng tôi suốt một
thời gian dài:
Tại sao máy tính lại cần đến cả địa chỉ vật lý – MAC lẫn địa
chỉ IP? Tại sao máy tính cần tới 2 địa chỉ để kết nối mạng? Chỉ địa chỉ IP
không đủ sao? Rốt cuộc MAC là địa chỉ như thế nào?
Nghe khoai thật nhưng lại cực kỳ thú vị đây. Tiếp tục đọc
nhé, hi vọng tôi có thể giúp các bạn hiểu được.
Đầu tiên hãy nói về MAC, bởi anh chàng này kín tiếng hơn so
với người anh em đại chúng IP của mình.
👉 NHỮNG ĐỊA CHỈ MAC KỲ DIỆU
Khi nhắc đến MAC, nhiều
người lại dễ liên tưởng đến dòng máy tính đình đám là mơ ước của bao đứa trẻ và
mất hồn bao người lớn.
Thật lòng mà nói, “địa chỉ MAC” lại là một khái niệm không
được lung linh như thế. Địa chỉ MAC, còn được biết đến là địa chỉ vật lý, về bản
chất là định danh – tên duy nhất của thiết bị. Nó là một số dài 6 byte, thường
được viết dưới dạng số thập lục phân (Hexadecimal), đóng vai trò như một địa chỉ
duy nhất phục vụ mục đích giao tiếp với các thiết bị khác trong mạng.
Bất
kỳ thiết bị nào từ PC cho đến máy in, TV, lò nướng, máy Xbox, máy photo Xerox –
nếu có khả năng giao tiếp với các thiết bị khác thì sẽ có địa chỉ MAC. Với máy
tính, bạn có thể dễ dàng xem địa chỉ MAC của mình trong Windows. Dãy số này có
nửa đầu để định danh nhà sản xuất, còn nửa sau có thể được ấn định bất kỳ tùy
thuộc vào nhà sản xuất.
Như vậy về lý thuyết, mỗi địa chỉ
MAC trên thế giới này là duy nhất, như kiểu dấu vân tay của con người vậy.
👉 VẬY, ĐỊA CHỈ IP THÌ SAO?
Thật
thừa thãi khi sử dụng tận 2 loại địa chỉ, trong khi chúng đều là định danh duy
nhất cho một thiết bị kết nối mạng. Các thiết bị kết nối mạng này được gọi là
các host (trong tiếng Việt đôi khi dịch là máy trạm) và cần được cấp 1 địa chỉ
IP để có thể kết nối đến các host khác.
Vậy
nếu IP giúp host giao tiếp với nhau rồi… thì cần MAC để làm gì?
Để tự giải đáp cho mình, các bạn cùng
tôi tìm hiểu một chút về TCP/IP.
👉 VỠ
LÒNG VỀ TCP/IP
TCP/IP là một mô hình phân lớp giao
thức mạng phổ biến nhất hiện hành.
Hài hước một chút, hãy nhìn TCP như
thể những câu chuyện mà máy tính sẽ buôn với nhau nếu chúng tham dự một bữa tiệc
cocktail hoặc một sự kiện nào đó. Tương tự như con người sử dụng các ngôn ngữ
khác nhau để giao tiếp, máy tính cũng có cách của riêng chúng để trao đổi thông
tin với nhau. Một “ngôn ngữ” như thế được gọi là một giao thức – định nghĩa nên
các luật để giao tiếp giữa các máy tính với nhau.
Vào thời kỳ khởi thủy của Internet,
dường như mỗi nhà sản xuất, mỗi công ty trên thế giới lại lập ra một ngôn ngữ
riêng “nói chuyện” với máy tính. Đầu những năm 80, IBM có một cái riêng, Apple,
Xerox cũng không chịu kém cạnh, mọi thứ rối rắm như canh hẹ!
Trong hoàn cảnh đó, một nhóm các nhà
khoa học ưu tú của Bộ quốc phòng Mỹ và Tổ chức tiêu chuẩn quốc tế tiến hành độc
lập, đồng thời, xây dựng một tiêu chuẩn giao tiếp thống nhất cho các máy tính.
Kết quả là sự ra đời của 2 mô hình OSI và TCP/IP, nhưng vì OSI tiến những bước
quá nặng nề và chậm chạp: mất quá nhiều thời gian để tiêu chuẩn hóa mô hình OSI,
nên TCP/IP được chấp nhận và ưa chuộng.
👉 KHIÊU
VŨ VỚI TCP/IP
TCP/IP là một bộ các giao thức có
phân cấp, định nghĩa việc giao tiếp giữa các máy tính với nhau như thế nào.
“Có phân cấp” nghĩa là mỗi một nhóm
giao thức, được gọi là một lớp (layer), lại cung cấp một dịch vụ nào đó cho lớp
phía trên nó.
Có 5 lớp trong mô hình TCP/IP:
- Lớp ứng dụng – Application
- Lớp giao vận – Transport
- Lớp Internet
- Lớp liên kết dữ liệu – Data Link
- Lớp vật lý – Physical
Lớp liên kết dữ liệu quy định các đặc
tính tiêu chuẩn cho việc tạo frame Ethernet trong khi lớp Internet định nghĩa
giao thức IP có nhiệm vụ đánh địa chỉ.
Nhân tiện, “tạo frame” là một thuật
ngữ ám chỉ việc lớp liên kết dữ liệu đóng gói nội dung bằng một header và
trailer Ethernet. Gọi là “frame” hay “khung” vì tải dữ liệu được thêm thông tin
vào cả hai đầu.
Khi một host liên lạc với một host
khác, dữ liệu chạy dọc từ trên xuống qua các lớp TCP/IP và nhận thêm header ở mỗi
lớp.
Vì thế khi bạn đi đến
fixedbyvonnie.com, trình duyệt của bạn bàn giao lại việc xử lý đường dẫn này
cho giao thức HTTP thuộc tầng ứng dụng.
Tầng ứng dụng thêm vào header của
riêng nó, trong trường hợp này là header HTTP chứa các thông tin về website
fixedbyvonnie.com. Nếu bạn đang sử dụng Chrome, header HTTP nôm na như sau:
Này!
Tớ là Chrome và tớ muốn file index.php từ fixedbyvonnie.com
Về mặt kỹ thuật, đây là yêu cầu kiểu
HTTP GET, nói với web server rằng bạn muốn lấy một tài liệu nào đó.
Tiếp đó, TCP/IP chuyển dữ liệu xuống
tầng giao vận, ở đó có 2 giao thức là UDP và TCP. Do chúng ta đang lấy ví dụ vể
duyệt web nên header TCP sẽ được thêm vào tạo nên một segment mới, chuyển đơn vị
này xuống lớp Internet. Tại tầng này, segment được gắn tiếp một header nữa. Có
hàng tá thứ trong header ở lớp Internet, nhưng để đơn giản, tôi chỉ quan tâm đến
địa chỉ IP nguồn và đích. Xử lý xong, ta có một gói tin – packet Internet ở lớp
Internet.
Ngay khi được đưa xuống lớp liên kết
dữ liệu, packet lúc nào được đóng khung ở hai đầu bởi một “mớ” thuộc giao thức
Ethernet. Tôi cố tình tỏ ra mơ màng khi sử dụng từ “mớ” bởi sợ đầu óc sẽ quay
cuồng nổ tung khi cố giải thích tường tận “mớ” gồm những gì. Xin phép không đi
vào quá chi tiết.
Vậy cái gì nằm trong header
Ethernet? Đó là địa chỉ MAC nguồn và đích, còn trailer Ethernet chỉ là một con
số dài giúp host đích biết được frame có nguyên vẹn hay không(checksum).
Vậy là rất nhiều header được thêm vào làm cho
đơn vị dữ liệu của chúng ta, ban đầu chỉ là một yêu cầu HTTP GET gọn nhẹ, lớn dần
lên theo dọc theo chiều xuống của mô hình TCP/IP. Đến khi xuống lớp vật lý, dữ
liệu được mã hóa thuần túy vật lý vào dây đồng thành các mức điện áp hoặc vào
cáp quang thành các xung ánh sáng.
Tại host đích là web server, quá
trình ngược lại diễn ra: tín hiệu dữ liệu thô ở lớp vật lý, các header được loại
bỏ dần theo chiều từ dưới lên trong mô hình TCP/IP, cho đến khi bóc tách được dữ
liệu cốt lõi nhất là yêu cầu HTTP GET của host nguồn.
Vẫn còn ngờ ngợ khó tin phải không? Nghĩ
mà xem:
Khi server nhận được yêu cầu HTTP
GET, nó là một chuỗi dài các ký hiệu ‘0’ và ‘1’. Nhưng vì cả máy của bạn và
server của tôi đều hiểu TCP/IP, server của tôi sẽ biết phải dịch chuỗi nhị phân
đó như thế nào để hiểu thông điệp muốn nói gì.
👉 GIỜ
CẦN QUAN TÂM ĐẾN ĐỊA CHỈ MAC ĐÂY
Sau khi nhập vào thanh địa chỉ nội
dung fixedbyvonnie.com, máy tính của bạn sẽ cố để làm rõ cái máy tính với tên gọi
fixedbyvonnie.com nằm ở trong mạng cục bộ hay chỗ quái quỷ nào trên thế giới.
Nó sử dụng giao thức DNS để làm việc
đó. Không đi quá sâu vào mặt kỹ thuật, một cách dễ hiểu, máy tính của bạn sẽ biết
fixedbyvonnie.com không nằm trong mạng cục bộ LAN vì địa chỉ IP của trang web
này nằm khác nhóm với IP máy tính của bạn.
Chẳng hạn, fixedbyvonnie.com có IP
là 198.57.208.223. Giá trị 198.57.208 nói cho máy tính của bạn biết bạn nằm ở mạng
khác với website của tôi vì những giá trị tương tự trong IP của bạn khác giá trị
trên (vai trò của subnet mask).
Do đó khi yêu cầu HTTP GET của bạn
đang trên hành trình trượt dọc ngăn xếp TCP/IP, đến lớp liên kết dữ liệu, máy
tính của bạn sẽ lẩm bẩm:
Mặc
dù tao biết fixedbyvonnie.com nằm ở mạng khác, nhưng tao chẳng biết đi đường
nào đến đó cả. Hmm… làm thế nào giờ? À, chờ chút, cái router biết nhiều hơn
tao. Tao sẽ gửi yêu cầu này đến default gateway bằng cách gửi frame tới địa chỉ
MAC của default gateway gắn với tao!
Sau đóng gói, dữ liệu này đưa thẳng
đến router của nhà bạn. Các thông tin của các lớp trên vẫn giữ nguyên, kể cả địa
chỉ IP đích là 198.57.208.223 trong header IP.
Đây là nguyên tắc trị giá triệu đô
mà bạn phải nắm được:
Địa chỉ IP nguồn và đích trong
header IP không bao giờ thay đổi trong suốt hành trình của gói tin. Nói cách
khác, khi gói tin dịch chuyển trong mạng, địa chỉ IP nguồn và đích là tĩnh.
Chúng không thay đổi.
Nhưng các địa chỉ MAC thì luôn thay
đổi.
Cứ mỗi lần gói tin chuyển từ router
này sang router khác, header và trailer được bóc đi và thay mới. Các thông tin
mới luôn bao gồm địa chỉ MAC nguồn là MAC của router vừa nhận gói tin và MAC
đích là MAC của router kế tiếp.
Bạn đã rút ra được gì chưa?
Trong khi địa chỉ MAC giúp các gói
tin đến thiết bị kế tiếp, thì địa chỉ IP gánh trách nhiệm giúp gói tin vượt qua
cả hành trình và đến được đích cuối cùng của nó.
👉 VÍ DỤ MINH HỌA NHO NHỎ
Giả sử có 3 routers giữa máy tính của
bạn và server của tôi.
Gọi tên các thiết bị như sau:
- A là máy tính của bạn
- B là Router 1
- C là Router 2
- D là Router 3
- E là fixedbyvonnie.com
Để gói tin chạy được từ A đến B, lớp
2 của TCP/IP đóng khung gói tin với header Ethernet chứa địa chỉ MAC đích là B
và địa chỉ MAC của A là địa chỉ nguồn (ND: đã nói đến “địa chỉ” ở lớp 2 thì phải
hiểu ngay là địa chỉ MAC, lớp 3 là địa chỉ IP ).
Nhớ lại phần trên, mô hình TCP/IP gồm
5 lớp, lớp Internet thêm một header có chứa IP nguồn và IP đích vào gói tin.
Sau đó gói tin đưa xuống lớp 2, đóng frame Ethernet có đại chỉ MAC như đã nói rồi
đưa lên truyền ở lớp vật lý.
Nếu tôi có năng lực đọc được ý nghĩ
của Router 1, chắc hẳn nó sẽ nghĩ như này:
Chà, mình có biết nhóm IP nào mà chứa
địa chỉ IP của thằng fixedbyvonnie.com này không nhỉ? Um… không biết rồi, thôi
để hỏi thằng hàng xóm Router 2.
Để đưa frame đến được Router 2,
Router 1 bóc header chứa MAC cũ là địa chỉ máy tính của bạn và thay địa chỉ MAC
của nó vào phần địa chỉ nguồn. Đồng thời, thay thế địa chỉ đích bằng địa chỉ
MAC của Router 2. Suốt quá trình đó, địa chỉ IP nguồn và đích bất khả xâm phạm.
Kịch bản tiếp diễn như vậy ở các chặng
sau cho đến khi gói tin dến được đích, với địa chỉ MAC liên tục thay đổi.
Địa chỉ IP giữ vai trò trong bức
tranh lớn, nhưng MAC mới là thứ đưa gói tin đi từng bước một. Nếu chỉ có mỗi địa
chỉ IP, máy tính của bạn thực sự chẳng biết làm gì với gói tin cả.
Đây hiển nhiên chỉ là
cách giải thích tinh gọn về cách hoạt động của MAC và IP, nhưng thực sự rất cơ
bản. Nếu bạn muốn biết thêm chi tiết hoặc có thắc mắc, hãy comment xuống dưới. Xin cảm ơn!