Tóm Tắt Giáo Trình Mạng Máy Tính - HĐP

You might also like

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 63

Chương 1: Giới thiệu

1.1 Mạng truyền thông và công nghệ mạng:


1.1.1: Giới thiệu chung:
- Truyền thông máy tính(Truyền dữ liệu) là quá trình truyền dữ liệu từ thiết bị
này sang thiết bị khác.
- Mạng: kết nối các thiết bị lại với nhau nhằm chia sẻ thông tin
- Một số thuật ngữ liên quan đến mạng:
+ Giao thức truyền thông(protocol)
+ Topo(mô hình ghép nối mạng)
+ địa chỉ
+ định tuyến(routing)
+ tính tin cậy: dữ liệu đc đảm bảo tính nguyên vẹn từ gửi đến nhận
+ khả năng liên tác: mức độ làm việc cùng nhau của các thiết bị khác
hãng.
+ chuẩn: quy tắc luật lệ cần tuân theo
+ an ninh:
- Internet: mạng của mạng.
1.1.2: Mạng máy tính:
- Gồm nhiều thiết bị đầu/cuối khác nhau kết nối thông qua môi trường truyền
tuân thủ theo protocol. Thiết bị đầu/cuối là máy tính, máy in, điện thoại,... Môi
trường truyền k dây hoặc có dây.
1.1.3: Phân loại mạng:
- Phân loại theo diện hoạt động:
+ Mạng cục bộ(Local Area N - LAN): liên kết trong vùng địa lý kích
thước hạn chế: phòng, tòa nhà..
+ Mạng diện rộng(World Area N- WAN): liên kết tài nguyên máy tính
trong vùng địa lý rộng như xã, thành phố, tỉnh, quốc gia…
+ Mạng đô thị(Metropolitan Area N- MAN): kết hợp nhiều mạng LAN,
thường rộng hơn LAN như nhỏ hơn WAN.
+ Mạng cá nhân(Personal Area N - PAN): kết nối các máy tính trong
cùng 1 gia đình
+ Mạng toàn cầu(Global AN - GAN): trải rộng toàn cầu. Internet là mạng
GAN đặc biệt:
- Phân loại theo topo:
+ point to point(điểm tới điểm)
+ broadcast(điểm tới nhiều điểm)
+ multidrop(đa chặng)
1.1.4: Địa chỉ, định tuyến, tin cậy, liên lạc, an ninh mạng:
- Địa chỉ: mỗi nút mạng 1 địa chỉ duy nhất
- Routing(định tuyến): xác định tuyến đường mà dữ liệu sẽ đi. Tuyến đường tốt
lựa chọn qua 1 vài tiêu chuẩn: khoảng cách, số chặng, băng thông.
- Tính tin cậy: mạng máy tính kp k có lỗi. Khi có lỗi có 2 cách: Yêu cầu gửi lại
hoặc tự sửa lỗi.
- Tính liên tác: Hầu hết các hãng sx đều muốn sp của mình tương thích với sp
của hãng khác
- An ninh: bảo vệ mọi thứ trong mạng: dữ liệu, phương tiện truyền thông, thiết
bị.
1.1.5 Chuẩn mạng:
- Chuẩn mạng định nghĩa các giao thức phần cứng, giao thức truyền thông,
kiến trúc mạng. Chuẩn mạng thiết kế các quy tắc mà các bên tham gia phải
tuân thủ
- Các chuẩn mạng:
+ Chuẩn chính thức: do các tổ chức chuyên chuẩn hóa xây dựng.
+ Chuẩn thực tế: Tồn tại trong thực tế, không do ai xây dựng.
+ Chuẩn hãng: hãng bán hàng xây dựng trong sp của họ.
+ Chuẩn hiệp hội:

1.2 Mô hình OSI:

- 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.

1.2.2 Chức năng các tầng:


● Tầng vật lý(physical layer):
- Thực hiện các chức năng cần thiết để truyền luồng bit dữ liệu qua môi
trường vật lý, giải quyết các vấn đề kỹ thuật cơ điện, card ghép nối(interface),
môi trường truyền dẫn…
- Trong chuyển thư, tầng vật lý liên quan công nghệ chuyển thư(máy bay, xe
đạp, ô tô…). Tầng liên kết dữ liệu chuyển thư cho tầng vật lý với hy vọng thư
sẽ được chuyển sang bên kia kênh truyền.
- Tầng vật lý liên quan đến:
+ Đặc điểm vật lý của môi trường
+ Biểu diễn bit: dữ liệu tầng vật lý là luồng bit liên tục. Để truyền phải
mã hóa thành điện hoặc quang. Tầng vật lý quyết định cách thứ mã
hóa
+ Tốc độ truyền dữ liệu:
+ Đồng bộ hóa các bit: máy gửi và nhận cần đồng bộ.
+ Cấu hình được truyền:
+ Topo vật lý:
+ Chế độ truyền dẫn: đơn công(1 máy gửi 1 máy nhận), bán song
công(2 máy đều nhận gửi nhưng không gửi cùng lúc), song công(như
nào cũng được).
● Tầng liên kết dữ liệu(data link layer):
- Nhiệm vụ tầng liên kết dữ liệu là truyền thông trực tiếp 2 nút nối nhau. Nó
biến tầng vật lý không tin cậy thành tin cậy.
- Ví dụ trong chuyển thư thì là lúc phân loại thứ trước khi chuyển. Giả sử phân
thành 2 nhóm: nhóm thư có địa chỉ do bưu cục quản lý và nhóm thư có địa
chỉ bên ngoài.
- Tầng liên kết dữ liệu chịu trách nhiệm:
+ Framing - đóng gói dữ liệu: chia luồng bit nhận được từ tầng mạng
thành các gói gọi là frame.
+ Định địa chỉ vật lý: Nếu gửi trong mạng thì sẽ thêm vào tiêu đề frame
địa chỉ vật lý nơi nhận và nơi gửi. Nếu chuyển ra ngoài thì địa chỉ
nhận sẽ là địa chỉ của thiết bị trung gian kết nối mạng ra bên ngoài.
+ Kiểm soát lưu lượng:
+ Kiểm soát lỗi: thường do trailer được thêm vào cuối frame
+ Kiểm soát truy cập:
● Tầng mạng (network layer):
- Tầng liên kết dữ liệu chịu trách nhiệm gửi trong nội bộ mạng thì tầng mạng
chịu trách nhiệm gửi từ nơi gửi đến đúng nơi nhận. Gói dữ liệu có thể phải đi
qua nhiều mạng(chặng trung gian).
- Nếu hai thiết bị nằm trên cùng 1 môi trường truyền thì không cần tầng mạng.
- Tầng mạng có nhiệm vụ:
+ Định địa chỉ logic: Địa chỉ khác địa chỉ vật lý ở tầng liên kết dữ liệu.
Khi qua tầng mạng thì sẽ được thêm tiêu đề có chứa địa chỉ logic.
+ Định tuyến: nếu ở mạng của mạng, router sẽ phải xác định tuyến
đường.
● Tầng giao vận: (Transport layer)
- Chịu trách nhiệm chuyển toàn bộ thông điệp từ nơi gửi tới nơi nhận. Tầng
mạng chuyển và xử lý từng gói dữ liệu từ nơi gửi tới nhận mà k quan tâm tới
quan hệ giữa các gói dữ liệu có cùng 1 thông điệp hay không. Nói cách khác
tầng giao
vận đảm bảo
tính toàn
vẹn.

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.

- Tầng giao vận chịu trách nhiệm:


+ Địa chỉ cổng(port number): máy tính có thể chạy nhiều chương trình.
Nên truyền dữ liệu kp từ máy máy mà còn từ tiến trình sang tiến trình.
Địa chỉ đc thêm vào tiêu đề.
+ Phân mảnh và tái hợp: Mỗi thông điệp chia thành các đoạn nhỏ,
truyền độc lập
+ Kiểm soát kết nối:
+ Kiểm soát lưu lượng: Giống tầng liên kết dữ liệu, cũng kiểm soát lưu
lượng. Nhưng kiểm soát ở thiết bị đầu cuối chứ ko phải đường truyền
vật lý.
+ Kiểm soát lỗi: cũng thực hiện ở thiết bị đầu cuối k như tầng lkdl. Việc
khắc phục lỗi thường bằng cách yêu cầu truyền lại.

Ví dụ: dữ liệu đến từ nơi gửi cổng j và


nơi nhận cổng k. Dữ liệu lớn nên chia
thành 2 phần vẫn cổng gửi j và cổng
nhận k. Các gói có thể đi theo các tuyến
đường khác nhau, đến theo không đúng
thứ tự, khi chuyển đến tầng giao vận sẽ
được ghép lại.

● Tầng phiên: (section layer)


- Dịch vụ 3 tầng đầu chưa đủ để 2 tiến trình truyền thông với nhau. Tầng phiên
là “kiểm soát viên” với nhiệm vụ thiết lập, duy trì, đồng bộ hóa tính liên tác
giữa 2 bên.
- Tầng phiên chịu trách nhiệm:
+ Kiểm soát hội thoại: tầng phiên cho phép 2 thực thể(tiến trình) tham
gia 1 hội thoại theo chế độ bán song công hoặc song công.
+ Đồng bộ hóa: Cho phép thêm các điểm đồng bộ vào. Ví dụ file 2000
trang thì cứ 100 trang chèn 1 điểm đồng bộ vào đảm bảo 100 trang sẽ
được độc lập. Nếu lỗi 523 thì gửi lại từ 501 chứ không phải 1.
- Một ví dụ. Trong công ty có 2 thư ký, một người chuyên nhận, người chuyên
gửi. 2 thư kí này đóng vai trò tầng giao vận. Thư kí trưởng phụ trách 2 thư kí
này đóng vai trò tầng phiên.
● Tầng trình diễn:
- Tầng trình diễn biểu diễn cú pháp và ngữ nghĩa các thông tin được trao đổi
giữa 2 hệ thống.
- Tầng trình diễn nhiệm vụ:
+ Phiên dịch: Thông tin được mã hóa ở mỗi thiết bị là khác nhau, Tầng
trình diễn chịu trách nhiệm chuyển đổi giữa các cách mã hóa. Tầng
trình diễn máy A sẽ chuyển thông tin mình thành khuôn dạng chung,
tầng trình diễn máy B sẽ chuyển thông tin khuôn dạng chung thành
khuôn dạng máy B.
+ Mã hóa: để đảm bảo sự bảo mật của thông tin.
+ Nén: giảm số lượng bit khi truyền.
● Tầng ứng dụng:
- Tầng ứng dụng cho phép người dùng truy cập mạng bằng cách cung cấp
giao diện, hỗ trợ thư điện tử, truy cập file từ xa, quản lý cơ sở dữ liệu…
- Tầng ứng dụng cung cấp các dịch vụ:
+ Thiết bị đầu/cuối ảo: cho phép người dùng đăng nhập vào 1 máy từ
xa.
+ Quản lý, truy cập(đọc viết dữ liệu), lấy file, quản lý kiểm soát file từ
máy khác.
+ Các dịch vụ khác: thư điện tử, ứng dụng Web...

1.2.2 Bộ giao thức TCP/IP - Mô hình Internet:


Bộ giao thức TCP/IP(đc sử dụng trên internet)
có 5 tầng: vật lý, liên kết dữ liệu, mạng, giao
vận, ứng dụng. 4 tầng đầu tương ứng chức
năng với OSI. 3 tầng sau được nhập thành 1
tầng ứng dụng.
TCP/IP là giao thức phân cấp có các module
độc lập với nhau. Thuật ngữ “phân cấp” là các
tầng trên được hỗ trợ bởi một hoặc nhiều tầng
dưới.
Tại tầng giao vận có giao thức TCP và UDP.
Tại tầng mạng có IP.

Chương 2:
Tầng ứng dụng

2.1 Giao thức tầng


ứng dụng:

2.1.1 Giao thức tầng ứng dụng:


- Giao thức tầng ứng dụng định nghĩa cách thức truyền thông điệp giữa các tiến trình
ứng dụng chạy trên thiết bị khác nhau, xác định:
+ Kiểu thông điệp trao đổi, (yêu cầu hay trả lời).
+ Cú pháp của thông điệp.
+ Ý nghĩa các trường
+ Quy tắc khi nào nhận và gửi thông điệp
● Mô hình client/server:
- Trong nhiều ứng dụng thì 1 máy tính sẽ chạy cả client cả server. Ví dụ điều khiển từ
xa. Máy A bật điều khiển máy B thì lúc đó A là khách hàng của B. Ngược lại máy B
điều khiển A
● Truyền thông giữa các tiến trình: Ứng dụng bao gồm 2 tiến trình khác nhau liên lạc
qua mạng. Hai tiến trình liên lạc qua gửi và nhận thông điệp qua socket(được xem
như cửa của tiến trình). Giả sử tiến trình A gửi thông điệp cho B, A sẽ đẩy thông
điệp qua socket của A, rồi giả định rằng thực thể tầng giao vận nằm bên kia socket
sẽ chuyển thông điệp đến socket B.

Qua hình ta cũng thấy socket là


