Bài tập thiết lập hệ thống mạng cơ bản năm 2024

Nắm bắt các nguyên tắc cơ bản của mạng, từ sự phức tạp của cấu trúc liên kết đến các sắc thái của các giao thức cơ bản, không chỉ đơn thuần là một bài tập mang tính học thuật—mà nó rất quan trọng để tạo ra các hệ thống mạnh mẽ và hiệu quả. Nền tảng vững chắc về nguyên tắc mạng đảm bảo các hệ thống giao tiếp liền mạch, thích ứng linh hoạt và mở rộng quy mô một cách hiệu quả.

- Hãy cho biết mạng chứa host đó có chia mạng con hay không? Nếu có thì cho biết có bao nhiêu mạng con tương tự như vậy ? Và có bao nhiêu host trong mỗi mạng con ?

- Tìm địa chỉ mạng, địa chỉ broadcast.

Giải :

172 -> phân lớp B (net_id = 2 byte, S ubnet Mask = /16)

Subnet Mask = 255.255.240.0 = /20

Số bit host_id = 32 - 20 = 12

Số bit làm subnet_id : 20 – 16 = 4 bit

+ Số mạng con tương tự : 24 = 16

+ Số host trong mỗi mạng con : 212-2 = 4094

Tìm địa chỉ mạng (bit host tắt về 0)

172.29.00100000.0

* Các bit được tô đậm là bit host

Ta dễ dàng tính dc địa chỉ mạng là 172.29.32.0

Dạng 2: Các bài toán chia subnet

Vd1: 192.48.96.0/24

Hãy phân hoạch thành 6 mạng con

Giải:

192-> phân lớp C (net_id = 3 byte, host_id = 1 byte; Subnet Mask = /24)

Để có 6 mạng con ta cần mượn n bit host sao cho

2n >= 6 (Theo công thức tính số mạng con)

-> n>=3

Khi mượn 3b it

+ /27 -> còn lại 5 bit host

+ Bước nhảy : 25 = 32

Vậy ta có các đường mạng

Mạng 1

+ IP đường mạng : 192.48.96.0/27

+ IP broadcast : 192.48.96.31/27

Mạng 2

+ IP đường mạng : 192.48.96.32/27

+ IP broadcast : 192.48.96.63/27

…..

Vd2: Công ty có đường mạng 172.29.0.0/16

Chia thành

- 3 subnet có 100 địa chỉ

- 4 subnet có 255 địa chỉ

- 3 subnet có 500 địa chỉ

Hãy thực hiện chia mạng trên theo yêu cầu

Giải:

172 -> phân lớp B (net_id = 2 byte, host_id = 2 byte; Subnet Mask = /16)

Đề bài yêu cầu chia thành 10 mạng con

-> 2n>=10

-> N >= 4

Mặt khác nếu gọi k là số bit host còn lại sau khi mượn ta cần có

2k - 2>=100

2k - 2>=255

2k - 2>=500

-> K>= 9

Tổng hợp điều kiện ta chọn được số bit host cần mượn là 4

Khi mượn 4 bit

+ /20 -> còn lại 12 bit host

+ Bước nhảy: 212 = 4096

Vậy ta có các đường mạng

Mạng 1

+ IP đường mạng : 172.29.0.0/20

+ IP broadcast : 172.29.15.255/20

Mạng 2

+ IP đường mạng : 172.29.16.0/20

+ IP broadcast : 172.29.31.255/20

….

II. Routing

· Vd về Static Route

Tại router R1:

Tại router R2:

Destination network

Out interface

Next hop

172.29.70.0/24

E1

172.29.60.1

172.29.80.0/24

E1

172.29.60.3

172.29.50.0/24

E1

172.29.60.4

0.0.0.0/0

E1

172.29.60.5

· Vd về Dynamic Route (Xem Slide)

III. Thuật toán kiểm lỗi

  • Thuật toán Parity Check:

· Mô hình chẵn: số bit 1 trong chuỗi gửi đi là số chẵn

· Mô hình lẻ: số bit 1 trong chuỗi gửi đi là số lẻ

- Parity Check 1 Chiều

+ Phát hiện được lỗi khi số bit lỗi trong dữ liệu là số lẻ

+ Không sửa được lỗi

- Parity Check 2 Chiều

+ Nhận dạng và sửa lỗi được 1 bit

- Hamming Code

+ Sửa lỗi 1 bit

+ Nhận dạng được 2 bit lỗi

+ Sửa lỗi nhanh hơn Parity code 2 chiều

  • Thuật toán CheckSum (L ghi ở đây)

Vd Hamming Code

