Ethernet (bài này viết tắt là Ethe cho dễ) là một trong nhiều dạng network và là dạng được dùng phổ biến nhất hiện nay. Trong mạng Ethe, các máy được nối trực tiếp với cáp chung (common media access) theo mô hình sau:
| Máy 1 Máy 2 Máy 3...
| | | |
|---------+--------------+--------------+----... <--- cáp chung
|
|-------------------...
Tầm hoạt động của mạng ethe không lớn. Mỗi máy có thể kết nối vào dây chung ở tầm 400m (có thể lên tới 2000m hoặc 4000m). Nếu muốn kết nối xa hơn thì phải có những trạm truyền tiếp (hub, repeater, switch, router, ...). Tốc độ truyền của ethe cũng khá cao. Hiện nay thường dùng 100Mbps (FastEthernet) và cũng có 1000Mbps (GigaEthernet).
Đó là lý do tại sao ethe là mạng dùng CSMA/CD (carrier sense media access/collision detection) để hiểu xem mạng có rỗi mà truyền thông tin không. Vì ethe dùng chung cáp nên mỗi máy trước khi gửi tín hiệu phải xem coi cáp chung có rỗi hay không. Mỗi máy sẽ lắng nghe tín hiệu của dây chung để biết lúc nào dây chung rỗi hay lúc nào đang bận. Nếu mạng đang bận, máy đó sẽ phải chờ (thường là vào khoảng 7 đến 10 ms) rồi lắng nghe lại. Giả sử cùng lúc mạng đang rỗi mà có 2 máy đồng thời gửi tín hiệu, sẽ xảy ra hiện tượng tín hiệu bị chuyển sai lệch hoặc tín hiệu này chồng lên tín hiệu khác gọi là collision (sự va chạm). Phát hiện ra điều đó, 2 máy sẽ chờ một thời gian ngẫu nhiên. Nếu vô tình thời gian chờ ngẫu nhiên của 2 máy chênh nhau không nhiều, collision lại xảy ra thì thời gian chờ của 2 máy sẽ gấp đôi thời gian chờ ban đầu. Lần thứ 3 sẽ gấp 4, lần thứ 4 sẽ gấp 8... Lặp lại như vậy sẽ dẫn tới việc một máy sẽ gửi tín hiệu đi trước và máy khác đợi tới lượt mình sau. Đó là ý tưởng của carrier sense media access và collision detection.
Cũng chính vì lý do dùng chung cáp nên mọi thông tin gửi đi từ một máy sẽ chạy khắp nơi trên mạng. Việc nhận hay bỏ (accept hay discard) sẽ do NIC (network interface card, card giao tiếp mạng) đảm nhận. Đôi khi, việc này sẽ do chương trình đảm nhận (nhiều card mạng không discard các tín hiệu không phải dành cho mình mà tin tưởng vào chương trình sẽ không nhận các tín hiệu đó). Giả sử máy A gửi tín hiệu cho máy B trong cùng mạng. Máy C, nếu ở trong cùng mạng đó, cũng sẽ nhận được tín hiệu do máy A gửi. Vậy thì làm sao máy 2 máy có thể gửi thông tin cho nhau?
Vấn đề này được giải quyết ở lớp Data link (không biết dịch ra sao, data link layer). Đọc thêm về chuẩn ISO OSI để hiểu thêm về 7 lớp OSI. Data link layer có một sublayer gọi là Media Access Control (MAC) sublayer. Lớp này làm nhiệm vụ nhận và chuyển tín hiệu vào cáp chung dựa trên địa chỉ card mạng.
Địa chỉ card mạng hay còn được gọi là MAC address là một chuỗi 6 byte, phân ra làm 2 phần. Phần đầu tiên gồm 3 byte, được quy định bởi IEEE (Institute of Electrical & Electronics Engineers) cho nhà sản xuất. Mỗi nhà sản xuất sẽ có 3 byte riêng biệt. Ví dụ IBM có 3 byte khác với 3COM. Phần thứ 2 gồm 3 byte cuối, do nhà sản xuất quyết định. Ví dụ địa chỉ MAC FF.00.FF.E0.01.56 thì phần xác định nhà sản xuất là FF.00.FF, phần xác định card là E0.01.56. Với các chia địa chỉ MAC như vậy sẽ không có một card mạng nào có địa chỉ MAC trùng với một card nào trên thế giới. Do đó, khi một máy trong mạng ethe gửi thông tin đến máy khác, máy đó dùng địa chỉ MAC của máy kia. Máy nhận so sánh địa chỉ MAC được gửi đi với địa chỉ MAC của card mình. Nếu là thông tin gửi cho mình thì hai địa chỉ đó sẽ giống nhau và máy nhận nhận thông tin đó. Nếu không phải, máy nhận sẽ bỏ qua, không xử lý (trên lý thuyết).
Một máy (máy thứ nhất) muốn biết địa chỉ MAC của máy khác (máy thứ hai) sẽ gửi thông điệp ARP (Address Resolution Protocol, Giao thức tra cứu địa chỉ, từ IP ra MAC, từ MAC ra IP sẽ dùng RARP, Reverse Address Resolution Protocol) đi khắp subnet nếu máy thứ đó biết máy thứ hai ở trong cùng subnet. Máy thứ hai sẽ trả lời máy thứ nhất với địa chỉ MAC của mình và cũng lưu lại địa chỉ MAC của máy thứ nhất để dùng cho sau này. Mô hình như sau (ví dụ cho IP, các giao thức khác cũng tương tự):
Máy 1: IP 1.1.1.1, MAC: 00.FF.FF.00.00.03
Máy 2: IP 1.1.1.2, MAC: 05.FF.0E.00.05.04
Tôi có địa chỉ MAC 00.FF.FF.00.00.03. Ai có IP 1.1.1.2 thì trả lời.
Máy 1 ----------------------------------------------------------> Toàn subnet (multicast)
Tôi có IP 1.1.1.2 với địa chỉ MAC 05.FF.0E.00.05.04.
Máy 2 ----------------------------------------------------------> Máy 1
Trong khi đó, máy 2 cũng lưu lại địa chỉ MAC 00.FF.FF.00.00.03 của máy 1 để dùng lại sau này.
Sau khi đã biết được địa chỉ MAC của nhau, việc gửi thông tin có thể được tiến hành