Professional Documents
Culture Documents
Tóm Tắt Giáo Trình Mạng Máy Tính - HĐP
Tóm Tắt Giáo Trình Mạng Máy Tính - HĐP
Tóm Tắt Giáo Trình Mạng Máy Tính - HĐP
- Mô hình phân tích thành nhiều tầng(layer). Mỗi tầng sẽ có những chức năng và
nhiệm vụ xác định.
- Mô hình OSI tạo ra tính trong suốt hoàn toàn giữa 2 thiết bị hoàn toàn không tương
thích với nhau.
- Khi đi từ A -> B, thông điệp có thể đi qua nhiều nút trung gian. Những nút trung gian
chỉ liên quan 3 tầng đầu.
- Tại thiết bị đầu/cuối, mỗi tầng sẽ sử dụng dịch vụ do tầng dưới cung cấp(tầng 3
được cung cấp bởi tầng 2, rồi cung cấp cho tầng 4)
- Giữa 2 thiết bị, tầng N thiết bị này tương tác với tầng N của thiết bị kia.
- Tại tầng vật lý, dữ liệu được truyền trực tiếp(A gửi luồng bit đến B dưới dạng tín
hiệu). Ở các tầng cao hơn trên máy A, dữ liệu được thêm dần và đi xuống dưới,
sang B các tầng lấy dữ liệu tương ứng và đi dần lên trên.
- Mỗi tầng của A gửi thêm các thông tin của mình. Gọi là header và trailer. header
được thêm ở tầng 2-6, trailer được thêm ở tầng 2.
- Giao diện các tầng(interface): các tầng trao đổi dữ liệu với nhau qua các giao diện.
Giao diện định nghĩa cách thức và khuôn dạng dữ liệu trao đổi. Trong mạng thường
gọi giao diện là điểm truy cập dịch vụ(Service Access Point - SAP) vì tầng trên yêu
cầu dịch vụ của tầng dưới.
- Tổ chức các tầng: Chia 7 tầng vào 3 nhóm:
+ Nhóm tầng hỗ trợ mạng: vật lý, liên kết dữ liệu, mạng. Chịu trách nhiệm liên
quan đến khía cạnh vật lý khi truyền từ thiết bị này sang thiết bị khác.
+ Nhóm tầng hỗ trợ người dùng: phiên, trình diễn, ứng dụng. Tạo khả năng liên
tác giữa các hệ thống phần mềm khác nhau.
+ Tầng 4 giao vận: đảm bảo truyền dữ liệu đầu cuối tin cậy.
+ Các tầng ở trên được triển khai bởi phần mềm. Dưới thì cả phần cứng và
mềm. Tầng vật lý thì hầu như chỉ phần cứng.
Li gọi là đơn vị dữ
liệu giao thức tầng i.
Quá trình truyền dữ
liệu được bắt từ
tầng 7 xuống, thêm
các header tại tầng
2-6, trailer tại tầng 2.
Tại tầng 1, đơn vị dữ
liệu được chuyển
thành tín hiệu vật lý
và chuyển đi. Tại nơi
nhận, dữ liệu được
giải mã, rồi truyền
ngược lên các tầng.
Header, trailer được
lấy ra cùng dữ liệu
tầng đó. Khi đến
tầng 7 thì đã là dạng dữ liệu phù hợp và có thể sử dụng.
Tầng giao
vận tạo ra
kết nối logic
giữa 2 cổng
đầu/cuối. Tất
cả gói dữ
liệu cùng 1
thông điệp truyền theo kết nối đó. 3 giai đoạn: thiết lập kết nối, truyền dữ liệu,
giải phóng kết nối.
Chương 2:
Tầng ứng dụng
- Ưu điểm:
+ không có cơ chế kiểm soát tắc nghẽn -> thông điệp đến với tốc độ bất kỳ.
+ Dù không đến đích hết nhưng phần lớn dữ liệu đến.
- Các ứng dụng real time thường sử dụng UDP ở tầng giao vận.
- TCP và UDP đều không đảm bảo về thời gian.
2.2.2 Kết nối liên tục và không liên tục:(persistent and non persistent)
● HTTP 1.0 sử dụng kết nối không liên tục. HTTP 1.1 sử dụng được cả 2 nhưng mặc
định liên tục.
● Kết nối không liên tục:
- Giả sử HTTP client yêu cầu www.facebook.com/loanbuihsgs.gif. Trang web có 10
hình ảnh và tất cả đều trên cùng 1 server. HTTP khởi tạo kết nối TCP đến
www.facebook.com và cổng 80 để lắng nghe yêu cầu từ client.
- HTTP client gửi thông điệp loanbuihsgs.gif. HTTP server nhận được thông điệp và
lấy đối tượng trong bộ nhớ của mình(RAM hoặc ổ cứng) rồi trả lời.
- HTTP server yêu cầu TCP kết thúc(sau khi client nhận được thông điệp).
- Sau khi nhận HTML, các bước tương tự đối với 10 ảnh. Các bước là không liên tục
vì gửi xong rồi sẽ đóng TCP. Trong ví dụ vừa rồi thì tạo ra tận 11 kết nối TCP.
● Kết nối liên tục:
- Khi mới tạo ra, phía client và server phải tạo vùng đệm TCP(buffer) cũng như lưu
các biến TCP. Nhiều client sẽ là gánh nặng lớn.
- Kết nối liên tục không đóng TCP sau khi gửi xong. Thường thì sẽ chỉ đóng sau 1
khoảng thời gian không được sử dụng.
2.2.3 Khuôn dạng thông điệp HTTP.
Có 2 kiểu thông điệp là yêu cầu và trả lời.
● Thông điệp yêu cầu:
- Viết bằng mã ASCII, máy tính nào cũng đọc được
- Thông điệp gồm 5 dòng (thực tế vẫn có thể nhiều
hơn), mỗi dòng kết thúc bằng ký tự carriage return(trở
về đầu dòng)
- Dòng đầu tiên là dòng yêu cầu có 3 trường. Trường
đầu là GET or POST or HEAD. Trường 2 là tên đối
tượng (ví dụ loanbuihsgs.gif). Trường 3 là phiên bản.
- Các dòng sau gọi là tiêu đề(header).
Host: www.someschool.edu là địa chỉ của máy tính.
- Connection: close là kết nối TCP đóng lại khi trả yêu cầu.(dùng 1.1 nhưng mà muốn
đóng hay không đều được).
- User-agent mô tả trình duyệt sử dụng.
- Accept-language mô tả ngôn ngữ sử dụng. Trong ví dụ trên là Fr, nếu yêu cầu một
ngôn ngữ mà trang web không có thì về ngôn ngữ mặc định sẵn.
- Khuôn dạng tổng quát sẽ có thêm Entity Body. Phương thức GET không có mà chỉ
có trong POST (POST dữ liệu như ảnh, văn bản, video chứ không phải lấy về như
GET nên POST có thêm). Khi nhận được dữ liệu từ POST, server sẽ gửi thông điệp
HTTP trả lời nhưng không gửi đối tượng yêu cầu.
● Thông điệp trả lời:
- Gồm 3 phần: trạng thái(1), tiêu đề(2-7), phần thân(8)
- Trạng thái gồm phiên bản, mã trạng thái(200), trạng
thái thông điệp trả lời(OK)
- Connection tương tự. Date cho biết thời gian server
tạo thông điệp và gửi đi. Server cho biết đối tượng tạo
ra trong server Apache, ý nghĩa giống User-agent.
- Last modified là thời gian cuối cùng đối tượng được
cập nhật.
2.3.1 SMTP:
● Được sử dụng nhiều nhưng vẫn là công nghệ cũ có
tính lạc hậu :đòi hỏi mã hóa ASCII thành chỉ 7 bit.
(Bình thường như HTTP không yêu cầu mã hóa gửi
thẳng thông điệp).
● Hoạt động cơ bản của SMTP đã nêu ở trên.
● Điều đặc biệt là SMTP không có server trung gian,
TCP kết nối trực tiếp mọi nơi.
● Chi tiết hơn quá trình: SMTP client(chạy trên mail
server của người gửi) thiết lập kết nối TCP ở cổng 25
tại SMTP server(chạy server nhận). Sau khi kết nối
thì sẽ bắt đầu vài thủ tục bắt tay rồi mới trao đổi
thông điệp.
● 1 ví dụ 1 đoạn “hội thoại giữa Client(C) và Server(S).
tên máy tính là crepes.fr và server hamberger.edu.
● Các lệnh Client sử dụng: HELO, MAIL FROM, RCPT
TO, DATA, QUIT ở những thời điểm tương ứng.
- SMTP là giao thức đẩy. Vậy để lấy thư từ mail server, B cần 1 giao thức.
- Tại sao cần user-agent mà không phải chính máy chủ của client là mail-server? Nếu
cài mail-server trên máy B thì máy B lúc nào cũng bật và kết nối Internet -> không
khả quan. Do vậy mail-server được quản lý bởi ISP của người dùng(trường học hay
công ty).
- Có 2 giao thức để B lấy thư từ mail-server là POP3(Post Office Protocol - ver3) và
IMAP(Internet Mail Access Protocol)
● POP3:
- là giao thức lấy thư cực kỳ đơn giản. POP3 được khởi tạo
khi user-agent tạo kết nối TCP tới mail-server tại cổng 110.
- POP3 gồm 3 giai đoạn: kiểm chứng, tiến hành xử lý, cập
nhật.
+ Kiểm chứng: Sẽ sử dụng tên và mật
khẩu để xác nhận người dùng.
+ TIến hành xử lý: user-agent tiến hành
lấy thư. Client có thể đánh dấu để xóa hoặc
hủy bỏ đánh dấu.
+ Cập nhật: sau khi có lệnh QUIT, mail-
server sẽ xóa những thư đánh dấu.
(HÌNH BÊN MÔ TẢ TOÀN BỘ QUÁ TRÌNH POP3 TELNET)
- Kiểm chứng có 2 lệnh “user” và “password”. Đánh sai thì sẽ báo
ERR, đúng thì OK.
- Tiến hành xử lý có 3 lệnh “list”, “retr”, “dele”, “quit”. Sau khi “quit”,
mail-server bắt đầu xóa thư như nêu trên.
- Có 2 chế độ là “download and delete” và “download and keep”.
delete ở đây là delete trên server. Chế độ 2 để tránh tình trạng muốn
đọc lại thư hoặc đọc thư ở máy này không thể đọc.
- POP3 ghi thông tin trạng thái nhưng không chuyển làm đơn giản đi
POP3.
● IMAP:
- IMAP sẽ cho phép B thêm tính năng tạo thư mục khác nhau
trong mailbox, chuyển thư sang thư mục khác, search thư.
IMAP cũng có chế độ lấy 1 phần thư(lấy 1 đoạn văn,loại các
file nặng trong thư...). Vì vậy nên IMAP phải lưu lại thông tin
trạng thái và phức tạp hơn POP3.
- IMAP có 3 giai đoạn: thiết lập kết nối, chấp nhận kết nối, tương tác. Vì vậy sẽ luôn có 4
trạng thái: chưa kiểm chứng, đã kiểm chứng, lựa chọn(xóa, lấy chuyển thư), thoát.
● Giao thức HTTP:
- Ngày nay Webmail - dịch vụ truy cập mail qua trình duyệt phổ biến hơn.
- Khi đó userA -> serverA qua HTTP, serverA đến serverB qua SMTP, userB lấy mail
từ serverB qua HTTP.
- email ngày càng thuận tiện và thay thế IMAP, POP3. Nhược điểm chính của webmail
là chậm
(chú ý phần phía trên gạch ngang là điều kiện nhận, như kiểu sự kiện, phía dưới là thực
hiện hành động. Ví dụ ở bên gửi thì bắt được sự kiện rdt_send(data) từ tầng trên xuống thì
hành động make_pkt rồi gửi qua máy kia đi qua udt_send.)
- Với rdt 1.0 khá đơn giản. Mỗi bên chỉ có 1 automat biểu diễn (“đợi call ở tầng trên” -
bên gửi, “đợi call ở tầng dưới” - bên nhận).
- Việc gửi đơn giản là nhận dữ liệu từ tầng trên (rdt_send(data)) thì sẽ tạo gói dữ liệu
(make_pkt(packet, data)) rồi gửi lên kênh truyền (udt_send(packet)).
- Phía nhận thì sẽ nhận gói dữ liệu bằng rdt_rcv(packet) rồi lấy dữ liệu ra khỏi gói dữ
liệu qua extract(packet, data) rồi chuyển lên tầng trên (deliver_data(data))
● Truyền thông dữ liệu trên kênh truyền có lỗi bit (giao thức rdt 2.0)
- Gói dữ liệu kênh truyền hoàn toàn có thể bị lỗi, thường là lỗi do đường truyền vật lý.
Tuy nhiên vẫn giả thiết là các gói đúng thứ tự và đều đến đích.
- Ví dụ: Giả sử đọc bài chính tả cho ai đó. Thông thường đọc xong sẽ nói “Xong rồi”
sau khi đã nghe hiểu và chép được. Đây là phản hồi tích cực (positive
acknowledgement). Hoặc nếu chưa nghe rõ thì sẽ “Gì cơ”. Đây là phản hồi tiêu cực.
Trong mạng máy tính, giao thức truyền tin cậy dựa trên cách này là giao thức ARQ
(Automatic Repeat reQuest).
- Các giao thức ARQ cần phát hiện lỗi, phản hồi từ phía nhận rồi truyền lại. Báo nhận
đúng gọi là ACK và báo nhận sai gọi là NAK. Ví dụ 0 ứng với ACK và 1 ứng với NAK
- Trong giao thức rdt 2.0, phía gửi có 2 trạng thái là đợi dữ liệu gửi từ tầng trên và đợi phản
hồi ACK hay NAK.
- Nếu nhận được ACK (rdt_rcv(rcvpkt) && isACK(rcvpkt)) thì sẽ trở về trạng thái chờ dữ liệu
từ bên trên mà không làm gì cả. Tương tự với NAK và bên nhận(tự đọc ảnh bên), (hàm
corrupt(rcvpkt) check xem dữ liệu có bị hỏng không).
Theo automat, phía gửi sẽ không gửi dữ liệu mới cho tới khi dữ liệu gửi là đúng. Hành vi
này thuộc kiểu dừng và chờ.
Giao thức rdt 2.0 chưa nghĩ đến việc chính gói ACK hoặc NAK lỗi. Cần tạo checksum cho
chính gói này.
● Có 3 cách xử lý ACK or NAK lỗi:
- C1: Nếu không hiểu câu “Xong rồi” hay “gì cơ” thì sẽ hỏi lại “bạn nói gì?”. Nhưng
nếu câu “bạn nói gì” có lỗi cũng có lỗi? Cách này vẫn chưa ổn thỏa.
- C2: Cách 2 thêm vào trường checksum một số biết để phát hiện và sửa lỗi. Nhưng
cách này không sửa được trường hợp mất cả gói.
- C3: Giải pháp thứ 3 phía gửi truyền lại dữ liệu nếu phát hiện lỗi trong gói phản
hồi(ACK or NAK). Tuy nhiên có thể gây trùng lặp dữ liệu.
● Giải pháp là thêm trường đánh dấu số thứ tự. Ở đây là thêm 0 và 1. Bên nhận có thể
xác định bên gửi truyền lại gói dữ liệu lần trước bằng cách check xem số thứ tự 2
gói có giống nhau hay không. Vậy ta có giao thức rdt 2.1
2 hình bên trên là giao thức rdt 2.1. Hình trên là gửi. Hình dưới là nhận.
(Chú ý thêm là nếu đang chờ 1 mà nhận được gói ACK nhưng với thứ tự 0 thì bên nhận chỉ
gửi lại ACK thôi, vì dữ liệu đã được chuyển lên tầng trước rồi).
- Ảnh dưới là giao thức rdt 2.2. rdt 2.2 không gửi lại NAK. Nó chỉ gửi lại ACK khi nhận
được gói dữ liệu cuối cùng là đúng.
● Truyền dữ liệu tin cậy trên đường truyền mà dữ liệu bị mât, lỗi (rdt 3.0)
- Có nhiều giải pháp xử lý mất dữ liệu. Ta sẽ dùng cách là sau một khoảng thời gian
mà bên gửi không thấy gói dữ liệu trả lại thì sẽ gửi lại gói dữ liệu.
Khoảng thời gian rất khó dự đoán hay ước lượng, nếu gói tin về bị chậm và ta gửi
thừa có thể gây trùng lặp dữ liệu. Nhưng trên thực tế thì rdt 2.2 đã sẵn cơ chế đánh
số thứ tự các gói để ngăn chặn sự trùng lặp. Vì vậy điều đó ta không cần quan tâm.
- Có thể ta gửi lại 3 lần rồi mà mới nhận được gói trả lời, nhưng gói trả lời của lần
gửi thứ mấy ta đang không biết và đang muốn biết (ví dụ là biết xem mất dữ liệu hay
do là mạng chậm)? Việc này có thể giải quyết bằng cách thêm trường số thứ tự và
gói gửi đi.
(time out ở hình bên là quá khoảng thời gian mà ta đặt ra để chờ đời).
3.4.2 Giao thức truyền dữ liệu tin cậy liên tục. (Pipeline)
- Mặc dù hoạt động đúng nhưng không phải ai cũng vừa lòng với hiệu suất rdt 3.0,
đặc biệt trong mạng tốc độ cao hiện nay. Mấu chốt ở chính sách “dừng và chờ” (phải
xác nhận rằng bên nhận đã nhận gói dữ liệu thành công mới gửi tiếp gói khác).
- Giả sử truyền từ Tây sang Đông Mỹ mất 15000 μs, truyền từ thiết bị ra đường truyền
mất 8μ. Vậy nếu ta truyền từng gói thì cả đi và về sẽ mất 30,016 μs. Trong khi
đường truyền “ngồi chơi” khá nhiều, dẫn đến hiệu suất cực kì bé. Giải pháp là ta
truyền đồng thời nhiều gói dữ liệu nối tiếp - kỹ thuật đường ống(pipeline).
- Kỹ thuật này đòi hỏi:
+ Khoảng số thứ tự phải tăng (mục đích cho về sau gửi lại ACK dễ dàng).
+ Phía gửi và phía nhận phải có bộ đệm cho nhiều gói dữ liệu.
- Có 2 cách tiếp cận là Go-back-N(GBN) và Lặp lại có lựa chọn(Selective Repeat).
3.4.3 Go-Back-N(GBN):
- Phía gửi được phép truyền đi đồng thời nhiều gói dữ liệu mà không đợi biên
nhận(gửi lại ACK) nhưng chỉ được tối đa N gói.
- send_base là số thứ tự gói dữ liệu truyền đi sớm nhất chưa được biên nhận.
nextsegnum là số thứ tự nhỏ nhất chưa được sử dụng.
- [0, send_base - 1] : đã được gửi và biên nhận thành công.
- [send_base, nextsegnum - 1] : đã được gửi nhưng chưa được biên nhận.
- [nextseqsum, send_base + N - 1]: có thể sử dụng làm số thứ tự cho các gói nếu có
dữ liệu từ tầng trên gửi xuống. Vậy luôn đảm bảo cửa sổ kích thước N gói đang gửi.
- Vậy tại sao không cho N vô hạn? Trên thực tế ta phải kiểm soát tắc nghẽn và trường
số thứ tự trong tiêu đề cũng có hạn.
FSM mở rộng trong bên gửi (hình trên) và bên nhận (hình dưới) của GBN.
- Số biên nhận: số thứ tự của gói tiếp theo mà máy B muốn nhận. Ví dụ: giả sử máy B
nhận được các gói từ 1 - 436 và máy B cũng phải gửi lại 1 segment đến máy B. Lúc
đó tiêu đề sẽ ghi số biên nhận là 437. Vậy TCP cũng biên nhận kiểu tích lũy.
- Nhưng nếu nhận các gói không đúng thứ tự hoặc có gói bị mất thì TCP sẽ làm gì?
(làm như GBN hay SR). Điều đó phụ thuộc vào chính người lập trình. Nhưng trong
tài liệu này thì sẽ xử lý như GBN.
Việc đóng kết nối thì cả 2 tiến trình đều có thể kết thúc. Giả sử Client đóng. Client gửi
segment TCP đặc biệt với FIN bật. Server nhận được sẽ gửi segment ACK cho FIN. rồi
server lại gửi segment kết thúc có FIN bật. Client nhận được gửi lại ACK. Tất cả tài nguyên
được giải phóng.
2 hình trên(bên gửi) và hình trái(bên nhận) là tổng quan quá trình bắt đầu kết thúc TCP.
3.6 Kiểm soát tắc nghẽn trong TCP:
- Là cơ chế kiểm soát tắc nghẽn ở thiết bị đầu cuối. Nguyên tắc thì ta sẽ kiểm soát
bên gửi với số lượng gửi thay đổi. Ta sẽ tăng dần số gói dữ liệu gửi đi theo số mũ,
nếu qua ngưỡng thì ta sẽ tăng chậm lại theo tuyến tính đến khi bị mất dữ liệu thì
giảm cả ngưỡng lẫn số dữ liệu gửi đi.
● Tổng quan về kiểm soát tắc nghẽn:
- Ngoài những biến giới thiệu lần trước thì sẽ có thêm 2 biến congestion
window(CongWin) (cửa sổ tắc nghẽn) và threshold(ngưỡng). CongWin là số lượng
dữ liệu tối đa mà người gửi có thể gửi. Như vậy, kết hợp phần trước ta có:
LastByteSent - LastByAcked <=
min{RcvWin, CongWin}
- Ngưỡng sẽ ảnh hưởng đến quá trình
tăng của CongWin. Để biết cách
CongWin hoạt động thế nào, ta giả sử
RcvWin lớn hơn hẳn CongWin rất
nhiều.
- Quá trình:
+ Ban đầu, CongWin = 1 MMS .
Khi chưa vượt ngưỡng:
CongWin = CongWin * 2. Đây
là giai đoạn slow start.
+ Khi đã chạm ngưỡng hoặc lớn
hơn ngưỡng: CongWin =
CongWin + 1.
Đây là giai đoạn congestion
avoidance.
+ Khi tắc nghẽn:
threshold = CongWin / 2, CongWin = 1.
- Biểu đồ bên là ví dụ cho threshold = 8.
4.1.2 Nguồn gốc của dịch vụ chuyển mạch gói và mạch ảo:
x ❑
D ( Y , Z)
- Bước mấu chốt là nút cập nhật sau khi thấy sự thay đổi của liên kết đến hàng xóm,
hoặc nhận được thông tin cập nhật từ hàng xóm. Nút cũng gửi cập nhật đến tất cả
hàng xóm nếu thông tin đường đi ngắn nhất nào đó bị thay đổi.
4.3 Định tuyến phân cấp:
- Trong các phần trước, ta coi mạng là tập hợp router liên kết với nhau và giống nhau.
Nhưng trong thực tế, phạm vi và số lượng router lớn(hàng tỷ) dẫn đến khối lượng bộ
nhớ và tính toán quá lớn. Hơn thế nữa về yêu cầu quản trị, một tổ chức phải giữ khả
năng quản trị và kiểm soát mạng máy tính của mình nhưng vẫn có khả năng liên kết
bên ngoài.
- Cả 2 vấn đề trên đều có thể giải quyết bằng cách nhóm các router thành các miền tự
quản (autonomous system - AS). Các router trong AS sử dụng cùng 1 thuật toán
định tuyến và biết hết về nhau. Thuật toán chạy trong mỗi AS gọi là thuật toán định
tuyến nội miền(intraAS routing protocol). Một router trong AS có thể thêm nhiệm vụ
định tuyến ra ngoài gọi là gateway router. thuật toán định tuyến gói tin giữa các AS
là interAS routing protocol
Ví dụ trên hình có 3 AS là A, B, C. Miền A,
B, C có 4(a,b,c,d), 3, 2 router. Các
gateway router là A.a, A.c, B.a, C.b .
Ngoài các thuật toán intra-AS để trao đổi
router trong miền, 4 gateway này phải sử
dụng inter-AS để trao đổi với nhau. Các
đường này có thể là kết nối thực sự(B.a
và A.c), có thể là ảo(A.a và A.c).
Nếu cần đi từ H1 đến H2 thì có thể thấy
định tuyến lần lượt và đi như trong hình.
- Khuôn dạng chung của gói dữ liệu TẦNG MẠNG như trên. Có sẽ có địa chỉ gửi, địa
chỉ nhận, mỗi loại địa chỉ 32 bit. Trường data thường là gói TCP hoặc UDP segment.
- Sau khi tạo datagram thì làm thế nào để truyền tới đích? Có 2 trường hợp nằm cùng
trong 1 mạng và nằm khác mạng.
(Xem hình dưới dễ hình dung)
● Trong cùng 1 mạng:
- Giả sử máy A muốn gửi máy B(địa chỉ 223.1.1.3). Trước hết thực thể IP trong máy A
dò bảng định tuyển cục bộ của mình và thấy 223.1.1.0/24 trùng với các bit của địa
chỉ mạng máy B và cũng chỉ ra rằng chỉ cần qua 1 thiết bị trung gian. Vì vậy A gửi có
thể gửi thẳng đến B thông qua tầng liên kết dữ liệu(tầng data link gửi dữ liệu giữa 2
thiết bị nối trực tiếp với nhau).
● Trong 2 mạng khác nhau:
- Xét tiếp máy A gửi cho máy E. Lại tra bảng
định tuyến cục bộ, thấy 223.1.2.0/24 trùng với
các địa chỉ đầu của máy E. Vì số lượng thiết bị
trung gian là 2, nên máy A biết không thể gửi
trực tiếp, nên gửi qua thiết bị trung gian là
router địa chỉ 223.1.1.4 (next router là
223.1.1.4).
Vì vậy A đẩy dữ liệu xuống tầng liên kết dữ liệu và
gửi.
- Chú ý là mặc dù gửi đến router, nhưng địa chỉ
đích vẫn là địa chỉ cuối cùng chứ không phải
địa chỉ router tiếp theo sẽ đến.
- Khi gói dữ liệu đến router, router lại tra bảng
định tuyến(bảng của router ngay dưới hình) và
thấy 223.1.2.0/24 trùng địa chỉ mạng của E.
Nên gói dữ liệu phải được chuyển đến giao
diện 223.1.2.9. Vì số lượng thiết bị trung gian
là 1, chuyển thẳng xuống tầng liên kết dữ liệu
rồi chuyển xuống E.
- Trong trường hợp này không cần đi qua router
trung gian để đến đích. Nhưng nếu có thì ta cứ
tra bảng và lần theo next router. Các router
chuyển gói dữ liệu qua cho nhau cũng qua
tầng liên kết dữ liệu.
- Định tuyến trên mạng Internet giống như việc
hỏi đi đường hỏi đường. Những người được
hỏi không biết chính xác ở đâu, nhưng họ biết
đi theo hướng nào thì sẽ đến.
4.4.3 Khuôn dạng gói dữ liệu IP:
Các trường trong gói dữ liệu IPv4:
- Phiên bản(version): 4 bit, xác định phiên bản giao thức IP của dữ liệu. Qua phiên
bản này mới định nghĩa được các trường còn lại. Hình dưới là khuôn gói IPv4.
- Độ dài tiêu đề(header length): Gói dữ liệu IPv4 có nhiều trường option. 4 bit này
dùng để xác định vị trí bắt
đầu của data trong gói
IP(tức là cũng là vị trí kết
thúc của tiêu đề). Phần lớn
gói IP không chứa phần lựa
chọn của tiêu đề nên
thường tiêu đề cố định 20
byte.
- Kiểu dịch vụ (type of service
TOS): phân biệt dịch vụ IP.
Ví dụ khi tắc cần phân biệt
gói HTML hay gói kiểm soát
mạng ICMP, datagram chưa
dữ liệu real time(ứng dụng
điện thoại qua Internet) hay
không real time (FTP)... Độ
dài được trong trường này
là 3 bit.
- Độ dài gói dữ liệu (datagram
length): tổng độ dài, bao gồm cả của tiêu đề và data.
Độ dài này là 16bit nên theo lý thuyết kích thước tối đa là 65535 byte. Nhưng thường
chỉ <= 1500 byte và thường là 576 byte.
- Định danh, cờ, phân đoạn: được sử dụng khi phân mảnh, tìm hiểu sau.
- Thời gian tồn tại (Time to live - TTL). Tránh dữ liệu lưu chuyển mãi mãi(do định
tuyến lặp, gặp chu trình..). Khi đi qua 1 router thì TTL sẽ giảm đi 1. Khi nào về 0 thì
router sẽ loại bỏ gói tin.
- Giao thức(Protocol): Sử dụng khi gói dữ liệu tới đích, giá trị này sẽ xác định giao
thức tầng giao vận máy tính sẽ nhận. Ví dụ 6 là chuyển đến thực thể TCP, 17 là
chuyển UDP. Trường này được xem là điểm nối giữa tầng mạng và giao vận.
- Checksum tiêu đề(Header checksum): Giúp router phát hiện lỗi trong tiêu đề gói
được gửi đến. Router thường loại bỏ gói dữ liệu bị lỗi. Vậy tại sao TCP/IP kiểm tra
lỗi ở cả tầng mạng và giao vận? Router không bắt buộc phải kiểm tra lỗi, vì vậy giao
vận không thể dựa vào mạng. TCP có thể không chạy trên IP(ví dụ ATM), và IP cũng
có thể chạy trên giao thức giao vận khác (nói chung là độc lập tự chủ).
- Địa chỉ IP nguồn và đích:
- Lựa chọn(Option): Cho phép mở rộng tiêu đề IP. Ít được sử dụng vì sẽ làm cho các
gói có độ dài tiêu đề khác nhau ảnh hưởng mạng hiệu suất cao. IPv6 bỏ trường này.
- Dữ liệu (payload): thông thường là TCP/UDP segment. Tuy nhiên còn có dữ liệu
khác, ví dụ thông điệp ICMP.
- VD: một gói độ lớn 3980 byte đến router và đường dữ liệu tiếp theo gửi có MTU =
1500 byte. Điều này có nghĩa ta phải chia dữ liệu ra thành 3 mảnh như trong bảng
bên cạnh(giả sử định danh là 777). Các thông số 3 mảnh được ghi bảng bên dưới.
● Định tuyến có 4 thành phần chính: Cổng vào(Input port), Cổng ra(output port), Kết
cấu chuyển(switching fabric), Bộ xử lý (routing processor).
4.7 IPv6
- Không gian 32bit là quá bé và dần sẽ cạn kiệt do số lượng thiết bị hiện nay là lớn và
tăng rất nhanh. Vì vậy giao thức IPv6 được phát triển và đang được chuyển đổi dần.
● Mở rộng khả năng đánh địa chỉ: địa chỉ có
độ dài 32 bit lên 128 bit. Với 2^128 có thể
đánh từng hạt cát Trái Đất. Bên cạnh địa
chỉ duy nhất(unicast), địa chỉ đa
đích(multicast), IPv6 còn có thêm anycast
address cho phép gói tin với địa chỉ đích
này chuyển tới nhóm máy tính(ví dụ sử
dụng HTTP GET tới nhiều site phụ tới
cùng tài liệu nào đấy)
● Tiêu đề độ dài cố định 40 byte: Bỏ hết các
trường tùy chọn trong IPv4.
● Gắn nhãn luồng(flow label) và độ ưu
tiên(priority):
- Không có định nghĩa cho “flow” rõ ràng
nhưng đã cố gắng gán nhãn cho dữ liệu để xử lý tốt về thời gian và chất lượng hơn.
Ví dụ nhãn luồng liên tục cho các ứng dụng thời gian thực, những ứng dụng có độ
ưu tiên cao có thể coi là 1 luồng...
● So sánh IPv4 và IPv6: Ipv6 đơn giản hơn
- Phiên bản(version): Trường 4 bit xác định phiên bản IP. IPv6 có giá trị 6.
- Traffic class: trường 8 bit giống TOS(service) trong IPv4.
- Nhãn luồng: 20 bit.
- Độ lớn dữ liệu (payload length): Độ lớn phần dữ liệu không tính tiêu đề.
- Next header: xác định giao thức tầng trên nhận dữ liệu (TCP, UDP, ICMP).
- Hop limit: giống TTL.
- Địa chỉ nguồn và đích: mỗi cái 32 bit.
- Dữ liệu(data):
- KHÔNG phân mảnh và hợp nhất: không cho phép phân mảnh, nếu gói tin quá lớn thì
gửi lỗi ICMP “Packet Too Big”, bên dữ liệu sẽ gửi lại gói nhỏ hơn. Việc phân mảnh
và hợp nhất chiến khá lớn thời gian ở router nên IPv6 đã loại bỏ.
- KHÔNG checksum:
5.2.2 Checksum:
- Nhưng đã trình bày các chương trước, có d bit chia thành các
dãy số nguyên có độ dài k. Rồi cộng các số nguyên lại rồi đảo
ngược bit. Khi đến phía gửi thì ta check bằng cách cộng lại xem có ra full 1 không.
Bên nhận sẽ chia lại M cho G. Nếu phần dư khác 0 sẽ phát hiện lỗi.
Để xác định R, ta xem các phép biến đổi tương đương hình
bên.
1 Ví dụ đưa ra là: D = 10110, d = 6, r = 3, G = 1001 thì R = 011.
CRC chuẩn quốc tế use 1 vài đa thức sinh(G) 8, 16, 32 bit. 1 ví dụ G-32:
- Các chuẩn CRC có thể phát hiện lỗi cụm độ lớn < r + 1 bit. > r + 1 thì hên xui.
5.3 Giao thức đa truy cập mạng và mạng cục bộ:
- Ta thấy có 2 kiểu kết nối mạng là điểm nối điểm và quảng bá (broadcast). Kiểu
quảng bá thì sẽ trên kênh truyền dùng chung duy nhất. Khi bất cứ nút nào truyền đi
frame, kênh truyền sẽ quảng bá frame cho tất cả các nút còn lại. Vậy vấn đề làm thế
nào để điều phối kênh truyền chung của nhiều nút? - vấn đề đa truy cập.
- Kênh truyền quảng bá thường được sử dụng cho mạng LAN. Trong đời sống, 1 số ví
dụ quảng bá như trong 1 bữa tiệc, lớp học. Và trong bữa tiệc, hay lớp học mỗi người
đều có cơ hội nói, nói khi mọi người im lặng, giơ tay nếu muốn nói, không ngắt lời,
lắng nghe… Tương tự vậy, giao thức đa truy cập cho phép các nút điều chỉnh việc
truyền thông.
- Vì tất cả các nút đều có khả năng truyền, nên có thể nhiều nút truyền cùng 1 thời
điểm, khi đó sẽ xảy ra xung đột (collide) tại tất cả nút nhận. Khi xung đột, các tín
hiệu các frame pha trộn, nên không nhận frame nào, nên bị mất. Khi đấy tính là kênh
truyền chung không được sử dụng, lãng phí băng thông.
Các giao thức phân loại thành 3 lớp: phân chia kênh
truyền, truy cập ngẫu nhiên, truy cập lần lượt. Nói qua về
giao thức “lý tưởng” gồm những đặc điểm sau:
- Khi chỉ có 1 nút gửi dữ liệu, nút sẽ gửi với thông
lượng tối đa R bps.
- Khi có M nút gửi, mỗi nút sẽ gửi với thông lượng
R/M bps. Đây chỉ là tốc độ trung bình chứ không
yêu cầu các nút luôn vậy.
- Giao thức phân tán: tức là không có nút đóng vai
trò điều phối (nếu không hệ thống sẽ sập thì nút
điều phối hỏng).
- Giao thức phải đơn giản.
- Module ARP trong mỗi nút sẽ chứa một bảng ARP trong RAM lưu ánh xạ IP và địa
chỉ vật lý cùng thời gian tồn tại của dòng này(trường TTL thường là 20s). Bảng
không nhất thiết phải chứa mọi ánh xạ trong LAN, ánh xạ có thể thêm dần vào.
- Nếu nút muốn gửi đến một địa chỉ có trong bảng ARP, ta chỉ cần tra bảng. Nếu
không có, nút gửi phải tạo mã đặc biệt gọi là gói ARP để hỏi tất cả các nút khác trên
mạng LAN. Adapter đặt gói trong frame tầng LKDL, sau đó sẽ gửi gói với địa chỉ đích
là FF-FF-FF-FF-FF-FF. Sau đó mỗi nút sẽ kiểm tra địa chỉ IP của mình có trùng với
địa chỉ IP trên gói gửi không. Nút duy nhất phù hợp sẽ gửi lại gói ARP trả lời. Sau đó
nút gửi sẽ cập nhật lại bảng rồi gửi đi gói IP. (Việc này giống giảng viên như việc hỏi
xem sinh viên Bùi Thị X có trong lớp không và mọi người đều lắng nghe nhưng chỉ
có Bùi Thị X trả lời).
- ARP hoạt động tự động, tự xây bảng, tự xóa nên rất là tiện.
● Gửi gói dữ liệu ra ngoài mạng LAN:
Xét ví dụ như hình bên.
Cần phân biệt nút thành
máy tính và router. Máy
tính có 1 địa chỉ IP và 1
địa chỉ vật lý. Nhưng
router cũng có module
ARP và cũng có thể có
nhiều adapter, địa chỉ vật
lý ứng với mỗi cổng. Ví dụ
như hình bên router có 2
adapter với 2 địa chỉ vật
lý.
Giả sử IP full 1 muốn gửi gói dữ liệu đến IP full 2. Nếu hỏi hết trong mạng thì hiển nhiên
không máy nào trong LAN 1 có địa chỉ IP là full 2 rồi. Vậy làm thế nào để gửi gói dữ liệu ra
nút khác trên LAN 2. Đầu tiên, theo bảng định tuyến, gói dữ liệu phải gửi đến router(chính
xác là adapter của router) địa chỉ IP 111.111.111.110. Để xác định địa chỉ vật lý của router
lại dùng ARP. Sau khi gói được chuyển tới router, theo bảng định tuyến, router cần chuyển
sang giao diện 222.222.222.220. Sau đó giao diện này sẽ gửi tới adapter của nó (1A-23-F9-
CD-06-9B). Sau đó router lại dùng ARP tra địa chỉ vật lý rồi gửi tiếp.
5.5 Ethernet:
Ngày nay, Ethernet là công nghệ vượt xa các công nghệ mạng LAN khác. Ethernet vừa tốc
độ cao, phổ biến và rẻ.
5.5.3 Ethernet:
Phần này sẽ giới thiệu về các Ethernet phổ biến.
Nói qua về bộ tiếp sức(repeater) được sử dụng phổ biến trong mạng LAN. Repeater là thiết
bị tầng vật lý xử lý trên từng bit riêng lẻ. Khi tín hiệu đến 1 cổng, repeater chỉ có 2 nhiệm vụ
duy nhất là tái tạo tín hiệu này bằng cách tăng cường độ năng lượng và gửi đi tất cả các
cổng còn lại nối với nó.
● 10Base2:
Truyền tốc độ 10Mbps, khoảng cách tối
đa giữa 2 trạm mà không có repeater là
200m, topo bus, các adapter được kết
nối trực tiếp vào môi trường dùng chung
- cáp đồng trục gầy. Khi một adapter
muốn gửi, tín hiệu sẽ truyền qua đầu nối
chữ T(tee connector) rồi lan tỏa ra 2
hướng đến các adapter và kết thúc khi bị terminator hấp thụ (xem hình minh họa). Người ta
dùng các repeater để nối các đoạn bus liên tiếp. Có tối đa 4 repeater được dùng nên 5 đoạn
bus được nối. Không dùng repeater bus dài max là 185m.
● 10BaseT và 100BaseT:
- Là 2 topo tương tự nhau(đều topo hình sao).
Điểm khác nhau là tốc độ truyền 10BaseT là
10Mbps và 100BaseT là 100Mbps. Trong topo
dạng sao, thiết bị trung tâm(gọi là Hub) kết nối trực
tiếp các adapter qua hai cặp dây đồng xoắn(1 dây
gửi,1 dây nhận).
- Khoảng cách tối đa giữa adapter và hub là 100m
nên khoảng cách tối đa giữa 2 adapter là 200m.
Khoảng cách này có thể tăng được nếu thêm hub,
switch, bridge.
- Về bản chất, hub là repeater. Nhưng hub được
dùng phổ biến do khả năng quản trị mạng. Nếu có
adapter sập thì hub sẽ tự động ngưng kết nối với
adapter đấy(như mạng 10Base2 là sập luôn). Hub cũng liên tục thu thập báo cáo
thông tin đến máy tính.
- 100BaseT không sử dụng mã hóa manchester như 10baseT hay 10base2 mà sử
dụng 4B5B.
● Gigabit Ethernet(GE):
- Tốc độ truyền 1000Mbps, hoàn toàn tương thích hoàn toàn với các thiết bị Ethernet
kiểu cũ nên dễ dàng nâng cấp.
- Ngoài kênh truyền quảng bá dùng chung dùng hub, GE cho phép cả đường truyền
điểm nối điểm(dùng switch).
- Sử dụng CSMA/CD cho kênh truyền quảng bá. Và để đạt hiệu suất mong muốn thì
khoảng cách lớn nhất giữa các nút bị hạn chế.
- Kênh truyền điểm nối điểm có đặc tính song công, truyền với tốc độ 1Gbps.
- Có topo dạng sao với hub hay switch ở trung tâm, thường được sử dụng trên các
trục chính, kết nối nhiều mạng cục bộ Ethernet 10/100BaseT. Có thể sử dụng cả sợi
quang hay dây dây đồng xoắn.
5.6.1 Hub:
- Cách đơn giản nhất để kết nối LAN là hub. Hub là thiết bị đơn giản thao tác trên bit,
bản chất là repeater. Khi bit đi qua vào 1 cổng, hub sẽ truyền bit này qua tất cả các
cổng còn lại. Vì thế Hub là thiết bị tầng vật lý.
- GIả sử bridge nhận được frame với địa chỉ đích DD-DD-DD-DD-DD-DD đến từ cổng
x. Bridge tìm trong bảng thấy với địa chỉ đích trên, thì sẽ đi ra cổng y.
+ Nếu x = y, tức là gói dữ liệu gửi đến 1 nơi thuộc LAN segment đấy, tức là hub
đã tự quảng bá tới nút cần rồi và hub quảng bá lên cho bridge 1 bản. Lúc này
bridge chỉ cần loại bỏ frame này.
+ Nếu x khác y, bridge sẽ thực hiện việc gửi qua cổng y.
- Những quy tắc có thể cô lập các miền xung đột khiến các segment khác nhau truyền
độc thời mà không bị xung đột.
- Khi có gói dữ liệu cần truyền, hub chuyển thẳng dữ liệu mà không quan tâm tới sự
xung đột có thể xảy ra. Trái lại bridge có thể lưu lại gói dữ liệu và dùng CSMA/CD
với thuật toán exponential backoff khi có xung đột.
● Tự học (Self - learning):
- Đặc tính tuyệt vời của bridge là khả năng tự học. Bảng bridge xây dựng tự động:
+ Bảng bridge khởi tạo rỗng.
+ Khi nhận được 1 frame từ 1 cổng x. Bridge sẽ lưu 1 hàng mới gồm địa chỉ
nguồn, cổng x, thời gian hiện tại. Lần sau có ai đến địa chỉ này thì bridge sẽ
biết chuyển đến cổng x.
+ Khi nhận được frame từ cổng x, nếu địa chỉ đích không có trong bảng, bridge
sẽ chuyển frame đến bộ đệm tất cả các cổng còn lại(tại mỗi cổng, frame lan
truyền nhờ CSMA/CD). Nếu địa chỉ đích có trong bảng, thì bridge chỉ cần
chuyển đến đúng cổng.
+ Bridge sẽ xóa địa chỉ trong bảng nếu adapter có địa chỉ đó không tiếp tục gửi
trong khoảng thời gian xác định, thường là 60p.
- Bridge là kiểm thiết bị cắm vào là chạy(plug and play). Người quản trị mạng chỉ cần
cắm connector và các cổng bridge, không cần thiết lập cấu hình.
● Spanning tree.
- Nếu kết nối theo kiểu
phân cấp mà hub
hoặc bridge ở gần
đỉnh bị hỏng thì một
phần lớn mạng LAN
sẽ không kết nối
được. Chính vì vậy
nên người ta xây
mạng LAN có nhiều
đường nối giữa các
LAN segment.
- Nhiều đường dư thừa
sẽ giảm khả năng sụp đổ của hệ thống. Nhưng cũng phát sinh vấn đề làm frame sẽ
dư thừa rất nhiều vì nhân bản liên tục theo hàm số mũ.
- Giải quyết việc này thì bridge sẽ sử dụng giao thức spanning tree. Với giao thức này,
bridge truyền thông với các bridge khác trên LAN để xác định spanning tree, là tập
con của topo ban đầu mà không có vòng lặp. Sau khi xác định thì bridge chỉ kết nối
với các cổng phù hợp. (Trong ví dụ trên thì ta loại bỏ kết nối đến các bridge dưới).
● Phân biệt Bridge và router.
Xét thiết kế
như hình
trên. Thiết
kế như này
có giá rẻ
hơn (vì
bridge 2 cổng rất phổ biến và rẻ) nhưng không được ưa chuộng. Nếu hub Computer
Science(CS) hỏng thì 2 khoa còn lại không thể trao đổi với nhau. Thứ 2 là truyền thông 2
khoa còn lại cũng đi qua CS, dễ gây xung đột trong CS. Một nguyên tắc quan trọng trong
định hướng kết nối là sử dụng trục chính.
5.6.3 Switch
- Ngoài hub (repeater), bridge, router thì gần đây có switch nổi lên. Switch bản chất là
bridge nhưng có nhiều cổng với hiệu suất cao hơn. Switch cũng chuyển và lọc frame
căn cứ vào địa chỉ vật lý, xây dựng bảng lọc. Điểm khác biệt là bridge chỉ 2 - 4 cổng
trong khi switch có nhiều cổng hơn, và các cổng có
thể có tốc độ khác nhau(10, 100, 1000 Mbps). Càng
nhiều cổng, và tốc độ càng cao thì switch càng đắt.
VD 1 switch có 4 cổng 100Mbps, 20 cổng 10Mbps.
- Nhiều switch vận hành song công hoàn toàn, cho
phép gửi và nhận cùng lúc trên 1 cổng(tức là máy A
có thể gửi file đến B trong khi B cũng gửi đến A).
- Ưu điểm switch là dễ dàng kết nối trực tiếp giữa các
máy tính với switch. Khi kết nối trực tiếp thì có thể
truyền và nhận với tối độ tối đa của adapter, đặc biệt
khi luôn cảm thấy kênh truyền
rỗi. VD: hình bên cho phép
đồng thời A gửi A’, B gửi cho
B’, C gửi cho C với tốc độ tối
đa. Nếu mỗi máy dùng
adapter card 10Mbps thì toàn
bộ băng thông là 30 Mbps.
Hình bên mô tả cách kết nối 1 trường đại học với nhiều khoa và 1 số server quan trọng qua
hub, switch, router.
Mỗi khoa là 1 LAN segment sử dụng hub 10Mbps. Server và mail đều có đường truyền
riêng 100Mbps đến switch. Router với đường truyền riêng 100Mbps đến switch.
● WLAN có cơ sở hạ tầng
Hai trạm chỉ có thể trao đổi dữ liệu với nhau qua AP.
Thông thường AP đính vào tường và có kết nối với
mạng LAN cố định (cái cục trắng mà có 2 cái tai
dài). Bên cạnh chuyển các gói tin giữa các trạm và
trạm với LAN có dây, AP có thể điều phối điểm, cho
phép truyền thông giữa các nút dựa trên cấp phát
tài nguyên.
Tầng MAC(thuộc tầng LKDL, xem hình đầu 5.7.1)
trong họ giao thức IEEE có cơ chế truy cập tương
tự Ethernet. Ethernet sử dụng CSMA/CD. Tuy nhiên
với mạng không dây việc phát hiện xung đột không
hiệu quả do suy hao năng lượng của tín hiệu. Nên
đa phần sẽ dùng cơ chế tránh xung đột(CA -
collision avoidance). Ý tưởng đảm bảo giữa 2 lần
truyền gói tin có khoảng thời gian tối thiểu.
5.8 PPP - Giao thức điểm nối điểm (KHÔNG CÒN TRONG
CHƯƠNG TRÌNH HIỆN HÀNH)
Index of /~michael/kr1999