Dùng Parity mô hình lẻ

Thông tin cần gửi: 1011

Giải:

K là độ dài của thông tin ban đầu (k = 4)

G2n – 1 >= n + k

->N = 3 gọi n là số bit parity trong chuỗi cần gửi thì n phải thỏa

Các bit parity được đặt vào các vị trí không phải lũy thừa 2

B1 : Đặt các bit dữ liệu vào các vị trí không phải parity

1 0 1 1

1 2 3 4 5 6 7

20 21 22

Hình 1.0

B2 : Tính Check bit các vị trí không phải parity

3 = 21 + 20 \= 011

5 = 22 + 20 \= 101

6 = 22 + 21 \= 110

7 = 22 + 21 + 20 \= 111

B3 :

+ Xét cột 2n trong check bit -> các vị trí có bit 1

+ Lấy các bit dữ liệu tại các vị trí có bit 1 trong check bit -> tính bit parity cho các bit dữ liệu này

Các bit màu xanh ở trên là các bit ở vị trí 20

Ta thấy các bit 1 xuất hiện ở số 3, 5, 7

Nhìn vào các bit dữ liệu ở Hình 1.0

Vị trí 3 -> 1

Vị trí 5 -> 0

Vị trí 7 -> 1

-> Bit parity cần điền tại 20 là 1 (Mô hình lẻ)

Tương tự với các vị trí còn lại

-> Dữ liệu thật gửi đi : 1011011

Bên Nhận:

Thông tin nhận : 1011011

B1 : Lập bảng

1 0 1 1 0 1 1

1 2 3 4 5 6 7

20 21 22

B2 : Tính Check bit các vị trí không phải parity

3 = 21 + 20 \= 011

5 = 22 + 20 \= 101

6 = 22 + 21 \= 110

7 = 22 + 21 + 20 \= 111

B3: Xét từng vị trí bit parity

Vd như xét 20

Các bit 1 tại vị trí 20 tại 3,5,7

Xem các bit dữ liệu thì

Vị trí 3 -> 1

Vị trí 5 -> 0

Vị trí 7 -> 1

Bit parity = 1

- Nếu bit parity tại 20 là 1 thì là không sao

- Nếu không phải thì là lỗi

Check sum :

- Bên gởi:

D bits trong dữ liệu gởi đi được xem như gồm N số k bits: X1, X2, …, Xn

Tính tổng X = X1 + X2 + … + Xn

Tính check sum : bù 1 của X

Ví dụ : dữ liệu cần gởi 1110 0110 0110 0110

K = 4

1110, 0110, 0110, 0110

Sum (1110, 0110, 0110, 0110) = 0010

Check sum = 1101 (bù 1 của 0010)

- Bên nhận:

Tính tổng cho tất cả các giá trị nhận được(kể cả giá trị check sum), nếu sum chứa tất cả các bit là 1, thì dữ liệu nhận được đúng, ngược lại lỗi.

Ví dụ: dữ liệu nhận 1110 0110 0110 0110 1101 (trong đó 1101 là check sum)

Sum = 1111 là đúng

dữ liệu nhận 1010 0110 0110 0110 1101 (trong đó 1101 là check sum)

Sum = 1011 là sai

IV. Tính độ trễ

BT1.

  • Khoảng cách từ A đến B là d = 100 km
  • Tốc độ đường truyền là c = 360000 km/h
  • Trung bình mỗi gói tin có kích thước L = 100 bytes
  • Băng thông đường truyền R = 100 Mbps
  • Mỗi gói tin cần Dproc \= 0,01s xử lý

Cho biết

  1. Thời gian để gửi 1 gói tin. Giả sử thời điểm đang xét thì hàng đợi rỗng.
  2. Tại thời điểm t = 0,1s, bit đầu tiên của gói tin đang ở vị trí nào?
  3. Tính thời gian cần thiết để gửi hết 5 gói tin, giả sử 5 gói tin đã trong hàng đợi.

Bài làm

  1. Dtrans \= L / R = 100 * 8 / (100 * 106) = 8 x 10-6

Dprop \= d / c = 100 / (360000 / 3600) = 1s

Vậy D = Dtrans + Dprop + Dproc + Dqueue \= 8 x 10-6 + 1 + 0,01 + 0 = 1.010008 s

Dtruyền \= Dtrans + Dprop \= 1,000008 s

  1. Thời điểm t = 0,1s = Dtrans + Dprop + Dproc + 0

⇔ Dtrans + Dprop \= Dtruyền \= 0,1 - Dproc \= 0,1 - 0,01 = 0,09s

Dtruyền \= 0,09s → s = ? (ra rồi nha)

