Chương 1. Mạng và Internet
Hiện nay, Internet đang được xem là một hệ thống lớn nhất do
con người tạo ra. Hệ thống này bao gồm hàng trăm triệu các kết nối giữa máy
tính, thiết bị truyền thông và thiết bị chuyển mạch; với hàng tỉ người dùng
đang kết nối vào hệ thống thông qua máy tính xách tay, máy tính bảng, điện
thoại; với rất nhiều các thiết bị có hỗ trợ kết nối Internet khác như các bộ
cảm biến, webcam, máy chơi game, khung ảnh, thậm chí cả máy giặt.
Với một hệ thống lớn như thế, với rất nhiều các thành phần, thiết bị và người dùng đang kết nối, chúng ta có thể hiểu được cách thức vận hành của nó hay không? Có tài liệu nào cung cấp các kiến thức nền tảng giúp hiểu được hệ thống này không? Nếu có, tài liệu đó có thú vị và dễ đọc không?
Thật may mắn,
câu trả lời chung cho các câu hỏi trên là có. Cuốn sách này sẽ giới thiệu với
bạn những kiến thức cập nhật thuộc lĩnh vực mạng máy tính, giới thiệu các
nguyên lý và các kiến thức nền tảng giúp bạn không những hiểu về hệ thống mạng
hiện tại, mà còn có thể hiểu được hệ thống mạng trong tương lai.
Chương đầu tiên sẽ đề cập tới các nội dung tổng quan về mạng
và Internet. Bao gồm các khái niệm, thuật ngữ, các phần mềm và phần cứng liên
quan đến hệ thống mạng.
1.1 Internet là gì?
Để hiểu Internet là gì? Chúng ta cùng tìm hiểu về hạ tầng phần
cứng, phần mềm và dịch vụ của nó.
1.1.1 Hạ tầng phần cứng và phần mềm của Internet
Internet là một hệ thống mạng bao gồm hàng trăm triệu các thiết bị kết nối với nhau. Ban đầu, các thiết bị chủ yếu là máy tính cá nhân, máy chủ. Sau đó, rất nhiều các thiết bị số khác cũng có thể kết nối vào hệ thống mạng này, như máy tính xách tay, điện thoại, máy tính bảng, tivi, máy chơi game, webcam, xe hơi, các thiết bị cảm biến, khung ảnh, hệ thống an ninh và hệ thống điện trong các hộ gia đình.
Rõ ràng, thuật ngữ mạng máy tính (computer network) đã có vẻ
lỗi thời. Bởi thực tế, các thiết bị kết nối vào hệ thồng mạng hiện nay bao gồm
rất nhiều các thiết bị khác, chứ không phải chỉ có máy tính. Trong lĩnh vực
Internet, người ta gọi các thiết bị kết nối (có tính chất cố định) vào hệ thống
mạng là hosts hoặc end systems (tạm gọi là thiết bị cuối).
Hình sau minh họa các thiết bị phần cứng của Internet.
Tới tháng 7/2011, theo thống kê của ISC (Internet System
Consortium) đã có khoảng 850 triệu thiết bị cuối kết nối vào hệ thống Internet,
con số này chưa tính tới số lượng các thiết di động, máy tính xách tay, và các
thiết bị khác cũng có kết nối vào hệ thống nhưng không thường xuyên. Tổng cộng số
người dùng Internet năm 2011 là khoảng 2 tỉ.
Các thiết bị cuối được kết nối với nhau bằng đường truyền và
thiết bị chuyển mạch gói. Có nhiều loại đường truyền khác nhau như: cáp đồng
trục, cáp xoắn, cáp quang, dài tần sóng vô tuyến (sóng radio). Mỗi loại đường truyền có tốc độ
truyền dữ liệu khác nhau. Tốc độ đường truyền được đo bằng đơn vị bit/giây. Khi
một thiết bị cuối muốn truyền dữ liệu tới một thiết bị khác, dữ liệu sẽ được chia
nhỏ và gắn thêm các thông tin bổ sung (header), kết quả là tạo ra các gói dữ
liệu (packet), các gói này được hệ thống mạng truyền tới thiết bị đích. Tại
thiết bị đích các gói được phân tách để bỏ đi các thông tin bổ sung, kết quả là
có được dữ liệu gốc ban đầu.
Tại các thiết bị chuyển mạch gói, khi nhận được gói tin đến
ở đầu vào, thiết bị chuyển mạch sẽ chuyển tiếp gói tin đó đến thiết bị kế tiếp.
Các thiết bị chuyển mạch gói có nhiều kiểu dáng và đặc tính khác nhau, tuy
nhiên có hai loại phổ biến nhất trong hệ thống Internet ngày nay là router và
switch tầng liên kết (link-layer swiches). Router thường được sử dụng trong các
hệ thống mạng lõi (core), trong khi switch tầng liên kết thường được sử dụng
trong hệ thống mạng truy cập (mạng bao gồm các thiết bị cuối - access network).
Đường đi của gói tin từ thiết bị nguồn tới thiết bị đích được gọi là route hoặc
path.
Hệ thống mạng chuyển mạch gói rất giống với mạng lưới vận
chuyển hàng hóa của một công ty vận tải. Trong đó, đường truyền mạng giống như
các đường quốc lộ và tỉnh lộ; các ngã ba, ngã tư chính là các thiết bị chuyển
mạch gói, các thiết bị cuối là các kho hàng và mỗi gói tin trong hệ thống mạng chính
là một xe tải. Giả sử công ty vận tải cần chuyển một lượng lớn hàng hóa từ nhà
máy tới các kho hàng ở nhiều địa phương khác nhau. Tại nhà máy, kho hàng sẽ
được chia thành từng khối theo từng địa phương, sau đó, các xe tải sẽ vận
chuyển khối hàng này tới từng địa phương. Mỗi xe tải sẽ di chuyển độc lập qua
các quốc lộ, tỉnh lộ, ngã ba, ngã tư để tới các kho hàng địa phương. Tại kho
hàng địa phương, người ta sẽ tập kết hàng của từng xe tải, chờ cho tới khi nào tập
kết được đủ số lượng hàng hóa thì thôi.
Các thiết bị cuối sẽ kết nối vào hệ thống Internet thông qua
các nhà cung cấp dịch vụ gọi là các ISP (Internet service provider). Có nhiều
loại ISP như các công ty truyền thông; các công ty truyền hình cáp; các trường
đại học; các tập đoàn; dịch vụ kết nối không dây tại sân bay, khách sạn, quán
cà phê, cửa hàng, và các nơi công cộng khác. Mỗi ISP có một hạ tầng mạng của
riêng nó với hệ thống đường truyền và các thiết bị chuyển mạch. Các ISP cung
cấp nhiều hình thức để thiết bị cuối có thể kết nối vào Internet như thông qua
hệ thống cáp truyền hình (cable), đường thuê bao số (DSL), mạng cáp quang, mạng
không dây, mạng quay số. Các ISP cũng cung cấp kết nối Internet cho các nhà
cung cấp nội dung, nhằm kết nối trực tiếp website của nhà cung câp nội dung vào
hệ thống Internet.
Các thiết bị cuối kết nối vào ISP địa phương (lower-tier ISP),
các ISP địa phương lại được kết nối vào các ISP quốc gia hoặc quốc tế. Các ISP
quốc tế gồm: Level 3 Communication, AT&T, Sprint, và NTT. Các ISP quốc tế sử
dụng các router và đường truyền cáp quang có tốc độ cao. Mỗi ISP, dù là địa
phương hay quốc tế thì đều được vận hành một cách độc lập, đều đang sử dụng
giao thức IP, và tuân theo một số quy ước về đặt tên, địa chỉ.
Các thiết bị cuối, thiết bị chuyển mạch gói, và các thành
phần khác trên Internet sử dụng các giao thức (protocol) để kiểm soát việc gửi
và nhận thông tin. TCP (transmision control protocol) và IP (internet protocol)
là hai giao thức quan trọng nhất trong Internet. Internet đang hoạt động dựa
trên bộ giao thức TCP/IP.
Giao thức, hiểu nôm na là cách thức để giao tiếp, hay đó là
các quy định để thực hiện truyền tin giữa các đối tượng, thiết bị trên hệ
thống. Các đối tượng muốn làm việc được với nhau thì phải tuân thủ các quy định
trong mỗi giao thức hay còn gọi là các chuẩn. Từ đây xuất hiện khái niệm chuẩn Internet
(Internet standard). Chuẩn Internet được tổ chức IETF (Internet Engineering
Task Force) đưa ra. Các chuẩn này được mô tả trong các tài liệu gọi là RFC
(requests for comments – đề nghị duyệt thảo và bình luận). Theo wiki, RFC là một chuỗi các bản ghi nhớ chứa đựng những nghiên cứu mới, những đổi
mới, và những phương pháp luận ứng dụng cho công nghệ Internet. Chính các RFC
đã tạo ra các giao thức TCP, IP, HTTP (cho web), SMTP (cho email). Hiện tại có
hơn 6 000 RFC. Một tổ chức khác cũng định ra các chuẩn cho Internet là IEEE 802
LAN/MAN Standards Committee, ví dụ họ đã tạo ra các chuẩn Ethernet và WiFi.
1.1.2 Chức năng cung cấp dịch vụ của Internet
Ở phần trên đã đề cập tới các thành phần cấu tạo nên
Internet, bao gồm phần cứng (đường truyền, các thiết bị), và phần mềm (các giao
thức).
Tuy nhiên, chúng ta cũng có thể mô tả hệ thống mạng Internet
ở một góc nhìn khác. Đó là xem Internet chính là hạ tầng của các ứng dụng,
Internet sẽ cung cấp các dịch vụ cho ứng dụng. Các ứng dụng có thể là thư điện
tử (email), duyệt web, mạng xã hội, nhắn tin, VoIP, truyền hình trực tuyến, trò
chơi trực tuyến, chia sẻ tập tin (P2P), truyền hình Internet, truy cập từ xa,
và nhiều ứng dụng khác. Các ứng dụng này được gọi chung là các ứng dụng phân
tán (distributed application), vì chúng hoạt động và trao đối thông tin giữa
nhiều thiết bị cuối khác nhau.
Nếu để ý sẽ thấy, các ứng dụng mạng đang tồn tại và hoạt
động trên các thiết bị cuối, chứ không phải trên đường truyền hay trên các
thiết bị chuyển mạch gói. Hạ tầng Internet chỉ có nhiệm vụ truyền các gói tin.
Ví dụ sau sẽ cho bạn thấy Internet chính là hạ tầng của các
ứng dụng. Giả sử bạn muốn phát triển một ứng dụng trên Internet. Tất nhiên, ứng
dụng thì phải chạy trên các thiết bị cuối, vì vậy bạn sẽ phát triển ứng dụng
này trên thiết bị cuối bằng một ngôn ngữ lập trình nào đó (Java, C hay Python).
Khi chạy, chương trình trên các thiết bị cuối sẽ phải trao đổi thông tin qua
lại với nhau. Để trao đổi thông tin với nhau, chương trình sẽ phải sử dụng bộ
thư viện được xây dựng sẵn trên các thiết bị cuối, đó là API (application
programming interface). Bộ thư viện Internet API là tập các quy tắc cho phép
gửi và nhận dữ liệu trên hạ tầng Internet. Để dễ hiểu, bạn hãy hình dung lại
quá trình gửi thư bằng đường bưu điện. A muốn gửi thư tới B, A sẽ phải viết nội
dung của bức thư, sau đó A không thể mang thả bức thư ra ngoài cửa sổ được, mà
A phải bỏ thư vào phong bì, ghi thông tin người gửi, ngưởi nhận, dán tem và bỏ
vào hộp thư đi của bưu điện. Nghĩa là A phải tuân thủ các quy tắc, quy định của
bưu điện. Tương tự như vậy, Internet API chính là các quy tắc, quy định mà các
thiết bị cuối cần tuân thủ nếu muốn gửi dữ liệu tới thiết bị cuối khác qua môi
trường Internet.
1.1.3 Giao thức
Như đã nói ở phần trên, hiểu nôm na, giao thức là cách thức
để giao tiếp. Để dễ hiểu hãy hình dung cách thức mà con người đã thực hiện để
giao tiếp hàng ngày. Xem hình minh họa bên dưới. Giả sử cần hỏi giờ, họ sẽ làm
như thế nào? Người đầu tiên sẽ nói “Chào anh” để bắt đầu pha giao tiếp. Người
thứ hai sẽ nói “Chào anh” để đáp lại. Sự đáp lại của người thứ hai là dấu chỉ
cho biết anh ta đã sẵn sàng và người thứ nhất có thể hỏi anh ta là “Mấy giờ rồi?”.
Tuy nhiên, có thể có tình huống khác, người đầu tiên nói “Chào anh”, người thứ
hai có thể trả lời “Tôi không rảnh!”, hoặc có những dấu chỉ cho biết người thứ
hai không sẵn sàng để tiếp tục pha giao tiếp. Khi đó pha giao tiếp sẽ kết thúc,
và người thứ nhất sẽ không biết được mấy giờ rồi.
Như vậy, trong quá trình con người giao tiếp, phải có quá
trình gửi và nhận thông điệp, sau khi nhận được thông điệp thì sẽ có hành động
đáp trả, hoặc có một dấu chỉ nào đó. Và pha giao tiếp sẽ thất bại nếu hai người
không hiểu nhau, hoặc người được hỏi không có thiện chí.
Xem xét một ví dụ khác, trong giờ học, sau khi giảng xong
một vấn đề, giáo viên hỏi cả lớp “có ai có câu hỏi nào không?” (thông điệp đã
được gửi). Cả lớp sẽ nhận được thông điệp này. Một sinh viên giơ tay lên (đã
ngầm gửi một thông điệp tới giáo viên). Giáo viên đáp lại bằng một nụ cười và
nói “mời em” (giáo viên đã báo cho sinh viên biết là em hãy hỏi đi). Sinh viên
sẽ đưa ra câu hỏi (chuyển thông điệp cho giáo viên). Giáo viên sẽ nghe câu hỏi
(nhận thông điệp), sau đó trả lời cho sinh viên (gửi thông điệp).
Như vậy, các yếu tố quan trọng nhất của giao thức chính là việc
gửi và nhận thông điệp, bên cạnh đó là một tập các quy tắc cần phải thực hiện
khi gửi và nhận thông điệp.
-------------
lược dịch
James F. Kurose, Keith
W. Ross, Computer Networking – A Top-Down
Approach, Pearson, 2013
------------
Cập nhật 2016/6/5
------------
Xem thêm: Mạng máy tính - 2