Hai máy tính nói chuyện với nhau như thế nào?
Chữ đi qua sợi dây dưới dạng gì?
Ở bài trước, ba terminal trong phòng Bob Taylor phải nối tới ba máy tính ở xa bằng đường điện thoại.
Nhưng đường điện thoại được làm ra để chở giọng nói.
Trong máy tính lại không có giọng nói. Khi bạn gõ chữ H, bên trong máy chỉ có những con số và bit.
Vậy chữ đi qua sợi dây dưới dạng gì?
Máy tính không đẩy chữ qua dây
Máy tính cần một quy ước để biến chữ thành số.
Trong ASCII, chữ H có giá trị 72. Viết 72 dưới dạng nhị phân ta được:
H
↓
72
↓
01001000
Đây chính là thứ ta đã gặp trong khóa CPU: ở tầng thấp, dữ liệu cuối cùng được biểu diễn bằng các bit.
Với tiếng Việt, cách mã hóa phức tạp hơn một chút. Chẳng hạn ệ cần 3 byte trong UTF-8.
Nhưng dù là một byte hay ba byte, ta vẫn gặp cùng một vấn đề:
01001000
Đây chỉ là cách chúng ta viết dữ liệu.
Sợi dây không chở những con số 0 và 1.
Đường điện thoại chỉ chở được tiếng
Khi những máy tính đầu tiên cần liên lạc từ xa, một hạ tầng rất lớn đã có sẵn: mạng điện thoại.
Thuê những đường truyền riêng rất đắt. Nếu máy tính dùng được chính mạng điện thoại đã chạy tới nhiều thành phố thì tiện hơn nhiều.
Nhưng mạng đó được thiết kế cho tiếng nói.
Cách giải quyết là modem.
Modem nhận các bit từ máy tính, biến chúng thành tín hiệu âm thanh mà đường điện thoại truyền được. Ở đầu kia, một modem khác nhận âm thanh rồi đổi nó trở lại thành dữ liệu số.

