Sử dụng cơ chế phát hiện lỗi nhờ checksum, số thứ tự, biên nhận ACK và truyền lại gói dữ liệu - đã được phát triển trong giao thức rdt 2.2 - cho phép chúng ta giải quyết được vấn đề thứ
Trang 1Câu 1: Mô hình OSI và chức năng của từng từng và so sánh TCP và OSI:
Tầng 7: Tầng ứng dụng (Application layer) Nó cung cấp phương tiện cho người dùng truy nhập các thông tin và dữ liệu trên
mạng thông qua chương trình ứng dụng Một số ví dụ về các ứng dụng trong tầng này bao gồm Telnet, giao thức truyền tập tin FTP và giao thức truyền thư điện tử SMTP, DNS …
Tầng 6: Tầng trình diễn (Presentation layer) Tầng trình diễn biến đổi dữ liệu để cung cấp một giao diện tiêu chuẩn cho tầng ứng dụng Nó thực hiện các tác vụ như mã hóa dữ liệu, nén dữ liệu Tầng 5: Tầng phiên (Session layer) Tầng phiên kiểm soát các (phiên) hội thoại giữa các máy tính Tầng này thiết lập, quản lý
và kết thúc các kết nối giữa trình ứng dụng địa phương và trình ứng dụng ở xa Tầng 4: Tầng giao vận (Transport Layer) Tầng giao vận cung cấp dịch vụ chuyên dụng chuyển dữ liệu giữa các người dùng tại đầu cuối, nhờ đó các tầng trên không phải quan tâm đến việc cung cấp dịch vụ truyền dữ liệu đáng tin cậy và hiệu quả Tầng giao vận kiểm soát độ tin cậy của một kết nối được cho trước Một số giao thức có định hướng trạng thái và kết nối (state and connection orientated) Có nghĩa là tầng giao vận có thể theo dõi các gói tin và truyền lại các gói bị thất bại Một ví dụ điển hình của giao thức tầng 4 là TCP Tầng này là nơi các thông điệp được chuyển sang thành các gói tin TCP hoặc UDP Ở tầng 4 địa chỉ được đánh là address ports, thông qua address ports để phân biệt được ứng dụng trao đổi
Tầng 3: Tầng mạng (Network Layer) Tầng mạng cung cấp các chức năng và qui trình cho việc truyền các chuỗi dữ liệu có độ
Trang 2dài đa dạng, từ một nguồn tới một đích Tầng mạng thực hiện chức năng định tuyến, Các thiết bị định tuyến (router) hoạt
động tại tầng này
Tầng 2: Tầng liên kết dữ liệu (Data Link Layer) Tầng liên kết
dữ liệu cung cấp các phương tiện có tính chức năng và quy trình
để truyền dữ liệu giữa các thực thể mạng, phát hiện và có thể sửa chữa các lỗi trong tầng vật lý nếu có Cách đánh địa chỉ
mang tính vật lý, nghĩa là địa chỉ (địa chỉ MAC) được mã hóa cứng vào trong các thẻ mạng (network card) khi chúng được sản xuất Tầng liên kết dữ liệu có thể được chia ra thành 2 tầng con: tầng MAC (Media Access Control - Điều khiển Truy nhập
Đường truyền) và tầng LLC (Logical Link Control - Điều khiển Liên kết Lôgic)
Tầng 1: Tầng vật lí (Physical Layer) Tầng vật lí định nghĩa tất
cả các đặc tả về điện và vật lý cho các thiết bị Trong đó bao gồm bố trí của các chân cắm (pin), các hiệu điện thế, và các đặc
tả về cáp nối (cable) Các thiết bị tầng vật lí bao gồm Hub, bộ lặp (repeater), thiết bị tiếp hợp mạng (network adapter)
Các điểm giống nhau:
- Cả hai đều là phân lớp
- Cả hai đều có lớp ứng dụng, qua đó chúng có nhiều dịch vụ khác nhau
- Cả hai có các lớp mạng và lớp vận chuyển có thể so sánh được
- Kỹ thuật chuyển mạch gói được chấp nhận
Trang 3- Chuyên viên lập mạng cần phải biết cả hai
*Các điểm khác nhau:
- Mô hình TCP/IP gọn nhẹ hơn mô hình tham chiếu OSI, đồng
Trong khi đó, mô hình TCP/IP, ngoài giao thức chính của lớp Vận chuyển là TCP (Transmission Control Protocol), còn cung cấp thêm giao thức UDP (User Datagram Protocol) để thích ứng với các ứng dụng cần tốc độ cao
- TCP/IP tập hợp các lớp trình bày và lớp phiên vào trong lớp ứng dụng của nó
- TCP/IP tập hợp lớp vật lý và lớp liên kết dữ liệu trong OSI thành một lớp
- Các giao thức TCP/IP là các chuẩn cơ sở cho Internet phát
triển, như vậy mô hình TCP/IP chiếm được niềm tin chỉ vì các giao thức của nó Ngược lại, các mạng thông thường không
được xây dựng dựa trên nền OSI, ngay cả khi mô hình OSI được dùng như một hướng dẫn Nói cách khác nó là một văn phạm nghèo và có thiếu sót
Trang 4Câu 2 : Mô tả Giao thức truyền tin tin cậy dừng và chờ
(stop-and-wait) trong các trường hợp sau:
a môi trường truyền tin tin cậy b môi trường truyền tin có lỗi bit c môi trường truyền tin có lỗi bit và mất gói tin
1 môi trường truyền tin tin cậy
đặc điểm: bit trong gói tin không bị lỗi, gói tin không bị mất FSM cho bên gửi và bên nhận độc lập với nhau: Phía gửi truyền gói tin qua kênh truyền phía dưới, phía nhận đọc gói tin từ kênh truyền bên dưới
Với rdt 1.0, việc gửi đơn giản chỉ là nhận dữ liệu từ tầng trên thông qua sự kiện rdt_send(data), tạo ra gói dữ liệu (bằng hành động make_data (packet,data)) và gửi gói dữ liệu (packet) lên kênh truyền Trên thực tế, sự kiện rdt_send(data) là kết quả của một thủ tục (ví dụ khi ứng dụng phía trên sử dụng hàm rdt_send())
Ở phía nhận, rdt nhận gói dữ liệu (packet) từ kênh truyền bằng sự kiện rdt_rcv(packet), lấy dữ liệu ra khỏi gói dữ liệu (bằng hành
Trang 5động extract (packet,data)) và đưa dữ liệu lên tầng trên Trên thực
tế, sự kiện rdt_rcv(packet) là kết quả của một thủ tục (ví dụ khi ứng dụng phía trên sử dụng hàm rdt_rcv()
2.Môi trường truyền tin lỗi bit:
Kênh truyền bên dưới có thể khiến bit trong gói tin lỗi
Các khắc phục: bên nhận tích cực(ACK) bên nhận thông báo tường min cho bên gửi mình nhận đúng và chính xác gói tin
Bên nhận tiêu cực( NAK) bên nhận thông báo tường minh cho bên gửi mình nhận đúng gói tin mình nhận lỗi., phía gửi sẽ gửi lại gói tin khi nhận được NAK
Mô hình
Trong giao thức rdt 2.0, phía gửi có hai trạng thái Ở trạng thái thứ nhất, phía gửi đợi dữ liệu từ tầng trên Trong trạng thái thứ hai, phía gửi đợi phản hồi ACK hoặc NAK từ phía nhận Nếu nhận được ACK (rdt_rcv(rcvpkt ) && isACK(rcvpkt) trong hình 3.10 tương ứng với sự kiện này), phía gửi biết được gói dữ liệu chuyển đến đích an toàn, vì vậy nó trở về trạng thái đợi dữ liệu
từ tầng trên để chuyển tiếp Nếu nhận được NAK, phía gửi gửi lại gói dữ liệu rồi quay lại trạng thái đợi phản hồi ACK hoặc NAK cho gói dữ liệu vừa gửi lại Chú ý rằng khi phía gửi ở
trong trạng thái chờ phản hồi (ACK hoặc NAK), nó không thể nhận thêm dữ liệu từ tầng trên đưa xuống Nó chỉ chấp nhận dữ
Trang 6liệu khi nhận được ACK và chuyển trạng thái Phía gửi không gửi dữ liệu cho đến khi nó chắc chắn rằng phía nhận đã nhận đúng gói dữ liệu đã gửi
3.môi trường truyền tin có lỗi bit và mất gói tin
Dữ liệu trên kênh truyền không những bị lỗi mà còn có thể bị mất, đây là tình huống không phải không phổ biến trong mạng máy tính ngày nay, kể cả Internet Lúc này giao thức cần phải giải quyết hai vấn đề: làm thế nào để phát hiện gói dữ liệu bị mất
và làm gì khi mất gói dữ liệu Sử dụng cơ chế phát hiện lỗi nhờ checksum, số thứ tự, biên nhận ACK và truyền lại gói dữ liệu -
đã được phát triển trong giao thức rdt 2.2 - cho phép chúng ta giải quyết được vấn đề thứ hai Để giải quyết vấn đề thứ nhất, chúng
ta cần đến một cơ chế mới
Giải pháp
Phía gửi đợi phản hồi trong một khoảng thời gian hợp lý, truyền lại nếu trong khoảng thời gian này không nhận được ACK Nếu gói tin hay ACK chỉ bị trễ thì truyền lại có thể trùng lặp nhưng STT có khả năng giải quyết vấn đề này hoặc nếu bên nhận phải tường minh gói nào nhận đúng Trong giải pháp này cần có bộ định thời đếm ngược
Trang 7Câu 3: Mô tả cơ chế truyền tin tin cậy kiểu đường ống
(pipelined protocol): Go-back-N và Selective Repeat
Giao thức kiểu đường ống: phia gửi đồng thới gửi nhiều gói tin
mà không cần biên nhận
Tăng khoảng số thứ tự
Cần bộ đệm dữ liệu tại bên gửi/ nhận
Có 2 giao thức chính là go back n và selective repeat
Go back n:
Trong giao thức Go-Back-N, phía gửi cho phép truyền đi đồng thời nhiều gói dữ liệu mà không phải đợi biên nhận Tuy nhiên tổng số gói dữ liệu không phải là vô hạn mà bị giới hạn bởi giá trị N - tổng số gói dữ liệu tối đa chưa được biên nhận trong
đường ống Hình dưới là khoảng số thứ tự trong giao thức Back-N Định nghĩa base là số thứ tự của gói dữ liệu đã được truyền đi lâu nhất chưa được biên nhận và nextseqnum là số thứ
Go-tự nhỏ nhất chưa được sử dụng (là số thứ Go-tự của gói tiếp theo sẽ gửi) Có bốn khoảng số thứ tự như sau: Khoảng [0,base-1] ứng với số thứ tự của các gói dữ liệu đã được truyền đi và đã được biên nhận Khoảng [base, nextseqnum-1] ứng với các gói dữ liệu
Trang 8đã được gửi đi nhưng chưa được biên nhận Khoảng
[nextseqnum, base +N- 1] có thể được sử dụng làm số thứ tự cho các gói sẽ được gửi nếu như có dữ liệu từ tầng trên chuyển
xuống Khoảng từ [base+n] trở lên chưa được sử dụng cho đến khi các gói tin đợi biên nhận được biên nhận Trong hình,
khoảng cho phép số thứ tự của những gói dữ liệu đã được gửi nhưng chưa được biên nhận có thể xem là một “cửa sổ” kích thước N nằm trong phạm vi số thứ tự Khi giao thức vận hành, cửa sổ này có thể “trượt” trên toàn bộ khoảng số thứ tự Vì vậy,
N thường được xem là độ lớn cửa sổ (window size) và giao thức GBN là giao thức cửa sổ trượt (sliding-window)
ACK (n) : biên nhận tất cả các gói tin có STT <= n – “biên nhận tích lũy”
Có thể bỏ qua các ACK trùng lặp (xem bên nhận)
Bộ định thời cho các gói tin gửi đi nhưng chưa biên nhận
Trang 9Timeout (n) : truyền lại gói n và tất cả các gói có STT cao hơn trong cửa sổ
GBN: FSM mở rộng của phía gửi
Có dữ liêu từ trên chuyển xuống : khi rdt_send() được phía trên
sử dụng để chuyển dữ liệu xuống, phía gửi phải kiểm tra xem cửa sổ đã đầy chưa (tức là đã có N gói dữ liệu gửi đi chưa được biên nhận không) Nếu cửa sổ chưa đầy, phía gửi tạo ra và sau
đó gửi gói dữ liệu đồng thời cập nhật các biến Nếu cửa sổ đầy, phía gửi không chấp nhận dữ liệu từ tầng trên và thông báo cửa
sổ đã đầy Khi đó, tầng trên sẽ phải gửi lại Trên thực tế, phía gửi sẽ đưa dữ liệu vào vùng đệm (nhưng chưa gửi ngay) hoặc có
cơ chế đồng bộ (sử dụng semaphore hay cờ) chỉ cho phép tầng ứng dụng sử dụng rdt_send() khi cửa sổ chưa
Nhân được một ACK: trong giao thức GBN, giá trị biên nhận
gói tin có số thứ tự n sẽ mang giá trị tích luỹ, nghĩa là toàn bộ gói dữ liệu có số thứ tự nhỏ hơn hoặc bằng n đều đã được phía
nhận nhận đúng Chúng ta sẽ quay lại vấn đề này khi xem xét
phía nhận trong giao thức GBN
Hết thời gian đợi (timeout): tên giao thức - “Go-Back-N” bắt
nguồn từ hành vi của phía gửi khi dữ liệu bị mất hay bị trễ
Giống như trong giao thức stop and wait, timer được sử dụng để
xử lý việc mất gói dữ liệu hay gói phản hồi Khi hết thời gian đợi (timeout), phía gửi sẽ gửi lại tất cả các gói dữ liệu đã được gửi đi trước đó nhưng chưa được biên nhận Trong hình 3.19, phía gửi chỉ sử dụng duy nhất một timer, có thể xem là timer của gói dữ liệu đã được truyền đi lâu nhất nhưng chưa được biên nhận Nếu ACK nào đó được nhận nhưng vẫn còn gói dữ liệu
Trang 10gửi đi chưa được biên nhận thì timer sẽ được khởi động lại Nếu tất cả các gói dữ liệu đã gửi đều được biên nhận thì có thể ngừng timer
GBN: FSM mở rộng của phía nhận
Chính sách biên nhận: luôn luôn biên nhận cho gói tin nhận
đúng Biên nhận gói tin theo đúng thứ tự có STT lớn nhất
Có thể tạo ra biên nhận trùng lặp
Phải ghi nhớ giá trị mình muốn nhận
Gói tin không đúng STT
Loại bỏ (không lưu lại)
Biên nhận STT gói tin đúng thứ tự lớn nhất
Giao thức selective repeat
Phia nhận: biên nhận riêng lẻ từng gói tin nhận đúng
Có thể lưu lại tạm thời các gói tin không theo đúng STT để sau này dùng lại
Phia gửi: chỉ gửi lại các gói tin chưa có biên nhận
Phia gửi: mỗi gói tin có bộ định thời riêng
Cửa sổ phía gửi
STT liên tiếp có kich thước N
Hạn chế số lượng gói dữ liệu đã gửi đi nhưng chưa biên nhận
Trang 11Phia gửi:
1 Dữ liệu nhận được từ phía trên
Khi nhận được dữ liệu từ phía trên, bên gửi SR kiểm tra số thứ
tự sẽ gửi Nếu số thứ tự sẽ gửi nằm trong cửa sổ gửi, dữ liệu được đóng gói và gửi đi, ngược lại thì dữ liệu được lưu giữ trong bộ đệm hoặc gửi trả lên tầng trên để gửi sau, giống
GBN
2 Hết thời gian đợi - Timeout
Timer lại được sử dụng để phát hiện mất gói tin Tuy nhiên, mỗi gói tin gửi đi có một timer riêng, bởi vì chỉ có duy nhất một gói tin được gửi lại khi hết thời gian đợi Có thể sử dụng đồng hồ hệ thống giữ vai trò đồng bộ cho các timer
3 Nhận được ACK
Nếu nhận được ACK, bên gửi đánh dấu gói tin đã được
chuyển đúng Nếu số thứ tự của gói tin vừa được biên nhận bằng send_base, cánh cửa sổ sẽ trượt tới gói tin có số thứ tự
Trang 12nhỏ nhất chưa được biên nhận Nếu cửa sổ di chuyển và còn các gói tin chưa được truyền thì các gói tin đó sẽ được gửi
2 Pkt n thuộc [rcvbase – N, rcvbase-1]
gửi biên nhận lại cho gói tin (mặc dù đã biên nhận từ
3 Các trường hợp :Bỏ qua gói tin đó đi
Sự xác định của bên gửi và bên nhận về cái gì đã được nhận, cái
gì chưa được nhận không phải luôn luôn giống nhau Với giao thức SR, điều này có nghĩa là cửa sổ bên gửi và bên nhận không bao giờ trùng khớp nhau Thiếu sự đồng bộ giữa cửa sổ bên gửi
và bên nhận có thể gây hậu quả nghiêm trọng khi khoảng số thứ
tự nhỏ
Trang 13Câu 4: Phương pháp điều khiển tắc nghẽn trong TCP là gì, nêu thuật toán (gồm 2 bước)
TCP (Transmission Control Protocol) là giao thức phổ biến nhất hiện nay cho truyền dữ liệu tin cậy trên Internet Ngoài điều
khiển chống tắc nghẽn ra, nó còn thực hiện chức năng khôi phục
dữ liệu đã mất và quản lý kết nối Điều khiển chống tắc nghẽn trong TCP thuộc loại điều khiển vòng kín phản hồi ẩn, TCP dựa vào mất gói để phát hiện tắc nghẽn Nó có 2 cơ cấu để phát hiện
ra mất gói Đầu tiên, khi gói được gởi, phía gởi TCP khởi tạo bộ định thời Nếu bộ định thời hết hiệu lực trước khi gói được xác nhận, TCP xem như gói bị mất Thứ 2, khi phía nhận TCP nhận gói không đúng trật tự Nó gởi xác nhận ACK cho gói mà nó nhận gần nhất Ví dụ, giả sử phía nhận nhận gói từ 1 đến 5, và gói 6 bị mất Khi phía nhận nhận gói 7, nó gởi dupack cho gói 5 Phía gởi TCP xét các sự tới của 3 bản sao phúc đáp (3 dupack) như dấu hiệu của 1 gói mất
Có 2 giai đoạn :
Trang 15Câu 5:Phương pháp đánh địa chỉ IP và chia mạng con
các nhà quản trị mạng thường phân chia mạng của họ ra thành nhiều mạng nhỏ hơn gọi là mạng con subnet Tương tự với địa chỉ mạng, địa chỉ mạng con cũng được quy định bởi một mask, gọi là subnet mask Subnet mask của một địa chỉ mạng có số bit
1 nhiều hơn hoặc bằng (trường hợp bằng có nghĩa là không có
Trang 16chia mạng ra thành subnet) số bit 1 trong network mask của địa chỉ đó Ví dụ subnet mask của một mạng thuộc lớp B sẽ có dạng 255.255.xxx.xxx với xxx là số bất kỳ từ 0 -255
Subnet mask là một con số 32 bit bao gồm n bit 1 ( thường là các bit cao nhất ) dùng để đánh địa chỉ mạng con và m bit 0
dùng để đánh địa chỉ máy trong mạng con với n+m=32 Trong thực tế, để dễ dàng cho hoạt động quản lý các máy trong mạng, thường chia nhỏ các mạng lớn trong các lớp mạng (A, B, C) thành các mạng nhỏ hơn Quá trình này được thực hiện bằng cách lấy một số bit ở phần định danh host để sử dụng cho việc đánh địa chỉ mạng Tuỳ theo cách sử dụng của người quản trị mạng ( số subnet và số host trên mỗi subnet ) mà số lượng bit lấy ở phần host nhiều hay ít
Câu 6: các cơ chế phát hiện lỗi và sửa lỗi
1.Phương pháp kiểm tra bit chẵn lẻ (Parity bit)
Là phương pháp dùng để tìm các bit lỗi trong truyền bất đồng bộ
Trang 172 Kiểm tra tổng khối BSC ( Block Sum Check ): Block Sum
Check (BSC):
kết hợp parity hàng và cột
• Phát hiện được lỗi sai một số lẻ bit
• Dò được các lỗi sai một số chẵn bit, ngoại trừ những lỗi xảy ra đồng thời trên cả hàng và cột
• Chỉ sửa được sai một bit đơn
- Khi các khối ký tự đang được truyền, xác suất một ký tự chứa lỗi bit gia tăng
- Xác suất một khối ký tự bị lỗi bit được gọi là tỉ lệ lỗi bit BER
- Phương pháp này sử dụng một tập parity bit được tính từ toàn
bộ khối ký tự trong khung - Mỗi ký tự trong khung được phân phối một parity bit (parity hàng) Ngoài ra một bit mở rộng được tính cho mỗi vị trí bit (parity cột) trong toàn bộ khung Tập các parity bit cho mỗi cột được gọi là ký tự kiểm tra khối BCC
(Block Check Character)
3 Kiểm tra CRC (cyclic redundancy check)
CRC (cyclic redundancy check) là một loại hàm băm, được
dùng để sinh ra giá trị kiểm thử, của một chuỗi bit có chiều dài ngắn và cố định, của các gói tin vận chuyển qua mạng hay một khối nhỏ của tệp dữ liệu
CRC là một loại mã phát hiện lỗi
CRC dựa chủ yếu vào phần bit bổ sung, kỹ thuật CRC dựa trên phép chia nhị phân