bài tập thông tin dữ liệu mạng
Trang 1A MACHINE PROBLEM 6 1
1 CÂU HỎI 1 1
2 CÂU HỎI 2 1
3 CÂU HỎI 3 2
4 CÂU HỎI 4 4
5 CÂU HỎI 5 6
B MACHINEPROBLEM 7 9
1 CÂU HỎI 1: 9
2 CÂU HỎI 2 10
3 CÂU HỎI 3: 10
4 CÂU HỎI 4 13
5 CÂU HỎI 5 14
C MACHINE PROLEM 8 17
1 CÂU HỎI 1 17
2 CÂU HỎI 2 18
3 CÂU HỎI 3 19
4 CÂU HỎI 4 19
5 CÂU HỎI 5 20
6 CÂU HỎI 6 27
Trang 2**Điều khiển luồng – flow control
Điều khiển luồng là quá trình điều khiển việc truyền dữ liệu giữa bên phát và bên thu sao cho đảm bảo bên thu luôn luôn có thể nhận được dữ liệu vào bộ đệm trước khi xử lý
Cơ chế điều khiển luồng được thiết kế để điều khiển luồng dữ liệu giữa thiết bị nhận và thiết bị gửi sao cho buffer của thiết bị nhận không bị tràn Nếu bị tràn, các khung hoặc gói dữ liệu bị mất Điều khiển luồng được dùng trong tầng Datalink để điều khiển các liên kết điểm-điểm và trong tầng transport để điều khiển luồng end-to-end trên mạng có định tuyến
Hai phương pháp điều khiển luồng:
**Sự khác nhau giữa quản lý luồng và quản lý nghẽn:
Quản lý luồng là cơ chế end-end điều khiển lưu lượng dữ liệu giữa bên gửi và bên nhận Trong khi, quản lý nghẽn là cơ chế được network sử dụng để kiểm soát nghẽn trong network Quản lý nghẽn ngăn việc mất gói và trễ do nghẽn mạng Quản lý nghẽn là cơ chế đảm bảo toàn bộ network có thể xử lý luồng dữ liệu đi vào network
Khi sử dụng cơ chế congestion avoidance không xảy ra nghẽn không cần quan tâm đến quản lý nghẽn
2 Câu hỏi 2
Thế nào là địa chỉ IP theo class và không theo class (classless/classful) Nêu lợi ích của việc sử dụng classless Cho ví dụ
Trang 3Càng ngày các mạng với số lượng máy tính nhỏ ngày càng nhiều thì với cách chia này mỗi mạng có số lượng địa chỉ khá nhiều vừa gây ra sự lãng phí lớn vừa gây thiếu thốn Ví dụ một đơn vị kinh doanh internet có 50 máy tính, nếu sử dụng một địa chỉ mạng lớp C
*Lợi ích của việc sử dụng IP classless:
Linh động trong việc phân chia NetID và HostID
Trong trường hợp sử dụng subnetting giúp phân nhỏ địa chỉ mạng tiết kiệm không gian địa chỉ
Subnetting làm giảm broastcast trong mạng do giảm được số lượng hosts trong mạng
Trang 4Vers (version): là một trường 4 bit, có giá trị bằng 4 với IPv4.
Hdr len (Internet Header Length): 4 bit, xác định kích thước của header Giá trị nhỏ nhất
bằng 5, tức 5x 32 = 160 bits = 20 byte Với 4 bit, giá trị lớn nhất là 15 word, tương đương 15
x 32 = 480 bit = 60 bytes
ToS (Type of service): định nghĩa cách mà datagram được quản lý Nó bao gồm các bit
định nghĩa ưu tiên của datagram Nó cũng chứa các bit làm rõ loại dịch vụ phía gửi mong muốn độ tin cậy, độ trễ,…
Length (Total length): giá trị 16 bit này xác định tổng cộng kích thước của gói tính bằng
byte, bao gồm cả header và dữ liệu Giá trị chiều dài nhỏ nhất của gói bằng 20 byte (20 byte header + 0 byte data) và lớn nhất 65535 byte
Identification: dùng với phân đoạn Một datagram khi đi qua các mạng khác nhau, có
thể chia thành các đoạn để phù hợp với kích thước của khung mạng Khi xảy ra hiện tượng này thì mỗi đoạn được định danh với một số thứ tự trong trường này
Flag: có độ dài 3 bit, dùng để điều khiển hoặc xác định fragment.
Bit 0: dự trữ, được set bằng 0
Bit 1: Don’t Fragment (DF) cho biết gói có bị phân mảnh hay không Nếu được set thì packet sẽ bị xóa bỏ
Bit 2: More Fragment (MF) Cờ này được xóa với gói không phân mảnh Với gói phân mảnh, tất cả các các phân đoạn (fragment) ngoại trừ phân đoạn cuối được set cờ này
Fragment Offset: dài 13 bit Đây là một con trỏ chỉ ra độ lệch của dữ liệu trong
datagram gốc Phân đoạn đầu tiên có giá trị offset bằng 0, giá trị offset lớn nhất là (213 – 1) ×
8 = 65,528 byte
TTL (Time To Live): chỉ ra số bước nhảy (hop) mà một gói có thể đi qua Con số này sẽ
giảm đi 1 khi một gói tin đi qua router Khi bộ đếm đạt tới 0 gói này sẽ bị loại Đây là giải pháp nhàm ngăn chặn tình trạng lặp vòng vô hạn của gói nào đó
Protocol: có 8 bit, chỉ ra giao thức lớp trên, chẳng hạn như TCP hay UDP, tiếp nhận các
gói tin khi công đoạn xử lý IP hoàn tất
Checksum: có 16 bit được sử dụng để kiểm tra lỗi header
Trang 5Source address: có 32 bit, chỉ ra địa chỉ IP của nơi gửi gói.
Destination address: có 32 bit, chỉ ra địa chỉ IP của nơi nhận gói.
Options: Chứa một hoặc nhiều hơn tùy chọn trong IPv4 Kích thước trường này là một số
nguyên lần của 32 bit (4 byte) Nếu các option không dùng hết và làm lẻ khối 32 bít, các giá trị 0 sẽ được thêm vào để đảm bảo IPv4 header là một số nguyên của khối 4 byte, như vậy chiều dài ipv4 header mới có thể chỉ định được bằng giá trị cuả trường Internet Header Length Khi sử dụng trường này, trường Hdr Len sẽ lớn hơn 5, vì phải thêm các byte trong trường option này
Ở tầng datalink ta có field internettype mang ý nghĩa tương tự Prototype ID của internet header:
Offset Reserved
URG
ACK
PSH
RST
SYN
FIN
Window
data
Source port: Định nghĩa chương trình ứng dụng trong máy tính nguồn.
Destination port: Định nghĩa chương trình ứng dụng trong máy tính đích.
Sequence number: một dòng dữ liệu từ chương trình ứng dụng (application) có thể được
chia thành nhiều đoạn TCP Số thứ tự này chỉ ra vị trí của dữ liệu trong dòng dữ liệu gốc
Trang 6Acknowledgement number: Nếu cờ ACK bật thì giá trị của trường chính là số thứ tự gói
tin tiếp theo mà bên nhận cần
Data offset: Trường có độ dài 4 bít qui định độ dài của phần header (tính theo đơn vị từ
32 bít) Phần header có độ dài tối thiểu là 5 từ (160 bit) và tối đa là 15 từ (480 bít)
Reserved: Dành cho tương lai và có giá trị là 0.
Flags (hay Control bits): Bao gồm 6 cờ:
URG: Cờ cho trường Urgent pointer
ACK: Cờ cho trường Acknowledgement
PSH: Hàm Push
RST: Thiết lập lại đường truyền
SYN: Đồng bộ lại số thứ tự
FIN: Không gửi thêm số liệu
Window: kích thước cửa sổ trượt.
Checksum: 16 bít kiểm tra phát hiện lỗi.
Urgent pointer: Nếu cờ URG bật thì giá trị trường này chính là số từ 16 bít mà số thứ tự
gói tin (sequence number) cần dịch trái.
Options và padding: phần còn lại của header của TCP định nghĩa các trường lựa chọn
Chúng được dùng để khảo sát thông tin thêm cho bộ thu hoặc cho các mục đích liên kết Nếu
có thì độ dài là bội số của 32 bít
UDP header:
Source port: Trường này xác định cổng của người gửi thông tin và có ý nghĩa nếu muốn
nhận thông tin phản hồi từ người nhận Nếu không dùng đến thì đặt nó bằng 0
Destination port: Trường xác định cổng nhận thông tin, và trường này là cần thiết Length: Trường có độ dài 16 bit xác định chiều dài của toàn bộ datagram: phần header và
dữ liệu Chiều dài tối thiểu là 8 byte khi gói tin không có dữ liệu, chỉ có header
Checksum: Trường checksum 16 bit dùng cho việc kiểm tra lỗi.
So sánh TCP header và UDP header
Trang 7TCP và UDP là hai giao thức phổ biến nhất ở lớp transport của chồng giao thức mạng TCP/IP, đều có chức năng kết nối các máy lại với nhau, và có thể gửi dữ liệu cho nhau Các header của TCP và UDP khác nhau ở kích thước (20 và 8 byte) nguyên nhân chủ yếu là do TCP phải hộ trợ nhiều chức năng hữu ích hơn (như khả năng khôi phục lỗi) UDP dùng ít byte hơn cho phần header và yêu cầu xử lý từ host ít hơn:
Multiplexing dùng nhiều
cổng
Có Chỉ số cổng nhận dạng duy nhất một tiến trình trên máy gửi và máy nhận
Có Giống TCP
Truyền dữ liệu tuần tự
Có TCP công nhận dữ liệu, gửi lại những phân đoạn bị mất Các trường sequence
và ACK trong TCP header
Không UDP không có khái niệm sắp xếp dữ liệu
Truyền tin cậy
Có TCP công nhận dữ liệu, gửi lại những phân đoạn bị mất Các trường sequence
và ACK trong TCP header
Không hỗ trợ
Kiểm soát dòng
Có TCP dùng các cửa sổ trượt để kiểm tra các cửa sổ
Connection
Có Quá trình bắt tay 3 lần thiết lập quá trình khởi độngcổng
Trang 8Common Header Chunk #1 Chunk #2
i SCTP Common Header
0 – 7 8 – 15 16 – 23 24 - 31
Verification Tag Checksum
Source Port Number: số nguyên 16 bit không dấu Đây là số hiệu của port tại máy gửi
SCTP Nó có thể được sử dụng ở máy nhận trong việc kết hợp cùng với địa chỉ IP nguồn, port SCTP đích và địa chỉ IP đích để xác định nó thuộc mảnh gửi tới thuộc vào gói nào
Destination Port Number: Số nguyên 16 bit không dấu đây là số hiệu của port tại máy
nhận máy nhận sẽ dùng số port này để tách kênh các gói SCTP đến đúng ứng dụng
Verification Tag: Số nguyên 32 bit không dấu Máy nhận dùng số này để kiểm tra nơi
gởi gói SCTP này Khi truyền đi, giá trị này phải được set bằng giá trị Initate Tag nhận được
từ điểm cuối ngang hàng trong quá trình khởi tạo mối liên kết, với các ngoại lệ:
Một packet có chứa 1 INIT chungk phải được set Verification Tag bằng 0
1 packet chứa 1 SHUTDOWN-COMPLETE chunk với T-bit được set phải có
Verification Tag giống như gói chứa SHUTDOWN-ACK chunk
Một gói chứa một ABORT chunk có thể có Verification Tag giống như của gói là nguyên nhân tạo ta ABORT
Checksum: Số nguyên không dấu 32 bit Trường này chứa checksum của gói SCTP.
ii Chunk Field
Chunk Value
Chunk Type: Số nguyên không dấu 8 bit Trường này xác định kiểu của thông tin xác
định trong trường Chunk Value Có giá trị từ 0 – 254, giá trị 255 dự trữ
Chunk Flags: 8 bit Cách dùng của các bit này phụ thuộc vào kiểu chunk được xác định
trong Chunk Type Nếu kiểu chunk không được xác định, các bit này được xóa về 0 khi truyền tải và bỏ quả khi nhận tin
Chunk Length: Số nguyên không dấu 16 bit Giá trị này đại diện cho kích thước của
chunk tính bằng byte bao gồm Chunk Type, Chunk Flags, Chunk Length, and Chunk Value fields Do đó, nếu Chunk Value có độ dài bằng 0, trường này được set bằng 4
Chunk Value: Giá trị này không cố định Trường này chứa thông tin để truyền tải trong
chunk Cách dùng và định dạng của trường này phụ thuộc vào Chunk Type
Trang 9 TCP có trường Sequence Number đánh dấu số thứ tự của dữ liệu trong dữ liệu gốc SCTP không có trường này, vì dữ liệu được chứa trong các chunk và không
bị chia thành nhiều đoạn như TCP SCTP có thể truyền tải nhiều dòng dữ liệu
trong 1 lần truyền tải (multi stream of data delivery) còn TCP chỉ hỗ trợ một dòng dữ liệu (single stream)
SCTP có thêm trường Verifiaction Tag để xác nhận nơi gửi gói SCTP
c Stream Identifier và stream squence number
Stream identifier: số nguyên không dấu 16 bit, xác định stream mà data chunk này thuộc
về Mỗi DATA chunk phải mang theo một stream identifier hợp lệ Nếu một máy cuối nhận được DATA chunk với một stream identifier không hợp lệ, nó sẽ ngay lập tức gửi một ERROR chunk dẫn tới “Invalid Stream Identifier” và xóa DATA chunk đó
Stream sequence number: số nguyên không dấu 16 bit Xác định số thứ tự chuỗi
(sequence number) của bản tin trong stream Nếu bản tin bị phân mảnh thì giá trị này được duy trì cho tất cả các mảnh Stream sequence number ở mỗi stream thường bắt dầu từ 0 khi kết nối được thành lập Khi nó đạt giá trị 65535 thì stream sequence number tiếp theo lại được set về 0
Trang 10Nguyên tắc xây dựng mô hình OSI
Tạo các ranh giới các tầng sao cho việc giải thích các phục vụ và số các tương tác qua lại hai tầng là nhỏ nhất
Tạo các tầng riêng biệt cho các chức năng khác biệt nhau hoàn toàn về kỹ thuật sửdụng hoặc quá trình thực hiên
Các chức năng giống nhau được đặt trong cùng một tầng
Lựa chọn ranh giới các tầng tại các điểm mà những thử nghiệm trong quá khứ thành công
Các chức năng được xác định sao cho chúng có thể dễ dàng xác định lại, và các nghi thức của chúng có thể thay đổi trên mọi hướng
Tạo ranh giới các tầng mà ở đó cần có những mức độ trừu tượng khác nhau trong việc sử dụng số liệu
Cho phép thay đổi các chức năng hoặc giao thức trong tầng không ảnh hưởng đến các tầng khác
Tạo các ranh giới giữa mỗi tầng với tầng trên và dưới nó
Không nên chia thành quá nhiều lớp, vì như vậy thì quá trình gửi – nhận data sẽ có thể diễn ra chính xác hơn nhưng độ trễ lớn do phải xử lý ở nhiều lớp chức năng, đồng thời còn dẫn tới việc xác định và ghép nối các tầng phức tạp và chi ly
Trang 11Ngược lại, việc chia quá ít lớp dẫn tới mỗi tầng phải làm nhiều chức năng, cồng kềnh và
độ chính xác không được đảm bảo Đồng thời việc kiểm tra và phát hiện lỗi cũng khó khăn hơn
thôngthường là kết quả của việc cố gắng tính toán để cung cấp khả năng dự phòng,
trongtrường hợp này, một link hoặckhôngbị hỏng, các link hoặc switch khác vẫn tiếp tụchoạt động, tuy nhiên các vòng lặp cũng có thể xảy ra do lỗi
Nguyên tắc: STP dùng các thông điệp giữa các switch để giúp ổn định hệ thống mạng về một sơ đồ không bị vòng lặp Để làm được như cậy, STP sẽ đưa vài cổng của switch về trạng thái blocking, cổng sẽ không truyền hay nhận dữ liệu Các cổng còn lại sẽ ở trạng thái
forwarding Tất cả các loại cổng này sẽ giúp hình thành một sơ đồ mạng không bị loop.Các bước diễn tiến của hoạt động của spanning tree
Bầu chọn root switch: Switch có bridge-ID nhỏ nhất sẽ được bầu chọn Thông thường, bridgeID được hình thành gồm giá trị priority (2 bytes) và MAC của switch
Xác định root port: là cổng trên những non-root switch có kết nối ngắn nhất về rootswitch
Xác định designated port trên từng segment: Khi có nhiều switch kết nối vào một segment, đây là cổng của switch chịu trách nhiệm đẩy traffic ra khỏi segment
Trang 12Mỗi thiết bị mạng đều có một địa chỉ MAC (Medium Access Control address) và địa chỉ
đó là duy nhất Các thiết bị trong cùng một mạng thường dùng địa chỉ MAC để liên lạc với nhau tại tầng Data Link
Trên thực tế, các card mạng (NIC) chỉ có thể kết nối với nhau theo địa chỉ MAC, địa chỉ
cố định và duy nhất của phần cứng Do vậy ta phải có một cơ chế để chuyển đổi các dạng địa chỉ này qua lại với nhau Từ đó ta có giao thức phân giải địa chỉ: Address Resolution Protocol(ARP)
Đây là giao thức dùng để chuyển đổi giữa địa chỉ lớp 3 thành địa chỉ vật lí lớp 2 Sở dĩ cần phải có giao thức chuyển đổi như vậy là do có nhiều giao thức lớp 3 như IP; IPX,… mỗi giao thức lại có qui ước về địa chỉ logic riêng Khi được đóng gói vào một frame tại lớp thì tất cả các địa chỉ này cần phải được qui đổi thành một kiểu địa chỉ thống nhất (địa chỉ MAC) nhằm giúp cho mọi thiết bị có thể trao đổi với các thiết bị khác khi chúng nằm trong cùng một môi trường truyền dẫn vật lí
Mặc dù ARP là giao thức lớp 3, tuy nhiên nó lại được coi là giao thức IP cấp thấp bởi vì gói tin ARP không được đóng gói với header của các giao thức lớp 3 mà được đóng gói bởi frame lớp 2 ARP không chỉ được sử dụng trong mạng LAN ethernet mà còn có thể sử dụng cho các mạng LAN dạng token ring hoặc FDDI
Cấu trúc của 1 bản tin ARP bao gồm các trường:
HW addr length Protocol addr length Opcode
Source HW addrSource Protocol addrDestination HW addrDestination protocol addr
Trong đó :
Hardware type và protocol type qui định kiểu của phần cứng và của protocol được dùng ở lớp network
Opcode: cho biết bản tin ARP là yêu cầu (=1) hoặc phúc đáp (=2)
HW addr length: độ dài của địa chỉ vật lí
Protocol addr length: độ dài của địa chỉ logic
4 trường còn lại là địa chỉ vật lí và địa chỉ logic nguồn và đích
Nguyên tắc làm việc của ARP trong một mạng LAN
Khi một thiết bị mạng muốn biết địa chỉ MAC của một thiết bị mạng nào đó mà nó đã biết địa chỉ ở tầng network (IP, IPX…) nó sẽ gửi một ARP request bao gồm địa chỉ MAC address của nó và địa chỉ IP của thiết bị mà nó cần biết MAC address trên toàn bộ một miền broadcast
Trang 13Mỗi một thiết bị nhận được request này sẽ so sánh địa chỉ IP trong request với địa chỉ tầng network của mình Nếu trùng địa chỉ thì thiết bị đó phải gửi ngược lại cho thiết bị gửi ARP request một gói tin (trong đó có chứa địa chỉ MAC của mình)
Nguyên tắc hoạt động của ARP trong môi trường hệ thống mạng:
Hoạt động của ARP trong một môi trường phức tạp hơn đó là hai hệ thống mạng gắn với nhau thông qua một Router C Máy A thuộc mạng A muốn gửi gói tin đến máy B thuộc mạng
B Do các broadcast không thể truyền qua Router nên khi đó máy A sẽ xem Router C như một cầu nối hay một trung gian (Agent) để truyền dữ liệu Trước đó, máy A sẽ biết được địa chỉ IP của Router C (địa chỉ Gateway) và biết được rằng để truyền gói tin tới B phải đi qua
C
Tất cả các thông tin như vậy sẽ được chứa trong một bảng gọi là bảng định tuyến (routingtable) Bảng định tuyến theo cơ chế này được lưu giữ trong mỗi máy Bảng định tuyến chứa thông tin về các Gateway để truy cập vào một hệ thống mạng nào đó
Ví dụ trong trường hợp trên trong bảng sẽ chỉ ra rằng để đi tới LAN B phải qua port X của Router C Bảng định tuyến sẽ có chứa địa chỉ IP của port X Quá trình truyền dữ liệu theo từng bước sau :
Máy A gửi một ARP request (broadcast) để tìm địa chỉ MAC của port X
Router C trả lời, cung cấp cho máy A địa chỉ MAC của port X
Máy A truyền gói tin đến port X của Router
Router nhận được gói tin từ máy A, chuyển gói tin ra port Y của Router Trong gói tin có chứa địa chỉ IP của máy B Router sẽ gửi ARP request để tìm địa chỉ MAC củamáy B
Máy B sẽ trả lời cho Router biết địa chỉ MAC của mình Sau khi nhận được địa chỉ MAC của máy B, Router C gửi gói tin của A đến B
Trang 14b Viết toàn bộ header của gói IP theo dạng hex
Trả lời
a Tính checksum
- Phần header, với checksum chưa biết XXXX
4510 003C 0100 4000 4011 XXXX 89E2 0CCE C6B6 C438
- Để tính check sum, đầu tiên, ta cộng tất cả các số 2 byte đã biết lại:
4510 + 003C + 0100 + 4000 + 4011 + 89E2 + 0CCE + C6B6 + C438 = 2E7FB
- Tiếp theo, ta chuyển kết quả vừa tính sang binary
Trang 15a Chọn subnet mask phù hợp cho mỗi mạng LAN và cho biết khoảng địa chỉ khả dụng cho mỗi mạng LAN
b Cho biết bảng routing của mỗi router
Dùng thêm 1 bit, ta được 2 subnet:
118.23.01000000.00000000 23 118.23.32.0/23
118.23.01000010.00000000 23 118.23.34.0/23
Ta dùng địa chỉ 118.23.32.0/23 cho LAN 2, và dùng 118.23.34.0/23 chia subnet cho các mạng còn lại
Mạng lớn thứ 2 là LAN 1, cần 8 bit host ID, ta lại dùng 1 bit tạo 2 subnet:
118.23.01000010.00000000 24 118.23.34.0/24
118.23.01000011.00000000 24 118.23.35.0/24