Tên modem cũng đến từ hai việc đó: modulate và demodulate.
Có thời modem thậm chí không cắm trực tiếp vào đường điện thoại. Người dùng đặt cả ống nghe vào một bộ ghép âm. Hai đầu của ống nghe nằm trong hai chén cao su: một bên phát tiếng, bên kia nghe tiếng.
Đến năm 1964, hệ thống đặt vé máy bay SABRE đã nối khoảng 2.000 terminal ở hơn sáu mươi thành phố tới các máy tính trung tâm qua đường điện thoại.
Modem giải quyết được chuyện gửi bit qua mạng điện thoại.
Nhưng nếu hai máy chỉ cách nhau vài mét trong cùng một tòa nhà thì chẳng có lý do gì phải đổi bit thành tiếng rồi lại đổi ngược lại.
Ta có thể nối dây trực tiếp.
Lúc đó bit sẽ thành gì?
Bit phải thành một thứ chạy được trên đường truyền
Câu trả lời phụ thuộc vào thứ nối hai máy với nhau.
| Đường truyền | Thứ thực sự chạy qua |
|---|---|
| Cáp đồng Ethernet | tín hiệu điện |
| Cáp quang | ánh sáng |
| Wi-Fi | sóng điện từ |
Với cáp mạng bằng đồng, card mạng tạo ra những thay đổi điện áp trên các cặp dây. Đầu bên kia đo những thay đổi đó.
Với cáp quang, dữ liệu được biểu diễn bằng tín hiệu ánh sáng.
Wi-Fi không cần dây. Thiết bị làm thay đổi sóng vô tuyến, anten ở đầu kia nhận những thay đổi đó.
Điểm chung là:
Bit phải được biến thành một tín hiệu vật lý mà đường truyền có thể mang đi và đầu kia có thể nhận ra.
Máy B biết lúc nào phải đọc bit tiếp theo?
Với dây đồng, ta có thể bắt đầu bằng một cách rất đơn giản:
1 → mức điện áp cao
0 → mức điện áp thấp
Giả sử Máy A muốn gửi sáu bit:
000000
Máy A biết rõ đây là sáu bit riêng biệt:
| 0 | 0 | 0 | 0 | 0 | 0 |
Nhưng những đường kẻ ở trên chỉ là cách chúng ta vẽ cho dễ nhìn.
Trên sợi dây không có đường nào đánh dấu một bit bắt đầu hay kết thúc ở đâu.
Nếu 0 chỉ là mức điện áp thấp, thứ Máy B thực sự nhận được là:
____________________________
một tín hiệu nằm yên trong một khoảng thời gian.
Vậy làm sao B biết phải chia khoảng thời gian đó thành sáu bit?
Hai máy đã thống nhất trước tốc độ truyền. Chẳng hạn, nếu một bit kéo dài một khoảng thời gian nhất định, Máy B có thể dùng đồng hồ bên trong nó để canh:
đọc đọc đọc đọc
↓ ↓ ↓ ↓
|-------|-------|-------|-------|
Nhưng đồng hồ của Máy A và Máy B là hai mạch vật lý riêng biệt. Chúng không chạy giống nhau tuyệt đối.
Nếu B canh hơi nhanh hoặc hơi chậm, vị trí nó đọc tín hiệu sẽ dần trôi đi.
Và khi tín hiệu nằm im trong một thời gian dài, B không có gì trên đường dây để biết rằng nhịp của mình đang lệch.
Mã hóa Manchester: mỗi bit luôn đổi mức ở giữa
Cách 1 = mức cao, 0 = mức thấp có một vấn đề: nếu nhiều bit giống nhau đi liền nhau, tín hiệu có thể nằm im khá lâu.
Để tránh điều đó, Ethernet 10 Mb/s dùng một cách mã hóa tín hiệu gọi là mã hóa Manchester.
Cách mã hóa này không dùng một mức điện áp cố định để biểu diễn cả bit.
Thay vào đó, mỗi khoảng thời gian của một bit được chia thành hai nửa, và tín hiệu bắt buộc phải đổi mức ở chính giữa bit.
Trong quy ước dùng ở đây:
0 = cao → thấp
1 = thấp → cao
Ví dụ một bit 0:
giữa bit
↓
cao ────────┐
└──────── thấp
Một bit 1:
giữa bit
↓
┌──────── cao
thấp ───────┘
Điểm quan trọng không phải là tín hiệu cao hay thấp.
Điểm quan trọng là ở giữa mỗi bit luôn có một lần đổi mức.
Vì vậy, nếu Máy A gửi:
000000
với cách 0 = mức thấp, trên dây chỉ là một đoạn gần như phẳng:
____________________________
Còn khi dùng mã hóa Manchester:
↓ ↓ ↓ ↓ ↓ ↓
‾‾‾|___ ‾‾‾|___ ‾‾‾|___ ‾‾‾|___ ‾‾‾|___ ‾‾‾|___
0 0 0 0 0 0
Sáu bit 0 vẫn tạo ra sáu lần đổi mức ở giữa bit.
Máy B đã biết tốc độ truyền dữ liệu. Những lần đổi mức xuất hiện đều đặn giúp nó kiểm tra và điều chỉnh lại thời điểm đọc tín hiệu nếu đồng hồ của hai máy hơi lệch nhau.
Đồng thời, hướng đổi mức cho biết giá trị của bit:
cao → thấp = 0
thấp → cao = 1
Vậy một lần đổi mức ở giữa bit mang hai thông tin:
khi nào nó xảy ra → giúp Máy B giữ đúng nhịp
đổi theo hướng nào → cho biết bit là 0 hay 1
0 và 1 không chạy trên sợi dây. Chúng là thông tin mà hai máy cùng quy ước cách biểu diễn bằng tín hiệu vật lý.
Ethernet ngày nay không chỉ dùng mã hóa Manchester
Ethernet 10 Mb/s dùng mã hóa Manchester. Các đời Ethernet nhanh hơn dùng những cách mã hóa tín hiệu khác.
Cách cụ thể thay đổi, nhưng bên nhận vẫn phải giải quyết hai việc: nhận ra dữ liệu được gửi và xác định đúng thời điểm để đọc tín hiệu.
Trên dây không có chữ H
Quay lại chữ H.
Máy A bắt đầu với:
H
↓
01001000
Sau đó phần cứng mạng biến các bit thành tín hiệu vật lý.
Máy B nhận tín hiệu đó, đọc lại thành:
01001000
↓
H
Vậy thứ thực sự đi qua đường truyền không phải chữ H, cũng không phải những con số 0 và 1.
Thứ đi qua là tín hiệu vật lý.
dữ liệu
↓
tín hiệu vật lý
↓
dữ liệu
Mạng máy tính, bóc hết các lớp bên trên, chỉ là: đổi dữ liệu thành tín hiệu vật lý, truyền tín hiệu đi, rồi dựng lại dữ liệu ở đầu kia.
Hai máy đã nói chuyện được.
Nhưng nếu dùng mạng điện thoại, mỗi cuộc kết nối lại giữ riêng một kênh liên lạc trong suốt thời gian cuộc gọi còn mở.
Điều đó hợp lý khi hai người nói chuyện liên tục.
Máy tính thì khác: nó thường gửi một ít dữ liệu, im lặng, rồi lại gửi tiếp.
Với máy tính, cách đó phí tới mức nào?
Nguồn bài viết (6)
- Revolution: Connecting Over Phone Lines · Computer History Museum
- Internet History of 1960s · Computer History Museum
- RFC 20 — ASCII format for network interchange · IETF
- RFC 3629 — UTF-8, a transformation format of ISO 10646 · IETF
- Gigabit Ethernet over Category 5 (IEEE 802.3ab tutorial) · IEEE 802.3 Working Group
- An Introduction to Computer Networks (Peter L. Dordal) · Loyola University Chicago