interface của tầng ứng dụng và
tầng giao vận, cụ thể là API.
Người thiết kế ứng dụng kiểm
soát toàn bộ ứng dụng như chỉ
kiểm soát rất ít giao vận(chỉ được
chọn giao thức giao vận nào và 1
vài tham số.
● Địa chỉ tiến trình:
- Bao gồm 2 phần: địa chỉ máy tính, địa chỉ tiến trình.
- Địa chỉ máy tính là địa chỉ IP có 32 bit, là duy nhất với mỗi máy.
- Địa chỉ tiến trình gọi là cổng(port). Các giao thức phổ biến đều được gán cổng
(HTTP : 80, SMTP(server mail) :25). Khi xây ứng dụng mạng thì phải đăng kí cổng
mới.

2.1.2 Các yêu cầu của ứng dụng:


Chúng ta có thể phân loại những yêu cầu theo 3 nhóm:

● Mất mát dữ liệu (dataloss): Một


số ứng dụng đòi hỏi tín vẹn
toàn dữ liệu(mail, truyền file,...),
một số chấp nhận mất mát(real-
time audio/video).
● Băng thông: Để hoạt động hiệu
quả, một số ứng dụng cần tốc
độ nhất định. Ví dụ gọi điện
thoại qua Internet mã hóa âm
thanh 32kbps. Nếu không đủ
băng thông thì phải mã hóa
theo tốc độ khác hay kết thúc.
● Thời gian: Ứng dụng gọi điện,
video, game online yêu cầu
chặt chẽ thời gian. Ví dụ đòi hỏi
độ trễ(delay) không quá vài
trăm phần nghìn giây. Delay lớn
ảnh hưởng nhiều chất lượng
cũng như độ chân thực.
2.1.3 Dịch vụ của các giao thức giao vận Internet:
Khi xây dựng ứng dụng thì đầu tiên quan tâm dùng TCP hay UDP.
● Dịch vụ TCP
- Đặc trưng là hướng kết nối và cung cấp truyền dữ liệu tin cậy.
- Dịch vụ hướng nối(connection oriented): TCP client và TCP server sẽ trao đổi thông
tin trước khi truyền dữ liệu. Sau quá trình này sẽ xuất hiện đường kết nối TCP giữa 2
socket(kết nối song công). Khi ứng dụng kết thúc gửi, đóng kết nối lại.
- Dịch vụ giao vận tin cậy: TCP truyền dữ liệu chính xác và đúng thứ tự.
- TCP cũng có cơ chế kiểm soát tắc nghẽn, đáp ứng cho cả Internet bằng cách giảm
tốc độ gửi. Giới hạn tốc độ gửi thì sẽ không thỏa mãn real-time -> TCP không đảm
bảo tốc độ tối thiểu + độ trễ
● Dịch vụ UDP
Giao thức khá đơn giản, với mô
hình phục vụ tối thiểu
Nhược điểm:
- không có hướng nối
(bắt tay trước)
- không cung cấp dịch vụ
truyền tin cậy (k đảm bảo
thông điệp sẽ đến cổng
tiến trình nhận),
- các thông điệp đến đích
cũng có thể không đúng
thứ tự.
- Giống TCP, k đảm bảo
về độ trễ.

- Ư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 World Wide Web: HTTP

2.2.1 Tổng quan HTTP


● HyperText Transfer Protocol(HTTP) là giao thức tầng ứng dụng của Web, được triển
khai trên cả client và server. Client và server trao đổi với nhau thông qua thông điệp
HTTP. HTTP quy định cấu trúc thông điệp cũng như cách thức trao đổi.
● Trang web(webpage hay tập tin) chứa các đối tượng(có thể là file HTML, file ảnh,...).
Mỗi đối tượng truy cập qua địa chỉ URL.
- VD: 1 trang web chứa 1 file HTML và 5 file ảnh. Tức là có 6 đối tượng. File
HTML là cơ sở để tham chiếu đến 5 đối tượng còn lại.
- Mỗi URL có 2 thành phần là tên máy chủ và đối tượng trên máy chủ. VD:
“www.facebook.com/loanbuihsgs.gif” thì www.facebook.com là tên máy chủ,
loanbuihsgs.gif là tên đối tượng.
● Trình duyệt(Browser) là chương trình giao tiếp
người dùng để hiện thị trang web, xuất hiện bên
phía client của giao thức HTTP. Web server là
phần mềm bên phía server lưu giữ các đối tượng
web và được xác định qua URL.
● Khi người dùng yêu cầu một đối tượng(ví dụ kích
chuột vào 1 liên kết), browser sẽ gửi thông điệp
HTTP yêu cầu đối tượng đó đến server. Server
nhận được thông điệp và gửi lại thông điệp trả đối
tượng yêu cầu.
● Có 2 phiên bản HTTP 1.0 và 1.1 đều dùng giao
thức TCP. HTTP client khởi tạo kết nối TCP tới
HTTP server. Sau đó cả browser và web server
đều truy cập TCP thông qua socket. Sau khi gửi
qua socket, client không cần quan tâm kiểm soát
mất mát hay toàn vẹn dữ liệu, TCP sẽ lo điều đó.
Đó là lợi ích của kiến trúc phân tầng. Khi mới khởi
tạo TCP, chế độ này sẽ đòi hỏi tốc độ truyền chậm,
nhưng sẽ nhanh về sau.
● server không ghi lại trạng thái của client. Vì vậy
client đòi gửi lặp lại nhiều lần 1 ảnh, server vẫn làm -> HTTP được gọi là giao thức
không trạng thái.

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.

- Một số mã trạng thái thông dụng:


+ 200 OK: yêu cầu đáp ứng và dữ liệu nằm trong yêu cầu.
+ 301 Moved permanently: Đối tượng chuyển về URL mới được đặt trong
trường Location của thông điệp trả lời. Phần mềm lấy đối tượng tại địa chỉ
URL mới.
+ 400 Bad Request: Server không hiểu yêu cầu từ client.
+ 404 Not found: Đối tượng không còn lưu trữ trên server.
+ 505 HTTP version not support: Server không hỗ trợ giao thức này.

2.2.4 Tương tác giữa người dùng và HTTP server


HTTP không lưu trữ trạng thái người dùng vì đơn giản hóa kiến trúc và làm tăng hiệu suất.
Tuy nhiên server muốn phân biệt người dùng để 2 chế sự truy cập, phục vụ người dùng thì
có 2 cách: Authentication và cookies
● Authentication: (kiểm chứng)
- Nhiều server yêu cầu username và password để kiểm chứng. HTTP có mã trạng thái
và trường để kiểm tra nhưng rất lỏng lẻo.
- Quá trình: Client gửi thông điệp yêu cầu như bình thường. Server sẽ trả lại với phần
thân rỗng, mã 401 Authentication required tại trường www-Authenticate. Người
dùng trả lời username, password của mình rồi server sẽ trả đối tượng yêu cầu.
- Mỗi lần yêu cầu đối tượng sẽ bắt nhập username và password (Thường cho đến khi
đóng trình duyệt lại, lần sau mở thì bộ nhớ cache đã lưu lại).
● Cookie
- Ví dụ lần đầu truy cập vào server nào đó, server sẽ trả lời với trường Set-cookies
tiêu đề với chỗ kí tự tự do (ví dụ Set-cookies: 1678453) và trình duyệt sẽ thêm 1
dòng vào cuối file cookie (là 1 file đặc biệt nằm trong máy client, thường sẽ ghi tên
server và chuỗi cookie).
- Sau một thời gian client truy cập lại, server sẽ tự biết mà không cần người dùng
nhập bất cứ gì.
- Web server sử dụng cookies cho nhiều mục đích: không mất thời gian đăng nhập,
lấy thông tin quảng cáo…

2.2.4 GET có điều kiện:


- Web cache giúp làm giảm thời gian chờ nhận đối tượng nhưng có những webpage
thay đổi liên tục thì dữ liệu ở cache sẽ bị “cũ”. Nhưng mặt khác, nếu đối tượng không
thay đổi, việc dùng dữ liệu được lưu trong cache sẽ
tiết kiệm đáng kể thời gian. HTTP có cơ chế GET
có điều kiện khi có thêm trường if-modified-since
- Quá trình: Giả sử tuần trước HTTP client yêu cầu 1
đối tượng bài báo. Sau 1 tuần bạn muốn đọc lại và
giả sử đối tượng đó không thay đổi gì. HTTP client
yêu cầu đối tượng đó. (giá trị trong trường if-
modified-since chính là giá trị trong trường Last-
modified 1 tuần trước) (hình bên)
- Thông điệp trả lời sẽ không kèm theo đối tượng (đỡ
mất thời gian, đặc biệt nếu đối tượng kích thước lớn).

2.3 Thư tín điện tử (email)


trên Internet.
- Hình bên minh họa hệ thống mail gồm
3 phần chính: user-agent, mail server,
SMTP(Simple Mail Transfer Protocol).
- Xét A gửi thư cho B. Khi A soạn xong
thư và đánh địa chỉ email B, user-agent
của A sẽ gửi thư đến mail-server của A.
Tại đây thư đặt ở hàng đợi để SMTP
chuyển sang mail server của B. Khi B
muốn đọc thư, user-agent của B yêu cầu
thư từ mail-server của B.
(userA -> serverA -> serverB -> userB)
- Nếu server B lỗi, server A sẽ gửi lại 30p/ 1 lần trong 5 ngày, nếu vẫn không được sẽ hủy
thư và báo lại cho A.
SMTP là giao thức gửi thư điện tử tầng ứng dụng, sử dụng dịch vụ TCP. SMTP đóng vai trò
client khi nhận và server khi gửi.

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.

2.3.2 So sánh HTTP với SMTP


- Đều sử dụng chuyển file. HTTP chuyển file Web
client -> Web server. SMTP chuyển file mail-server ->
mail-server.
- Cùng sử dụng kết nối liên tục. HTTP là giao thức kiểu “kéo”, kéo thông tin từ server
về. SMTP kiểu đẩy.
- Dữ liệu ngoài văn bản có hình ảnh, âm thanh. HTTP đặt
riêng rẽ để gửi, SMTP thì không.

2.3.3 Giao thức truy cập mail

- 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

2.4 Dịch vụ tên miền DNS:


Con người xác định web qua tên máy tính(ví dụ facebook.com). Nhưng server truy cập qua
địa chỉ IP vì địa chỉ IP sẽ đầy đủ thông tin. Địa chỉ IP cũng phân cấp theo vùng(vị trí trong
mạng của mạng, vị trí trong mạng…), luôn có 4 byte.
2.4.1 Các dịch vụ DNS
- Vậy khi con người dùng tên máy tính, phải có dịch vụ ánh xạ sang địa chỉ IP chính là
hế thông tên miền trên Internet (DNS). DNS là giao thức thuộc tầng ứng dụng giúp
máy tính và máy chủ trao đổi thông tin phục vụ mục đích xác định địa chỉ IP.
- HTTP, SMTP, FTP đều dùng DNS để xác đỉnh địa chỉ IP.
- Quá trình cơ bản: giả sử truy cập www.uet.com/index.html . DNS client gửi truy vấn
tới DNS server chứa tên máy tính (www.uet.com). Sau đó DNS client sẽ nhận được
thông điệp trả lời
- Sử dụng DNS làm ứng dụng chậm đi. Tuy nhiên thường địa chỉ IP sẽ được ghi lại ở
cache trong 1 name server DNS ở gần
- Bên cạnh xác định địa chỉ IP, DNS cũng cung cấp 1 số dịch vụ quang trọng:
+ Đặt bí danh cho mail server: tên email cần phải dễ nhớ. ví dụ tên máy tính là
relay1.west-coast.hotmail.com thì tên chỉ hotmail.com sẽ dễ nhớ hơn. Lúc đó
chỉ cần truy cập bob@hotmail.com.
+ Đặt bí danh trên máy tính: tương tự cho mail. Web server và mail server của
1 công ty có thể cùng bí danh.
+ Phân tán tải: Nhiều Web được truy cập nhiều sẽ có nhiều Web server giống
hệt nhau. DNS sẽ sắp xếp gửi lại địa chỉ IP tốt nhất cho phân tán tải.

2.4.2 Cơ chế hoạt động của DNS


- Với DNS thì dịch vụ xác định địa chỉ IP là cực kì đơn giản và dễ hiểu(chỉ truy vấn rồi
ánh xạ nhưng cách triển khai rất phức tạp).
- Nếu chỉ có 1 server chứa tất cả và trả lời trực tiếp tất cả các truy vấn của client thì:
+ Điểm hỏng duy nhất: server sập thì toàn bộ Internet sập
+ Khối lượng công việc lớn: số lượng người truy cập Internet quá lớn
+ CSDL tập trung xa: Nếu CSDL đặt ở Mỹ và ở VN muốn truy cập thì đi mất
nửa vòng Trái Đất, chịu độ trễ cực lớn.
+ Bảo trì: server DNS phải bảo trì liên tục để update và kiểm chứng name
server được thêm vào.
- Cơ sở dữ liệu tập trung như trên là không khả thi.
DNS tổ chức name server tổ chức phân cấp
thành 3 loại: local, root, authoritative.
● Local name server(LNS):
- Mỗi ISP đều có name server mặc định. Local
name server thường gần với client, chỉ vài rooter
để đi đến. Khi client gửi truy vấn thì LNS sẽ nhận
được đầu tiên. Nếu máy tính yêu cầu địa chỉ IP
của 1 máy tính khác trong ISP thì LNS sẽ trả lại
ngay.
● Root name server(RNS):
- Khi Local NS không thể trả lời máy tính(vì không có
thông tin), truy vấn sẽ được chuyển lên Root NS. Nếu
Root NS có thông tin, nó sẽ chuyển thông điệp về Local
NS, Local NS sẽ trả lời máy tính. Nếu Root NS không có
thì thông tin, Root NS biết được địa chỉ IP của NS quản
lý máy tính đó (Authoritative name server).
● Authoritative name server(ANS):
- Mỗi máy tính đăng ký ít nhất 1 ANS (thông thường là name server của ISP). Khi
ANS nhận được truy vấn từ Root NS, nó sẽ gửi 1 thông điệp DNS trả lời. Sau đó
RNS sẽ chuyển về LNS rồi về máy tính.
- Giả thiết RNS biết mọi địa chỉ IP của ANS của mọi máy tính là không đúng. Root
NS chỉ biết được địa chỉ IP của name server trung gian mà biết được địa chỉ của
ANS của máy đó. (Quá trình như hình bên, có 8 thông điệp DNS được chuyển).
- Trong các tất cả các truy vấn trên đều là đệ quy, nhưng DNS còn có truy vấn tương tác.
Thay vì A đệ quy đến B, B không có thứ A cần và B truy vấn đến C thì B sẽ gửi địa chỉ của
C, A sẽ tự “liên lạc” với C (hình dưới). Thông thường truy vấn tới root NS là truy vấn tương
tác, còn lại đều là đệ quy vì RNS phải xử lý lượng lớn yêu
cầu, nên cần giảm số lượng.
- DNS còn có lưu lại địa chỉ IP đã truy cập vào cache
trong máy nên sẽ giảm được độ trễ + số thông điệp trao
đổi trên Internet. Để tránh thông tin cũ thì sau thời gian
nhất định bộ nhớ sẽ bị xóa.

2.4.3 Bản ghi DNS:


- Bản ghi lại tài nguyên cho các ánh xạ Tên máy/ IP. Bản ghi gồm 4 trường: Name,
Value, Type, TTL. TTL là thời gian tồn tại bản ghi, ở phần dưới ta sẽ bỏ qua TTL.
- Ý nghĩa của Name và Value phụ thuộc vào Type:
+ Type = A: name là tên máy, Value là IP chuẩn. Ví dụ (fb.com, 123.456.7.8,
A).
+ Type = NS: Name là 1 miền, Value là tên máy của authoritative của các máy
trong miền đó. Ví dụ (foo.com, dns.foo.com, NS) là 1 bản ghi.
+ Type = CNAME: Value là tên đầy đủ của máy có bí danh đặt trong Name
ví dụ : (foo.com, relay1.bar.foo.com, CNAME)
+ Type = MX: Value là tên của MAIL server có tên bí danh đặt trong Name
ví dụ: (foo.com, mail.bar.foo.com, MX)
- Nếu 1 name server là Authoritative NS của 1 máy thì nó chứa bản ghi A của máy đó.
- Nếu name server không là Authoritative NS của 1 máy thì thì nó chứa 1 bản ghi kiểu
NS miền máy tính này, 1 bản ghi A của xác định name server của miền máy đó.
ví dụ root NS không là ANS của gaia.cs.umass.edu thì root name server sẽ chứa
cs.umass.edu như (umass.edu, dns.umass.edu, NS) và bản ghi A (dns.umass.edu,
128.119.40.111, A)
2.4.4 Thông điệp DNS:

2.5 Lập trình socket:

Chương 3: Tầng giao vận

3.1 Dịch vụ và nguyên tắc của tầng giao vận:


- Giao thức tầng giao vận cung cấp kênh truyền logic(ảo) giữa các tiến trình ứng dụng
trên các máy tính khác nhau. (Gọi là logic vì nó không tồn tại đường truyền vật lý
thực sự). Các tiến trình sử dụng đường truyền ảo mà không cần quan tâm cơ sở hạ
tầng môi trường vật lý.
- Ở phía gửi thực thể giao vận chèn thông điệp vào 4-PDU (đơn vị dữ liệu tầng giao
vận - Protocol Data Unit). Công việc thử hiện bằng cách chia dữ liệu thành nhiều
đoạn nhỏ, rồi thêm các tiêu đề của tầng giao vận để tạo ra các gói dữ liệu tầng giao
vận. Sau đó truyền gói dữ liệu 4-PDU xuống tầng mạng và đặt vào trong gói 3-PDU.
Phía nhận sẽ tự lấy tiêu đề cùng dữ liệu ra ghép chúng lại.
- Tất cả giao vận đều cung cấp dịch vụ dồn kênh(multiplex), phân kênh(demultiplex).

3.1.1 Quan hệ giữa tầng giao vận và tầng mạng:


- Giả sử có 2 nhà X và Y, mỗi nhà 6 anh chị em đều đặn gửi thư cho nhà còn lại. Nhà
X có A thu thập thư đưa nhân viên bưu cục và nhận thư từ nhân viên bưu cục gửi đi.
Tương tự nhà Y có B làm việc đó. Ta thấy rằng:
+ Máy tính = ngôi nhà.
+ Tiến trình = từng người trong nhà.
+ Thông điệp = thư trong phong bì.
+ Giao thức tầng mạng = dịch vụ bưu chính.
+ Giao thức tầng giao vận = A và B.
- A và B chỉ sắp xếp thư tại nhà chứ không đi quan tâm xem thư sẽ được chuyển như
nào, trung gian qua đâu. Điều này cũng đúng với tầng giao vận. Tầng giao vận chỉ
hoạt động tại thiết bị đầu cuối.
- Dịch vụ A và B cung cấp cũng phụ thuộc nhiều vào dịch vụ bưu chính. Nếu bưu
chính gửi chậm hoặc mất thư thì A và B cũng không thể đảm bảo thời gian được,
hay thực hiện được dịch vụ của mình.
- Tầng giao vận cung cấp những dịch vụ mà tầng mạng không có như truyền dữ liệu
tin cậy.(kể cả khi tầng mạng không đáng tin cậy).

3.1.2 Tổng quan tầng giao vận:


- 2 giao thức UDP(user datagram protocol) và TCP(transfer control protocol).
- TCP cung cấp truyền tin cậy, hướng nối còn UDP thì không.
- Để đơn giản cho 4-PDU là segment.
- Nói qua về tầng mạng, IP cố gắng cung cấp tối đa khả năng gửi segment của mình
tới các thiết bị đầu cuối nhưng không đảm bảo điều này(thứ tự truyền, tính toàn vẹn).
Nhiệm vụ chính của UDP và TCP là mở rộng IP(từ “máy - máy” thành “tiến trình -
tiến trình”). Quá trình mở rộng như vậy gọi là dồn kênh(ở phía gửi) và phân kênh(ở
phía nhận) (Như A, B thu thập thư = dồn kênh, nhận thư rồi phân phát thư = phân
kênh).

3.2 Dịch vụ dồn kênh, phân kênh:


- Là dịch vụ cực kì cần thiết. Tại máy tính, tầng
giao vận segment từ tầng mạng đồng thời có
trách nhiệm gửi đến đúng các tiến trình.
- Công việc gửi dữ liệu tới đúng tiến trình gọi là
phân kênh, tạo các segment và thu thập lại gửi
xuống tầng mạng gọi là dồn kênh.
- Dồn kênh, phân kênh được thực hiện nhờ 2
trường đặc biệt cổng nguồn(source port) và
cổng đích(dest port) ở tiêu đề.
- Chú ý giá trị cổng từ 0 đến 1023 là giá trị đặc biệt,
dành cho các ứng dụng thông dụng.
- Mỗi thiết bị đầu cuối đều có port nhất định, phân biệt,
vậy tại sao cần gửi cả Source port? Vì nếu mỗi thiết bị
đầu cuối chạy đồng thời 2 tiến trình cùng kiểu, không thể
phân biệt.
- Cổng đích thường đã được xác định sẵn, cổng nguồn
thì không. Xét ví dụ ứng dụng Telnet(Điều khiển từ xa)
với cổng 23. Số hiệu cổng đích chính là số hiệu cổng
nhận (23). Số hiệu cổng đầu được tầng giao vận xác
định là số chưa ứng dụng nào dùng(x).
- Nếu có 2 client khác nhau cùng thiết lập tới 1 server
và đều chọn cổng x?( như hình bên). Khi đó server sẽ
sử dụng địa chỉ IP để phân biệt. Tóm là dùng cổng
nguồn, cổng đích, địa chỉ IP để phân biệt.
3.3 UDP - Giao thức không hướng nối:
- Ngoài dồn kênh và phân kênh, UDP có thêm cơ chế phát hiện lỗi đơn giản.
- UDP lấy thông điệp từ tiến trình ứng dụng, chèn thêm một số trường tiêu đề(trong đó
có cổng nguồn, cổng đích) cho dịch vụ dồn kênh, phân kênh tạo segment. Gói
segment sau khi được tạo ra được chuyển xuống tầng mạng, đặt các segment vào
IP datagram và cố gắng gửi đến máy nhận. UDP không kết nối bắt tay trước.
- So với UDP, TCP có vẻ nhiều ưu điểm hơn. Tuy nhiên UDP lợi hơn ở:
+ Không có giai đoạn thiết lập kết nối: không mất đi 1 khoảng thời gian gây trễ.
+ Không duy trì trạng thái kết nối: Do UDP không có cơ chế truyền cậy và tránh
tắc nghẽn.
+ Tiêu đề dữ liệu nhỏ: chỉ 8 byte so với 20 byte của TCP.
+ Không kiểm soát tốc độ gửi:
- Định tuyến, DNS, Điện thoại qua Internet, File server... thường dùng UDP.
- Các ứng dụng sử dụng thường là muốn thời gian thực và chấp nhận mất mát dữ liệu

3.3.1 Cấu trúc UDP segment:


- Tiêu đề UDP có 4 trường, độ lớn mỗi trường 2 bytes. Trường
Checksum được bên nhận sử dụng xem trong segment có lỗi
không. Trên thực tế cả tiêu đề của gói IP cũng được tính
Checksum. Trường độ dài(Length) cho biết độ dài của toàn bộ
dữ liệu(kể cả tiêu đề).
- UDP checkSum: Tính bằng cách bù 1 của tổng các từ 16
trong segment:
Ví dụ 3 từ: 0110011001100110, 0110011001111001,
0101011000111101. Tổng 3 từ là 0110001101100011(A). Bù
sẽ là: 1001110010011100(B) và B sẽ giá trị Checksum. Tại
phía bên nhận, tất cả 4 từ(cả B) được cộng lại. Nếu không ra
11111111111111111 thì ta biết dữ liệu bị lỗi.

3.4 Các nguyên tắc truyền dữ liệu tin cậy:

- TCP là giao thức truyền dữ liệu tin cậy nằm ở


phía trên giao thức truyền dữ liệu tin cậy(hình
bên). Để đơn giản ta sẽ coi tầng dưới là truyền
point to point.
- Phần này sẽ xây dựng dần giao thức truyền
dữ liêu tin cậy. Hàm rdt_send() (viết tắt của
reliable data transfer protocol send) làm hàm
gửi dữ liệu theo cách tin cậy. rdt_rcv() là hàm
nhận dữ liệu cách tin cậy. deliver_data() là hàm chuyển dữ liệu lên tầng trên. udt_send() là
gửi dữ liệu đi theo cách tin cậy.
Trong phần này sử dụng packet thay segment.

3.4.1 Xây dựng giao thức truyền dữ liệu tin cậy:


Sẽ được xây dựng thông qua máy hữu hạn trạng thái (Finite State Machine - FSM).
● Truyền thông dữ liệu trên kênh truyền tin cậy hoàn toàn (giao thức rdt 1.0)

(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.

Ở phía gửi đáp ứng 3 sự kiện:


+ Dữ liệu chuyển xuống từ tầng trên. Xem còn chỗ trong cửa sổ N còn chỗ
không (đủ N đang gửi hay không). Nếu còn thì sẽ gửi đồng thời cập nhật các
biến. Nếu không thì không chấp nhận dữ liệu từ tầng trên. (Sự kiện này
check từng gói 1 chứ không check cả 1 dữ liệu lớn).
+ Nhận được 1 ACK có giá trị p: tức là toàn bộ gói có số thứ tự nhỏ hơn <= p
đều đã nhận được. Vì vậy tăng base.
+ Timeout: 2 sự kiện trước, khi mà cửa sổ N đầy hoặc bắt đầu base mới thì
luôn bắt đầu đếm thời gian (start- timer). Nếu quá thời gian thì gửi lại toàn bộ
dữ liệu được gửi nhưng chưa biên nhận.
- Remind: Điều đặc biệt ở GBN là nếu nó nhận được gói dữ liệu từ 1 đến n, nó sẽ gửi lại
ACK n (biên nhận kiểu tích lũy). Điều này tránh phải gửi ACK lại n lần. Nhưng nếu gửi hết từ
gói dữ liệu 1 đến 2 * n mà gói n + 1 hỏng thì nó chỉ báo gửi lại ACKn (như trong hình). Điều
này cũng dẫn tới khá mất thời gian nhưng lại dễ dàng cài đặt vùng đệm(buffer).
● giao thức GBN kết hợp hầu hết kỹ thuật khi nghiên cứu TCP: số thứ tự, số biên nhận
tích lũy, checksum, timeout, truyền lại.

3.4.4 Lặp lại có lựa chọn (Selective Repeat).


- Dùng GBN, trong ví dụ đọc chính tả. Kích thước cửa sổ là 1000 từ. Ta truyền 1000
từ nhưng sai từ từ đầu tiên. Dù 999 từ sau đến được đích nhưng sẽ bị loại bỏ và ta
gửi lại từ đầu. (mất thời gian).
- Lặp lại có lựa chọn thì ta sẽ gửi lại số thứ tự gói tin bên nhận cho là lỗi. Điều này tiết
kiệm đáng kể thời gian, nhưng việc cài đặt cũng như yêu cầu bộ nhớ cho vùng đệm
cũng lớn hơn. Khi các gói bị mất được gửi lại đầy đủ, bên nhận mới lấy hết dữ liệu
và chuyển lên tầng trên.
- Timer lúc này sẽ cho từng gói riêng, bởi chỉ duy nhất 1 gói được gửi lại khi hết thời
gian đợi.

3.5 TCP - Giao thức giao vận hướng nối:

3.5.1 Kết nối TCP:


- TCP không phải thực giữa 2 điểm đầu mút, cũng không phải mạch ảo bởi trạng thái
kết nối nằm hoàn toàn trên thiết bị đầu cuối. Giao thức TCP chỉ hoạt động trên thiết
bị đầu cuối, không hoạt động trên các thiết bị trung gian(switch, bridge, router).
- Kết nối TCP cung cấp đường truyền song công, luôn luôn kiểu điểm nối điểm.
- Quá trình: Sau khi bắt tay “3 bước” với nhau, 2 tiến trình có thể trao đổi dữ liệu với
nhau. Tiến trình đổ dữ liệu qua socket. Khi dữ liệu qua socket thì TCP sẽ chịu trách
nhiệm kiểm soát. TCP đẩy segment vào bộ đệm gửi, sau đó gửi dần “khi thuận tiện”.
- Độ lớn của segment giới hạn bởi MSS(max segment size), thường là hệ điều hành
quyết định. Các giá trị MSS phổ biến thường là 1500, 536, 512. Chú ý là MSS là kích
thước lớn nhất của dữ liệu, chứ không phải kích thước lớn nhất của segment, vì
segment bao gồm cả tiêu đề.
3.5.2 Cấu trúc TCP Segment:
- TCP segment bao gồm các trường dữ liệu và trường tiêu đề. Khi nhận được 1 file
dữ liệu lớn(video, ảnh…), nó phải chia file thành các đoạn có kích thước MNS(trừ file
cuối kích thước <= MNS).
● Tiêu đề TCP cũng có cổng nguồn,
cổng đích (dùng phân kênh, dồn
kênh) và checksum. Tuy nhiên TCP
còn 1 số trường khác sau:
- Trường số thứ tự(sequence - 32 bit) và
trường số biên nhận(acknowledge 32 bit) sử
dụng để cung cấp truyền dữ liệu tin cậy.
- Trường độ lớn cửa sổ(rcvr window size -
2 byte) dùng kiểm soát lưu lượng - lượng dữ
liệu tối đa mà bên nhận chấp nhận được.
- Trường độ dài tiêu đề(header length) 4 bit
xác định độ dài của tiêu đề. Tiêu đề có độ
dài thay đổi phụ thuộc trường options.
- Trường option: Có thể lựa chọn thêm về
thương lượng MSS, giá trị gia tăng cửa sổ
mạng cao tốc, timestamping…
- Trường cờ(flag) gồm 6 bit. Bit ACK chỉ ra rằng giá trị đặt trong trường biên nhận là đúng.
Các bit RST, SYN, FIN thiết lập mở hay đóng kết nối. Bit PSH bật thì báo hiệu bên nhận
phải chuyển dữ liệu lên tầng trên ngay lập tức. Bit URG bật báo hiệu dữ liệu trong segment
được tầng trên gửi khẩn cấp. Vị trí bit cuối cùng của dữ liệu khẩn được xác định bởi con trỏ
dữ liệu khẩn(ptr to urgent data).Trong thực tế PSH, URG, ptr to urgent data ko được dùng.

3.5.3 Số thứ tự và số biên nhận:


- Giả sử máy A muốn gửi 500.000 byte dữ liệu cho máy B thông qua TCP. Giả sử
MSS là 1000 byte, TCP sẽ tạo ra 500 segment từ dữ liệu này. Segment thứ i có số
thứ tự là MSS * (i - 1) . Số thứ tự sẽ được điền như vậy.

- 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.

3.5.4 Truyền dữ liệu tin cậy:


- TCP là đường truyền dữ liệu tin cậy trên nền tảng IP không tin cậy, đảm bảo dữ liệu
không có lỗi, liên tục, không trùng lặp, đúng thứ tự. TCP sử dụng rất nhiều nguyên lý
cơ bản đã nghiên cứu ở 3.4
Phản ứng bên
nhận:
Sự kiện 1 kiểu mọi
thứ đúng hết rồi,
dừng lại 500ms xem
còn đống dữ liệu
đúng nữa không
mới gửi A.
Sự kiện 2 kiểu là khi
sự kiện 1 diễn ra
thành công, đợi
segment đúng thứ
tự tiếp theo và nó
đến.
Sự kiện 3 dễ hiểu.
Sự kiện 4 chữa lỗi
cho sự kiện 3.

3.5.5 Kiểm soát lưu lượng:


- Nếu bên gửi gửi quá
nhiều mà bên nhận
không kịp xử lý thì có
thể làm tràn buffer.
Chính vì vậy cần kiểm
soát lưu lượng.
- Lưu ý: Kiểm soát lưu
lượng là do bên nhận
kiểm soát, kiểm soát
tắc nghẽn là do bên gửi kiểm soát.
- Giới thiệu 1 vài biến ở bên nhận(máy B) RcvWindow là độ lớn vùng đệm còn rỗi,
thay đổi tùy từng lúc. RcvBuffer là độ lớn vùng đều ban đầu khi mới khởi tạo.
LastByteRead là số thứ tự byte cuối cùng mà bên nhận đã đọc. LastByteRcvd là
số thứ tự byte cuối cùng mà bên nhận đã nhận.
- Hiển nhiên, để kiểm soát lưu lượng thì LastByteRcvd - LastByteRead <= rcvBuffer.
Và : RcvWindow = rcvBuffer - (LastByteRcvd - LastByteRead).
- Ở bên gửi(máy A) cũng có 2 biến LastBySent và LastByAcked là byte cuối cùng gửi
và byte cuối cùng nhận được ACK. LastByteSent - LastByAcked <= RcvWindow(1).
Trong suốt thời gian kết nối, A phải đảm bảo điều trên.
- Một vấn đề nữa, là khi bộ đệm máy B đầy, tức là RcvWindow = 0 nhưng máy B
không có gì gửi cho máy A. Khi tiến trình máy B lấy dữ liệu lên làm bộ đệm rỗng, thì
TCP không gửi segment với RcvWindow mới tới máy A(hình như khi nhận dữ liệu thì
đã gửi hết ACK rồi, đến đây thì đã là đoạn “đọc”). Vì vậy máy A “bị khóa”. Để giải
quyết vấn đề này thì khi biên nhận bắt đầu có vùng rỗng, thì sẽ gửi giá trị
RcvWindow khác 0 trở lại.
3.5.6 Quản lý kết nối TCP:
- Trình bày về thiết lập TCP được giải phóng và kết nối như nào. Đây là giai đoạn vì
thiết lập ảnh hưởng nhiều tới độ trễ.
- Quá trình thiết lập(bắt tay 3 bước): C(TPC client), S(TPC server)
+ C gửi segment đặc biệt không chứa dữ liệu nhưng bit SYN bật. C còn chọn
số thứ tự ban đầu (client_isn) và đặt vào trường số thứ tự
+ Khi IP datagram đến server thì S lấy segment SYN ra, phân phối bộ đệm,
đồng ý kết nối, gửi lại Segment chấp nhận kết nối. Segment này chứa SYN
bật, trường biên nhận giá trị là client_isn + 1, trường thứ tự có giá trị
server_isn(server tự chọn).
+ Khi nhận được segment chấp nhận kết nối, C khởi tạo bộ đệm và các biến
liên quan. C cũng gửi lại segment thứ 3 chấp nhận kết nối có: server_isn + 1
ở trường biên nhận, SYN nhận giá trị 0(vì kết nối được thiết lập)
+ C: Hello nói chuyện không? -> S(chuyển bị chuyện để nói) xong rep OK bạn -
> C(chuyển bị chuyện để nói) xong rep OK bắt đầu thôi.

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.

Chương 4: Tầng mạng

4.1 Các mô hình dịch vụ tầng mạng:


- Tầng giao vận cung cấp dịch vụ truyền thông giữa 2 tiến trình trên 2 máy tính khác
nhau. Để cung cấp dịch vụ này, tầng giao vận phải sử dụng dịch vụ cung cấp đường
truyền giữa 2 máy tính của tầng mạng.
- Công việc chuyển segment từ tầng giao vận máy tính nguồn đến tầng giao vận máy
tính đích của tầng mạng sẽ là vai trò chính của tầng mạng, cũng là nội dung chính
của chương này.
- Tầng mạng sẽ chuyển gói tin đến các router gần nhất, sau đó từ router sẽ định tuyến
qua nhiều router khác rồi đến máy nhận. Chú ý tầng giao vận, ứng dụng không hoạt
động tại các thiết bị chuyển mạch(trừ mục đích kiểm soát).
- Nhiệm vụ tầng mạng:
+ Xác định đường đi (Path determination): Là trọng tâm chương này. Đi từ máy
này qua máy khác qua rất nhiều router và có rất nhiều con đường có thể đi.
Các thuật toán định tuyến(router algorithm) như Link state hay Distance
vector sẽ giúp chọn tuyến đường tốt.
+ Chuyển mạch (Switch): quá trình chuyển gói tin từ đầu vào tới đầu ra như
nào.
+ Thiết lập đường truyền (Call setup): Với 1 số kiến trúc mạng khác Internet
(như ATM) đòi hỏi router phải “bắt tay” trước để truyền từ nguồn tới đích.

4.1.1 Mô hình dịch vụ mạng:


- Điểm trừu tượng quan trọng nhất là tầng mạng đấy có sử dụng mạch ảo (virtual
circuit - VC) hay không. Ta đã học chương trước dịch vụ chuyển mạch gói
(datagram) được Internet sử dụng. Hiểu đơn giản mạch ảo(VC) tương tự mạng điện
thoại. Với chiếc điện thoại coi như thiết bị đầu cuối câm(dump device), thì sự phức
tạp được đặt lên tầng mạng(đảm bảo độ tin cậy, tính toàn vẹn, tốc độ gửi). Còn
mạch gói chính là mạch Internet sử dụng thì hoạt động theo nguyên lý cố gắng hết
sức(không đảm bảo thời gian gửi các gói tin, không đảm bảo gói tin đến đích đúng
thứ tự, không bị hỏng, thậm chí có thể mất, hay tắc nghẽn mạng). Hoạt động đơn
giản vì Internet hàng tỷ người dùng và thiết bị đầu cuối cũng thông minh có thể phát
hiện, xử lý được mất mát, hỏng dữ liệu.
- Có 3 giai đoạn trong chuyển mạch ảo:
+ Thiết lập mạch ảo: phía gửi thông báo địa chỉ với tầng mạng, yêu cầu tầng
mạng thiết lập VC. Tầng mạng xác định tuyến đường bên gửi và nhận mà tất
cả dữ liệu sẽ đi qua. Giai đoạn yêu cầu cập nhật bảng định tuyến và dự trữ
tài nguyên trong mỗi thiết bị chuyển mạch.
+ Truyền dữ liệu: Sau khi thiết lập, dữ liệu có thể truyền.
+ Giải phóng mạch ảo: Giai đoạn này bắt đầu khi bên gửi hoặc nhận thông báo
đóng VC. Tầng mạng sẽ thông báo cho thiết bị đầu/cuối bên kia cũng như
các thiết bị router trên VC cập bảng định tính, giải phóng tài nguyên.
- Khác biệt giữa thiết lập kết nối ở giao vận và mạng: Giao vận chỉ thiết lập ở thiết bị
đầu/cuối, các thiết bị chuyển mạch thì không.
- Thông điệp trao đổi giữa thiết bị đầu cuối yêu cầu khởi tạo kết thúc mạch ảo hay
thông điệp trao đổi giữa các thiết bị chuyển mạch gọi là thông điệp báo
hiệu(signaling message). Giao thức sử dụng trao đổi thông điệp là giao thức báo
hiệu(signaling protocol).
- Trong mạch chuyển gói(Datagram), không có thiết lập VC. Những thiết bị chuyển
trong datagram(bộ định tuyến - router trên Internet) không duy trì bất kì trạng thái về
bảng cập nhật của VC vì không có VC. Thiết bị sẽ tìm đường đi đến đích bằng cách
xác định địa chỉ đích, tìm kiếm trong bảng định tuyến và chuyển theo hướng đến
đích(giống chuyển bưu điện).
- Để chuyển gói đi, tầng mạng thường đưa ra chuyển mạch gói hoặc mạch ảo nhưng
không bao giờ dùng cả 2 cùng lúc.
- Một thuật ngữ tương tự datagram và VC là dịch vụ không hướng nối và dịch vụ
hướng nối.
- Một số lớp dịch vụ của kiến trúc mạng ATM:
+ CBR -Truyền với tốc độ cố định - Constant bit rate: sự lựa chọn lý tưởng cho
truyền dữ liệu đa phương tiện(điện thoại số) theo thời gian thực. Các gói tin
truyền gọi là ATM cell. CBR đảm bảo tốc độ, biến thiên độ trễ, tỷ lệ mất mát
dữ liệu và đã được thỏa thuận khi thiết lập kết nối.
+ UBR - truyền với tốc độ không cố định -
Unspecified BR: UBR khác CBR, UBR chỉ
đảm bảo đúng thứ tự. UBR giống mô hình
cố gắng tối đa. Tính tin cậy mạng UBR được
triển khai ở giao thức tầng cao hơn. UBR
phù hợp email,...
+ ABR - available rate bit: cũng cố gắng tối
đa nhưng ưu việt hơn UBR. ABR đảm bảo
tốc độ truyền cell nhỏ nhất và phản hồi tắc
nghẽn từ tầng mạng. ABR không đảm bảo
băng thông tối thiểu nhưng cố gắng truyền
nhanh nhất có thể. ABR phù hợp truyền dữ
liệu độ trễ nhỏ(duyệt Web).
+ VBR - truyền độ biến đổi - Variable BR:
tương tự như CBR, nhưng tốc độ gửi sẽ
thay đổi phụ thuộc tham số người dùng đưa
vào, giúp dùng tài nguyên hiệu quả hơn.

4.1.2 Nguồn gốc của dịch vụ chuyển mạch gói và mạch ảo:

4.2 Các nguyên lý định tuyến:


- Dù mạch gói (các gói tin khác nhau có thể đi theo các tuyến đường khác nhau) hay
mạch ảo (các gói tin đi theo cùng 1 tuyến đường định trước) thì tầng mạng đều phải
xác định đường đi.
- Đường đi đơn giản có thể là đường đi có trọng số nhỏ nhất. Tuy nhiên trong thực tế
có nhiều chính sách(vd: router X từ tổ chức Y không được truyền đến tổ chức Z) làm
phức tạp thuật toán.
- Có thể phân loại thành 2 loại thuật toán định tuyến: toàn cục(link state) và phân tán
(distance vector).

4.2.1 Thuật toán định tuyến link state:


- Là thuật toán tĩnh: tuyến đường thay đổi rất ít theo thời gian.
- Xác định đường đi ngắn nhất giữa nguồn và đích bằng cách dùng tất cả thông tin về
tổng thể mạng với đầu vào là tất cả các nút, cung, và trọng số cung. Để lấy tất cả
thông tin cả mạng, trong thực tế, mỗi router sẽ gửi thông tin về định danh của mình
và các cung liên kết với các nút “hàng xóm”.
- Ban đầu router chỉ biết hàng xóm và sau khi tất cả đều gửi thì router biết phần còn lại
của topo mạng.
- Thuật toán link state chính là thuật toán Dijkstra (thuật toán xác định đường đi ngắn
nhất từ nguồn tới đích). Độ phức tạp là O(n^2) nhưng nếu dùng HEAP thì có thể
xuống theo hàm logarit.
Xét 1 ví dụ là trường hợp trọng số là
tải trên đường. Lúc này cạnh không
còn vô hướng nữa. xét D và B gửi 1
đơn vị dữ liệu tới A. C gửi e đơn vị dữ
liệu tới A(như trong hình a). Lúc này
các nút C và B đều chạy link state và
thấy đường đi phía D chỉ có 1 và
đường đi phía B có tận 1 + e. Thế là C
và B quay xe, đường tắc thành 2 + e.
Chạy lại 1 lần nữa thì cả D, C, B đều quay xe…
- Cứ như vậy, 1 đường max tải, 1 đường 0 tải. Giải pháp đưa ra là định giá cho tuyến
đường không phụ thuộc vào tải. Điều này khó, vì định tuyến cần định tuyến đường
không tắc nghẽn. Giải pháp khác là để các router không chạy LS tại cùng 1 thời
điểm, nghe hợp lý hơn.

4.2.2 Thuật toán định tuyến distance vector(DV):


- Là thuật toán động: cho phép thay đổi các tuyến đường khi kiến trúc liên kết mạng
thay đổi. DV thuộc loại thuật toán phân tán, xác định đường đi dần dần theo cách
thức phân tán: thực hiện các bước tính toán rồi phân tán kết quả tới nút hàng xóm.
- DV là thuật toán tự kết thúc, dừng khi không còn thông tin trao đổi giữa các hàng
xóm.
- Cấu trúc thuật toán là bảng khoảng cách(distance table) đặt ở mỗi nút. Trong bảng,
cột ứng với nút muốn đến, hàng ứng với hàng xóm sẽ đi qua. Giá trị hiển thị trong
bảng sẽ là đường đi có trọng số bé nhất.
- Gọi là khoảng cách ngắn nhất từ

x ❑
D ( Y , Z)

X đến Y mà đi qua Z. Ta có:


x z
- D (Y , Z) = c(X,Z) + min❑w {D (Y , w) }
với w là các hàng xóm của X, c(X,Z) là trọng số cung (X,Z).
- Với đẳng thức trên, nút cần tính sẽ gọi lần lượt đến các nút hàng xóm để lấy thông
tin và tính dần. DV dựa trên thuật toán Bellman-Ford.

- 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.

4.4 Internet Protocol:


IP là 1 phần(quan trọng) trong kiến
trúc Internet. IP sử dụng dịch vụ
chuyển mạch gói(datagram). Tại máy
gửi, tầng mạng sau khi nhận sẽ đặt
segment vào trong gói IP (IP
datagram) với các trường địa chỉ gửi,
nhận và chuyển tới router đầu tiên trên
đường tới đích. IP giống hệ thống bưu
điện, không có liên hệ trước với phía
nhận và cũng chỉ cung cấp dịch vụ
kiêu cố gắng tối đa.
● Tầng mạng trong kiểu mạng
chuyển gói có 3 thành phần:
- Giao thức mạng(IP protocol): xác định địa chỉ tầng mạng, ý nghĩa các trường trong
datagram(là PDU của tầng mạng), hành động của router và thiết bị đầu cuối khi nhận
được datagram.
- Bộ phận xác định đường đi(Routing protocols): xác định tuyến đường datagram trên
đường tới đích.
- Giao thức báo lỗi Internet(ICMP protocol):báo lỗi và trả lời yêu cầu về thông tin mạng

4.4.1 Địa chỉ IPv4:


- Nằm giữa máy tính và đường kết nối vật lý là 1 giao diện ghép nối(interface). Router
thì khác hoàn toàn máy tính, có thể có nhiều kết nối và bộ phận nằm giữa router và
kết nối cũng được gọi là giao diện. Vì mỗi máy tính và router đều có thể gửi và nhận
datagram nên mỗi giao diện có 1 địa chỉ IP và địa chỉ đó là duy nhất(địa chỉ IP ứng
với giao diện chứ không phải với máy tính!!!).
- Địa chỉ IP có 32 bit(4 byte). Viết theo dạng dấu chấm thập phân, phân cách các byte
theo dấu chấm. VD 193.32.216.9

VD hình 4.11. Router có 3 giao diện


để kết nối 7 máy.
Quan sát mỗi dãy máy, giả sử dãy
bên trái đều có địa chỉ 223.1.1.xxx
Chúng được kết nối với nhau qua kết
nối vật lý duy nhất. Giao diện các máy
tính bên trái và phần bên trái router
tạo thành mạng IP(hay mạng). 3 byte
đầu giống nhau là phần mạng, 1 byte
cuối khác nhau phần máy của địa chỉ
IP. Những 3 byte này cũng xem là tiền
tố.
Mạng 223.1.1.0/24 gồm giao diện 3
máy(223.1.1.1->3) và 1
router(22.3.1.1.4).
(/24 là số bit dùng làm địa chỉ mạng)

(hình bên) 3 router đôi một nối nhau. Mỗi


router có 3 giao diện(1 với kết nối quảng
bá máy tính, 2 với các router). Có 3 mạng:
223.1.1.0/24, 223.1.2.0/24, 223.1.3.0/24.
Nhưng có thêm 3 mạng nữa nối giữa các
router(223.1.7.0/24 …). Vậy có tất cả 6
mạng.

- Mạng toàn cầu Internet gồm hàng


triệu hệ thống mạng như vậy. Ký
pháp và địa chỉ mạng có vai trò
then chốt trong định tuyến. Kiến trúc địa chỉ tiếp tục đưa ra 4 lớp mạng(A, B, C, D).
Lớp địa chỉ thứ 5 bằng 11110 dự trữ cho việc sử dụng sau này.
- Với lớp địa chỉ A, 8 bit đầu cho địa chỉ mạng và 24 bit sau cho địa chỉ máy. Như thế
có 2^7 mạng lớp A(1 bit luôn là 0) và mỗi mạng lớp A có 2^24 giao diện.
- Tương tự lớp B có 2^14 mạng,1 mạng 2^16 máy. Lớp C 24 bit cho mạng và 8 bit
cho máy. Lớp D
dự trữ làm địa chỉ
multicast.
- Cách chia 4 lớp trên
hiện tại không còn áp
dụng trong kiến trúc IP
nữa. Giả sử 1 công ty cần
400 máy tính. Nếu công
ty dùng mạng lớp C thì
chỉ đáp ứng được 2^8 - 2
= 254 địa chỉ cho máy (2
địa chỉ trong số 2^8 được
dùng làm dự trữ cho mục
đích khác). Thế là dùng
mạng lớp B, công ty sẽ có 2^16 - 2 = 65634 địa chỉ cho máy. Lúc này thì lại quá thừa dẫn
đến lãng phí.
- Vì vậy ta có cơ chế không phân lớp, phần mạng của địa chỉ IP có độ dài tùy ý. Khuôn dạng
vẫn là a.b.c.d/x với a,b,c,d có độ dài 4 byte, nhưng x có thể là số tùy ý và là số lượng bit
dùng làm địa chỉ mạng. vd: mạng 200.23.16.0/21 là có 2^11 = 2048 địa chỉ phù hợp với
trường hợp trên.
2^11 địa chỉ còn có thể
tiếp tục chia để tạo
mạng con. Ví dụ như
hình bên, ta lấy 3 bit ra
để chia ra mảng nhỏ
hơn. Vậy ta có thể chia
thêm thành 8 mạng
khác, mỗi mạng cấp 2^8
địa chỉ máy.

● Gán địa chỉ cho mỗi giao diện:


- Địa chỉ máy tính thì có thể cấp theo nhiều cách:
+ Cấu hình bằng tay: được người quản trị hệ thống cấu hình vào máy.
+ Giao thức cấu hình địa chỉ động (DHCP): Khi DHCP server nhận yêu cầu từ
máy khách, nó sẽ phân phối gán địa chỉ IP cho máy khách yêu cầu. DHCP
được sử dụng rộng rãi cho mạng cục bộ hay truy cập Internet từ nhà.
- Để có địa chỉ mạng, người quản trị mạng phải liên lạc với ISP của mình. ISP đã
được phân phối không gian địa chỉ đủ lớn và sẽ cấp cho tổ chức 1 phần địa chỉ. Ví
dụ như mạng 200.23.16.0/21 ở trên kia chia thành 8 mạng nhỏ hơn.
- ISP nhận được không gian địa chỉ từ các cơ quan Internet cấp vùng quản lý.
- Các máy tính có khả năng di động (mobile) có thể thay đổi mạng theo cách động(khi
di chuyển) hoặc tĩnh(thời gian). Vì vậy địa chỉ IP máy thay đổi khi máy tính thay
đổi mạng.
4.4.2 Chuyển datagram từ nguồn tới đích: vấn đề địa chỉ, định tuyến:

- 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.

4.4.4 Phân mảnh(fragmentation) và hợp nhất(reassembly)


- Không phải tất cả các giao thức của tầng liên kết dữ liệu(LKDL) đều có truyền cùng 1
độ lớn. Số lượng dữ liệu tối đa gói tin trên đường truyền vật lý được định nghĩa là
MTU (maximum transfer unit). Gói dữ liệu IP được đặt trong gói dữ liệu của tầng
LKDL nên MTU tầng LKDL giới hạn độ dài gói IP. Vấn đề: giữa các router khác nhau
trên đường đi sử dụng giá trị MTU khác nhau.
- Nếu đang truyền đi đến đích, ta gặp đường kết nối giữa 2 router tiếp theo có MTU
nhỏ hơn kích thước gói dữ liệu, ta sẽ phải phân mảnh(fragmentation) thành nhiều
gói dữ liệu khác nhau và gửi các gói nhỏ hơn này. Mỗi gói nhỏ gọi là 1 mảnh
(fragment). Các mảnh cần được lắp ghép trước khi chuyển lên tầng giao vận. Việc
hợp nhất tại router phức tạp, giảm hiệu suất. Hơn nữa nếu gặp MTU nhỏ hơn khác
trên đường đi ta lại phải phân mảnh lại. Nên quyết định hợp nhất tại thiết bị đầu cuối.
- Khi máy tính nhận được nhiều gói dữ liệu, nó phải xác định gói đấy là độc lập hay
mảnh. Nếu là mảnh thì đã đủ các mảnh chưa và lắp ráp lại mảnh như nào. 3 trường
trong tiêu đề gói IP là identification, flag, fragmentation offset sẽ giải quyết.
+ identification: Khi tạo gói dữ liệu IP, máy tính sẽ đặt thêm một số định danh
cho gói dữ liệu. Khi phân mảnh thì các gói đều cùng định danh, giúp ghép lại.
+ flag: Khi phân mảnh, các gói đều được flag = 1, trừ mảnh cuối flag = 0. Biến
này kiểu đánh dấu gói cuối cùng đã gửi để bắt đầu lắp ghép lại và gửi lên
tầng trên.
+ fragmentation offset: xác định vị trí của mảnh IP trong gói dữ liệu ban đầu

- 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.

Nếu một số mảnh bị mất, không đến đích


thì toàn bộ dữ liệu sẽ bị loại bỏ.
Nhưng nếu sử dụng TCP, TCP sẽ khắc
phục mất mát. Phân mảnh và hợp nhất
khiến nhiệm vụ tại router trở nên phức tạp
hơn -> giảm thiểu tối đa. Vì phần lớn các
giao thức liên kết dữ liệu hỗ trợ tối thiểu
536 byte nên ta có thể loại bỏ hoàn toàn
việc phân mảnh nếu đặt độ lớn gói dữ liệu
tầng giao vận (536 - 40) byte. Vì nếu không có trường tùy chọn thì tổng header TCP và
header IP là 20 + 20 = 40.

4.4.5 Giao thức kiểm soát lỗi


ICMP(Internet Control Message Protocol):
- ICMP được các máy tính đầu/cuối, router và
các cổng(gateway) sử dụng để trao đổi thông
tin tầng mạng với nhau, chủ yếu việc báo lỗi.
VD: router không tìm thấy đích, router gửi
thông báo ICMP kiểu 3 tới máy tính, máy tính
nhận được trả cho TCP, TCP nhận được trả
cho ứng dụng(HTTP, FTP…).
(bảng bên là 1 số thông điệp ICMP hay gặp).
- Thông báo ICMP được đặt trong gói IP, giống
TCP hay UDP segment nằm trong trường dữ
liệu. Tương tự khi nhận được gói tin IP với
trường giao thức xác định là ICMP, tầng mạng
sẽ chuyển cho thực thể ICMP, giống như làm
với TCP, UDP.
- Thông báo ICMP có trường kiểu(type) và trường mã(code), chứa 8 byte đầu tiên gói
dữ liệu IP gây lỗi.
- ICMP không chỉ để báo lỗi. Chương trình Ping, Chương trình Traceroute cũng sử
dụng ICMP.

4.5 Định tuyến trên Internet:

4.5.1 Định tuyến nội miền(Intra AS routing).


Có 3 giao thức định tuyến nội miền được sử dụng rộng rãi: RIP (Routing Information
Protocol), OSPF(Open shortest path first), EIGRP.
● RIP - Routing Information Protocol:
- Có 1 số đặc điểm sau:
+ Định tuyến nội miền, dùng thuật toán distance vector: Các router hàng xóm
trao đổi thông tin cho nhau 30s 1 lần trong các thông điệp RIP. Mỗi thông
điệp chứa tối đa 25 địa chỉ đích tới.
+ Đo khoảng cách bằng chặng: Trọng số đường đi giữa 2 thiết bị tính bằng
chặng(số lượng các router trung gian). Độ dài tối đa 1 tuyến đường là 15.
+ Truyền thông không tin cậy: RIP sử dụng UDP.
+ Gửi quảng bá(broadcast) và multicast: Sử dụng chủ yếu mạng cục bộ LAN.
RIPv1 quảng bá truyền 2 router. v2 theo chế độ multicast.
+ Máy tính thụ động nhận thông tin router: RIP cho phép thiết bị đầu/cuối lắng
nghe và cập nhật bảng định tuyến.
- RIP lưu bảng theo (địa chỉ đích n, khoảng cách r). r là số lượng các router trung gian.
Khi nhận được thông điệp mà giá lớn hơn hay không tới đích, RIP sẽ cập nhật lại
bảng định tuyến.
- Ưu điểm của RIP là tính đơn giản. Người dùng chỉ cần cho phép trao đổi thông tin,
router sẽ tự xây bảng định tuyến cho riêng mình.
● OSPF - Open Shortest Path First: (Sách cũng viết ít chắc ko cần học kĩ, kể cả RIP)
- đặc điểm OSPF:
+ Định tuyến nội miền với Linkstate
+ Hỗ trợ phân mạng và chia mạng lớn thành các mạng con.
+ Trao đổi thông tin đã được kiểm chứng.
+ Hỗ trợ phân cấp.

4.5.2 Định tuyến liên miền(Inter AS routing).


- Sử dụng giao thức BGP - Border Gateway Protocol.
- Đặc điểm BGP: Định tuyến liên miền, hỗ trợ thiết lập chính sách, truyền thông tin cậy

4.6 Cấu tạo thiết bị định tuyến(router):

● Đị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.6.1 Cổng vào(Input port):


Có 3 thành phần với 3 chức năng:
- line termination: kết thúc tín hiệu
đường truyền.
- datalink processing(protocol, decapsulation): xử lý liên kết dữ liệu giữa tầng vật lý và
tầng liên kết dữ liệu của đường truyền vật lý thật sự.
- lookup, forwarding, queueing:
tìm kiếm và chuyển tiếp gói dữ liệu đi ra
cổng ra, tạo hàng đợi khi tắc nghẽn.
- Trong nhiều router, cổng vào sẽ có một bản sao chép bảng định tuyến và cập nhật
từ bộ xử lý trung tâm khi cần thiết. Vì vậy, cổng vào có thể xác định cổng ra cho gói
dữ liệu. Điều này giúp bộ xử lý trung tâm không trở thành nút cổ chai(tắc nghẽn giao
lộ).
- Với router có khả năng xử lý ở cổng vào hạn chế, cổng vào sẽ chuyển dữ liệu vào
bộ xử lý để tra bảng. Người ta thường áp dụng giải pháp này cho trạm làm việc hay
máy tính vì khi đó bộ xử lý router là CPU.
- Bảng định tuyến xác định trước thì duyệt từ đầu đến cuối là ra. Tuy nhiên nếu các
router trục chính (backbone router) phải hoạt động nhiều ở tốc độ cao, triệu phép
tính mỗi giây. Vì địa chỉ phù hợp là địa chỉ có tiền tố mạng dài nhất. Ta có thể lưu
theo cây nhị phân. Có 2 nút có tương ứng với 2 bit tiếp theo là 0 và 1. Nếu gặp bit 0
đi theo nhánh 0 và bit 1 đi nhánh 1. Ta sẽ tìm kiếm trong N bước, N là số bit địa chỉ

4.6.2 Kết cấu chuyển (switching fabric):


- Khi xác định cổng ra, gói dữ liệu sẽ được chuyển qua kết cấu chuyển. Tuy nhiên gói
dữ liệu có thể bị “phong tỏa” do có dữ liệu đang dùng. Kết cấu chuyển sẽ lên lịch và
chuyển các gói dữ liệu từ cổng vào tới cổng ra.
- Việc chuyển được thực hiện bằng nhiều cách:
Chuyển qua bộ nhớ:
Các router đơn giản
nhất thuộc thế hệ đầu
tiên chuyển từ cổng
vào với cổng ra dưới
sự thực hiện của
CPU. Nhiều router
hiện đại cũng dùng
chuyển qua bộ nhớ,
nhưng khác rằng, việc
xử lý được đặt ngay
bộ xử lý ở cổng vào.

Chuyển qua bus:


Cổng vào chuyển
thẳng gói tin tới cổng
ra qua 1 đường bus
dùng chung mà không
cần bộ xử lý của
router can thiệp. Một
gói tin đến cổng và thấy bus đang được sử dụng, gói tin sẽ được đưa vào
hàng đợi cổng vào.
Chuyển qua 1 liên mạng: Ví dụ như hình minh họa, sử dụng M + N bus để nối M cổng vào
với N cổng ra. Mỗi gói tin nếu gặp bus rỗi sẽ được di chuyển đến khi gặp điểm giao. Nếu
bus tại điểm giao rỗi, gói tin sẽ được chuyển ra cổng đích, không thì sẽ phải xếp hàng.

4.6.3 Cổng ra:

- GIống cổng vào nhưng ngược lại.

4.6.4 Hàng đợi ở router:


- Nếu quá nhiều gói dữ liệu ở hàng đợi sẽ dần đến tràn dữ liệu làm mất mát. Việc mất
phụ thuộc vào tải của mạng, tốc độ tương thích giữa các kết cấu chuyển và đường
truyền.
Giả sử tốc độ truyền vào bằng nhau và có n cổng
vào, n cổng ra. Nếu tốc độ kết cấu
chuyển(switching fabric) >= n lần tốc độ truyền thì
chắc chắn không tồn tại hàng đợi ở cổng vào(vì
trường hợp xấu nhất cả n gói đều đến cùng lúc thì
vẫn xử lý được). Nhưng ở cổng ra, trường hợp xấu
nhất, cả n gói tin đều đi vào 1 cổng và tốc độ
chuyển vẫn như vậy. Mỗi lần thì cổng chỉ chuyển
được 1 gói, nên n - 1 gói tin phải chờ, và có thể
dẫn đến quá tải, tràn bộ đệm. Như hình bên trên
ví dụ n = 3.

Bộ điều phối (scheduler) tại cổng phải chọn ra gói


tin trong hàng đợi để đi. Có thể sử dụng First
Come First Served(FCFS), hay hàng đợi có trọng
số(WFQ). Bộ điều khiển sẽ đảm bảo chất lượng
dịch vụ.
Nếu tốc độ kết cấu chuyển không đủ nhanh, hàng
đợi sẽ xuất hiện. Giả sử ví dụ hình bên chạy theo
FCFS, nhiều gói tin có thể chuyển cổng đồng
thời, miễn là chúng khác cổng ra. Nhưng có 2 gói dữ liệu chuyển vào cổng đỏ và 1 gói phải
đứng lại chờ. Dù cổng xanh rỗi, nhưng gói màu xanh (lá) đứng sau gói màu đỏ đang chờ
cũng phải chờ và không được chuyển cổng. Đây là hiện tượng head-of-the-line(HOL)
blocking. Hiện tượng này có thể khiến hàng đợi tăng lên vô hạn.

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:

4.8 Cơ chế dịch chuyển địa chỉ (NAT):


- Trong trường hợp tổ chức có nhiều máy tính kết nối vào mạng, nhưng chỉ được cấp
phát một lượng nhỏ địa chỉ, vậy làm sao các máy có thể cùng truy cập Internet?
- Có 1 số dải IP đặc biệt được làm địa chỉ riêng, các địa chỉ này không được router
chuyển ra ngoài(kiểu 1 địa chỉ có thể nhiều máy ở các mạng khác nhau sử dụng,
nhưng không ai được đi ra ngoài với địa chỉ IP đấy).
VD: Tên ở nhà của nhiều trẻ con là Cún, Su… nhưng khi đi học thì sẽ có 1 tên riêng
khó trùng (Bùi Thị Út Lươn) và ở nhà mỗi đứa trẻ cũng chỉ có 1 đứa trẻ tên Cún,
Su...
- Giả sử máy 10.0.0.1 bên trong mạng muốn gửi email tới địa chỉ 18.7.7.76. Kết nối
TCP này không thể thiết lập do mail server không thể gửi phản hồi tới 10.0.0.1. Còn
chiều đi, về mặt lý thuyết vẫn gửi được, nhưng
trên thực tế, các router và server sẽ loại bỏ các
địa chỉ riêng để phòng ngừa tấn công hay tin rác.
Chính vì vậy trước khi gửi gói tin cần thay đổi địa chỉ.
NAT hoạt động theo 3 cơ chế sau:
- Cơ chế tĩnh: Mỗi máy cần
truy cập Internet sẽ cấp 1
địa chỉ thật. NAT chỉ ánh xạ
(không giải quyết được việc
đủ địa chi cho tất cả các
máy).
- Cơ chế vòng: Tất cả các
máy tính sẽ sử dụng chung
một nhóm địa chỉ có sẵn.
Máy dùng thì sẽ được cấp,
máy không dùng nữa thì sẽ
được thu hồi. Nhưng nếu
tất cả nhóm địa chỉ này ít
hơn số máy đang muốn
truy cập Internet thì vài máy
không thể kết nối Internet.
- Cơ chế chuyển địa chỉ theo
cổng: là cơ chế sử dụng
rộng rãi nhất. Chỉ có 1 địa
chỉ thật duy nhất dùng
chung cho cả tổ chức. Các
địa chỉ ảo sẽ được ánh xạ thành cổng của địa chỉ thật khi kết nối bên ngoài.
VD: 1 gói tin từ Host 1 có địa chỉ riêng 10.0.0.1 và port 2443. Sau khi qua router, địa chỉ gửi
là 96.29.5.15 port là 5420. Sau đó bên nhận sẽ gửi lại thông điệp đến router. Router tra
bảng PAT và trả lại địa chỉ 10.0.0.1:2443. Cùng thời điểm, tại host 2 10.0.0.2 gửi 1 gói tin
khác đi. Router vẫn ánh xạ địa chỉ gửi 96.29.5.15 nhưng port khác, ví dụ 7322.
- Tưởng đơn giản nhưng quá trình NAT cũng phức tạp, nhiều nhược điểm. Giá trị IP
thay đổi khiến việc tính lại checksum. Thứ 2 là router phải kiểm tra xem là TCP
segment hay UDP segment hay một loại khác, rồi thay đổi số hiệu cổng cùng
checksum trong tiêu đề. Việc này vi phạm cơ chế phân tầng do đã kiểm tra phần dữ
liệu của tầng trên. NAT cũng ghi thêm dữ liệu vào tiêu đề và ghi nhớ các thay đổi
làm phức tạp hơn.

Chương 5: Tầng liên kết dữ liệu:

5.1 Các khái niệm chung, dịch vụ tầng datalink:


Gọi các máy tính và router đều là nút(node), vì ở tầng này máy tính hay router đều không
phải vấn đề, ta sẽ tập trung vào truyền gói dữ liệu trên kênh truyền thông kết nối giữa 2 nút
gọi là đường truyền hay đường liên kết(link).
5.1.1 Những dịch vụ của tầng liên kết dữ liệu(LKDL):
- Đơn vị của tầng LKDL là frame và mỗi frame chứa một gói dữ liệu tầng mạng. Công
việc của giao thức tầng LKDL khi gửi và nhận frame gồm: phát hiện lỗi, truyền lại,
điều khiển lưu lượng và truy cập ngẫu nhiên. Giao thức tầng LKDL gồm Ethernet,
token ring, FDDI, PPP,đôi khi cả ATM, frame relay.
- Trên đường truyền, giữa các nút khác nhau có thể có các giao thức liên kết dữ liệu
khác nhau. Các giao thức khác nhau cung cấp các dịch vụ khác nhau. Giao thức
tầng LKDL không nhất thiết phải cung cấp dịch vụ tin cậy. Vì vậy tầng mạng phải tính
đến chuyện hoạt động trên các dịch vụ LKDL không tin cậy.
- VD về LKDL: Đi du lịch Đà nẵng, Hãng taxi HN có trách nhiệm đưa bạn ra sân bay,
hãng hàng không trách nhiệm đưa bạn đến sân bay Đà Nẵng, hãng taxi ĐN có trách
nhiệm đưa bạn đến khách sạn…
- Nói chung, giao thức tầng LKDL có thể cung cấp những dịch vụ sau:
+ Đóng gói dữ liệu(frame) và truy cập đường truyền(link): phần lớn giao
thức tầng LKDL đặt gói dữ liệu tầng mạng vào trong frame trước khi gửi đi.
Frame gồm trường dữ liệu và một số tiêu đề khác. Chú ý, frame có cả header
và trailer.
+ Dịch vụ truyền tin cậy: Thường được sử dụng trên đường truyền có tỷ lệ lỗi
cao(vd đường truyền không dây). Mục đích là sửa lỗi ngay trên đường truyền
bị lỗi, chứ không phải truyền lại dữ liệu. Ở các đường truyền ít lỗi(cáp
quang), tầng LKDL không cần cung cấp dịch vụ tin cậy.
+ Phát hiện lỗi: Nguyên nhân lỗi có thể do tín hiệu bị suy hao hay nhiễu điện từ.
Nhiều giao thức LKDL cung cấp phát hiện lỗi qua các bit thừa để phát hiện
lỗi. Tuy nhiên phát hiện lỗi trong LDKL phức tạp hơn nhiều, nên thường triển
khai bằng phần cứng.
+ Sửa lỗi: Giao thức có khả năng phát hiện chính xác lỗi ở đâu và sửa được lỗi
+ Bán song công và song công (half duplex, full duplex):
- Tầng giao vận và LKDL đều cung cấp truyền tin cậy, tuy nhiên giao vận hoạt động
trên thiết bị đầu/cuối, LKDL cung cấp truyền tin cậy giữa 2 bút có đường truyền vật lý
trực tiếp.

5.1.2 Bộ điều hợp(Adapter):


- Với phần lớn đường
truyền, giao thức tầng
LKDL được triển khai
trên adapter. Adapter
là bo mạch có RAM,
chip DSP, giao diện
ghép nối với bus máy
tính và giao diện với
đường truyền.
Adapter thường xuyên
gọi là card mạng(NIC -
Network Interface
Card).
- Như hình minh họa, tầng mạng chuyển datagram xuống tầng LKDL để adapter đặt
trong frame rồi chuyển sang bên kia. Nếu giao thức yêu cầu thêm phát hiện lỗi,
đường truyền tin cậy, adapter đều có thể đáp ứng.
- Adapter là đơn vị bán tự trị. Adapter có thể lấy frame, xác định lỗi, loại bỏ frame mà
không cần thông báo cho CPU. Khi nhận được frame từ môi trường vật lý, Adapter
chỉ báo cho CPU khi adapter muốn chuyển dữ liệu lên tầng mạng. Nhưng adapter
vẫn dùng chung nguồn điện với bus, do đó vẫn dưới sự điều khiển máy tính.

- Thành phần chính adapter là giao diện ghép


nối bus(bus interface) dùng để truyền thông
với CPU về thông tin điều khiển và giao
diện ghép nối đường truyền(link interface)
có trách nhiệm triển khai giao thức tầng
LKDL.
- Bên cạnh đóng gói(framing) và de-framing,
card mạng cung cấp cả phát hiện lỗi, truy
cập ngẫu nhiên...

5.2 Kĩ thuật phát hiện và sửa lỗi:


- Đường điện thoại có tỷ lệ lỗi
cao thì mạng không dây
còn tỷ lệ cao hơn nhiều. Mà
2 mạng này ngày càng phổ
biến nên các phương pháp
chữa lỗi càng được phát
triển.
- Lỗi thường có xu hướng
xuất hiện theo cụm chứ
không xuất hiện 1,2 bit 1. Ví
dụ gói 1000 bit và tỷ lệ lỗi
0,1%. Nếu chỉ xuất hiện lỗi
1 bit thì gói nào cũng sẽ có
lỗi. Nhưng lỗi xuất hiện cụm
100 bit nên trung bình 100
gói mới có 1,2 gói lỗi. Lỗi
theo cụm cũng khó sửa
hơn.
- Tầng LDKL có thể vừa phát hiện và sửa lỗi ở mức bit.
- Để phát hiện lỗi, ngoài dữ liệu D sẽ gửi thêm một số bit EDC để phát hiện và sửa lỗi.
Bên kia sẽ nhận D’ và EDC’ và ta sẽ so sánh xem có giống lúc gửi hay không. Chú ý
chỉ là phát hiện lỗi thôi, vì đôi lúc bit phát hiện lỗi không phát hiện ra lỗi dù có. Ta cần
phương pháp có xác xuất phát hiện cao nhất. Ta hãy xem xét 1 số kĩ thuật.
5.2.1 Kiểm tra tính chẵn lẻ:

- Giả sử có d bit. Bên sẽ bổ sung 1 bit sao cho có d + 1 bit và số


lượng bit 1 là chẵn (hoặc thích thì chọn lẻ) (VD hình 5.5). Việc
kiểm tra thì chỉ cần đếm lại xem còn chẵn hay không. Nhưng
nếu có 2 bit sai thì vẫn còn chẵn nên chỉ 50% xác định lỗi.
- Cách tiếp theo là ta có thể chia thành mảng 2 chiều. Sau đó
thêm 1 bit vào mỗi hàng và mỗi cột để tổng đều chẵn(hoặc lẻ)
(VD hình 5.6). Khi đó ta tính i + j + 1 bit phát hiện ra sẽ dùng để
phát hiện và sửa lỗi.
- Nếu chỉ 1 bit bị lỗi thì cách này còn xác định được lỗi ở đâu và
sửa(1 bit bị lỗi thì 1 hàng, 1 cột sẽ sai).
- Nếu 2 bit lỗi trở lên thì ta chỉ phát hiện được.
- Khả năng phát hiện lỗi và sửa được gọi là FEC(Forward Error
Correction) có ưu điểm là không phải truyền lại.

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.

5.2.3 Kiểm tra dư thừa vòng (CRC):


- Đầu tiên 2 bên sẽ thống nhất
đa thức sinh(generator) kí hiệu
là G có r + 1 bit. Bit to nhất
ngoài cùng phải nhận giá trị 1.
Bên gửi sẽ xác định R có r bit
rồi ghép với D bằng phép toán
M = D * 2^r XOR R(như trong
hình).
R được xác định sao cho M chia hết
cho G theo cơ số 2.

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.

5.3.1 Giao thức phân chia kênh truyền (channel partitioning):


● Phân kênh theo thời gian(TDM):
- Giả sử kênh có N nút, tốc độ kênh truyền R bps. TDM chia thời gian thành các
khoảng, mỗi khoảng lại chia thành N khe thời gian. Mỗi khe sẽ được cấp phát cho 1
nút. Khi có dữ liệu cần gửi thì nút truyền dữ liệu trong khe thời gian của mình. Tất
nhiên khoảng thời gian được chọn sao cho một nút có thể truyền trọn vẹn frame.
- Ưu điểm tránh xung đột, đảm bảo công bằng, mỗi nút truyền với tốc độ R/N.
- Nhược điểm là giả sử ví dụ bữa tiệc chỉ có 1 người nói chủ yếu, thì TDM khá không
phù hợp với “bữa tiệc” này vì sự lãng phí.
● Phân kênh theo tần số(FDM):
- Tương tự như TDM, FDM chia tần số ra (mỗi tần số có băng thông R/N). Vì thế FDM
tạo N kênh truyền nhỏ tốc độ R/N bps. Ưu nhược điểm tương tự TDM.
● Giao thức chia mã(CDMA):
- CDMA cấp cho mỗi nút 1 mã khác nhau, sau đó nút sử dụng mã đó để mã hóa dữ
liệu gửi đi. CDMA cho phép nhiều nút gửi đồng thời, miễn là nút nhận biết mã nút
gửi. CDMA được sử dụng cho quốc phòng vì đặc tính chống nhiễu, giờ thì đã phổ
biến cho dân sự.
5.3.2 Giao thức truy cập ngẫu nhiên (random access):
- Trong giao thức truy cập ngẫu nhiên, các nút luôn truyền với tốc độ cao nhất R bps.
Khi có xung đột thì các nút liên quan sẽ truyền lại cho đến khi frame đến đích an
toàn. Nhưng các nút không nhất thiết truyền lại ngay mà đợi thời gian ngẫu nhiên
nào đó (các thời gian ngẫu nhiên của các nút độc lập với nhau). Vì vậy sau mỗi xung
đột, xác suất 2 nút truyền lại một lúc giảm.
● Giao thức Slotted ALOHA:
- Tất cả frame có chính xác L bit. Thời gian chia thành các khoảng L/R s (Khi mỗi
frame truyền với tốc độ tối đa sẽ truyền đủ L bit).
- Nút bắt đầu truyền frame tại đầu mỗi khoảng. Thời gian được đồng bộ hóa ở các nút
- Với mỗi nút, khi có frame cần gửi, nút sẽ đợi đến đầu mỗi khoảng thời gian. Nếu gửi
thành công thì tiếp tục với frame khác. Nếu có xung đột thì sẽ sắp xếp để gửi lại đầu
khoảng thời gian sau với xác suất p (nó như kiểu một đồng xu có xác suất mặt ngửa
là p, mặt úp là 1 - p, mỗi lượt ta tung đồng xu xem nếu ra ngửa thì gửi).
- Ưu điểm: Liên tục gửi frame ở tốc độ cao nhất nhưng phải yêu cầu đồng bộ thời
gian. Khi chỉ một nút tích cực “nói”, slotted ALOHA hoạt động rất tốt.
- Nhưng nhiều nút tích cực sẽ xuất hiện xung đột tại nhiều khoảng thời gian gây lãng
phí. Sẽ có nhiều thời gian “rỗi” dù có thể có nhiều nút cần gửi(do tung xác suất đều
ra không gửi)(hình dưới). Vậy giờ ta sẽ quan tâm hiệu suất slotted ALOHA (giả sử N
nút).
Xác suất để 1 nút nào đó truyền nhưng các
nút khác không truyền là p ¿. Có N nút nên
xác suất là Np ¿. Khi N tiến đến vô cùng thì
hiệu suất lớn nhất là 1/e = 0.37. Vì vậy tốc độ
truyền của kênh hiệu quả là 0.37R bps (tức là
mỗi frame truyền với tốc độ R, nhưng về tổng
thể thì không vượt quá 0.37R).
● ALOHA:
- Giao thức ALOHA không chia khoảng thời gian. Nếu có dữ liệu cần gửi đi, nút ngay
lập tức gửi. Nếu có xung đột, nút ngay lập tức truyền lại với xác suất p. Tương tự ta
tính hiệu suất(cách tính người tóm tắt lược bỏ) ra bằng 1/2e bằng ½ slotted ALOHA.
● CSMA - Đa truy cập cảm nhận sóng mang:
- Trong 2 giao thức ALOHA ở trên thì các nút quyết
định độc lập với nhau. Như vậy các nút sẽ như
những vị khách bất lịch sự, nói bất chấp việc có
người đang nói. CSMA không vậy. CSMA tuân thủ 2
quy tắc “nghe trước khi nói” và “nếu ai đó nói cùng
lúc thì tạm ngừng”.
- Nếu có frame trên kênh truyền thì nút sẽ chờ một
khoảng thời gian ngẫu nhiên. Nếu kênh truyền cảm
nhận là rỗi thì bắt đầu truyền frame. Khi nút đang
truyền vẫn phải tiếp tục “lắng nghe”. Nếu phát hiện
xung đột thì sẽ dừng lại và sử dụng giao thức nào đó
để quyết định khi nào thử truyền tiếp.
- Thế nhưng vẫn xảy ra xung đột. Như hình trên trang
trước, tại thời điểm t0, B thấy đường truyền rỗi nên
gửi. Tại t1, tín hiệu của B chưa lan tỏa tới D nên D
vẫn thấy rỗi nên cũng truyền. Ngay sau đó tín hiệu B xung
đột với D. Ta thấy rằng đỗ trễ lan tỏa là rất quan trọng, thời
gian trễ càng lớn càng khó phát hiện nút khác đang truyền.
- Hình bên thì chỉ là khi phát hiện xung đột thì cả hai nút
dừng truyền. Thêm khả năng phát hiện xung đột sẽ là giao
thức truy cập tăng hiệu suất. Giao thức Ethernet trình bày
sau sẽ là CSMA có phát hiện xung đột.

5.3.3 Giao thức truy cập lần lượt(Taking turns)


- Giao thức ALOHA và CSMA chỉ có tính chất nếu có duy nhất 1 nút truyền thì nút sẽ
truyền với tốc độ R. còn tính chất nếu có M nút truyền thì mỗi nút sẽ truyền với tốc
độ R/M thì không có và các nút xảy ra xung đột nhiều. Vì vậy có các giao thức truy
cập lần lượt
● Giao thức truy cập kiểu hỏi vòng:
- Có một nút điều phối, hỏi lần lượt từng nút theo thứ tự vòng tròn. Đầu tiên thông báo
nút thứ nhất có thể truyền dữ liệu. Sau khi nút thứ nhất truyền xong, nút điều phối
thông báo cho nút thứ 2…
- Giao thức hỏi vòng loại trừ sự xung đột hay các khoảng thời gian không được sử
dụng như ALOHA hay CSMA. Nhưng có nhược điểm là độ trễ vòng khi nút điều phối
phải báo cho nút nào đó có thể truyền. Ví dụ nếu chỉ một nút nào đó muốn truyền thì
không thể truyền tốc độ tối đa R được vì nút điều phối báo cho nút truyền. Và nhược
điểm thứ 2 quan trọng hơn là nút điều phối sập thì hệ thống sập.
● Giao thức truy cập thẻ bài:
- Không có nút điều phối. Một frame thẻ bài được các nút lần lượt trao đổi với nhau
theo thứ tự (1 gửi cho 2, 2 gửi cho 3, …. ,N - 1 gửi cho N, N gửi cho 1). Khi một nút
có thẻ bài, nó sẽ giữ thẻ bài lại và truyền dữ liệu. Khi dữ liệu truyền xong nó mới
truyền thẻ bài sang nút kế tiếp.
- Giao thức thẻ bài phân tán và có hiệu suất cao. Tuy nhiên một nút sập thì hệ thống
cũng sập. Hoặc một nút làm mất thẻ bài hoặc không chuyển tiếp thẻ bài thì cần cơ
chế chuyển thẻ bài mới vào lưu thông.

5.3.4 Mạng cục bộ LAN:


- Là mạng giới hạn tại một khu vực địa lý nhỏ. Mạng LAN kết nối ra Internet thông qua
router. Mạng LAN là kênh truyền duy nhất giữa các máy tính và router trong mạng
nên cần giao thức đa truy cập. Tốc độ truyền của mạng LAN rất cao(100Mbps ->
1Gbps). Có 2 công nghệ mạng LAN là Ethernet và công nghệ dựa trên công nghệ
thẻ bài gồm token-ring và FDDI. Ethernet phổ biến hiện nay ở 5.5.
- Trong mạng token-ring, N nút mạng được kết nối vào vòng bằng đường truyền trực
tiếp. Khi nút nhận thẻ bài có nhu cầu gửi, frame sẽ được gửi trên toàn bộ vòng. Nút
gửi sẽ có trách nhiệm loại bỏ frame trên vòng khi cần.
- FDDI thiết kế cho mạng nội bộ khu vực lớn nút nhận sẽ loại bỏ frame ra khỏi vòng.
5.4 Địa chỉ LAN và ARP.
Nếu mỗi nút mạng muốn gửi định danh tới một nút nào đó trong mạng LAN mà không muốn
gửi cho tất cả, ta cần có địa chỉ để gửi. Các adapter trong mạng sẽ đều được gửi nhưng sẽ
xem địa chỉ của frame có trùng của mình không. Nếu không thì các nút sẽ loại bỏ frame, có
thì chuyển lên tầng trên.

5.4.1 Địa chỉ LAN:

- Không phải nút có địa


chỉ LAN mà adapter
mới có. địa chỉ LAN có
nhiều tên gọi khác như
địa chỉ vật lý, địa chỉ
Ethernet… Hầu hết các
mạng LAN, địa chỉ có 6
byte, được biểu diễn
dạng cơ số 16, mỗi
byte ứng với 1 cặp thập
lục phân(xem ví dụ
trong hình bên).
- Địa chỉ mạng LAN cũng
cố định, ghi cứng vào
ROM khi sản xuất.
- Địa chỉ vật lý cấu trúc như số chứng minh nhân dân mỗi người: phẳng(không phân
cấp) và không thể thay đổi, là duy nhất. Điều này khác với địa chỉ IP có tính phân
cấp, và sẽ thay đổi khi chuyển sang mạng khác.
- Đôi khi, adapter muốn gửi địa chỉ tới tất cả nút trong mạng, khi đó adapter sẽ sử
dụng địa chỉ FF-FF-FF-FF-FF-FF thì các máy sẽ đều có thể nhận biết.

5.4.2 Giao thức giải mã địa chỉ (ARP)


- Do tồn tại hai kiểu địa chỉ nên cần giao thức biến đổi giữa chúng. Giả sử nút có IP
222.222.222.220 muốn gửi tới 222.222.222.222. Để gửi trên mạng LAN(vì 2 nút
cùng mạng) ta cần xác định địa chỉ vật lý của 222.222.222.222. Ta sẽ chuyển địa chỉ
IP tới module ARP sau đó module sẽ trả lại địa chỉ vật lý tương ứng với địa chỉ IP.
- ARP xác định địa chỉ vật lý từ địa chỉ IP. Về phần nào đó ở chức năng, ARP giống
DNS. Nhưng ARP chỉ chuyển đổi địa chỉ cho những nút trong mạng LAN của nó.
Nếu cố gắng chuyển đổi IP thành vật lý 1 địa chỉ không thuộc mạng LAN sẽ báo lỗi.

- 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.1 Những khái niệm cơ bản của Ethernet:


Ethernet có nhiều dạng (điểm khác nhau giữa các loại Ethernet):
+ sử dụng cáp đồng trục hay cáp quang.
+ có topo dạng bus hay dạng sao.
+ truyền liệu với tốc độ 10Mbps, 100Mbps hay 1Gbps.
Nhưng dù khác như nào, Ethernet đều có 1 số đặc trưng:
● Cấu trúc frame Ethernet:
- Các công nghệ Ethernet đều có chung cấu trúc frame. Xét máy tính A có địa
chỉ vật lý AA-AA-AA-AA-AA-AA gửi gói dữ liệu IP đến máy B có địa chỉ vật lý
là BB-BB-BB-BB-BB-BB trên cùng một mạng cục bộ Ethernet. Adapter gửi sẽ
đặt gói IP và trong frame Ethernet và gửi xuống tầng vật lý. Adapter nhận sẽ
frame từ tầng vật lý, lấy ra gói dữ liệu IP và chuyển lên tầng trên.
Ta sẽ chỉ nghiên cứu 6 trường trong hình trên:
- Trường dữ liệu (46 - 1500 byte): chứa gói dữ liệu IP. Trong Ethernet, MTU
= 1500 byte. Nếu gói dữ liệu vượt quá 1500 byte thì máy tính phải chia gói
dữ liệu ra. Kích thước tối thiểu là 46 byte. Nếu gói dữ liệu < 46 byte thì
trường dữ liệu phải chèn thêm một số dữ liệu giả cho đủ 46 byte. Bên gửi
nhận sẽ dựa vào trường độ dài để loại bỏ phần thêm vào.
- Địa chỉ nguồn và đích (6 byte và 6 byte): địa chỉ vật lý adapter gửi và nhận.
Khi adapter B nhận được frame, nó sẽ kiểu tra xem địa chỉ nhận có trùng địa
chỉ của B không hoặc là có phải địa chỉ quảng bá LAN(FF-FF-FF-FF-FF-FF)
không. Nếu không nó sẽ loại bỏ frame. Có thì chuyển lên tầng mạng.
- Trường kiểu (2 byte): Ethernet hỗ trợ nhiều giao thức tầng mạng khác nhau,
không chỉ IP. Trường kiểu như trường protocol trong gói IP hay trường số
hiệu cổng trong tầng giao vận. Tất cả mục đích là kết nối giao thức tầng dưới
với trên.
- Mã kiểm tra dư thừa vòng (Cyclic Redundancy Check - CRC): như mục
5.2.3 dùng để phát hiện lỗi. Có nhiều nguyên nhân gây lỗi như suy hao năng
lượng điện, tỏa nhiệt trong card mạng… Khi tạo frame máy A tính CRC dựa
trên dữ liệu và gửi đi. Máy B nhận được tính lại và check.
- Lời mở đầu (preamble) (8 byte): Frame Ethernet bắt đầu với trường
preamble 8 byte. 7 byte đầu là 10101010. Byte cuối là 10101011. 7 byte đầu
làm nhiệm vụ đánh thức adapter nhận và động bộ hóa đồng hồ nhận và gửi
(kiểu không có dữ liệu nào có 7 byte liên tiếp như vậy nên adapter dùng nó
để xác định bắt đầu dữ liệu, còn đồng bộ hóa đồng hồ thì chưa hiểu; sách thì
viết là dữ liệu có thể truyền với nhiều loại tốc độ khác nhau nên Adapter nhận
đồng bộ bằng cách chốt tất cả các bit trong 7 byte đầu). Hai byte cuối cùng
trong byte thứ 8(2 số 11 liền nhau) báo cho adapter biết các byte sau là đến
địa chỉ nguồn, đích… Adapter phát hiện frame truyền xong khi không thấy
dòng điện.
● Dịch vụ không hướng nối, không tin cậy:
- Dịch vụ không hướng nối tương tự như dịch vụ IP ở tầng 3 và dịch vụ UDP ở
tầng 4.
- Khi adapter B nhận được gói dữ liệu, nó không gửi phản hồi cho A. Nếu phát
hiện lỗi khi kiểm tra CRC, adapter B chỉ loại bỏ frame. Vì vậy Ethernet cung
cấp dịch vụ không tin cậy.
- Nếu có một số frame bị loại bỏ, tầng ứng dụng biết được điều đó phụ thuộc
vào dùng UDP hay TCP. Ethernet chỉ có nhiệm vụ truyền dữ liệu. Nếu TCP
yêu cầu truyền lại dữ liệu, Ethernet không biết điều đó mà chỉ như đang
truyền gói mới.
● Giải tần cơ sở và mã hóa Manchester:
Ethernet dùng băng tần cơ sở, nghĩa là gửi tín
hiệu số trực tiếp vào kênh truyền dùng chung.
Ethernet sử dụng mã hóa Manchester như hình
bên. Lý do dùng mã hóa này vì đồng hồ bên
gửi và bên nhận không đồng bộ. Sau khi đồng
hồ nhận được đồng bộ với gửi, phía nhận có
thể xác định từng bit là 0 hay 1 (đoạn này chép
sách chứ không hiểu gì :<<).
5.5.2 Giao thức đa truy cập Ethernet - CSMA/CD
(CSMA/CD - Carrier Sense Multiple Access with Collision Detect: Đa truy cập nhận biết sóng
mang với khả năng phát hiện lỗi)
- CSMA/CD sử dụng những cơ chế sau:
+ Adapter bắt đầu truyền tại bất kỳ thời điểm nào(tức không chia khoảng).
+ Adapter không bao giờ truyền frame khi adapter khác đang truyền (cảm nhận
sóng mang).
+ Adapter đang truyền sẽ chấm dứt khi phát hiện xung đột.
+ Trước khi bắt đầu truyền lại, adapter đợi một khoảng thời gian ngẫu nhiên.
- Những cơ chế giúp hiệu suất CSMA/CD cải thiện khá nhiều so với slotted ALOHA.
Nếu thời gian truyền giữa 2 nút rất nhỏ, CSMA/CD có thể đạt hiệu suất 100%.
- Cơ chế số 2 và số 3 yêu cầu adapter Ethernet có khả năng cảm nhận adapter khác
đang truyền và phát hiện xung đột.
- Trên một adapter, giao thức CSMA/CD làm việc như sau:
+ Adapter nhận PDU tầng mạng, tạo frame và đặc frame và bộ đệm adapter.
+ Nếu adapter cảm nhận kênh truyền(không thấy tín hiệu đến) thì bắt đầu
truyền. Nếu thấy bận thì đợi khi nào không có tín hiệu thì truyền.
+ Trong khi truyền, adapter vẫn cảm nhận xem có năng lượng tín hiệu từ
adapter khác. Nếu có tín hiệu từ adapter khác thì nó dừng lại không truyền và
gửi đi tín hiệu báo nhiễu 48 bit.
+ Nếu truyền xong frame mà không phát hiện năng lượng tín hiệu khác thì coi
như truyền thành công.
- Sau khi dừng phát và gửi tín hiệu báo nhiễu, adapter sẽ thực hiện thuật toán
exponential backoff. Khi truyền frame nào đó bị xung đột n lần, adapter random 1 số
K trong (0, 1, 2, …. 2m−1) với m = min(n, 10). Sau đó sẽ K * 512 / E. Với E là tốc độ
truyền tối đa của Ethernet(có thể 10Mbps, 100Mbps, 1Gbps).
- Sau đây sẽ giải thích cặn kẽ CSMA/CD:
+ Mục đích gửi thêm 48 bit báo nhiễu là đảm bảo tất các adapter đang truyền
khác phát hiện xung đột. Giả sử A truyền và sắp đến B thì B không thấy tín
hiệu thì B cũng truyền. Nhưng ngay sau đó A đến và B chỉ truyền được vài bit
trước khi dừng. Vài bit đó không đủ năng lượng để đến A và các adapter
khác nên không ai biết xung đột.
+ Tiếp theo xét thuật toán exponential backoff. Thời gian truyền đi 1 bit rất nhỏ,
với tốc độ Ethernet 10Mbps thì truyền 1 bit mất 10^-7 giây (hay 1e-7 giây).
Giả sử adapter lần đầu truyền đi frame và phát hiện xung đột. Sau đó adapter
sẽ chọn Ktrong khoảng {0,1}. Chọn K = 0 tức là truyền lại ngay. Chọn K = 1
tức là truyền lại sau (K * 512 / E) = (512 / 1e7) = 51,2 * 1e-6 s. Sau lần xung
đột thứ 2 và 3, K được chọn trong {0,1,2,3}, {0,1,2,3,4,5,6,7} cho đến cùng
vẫn còn xung đột thì chọn từ 0 -> 1023. Tổng giá trị random K tăng theo lũy
thừa 2.
+ Vậy tại sao phải sử dụng thuật toán này? Lý do là khi thấy xung đột, adapter
không hình dung được có bao adapter liên quan. Vì vậy nếu cố định thời gian
truyền lại hay cố định khoảng K thì khả năng xung đột đến vô hạn. Vì vậy việc
“dò” qua cách tăng K theo lũy thừa 2 là hoàn toàn hợp lý, tăng hiệu suất.
- Hiệu suất Ethernet:
Sách ném thẳng mặt công thức sau:
Với t ¿❑là thời gian lớn nhất năng lượng tín hiệu lan truyền giữa 2 adapter. t trans❑là thời gian
truyền đi frame với tốc độ cực đại. Nếu t ¿❑tiến đến 0 thì hiệu suất = 1(hiển nhiên). Khi t trans❑
tiến đến vô cùng thì hiệu suất cũng tiến đến 1. Vì khi 1 gói tin chuyển trong mạng đến vô
cùng thời gian thì tức là không có gói tin nào khác của mạng gửi gây xung đột, nên hiệu
suất là 1.

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 hub, bridge và switch:


Cơ quan có thể có nhiều bộ phận con và bộ phận con có 1 mạng LAN. Cơ quan muốn kết
nối các mạng LAN với nhau. Ta có thể kết nối các LAN bằng hub, bridge, switch.

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ý.

- Hình bên mô tả mạng LAN


3 khoa của trường. Mỗi
khoa 1 mạng 10BaseT với
các adapter kết nối với
hub. Hub thứ tự gọi là
backbone hub(hub trục
chính) kết nối điểm nối
điểm với các hub của
khoa. Ta thấy hub được tổ
chức trong hệ thống phân
cấp.
- Coi mỗi hub của khoa và các máy tính nối với hub đó là 1 LAN segment.
- Mạng LAN liên kết trục chính bằng hub có nhiều ưu điểm
+ Đầu tiên và quan trọng nhất là kết nối các khoa với nhau.
+ Mở rộng khoảng cách tối đa giữa các bất cứ nút nào trong LAN.
+ Thiết kế nhiều tầng làm giảm nguy cơ sụp đổ (có hub của khoa nào đó trục
trặc thì hub trục chính sẽ chặn ngay).
- Một số nhược điểm:
+ Đầu tiên và quan trọng nhất, miền xung đột của từng khoa thành miền xung
đột của cả hệ thống. Tức là 1 khoa gửi dữ liệu xảy ra xung đột thì 2 khoa còn
lại cũng bị trong tình trạng xung đột (vì hub gửi hết dữ liệu cho mọi nơi). Điều
này dẫn đến thông lượng cực đại trong ví dụ trên giảm từ 30 Mbps xuống 10
Mbps.
+ Nếu các khoa sử dụng Ethernet khác nhau thì không kết nối được vào hub
trung tâm.
+ Mỗi công nghệ Ethernet có giới hạn nút, khoảng cách tối đa 2 nút, số tầng tối
đa nên cách kết nối hub kiểu này bị hạn chế.
5.6.2 Bridge:
- Bridge có thể xử lý frame nên nó là thiết bị tầng LKDL. Thực tế bridge chính là thiết
bị chuyển mạch gói thực hiện chuyển vào lọc frame. Khi frame đến từ một cổng nào
đó, bridge không chuyển hết tất cả các cổng mà căn cứ theo địa chỉ vật lý để gửi.

Bridge khắc phục hết các vấn


đề của hub nên trên:
- Bridge cho phép truyền
thông giữa các khoa
như cô lập miền xung
đột ở mỗi khoa. Có thể
kết nối nhiều công
nghệ LAN khác nhau.
Không bị giới hạn
khoảng cách tối đa, số
tầng.

● Bridge forwarding và Filtering (chuyển tiếp và lọc):


- Bridge có khả năng xác định dữ liệu chuyển
tiếp đến cổng nào hoặc loại bỏ luôn frame.
Bridge thực hiện chuyển tiếp và lọc qua bảng
bridge. Bảng bridge được xây dựng dần và
không nhất thiết chứa hết mọi nút trong mạng.
Mỗi hàng của bảng gồm có địa chỉ vật lý của
nút, cổng bridge dẫn đến nút đó, thời điểm lập
hàng đó trong bảng.
(hình bên là bảng bridge của hình trên)

- 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.

- router và bridge đều là thiết


bị chuyển gói kiểu store-
and-forward (kiểu cho chờ ở
bộ đệm rồi chuyển tiếp).
Nhưng điểm khác biệt là
bridge dùng địa chỉ vật lý và
là thiết bị chuyển mạch gói ở
tầng 2.
- Người quản trị mạng có thể
chọn router và bridge để cài
đặt kết nối. Cả 2 đều cô lập
xung đột. Vậy ta cần làm rõ ưu nhược điểm bridge và router.
- Về bridge: “cắm vào là chạy” - tính năng được các nhà quản trị mạng yêu thích (ai
cũng lười thôi). Bridge cũng lọc và chuyển gói dữ liệu cao. Bridge cũng chỉ phải xử lý
gói dữ liệu của tầng 2(như trong hình trên). Nhưng giao thức spanning tree hạn chế
topo toàn mạng. Frame sẽ chỉ được truyền trên đường đi duy nhất, dù tồn tại đường
đi ngắn hơn, hay đường đi không xung đột. Bridge không đưa ra sự bảo vệ cho việc
spam. Nếu máy tính bị lỗi và spam frame liên tục thì mạng sẽ sập.
- Về router: Địa chỉ mạng phân cấp, gói dữ liệu sẽ không quay vòng ngay cả khi có
nhiều đường đi (nếu có quay vòng thì cũng có trường TTL). Vì vậy gói dữ liệu có thể
di chuyển theo đường dẫn tốt nhất. Router cũng có thể tạo tường lửa(firewall) giúp
chống lại lại sự phát tán liên tục ở tầng 2. Yếu điểm duy nhất là không cắm vào là
chạy - cần cấu hình địa chỉ IP cho chúng và các máy kết nối đến, thời gian xử lý lâu
hơn vì xử lý cả tiêu đề tầng 3.
- Thông thường một mạng nhỏ vài trăm máy tính trong LAN segment thì dùng bridge.
Mạng lớn hơn thì cần tới nhiều router trong mạng bên cạnh bridge.
● Kết nối LAN segment qua trục chính (backbone).

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.

● Chuyển mạch xuyên suốt (cut - through)


- Khi nhận được dữ liệu ở cổng vào, switch sẽ xem cổng ra có đang rỗi hay không.
Nếu rỗi thì sẽ truyền phần dữ liệu đến trước luôn mà không cần đợi gói tin đến đầy
đủ. Đấy là điểm khác biệt lớn nhất so với store-and-forward. Nếu cổng ra không rỗi
thì sẽ đợi giống store-and-forward. Nếu cổng ra nối với LAN segment thì switch phải
lắng để kiểm tra kênh truyền rỗi.

5.7 Mạng LAN không dây(WLAN): (KHÔNG CÒN TRONG


CHƯƠNG TRÌNH HIỆN HÀNH)

5.7.1 Giới thiệu chung:

- Các đặc tả về WLAN ứng


với tầng vật lý và tầng
LKDL của mô hình OSI.
Thường tầng vật lý xác
định kênh truyền và độ lớn
tín hiệu. Các chuẩn WLAN
chủ yếu sử dụng tia hồng
ngoại hoặc dải phổ tự do.
Dải phổ này còn được gọi
là dải ISM (Industry,
Science, Medicine) dùng
cho công nghiệp, khoa
học, y tế.
- Nhiệm vụ tầng liên kết dữ liệu là tổ chức truy cập đường truyền, đồng bộ hóa frame,
kiểm soát tài nguyên. Cơ chế truy cập thực hiện chức năng điều phối phân tán(DCF)
ở tất cả các trạm thu phát không dây. Có 2 kiểu thiết bị là trạm di động(điện thoại,
laptop) và điểm truy cập(Access Point - AP)(là cái cục wifi hay thấy ở nhà). Điểm truy
cập có tác dụng chuyển dữ liệu giữa các trạm di động hay giữa trạm di động với
mạng LAN cố định (tức là kiểu trao đổi dữ liệu giữa các thiết bị kết nối wifi hay trao
đổi dữ liệu giữa wifi và mạng LAN có dây, để lấy Internet từ mạng LAN có dây chẳng
hạn).
- Có 2 kiểu mạng WLAN là có cơ sở hạ tầng và không có
cơ sở hạ tầng(adhoc).
● Adhoc WLAN:
Hai trạm kết nối với nhau trực tiếp không cần thông qua AP. Các trạm làm việc có thể đóng
vai trò server để chuyển tiếp dữ liệu.

● 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.7.1 Lớp giao thức IEEE 802.11


- Trong IEEE 802.11, tầng MAC xác định cách
thức phân phối kênh truyền(tại 1 thời điểm
nút nào được quyền truyền). Tầng phía trên
MAC - LLC(logical link control - xem hình đầu 5.7.1) có nhiệm vụ che dấu các đặc
điểm tầng MAC với tầng mạng.
● Tầng con MAC(medium access control):
- Chức năng chính của LAN là chia sẻ tài nguyên máy tính trong một khu vực nhỏ. Vì
vậy nhiệm vụ chính của MAC là xác định cụ thể từng giao diện của các máy tính trên
mạng. Bên cạnh tổ chức truy cập kênh truyền với cơ chế đa truy cập, MAC còn có
thể cấu hình mạng và truy cập kênh truyền nhanh tin cậy, công bằng.
● Cấu hình mạng:
- Mạng LAN có dây thì sẵn topo mạng rồi. Tuy nhiên đối với mạng không dây thì là
việc quan trọng. Phải ghép nối các máy tính thành nhóm có thể định danh được.
- BSA(Basic Service Area) là một khu vực có thể nhiều máy tính trạm di động. Các
máy trong BSA gọi là Service Set(BSS). Các máy được kết nối với AP. Nhiều BSS
kết nối với nhau tạo thành Extend Service Set(ESS). Tất cả các trạm trong BSS
dùng 1 tốc độ truyền và một cấu trúc dữ liệu PDU (minh họa 5.36).
● Truy cập kênh truyền trong IEEE 802.11
- Tầng MAC cung cấp 2 dịch vụ: truy cập có tranh chấp(DCF) và không tranh chấp
(PCF). Những dịch vụ này được triển khai trên nền tầng vật lý, che dấu với tầng
mạng.
- DCF sử dụng cơ chế đa truy cập có tránh tắc nghẽn(CSMA/CA). PCF được cài trên
nền DCF và cơ chế hỏi vòng(như đã học, một trạm trung tâm lần lượt hỏi các trạm
mạng muốn truyền không).
(LOAN BÙI PHÁT HIỆN CHƯƠNG TRÌNH MỚI BỊP KHÔNG CÓ WLAN NÊN NGỪNG TÓM
TẮT).

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)

5.9 VLAN - Virtual LAN: (TỰ HỌC).

Index of /~michael/kr1999

You might also like