Dtruyền \= 1,000008 → s = 100km

  1. Không biết câu này thì lấy kết quả câu a nhân 5 hay là phải tính thêm Dproc nữa. Bạn nào biết thì điền vào nha, Trung Thành cảm ơn.

Duyên giải ntn (và cũng coi kq của thầy rồi nên yên tâm ha)

Câu này ý là cả 5 gói tin đều đã vào hàng đợi nên mình không cộng Dtrans.

Giải:

Mình gộp chung 5 gói vô thành 1(xem như là 1 gói tin) .

Dtrans \= L / R = 100 * 5 * 8 / (100 * 106) = 4 x 10-6

Dprop \= d / c = 100 / (360000 / 3600) = 1s

Vậy D = Dtrans + Dprop + Dproc + Dqueue \= 8 x 10-6 + 1 + 0 + 0 = 1.0004 s

  1. Sequence Number, Acknowlegde Number
  • Cơ chế thiết lập kết nối TCP:

Trước khi bắt đầu truyền dữ liệu, hai hệ thống đầu cuối phải thiết lập kết nối TCP theo thủ tục bắt tay 3 bước như sau:

(1): Máy A gởi gói dữ liệu có cờ SYN=1 đến 1 port xác định của máy B. Gói này có chứa số thứ tự khởi tạo của máy A.

(2): Máy B trả lời bằng gói dữ liệu có cờ SYN và ACK = 1. Gói này có chứa số thứ tự khởi tạo của máy B, và xác nhận số thứ tự trên máy A bằng cách tăng số thứ tự của máy A lên 1.

(3): Máy A trả lời bằng gói có cờ ACK=1, và xác nhận số thứ tự của máy B.

  • Cơ chế truyền dữ liệu đơn giản của TCP:

- Mỗi gói dữ liệu gởi đi đều phải nhận được hồi đáp trong một khoảng thời gian cho trước. Quá thời gian này, gói sẽ được tự động gởi lại.

-Việc hồi đáp được thực hiện bằng các gán giá trị ACK number trên gói trả lời bằng với số thứ tự của byte cuối cùng nhận được + 1

-Gói hồi đáp có thể được gởi riêng lẻ hoặc kết hợp với gói dữ liệu trên chiều ngược lại.

Vd1: Hai máy A và B truyền dữ liệu dùng TCP. B đã nhận 126 byte dữ liệu từ A. Giả sử A gởi tiếp 2 gói liên tục cho B. Gói thứ nhất có 80 byte, gói thứ hai 40 byte. Số thứ tự trên gói thứ nhất là 227, source port là 1302, dest port là 80. Máy B hồi đáp ngay khi nhận xong 1 gói dữ liệu.

a-Trên gói thứ 2 gởi từ A -> B, cho biết số thứ tự, source port, dest port? Vẽ hình minh họa.

-Thông tin trên gói thứ 2 gởi từ A->B:

+Sequence Number = 227 + 80= 307

(Sequence gói đầu + dung lượng của gói đầu)

+Source port = 1302

+Dest port = 80

b- Giả sử gói thứ nhất đến trước gói thứ 2, cho biết trong gói hồi báo của máy B, ACK number, source port và Dest Port?

-Thông tin trên gói hồi báo:

+ACK number = 307

(Báo về vị trí byte cuối cùng của gói đã gửi)

+Source port = 80

+Dest port = 1302

c - Giả sử gói 2 đến trước gói 1, cho biết trong gói hồi báo của máy B, giá trị ACK number=?

- Do gói thứ 2 không được chấp nhận nên máy B sẽ yêu cầu gởi lại kể từ byte cuối cùng mà máy B đã nhận thành công:

Số thứ tự trên gói trước gói thứ nhất = 227 – 126 = 101

Số ACK trên gói hồi báo 227.

d - Giả sử hai gói đến đúng thứ tự, hồi báo của gói 1 bị mất. Vẽ sơ đồ truyền gói, cho biết các giá trị: sequence number, ACK number, kích thước dữ liệu trên từng gói.

Vd2: Quá trình thiết lập kết nối giữa máy A và máy B như sau:

A -> B: SYN=1, seq=200

B->A: SYN=1, ACK=1, seq=300, ack=201

A->B: ACK=1, ack=301

Sau đó máy A gởi tiếp 1 gói chứa 120 byte dữ liệu cho máy B, hỏi các giá trị SYN, ACK, seq, ack trên gói hồi đáp từ máy B gởi đến máy A, biết rằng máy B không có dữ liệu truyền cho máy A. Vẽ sơ đồ mô tả.