--------------- <> -----------------
--- KHOA HỌC - CÔNG NGHỆ - GIÁO DỤC - VIỆC LÀM ---
--- Học để đi cùng bà con trên thế giới ---

Tìm kiếm trong Blog

CN_1_1 Tổng quan



Computer networks

1.1 Tổng quan

Trọng tâm môn học

Chúng ta đã rất quen thuộc với việc sử dụng máy tính để vào mạng hàng ngày. Vào mạng để đọc báo, thông tin liên lạc, nghe nhạc, mua bán, chuyển khoản…v.v.
Mô hình dưới đây thể hiện một cách đơn giản nhất hoạt động của hệ thống mạng.


Ví dụ, người dùng ngồi tại các máy tính Client muốn đọc một trang web hoặc nghe một bản nhạc, họ sẽ gửi yêu cầu tới máy tính Server. Khi nhận được yêu cầu Server sẽ gửi trang web hoặc bản nhạc tới người dùng.
Nếu quan sát quá trình sử dụng mạng của người dùng, chúng ta chỉ quan sát được quá trình người dùng mở trình duyệt (Internet Explorer, Mozilla Firefox, Chrome…v.v), nhập địa chỉ của trang web, nhận kết quả gửi về từ Server. Các hoạt động thực sự ở bên trong hệ thống mạng, chúng ta không thể quan sát được. Mục đích của môn học là giúp người học có thể hiểu được hoạt động của hệ thống mạng.
Hệ thống mạng có thể tạm chia thành ba chủ đề (tầng) lớn là: Distributed Systems, Networking và Communication. Chức năng tại mỗi tầng được minh họa trong bảng sau:
Distributed Systems
Hệ thống phân tán. Ví dụ: WWW, internet, intranet, các ứng dụng trên mạng.
Networking
Truyền các gói tin (packet) trên hệ thống mạng.
Communication
Truyền các bit dữ liệu dựa trên tín hiệu (signal).
Môn học sẽ tập trung chủ yếu vào chủ đề Networking, tuy nhiên, cũng đề cập một ít về Distributed System và Communication.

Mục tiêu của môn học

Môn học giúp người học nắm được hai nội dung lớn là:
-         Hoạt động của Internet: giải thích được các tiến trình đã xảy ra khi bạn duyệt web, tìm hiểu về TCP/IP, DNS, HTTP, NAT, VPNs, 802.11…v.v.
-         Các kiến thức cơ bản về hệ thống mạng.
Tại sao kiến thức cơ bản về hệ thống mạng lại quan trọng:
-         Khi có kiến thức cơ bản về hệ thống mạng, bạn có thể hiểu và làm việc được với tất cả các hệ thống mạng khác nhau.
-         Kiến thức nền tảng bao giờ cũng có tính ổn định trong thời gian dài.
-         Có kiến thức cơ bản giúp hiểu về hệ thống hiện tại, đồng thời có thể đề xuất các cải tiến cho hệ thống.
-         Kiến thức cơ bản giúp bạn có cái nhìn toàn diện về hệ thống, từ đó có thể đưa ra giải pháp để giải quyết các vấn đề liên quan đến:
o       Tính tin cậy của dữ liệu truyền trên mạng.
o       Tính thích ứng của hệ thống trước sự phát triển của hệ thống mạng cả về quy mô và dịch vụ.
o       Sử dụng tối ưu băng thông mạng, trong môi trường nhiều người dùng.
o       Bảo đảm an toàn cho hệ thống, dữ liệu trước các mối đe dọa liên quan đến bảo mật.
Internet hiện nay đã rất phổ biến, vì vậy hiểu được hoạt động của Internet sẽ giúp bạn nâng cao hiệu quả khi khai thác, biết được các tác động của Internet đối với đời sống hàng ngày và quan trọng nhất là có nhiều cơ hội tìm kiếm việc làm nếu có kiến thức về hệ thống Internet.
Internet được hình thành vào những năm 1970 với một số lượng nhỏ nút mạng (node), là hệ thống kết nối các máy tính của một số trường đại học và viện nghiên cứu của Mỹ. Tên ban đầu của Internet là ARPANET (Advanced Research Projects Agency Network). Hình sau minh họa tiến trình phát triển về số lượng các nút mạng của Internet.


Ví dụ về một số thay đổi của hệ thống mạng để thích ứng với những thay đổi của môi trường người dùng:
Những thay đổi của môi trường người dùng
Những thay đổi để thích ứng của hệ thống mạng
Sự phát triển nhanh chóng của hệ thống web
Mạng nội dung phân tán (content distribution network)
Sự phát triển của dữ liệu âm thanh, hình ảnh dạng số
Chia sẻ dữ liệu ngang hàng peer-to-peer
Giá thành/đơn vị dữ liệu ngày càng giảm
Hệ thống VoIP
Số lượng kết nối tăng nhanh
IPv6
Sự phát triển của công nghệ không dây
Các thiết bị di động (mobile device)

Ảnh hưởng của Internet đến xã hội

-         Tiếp cận tri thức dễ dàng, miễn phí, ví dụ: hệ thống wikipedia.
-         Thực hiện các giao tác liên quan đến thương mại điện tử dễ dàng, ví dụ: hệ thống PayPal.
-         Hẹn hò, kết bạn trực tuyến, ví dụ: match.com
-         Trao đổi thông tin không bị kiểm duyệt, ví dụ: tor

Ảnh hưởng của Internet đến lĩnh vực kinh tế

Làm xuất hiện các hình thức kinh doanh mới:
-         Google: với dịch vụ quảng cáo có trả tiền thông qua dịch vụ tìm kiếm (adverstising-sponsored search).
-         Amazon: Bán hàng trực tuyến theo kiểu “cái đuôi dài” (long tail), tức là cung cấp cho khách hàng danh sách, trạng thái về tất cả các mặt hàng mà công ty đang có, điều này rất khó thực hiện với các cửa hàng truyền thống.
-         eBay: thị trường trực tuyến, cho phép người mua và người bán thỏa thuận về giá cả, hình thức thanh toán trên mạng.
-         Giao việc cho mạng lưới các cộng tác viên, thực hiện gia công từ xa. Một hình thức tận dụng ưu thế đám đông (crowdsourcing).

Vai trò của hệ thống mạng

-         Chia sẻ tài nguyên: bao gồm chương trình máy tính, thiết bị, dữ liệu.
-         Cho phép nhân viên ở xa có thể truy cập vào hệ thống mạng nội bộ như khi anh ta đang trực tiếp ở trong mạng nội bộ: sử dụng VPN.
-         Cung cấp môi trường trao đổi thông tin: thư điện tử (email), trao đổi trực tiếp dạng văn bản (instant messaging, Twitter), trao đổi trực tiếp bằng giọng nói qua mạng Internet (IP telephony hay Voice over IP), hội nghị truyền hình (video conference).
-         Thương mại điện tử: mua bán qua mạng (e-commerce).
-         Giải trí: nghe nhạc, chia sẻ hình ảnh (youtube), xem phim, đọc báo, đọc sách, trò chơi trực tuyến, truyền hình Internet (IPTV – IP TeleVison).
-         Cung cấp thông tin về các lĩnh vực trong đời sống.
-         Chia sẻ dữ liệu theo kiểu mạng ngang hàng (peer-to-peer): ví dụ BitTorrent.
-         Mạng xã hội (social network): Facebook
-         Máy tính đồng nhất (ubiquitous computing): việc tính toán được thực hiện ở mọi lúc mọi nơi. Ví dụ, các hệ thống nhúng trong các thiết bị: đồng hồ đo nước, đồng hồ đo điện, hệ thống báo cháy, …v.v.

Tác hại của Internet

-         Tính bí mật của thông tin cá nhân không được đảm bảo
-         Tình trạng vi phạm bản quyền
-         Tình trạng người sử dụng bị theo dõi ngầm
-         Không kiểm tra được tính chính xác của thông tin trên mạng

Câu hỏi tìm hiểu thêm

  1. So sách sự khác nhau giữa distributed system và computer network?.
  2. Tìm hiểu về ubiquitous computing, power-line network, RFID.
  3. So sánh fixed wireless network và mobile wireless network?

Tham khảo:

[1] Andrew S. Tanenbaum, David J. Wetherall, Computer Networks 5th edition, 2011
[2] David J. Wetherall, Introduction to Computer Networks, www.coursera.org, 2013

Đĩa cứng - 10 - LFN Directory Entry

(tiếp theo của Đĩa cứng 9)



Mối quan hệ giữa Root Directory (hoặc Directory) – Directory Entry – FAT Structure và vùng Data

Mối quan hệ giữa Root Directory (hoặc Directory) – Directory Entry - FAT Structure và vùng Data được minh họa trong hình sau:



Trong đó, mỗi thư mục hoặc tập tin (gọi chung là tập tin) sẽ có một cấu trúc dữ liệu để mô tả nó, gọi là Directory Entry. Directory Entry chứa tên tập tin, kích thước, địa chỉ (cluster) bắt đầu của nội dung tập tin trong vùng Data và một số thông tin khác.
Các Directory Entry được lưu trong vùng Root Directory hoặc Directory.
Nội dung của tập tin được lưu trong các khối dữ liệu gọi là các cluster. Nếu tập tin được lưu trong nhiều hơn một cluster, thì các cluster còn lại của tập tin sẽ được tìm thấy trong FAT Structure.
Như trong hình vẽ, từ Root Directory hệ thống biết được tập tin TTin2.txt bắt đầu tại Cluster số 6 trong vùng Data, dò trong FAT Structure, xác định được tập tin TTin2.txt  nằm trên ba cluster là cluster số 6, 7 và 9. Đọc ba cluster này sẽ được nội dung của tập tin TTin2.txt.

Directory Entry cho tập tin có tên dài

Directory Entry bình thường chỉ hỗ trợ tên tập tin dài nhất là tám kí tự, phần mở rộng là ba kí tự. Các tên tập tin dài hơn tám kí tự hoặc các tên tập tin có chứa các kí tự đặc biệt sẽ sử dụng một  loại Directory Entry khác, được gọi là LFN Directory Entry. LFN là viết tắt của Long File Name.
Mỗi tập tin sẽ có một Directory Entry bình thường (Short Directory Entry), nếu có các LFN Directory Entry, thì các Entry này sẽ được đặt trước Directory Entry bình thường.
Các trường của một LFN Directory Entry được mô tả trong bảng sau:
Byte thứ
Mô tả
0-0
Chỉ số của Entry, hoặc trạng thái cấp phát (0xE5 nếu chưa được cấp phát)
1-10
Kí tự thứ 1-5 của tập tin (Unicode)
11-11
Byte thuộc tính (xem bảng về Byte thuộc tính)
12-12
Chưa sử dụng
13-13
Giá trị Checksum
14-25
Kí tự thứ 6-11 của tập tin (Unicode)
26-27
Chưa sử dụng
28-31
Kí tự thứ 12-13 của tập tin (Unicode)
Chỉ số của Entry được sử dụng để đếm số lượng các Entry cần thiết để lưu tên tập tin, Entry đầu tiên có chỉ số là 1. Chỉ số này được tăng lên một đơn vị khi có thêm một Entry cho tới Entry cuối cùng. Chỉ số trong Entry cuối cùng được OR với 0x40.
Các LFN Entry của một tập tin được đặt trước các Entry bình thường, theo thứ tự ngược. Vì vậy, LFN Entry đầu tiên tìm thấy trong Root Direcotry hoặc Directory sẽ là LFN Entry cuối cùng của tập tin và có chỉ số lớn nhất. Các vị trí để lưu các kí tự của tập tin nếu không sử dụng hết sẽ được chèn kí tự NULL, sau đó là các giá trị 0xFF.
“Byte thuộc tính” của LFN Entry có giá trị 0x0F.
Giá trị Checksum được tính dựa trên tên tập tin dạng ngắn, các LFN Entry của cùng một tập tin sẽ có giá trị Checksum giống nhau.
Ví dụ, hình dưới đây là trích một phần nội dung của Root Directory, tại sector 31 985 và sector 31 986.





Bảng dữ liệu gồm ba Entry, trong đó hai Entry đầu có Byte thuộc tính là 0x0F (tại offset 0x1EB và offset 0x0B), nên nó là LFN Entry. Entry thứ ba là một Entry bình thường.
Tại Entry đầu tiên, chỉ số của Entry mang giá trị 0x42, như vậy, giá trị của chỉ số Entry khi chưa OR với 0x40 là 2, có thể kết luận tập tin có hai LFN Entry. Trường Checksum mang giá trị 0xB8.
Năm kí tự đầu tiên của Entry này (offset 0x1E1 – 0x1EA) là “alat.” (dấu “.” có mã ASCII là 0x2E), vùng kí tự kế tiếp trong Entry này (offset  0x1EE – 0x1F3) là “txt”, sau đó là kí tự NULL và các giá trị 0xFFFF, vùng kí tự cuối cùng cũng bao gồm các giá trị 0xFFFF. Như vậy, phần cuối của tên tập tin đã được xác định là “alat.txt”.
Entry thứ hai, bắt đầu tại offset 0x00, sector 31 986, cũng được đánh dấu là LFN Entry. Chỉ số của Entry này mang giá trị 1. Giá trị Checksum cũng giống với Entry đầu tiên, 0xB8. Các trường kí tự tìm được trong Entry này là: “TenTa”, “pTinDa”, “iD”. Vì chỉ số của Entry là 1 nên đây là Entry cuối cùng tìm được. Vậy, tên tập tin đầy đủ là “TenTapTinDaiDalat.txt”.
Tên tập tin này ở dạng ngắn được lưu trong Entry thứ ba, nó là một Entry bình thường và có tên là “TENTAP~1.TXT”.

Tìm các cluster thuộc về một tập tin (trong FAT Structure)

Từ các Entry trong Root Directory hoặc trong Directory, xác định được cluster bắt đầu vùng dữ liệu của tập tin (hay thư mục). Giá trị cluster này cũng chính là chỉ số của Entry bắt đầu của tập tin trong FAT Structure, từ Entry bắt đầu này, theo liên kết của FAT Structure sẽ tìm được tất cả các cluster thuộc về tập tin.
Như vậy từ giá trị cluster bắt đầu, phải xác định được vị trí của Entry tương ứng trong FAT Structure.
Gọi giá trị cluster bắt đầu là N.
Khi đó địa chỉ Offset tương ứng của N trên FAT Structure (kí hiệu: FATOffset) được tính bằng công thức:

FATOffset = N *4

Đơn vị tính của FATOffset là byte. Mỗi Entry trong FAT32 có kích thước 4 byte.
Từ FATOffset, tính chỉ số sector tương ứng trong FATStructure (kí hiệu: ThisFATSecNum):

ThisFATSecNum = ResvdSecCnt + RoundUp(FATOffset / BytsPerSec)
Trong đó:
-         ResvdSecCnt: số sector vùng Reserved.
-         BytsPerSec: kích thước của một sector (byte)
-         RoundUp: “làm tròn lên” kết quả của phép chia.

Tính địa chỉ Offset trong sector (kí hiệu: ThisFATEntOffset)

ThisFATEntOffset = FATOffset % BytsPerSec
Trong đó: “%” là phép chia lấy phần dư.
Ví dụ, xét một Entry trong Root Directory sau:




Byte thứ 20-21 chứa giá trị byte cao của cluster bắt đầu “04 00”, và byte thứ 26-27 chứa byte thấp của cluster bắt đầu “32 08”. Vậy, giá trị của cluster bắt đầu là 0x00040832, đổi sang hệ thập phân là 264242.
Tính địa chỉ Offset tương ứng của N trên FAT Structure
Ta có N = 264 242,
Vậy, FATOffset = 264 242 * 4 = 1 056 968 (byte)
Tính số sector tương ứng trong FAT Structure
ThisFATSecNum = 38 + (1 056 968 / 512) = 38 + 2065 = 2103
Tính số sector vật lý tương ứng trong FAT Structure
2103 + 63 = 2166
Tính địa chỉ Offset trong sector
ThisFATEntOffset = 1 056 968 % 512 = 200
Lưu ý
Do FAT Structure sử dụng từ Entry số 2 trở đi (Entry số 0 và số 1 không sử dụng), nên vị trí vật lý của các Entry sẽ phải tịnh tiến lên 8 byte.
Nội dung của sector vật lý 2166 được thể hiện trong hình sau.





Giá trị của Entry 264 242 trong FAT Structure là vùng tô màu đỏ ở hình trên, có giá trị 0x0FFFFFFF (giá trị của EOF).
Nghĩa là dữ liệu của tập tin TENTAP~1.TXT chứa trong một cluster, đó là cluster 264 242.

Đọc nội dung của tập tin trong vùng Data khi biết cluster bắt đầu

Để đọc nội dung của tập tin trong vùng Data khi biết cluster bắt đầu:
-         Xác định chuỗi các cluster thuộc về tập tin (đọc FAT Structure).
-         Tính sector bắt đầu khi biết giá trị cluster.
-         Đọc từng cluster dựa trên sector bắt đầu.

Tính sector bắt đầu khi biết giá trị cluster

Nếu biết giá trị cluster (kí hiệu: N) bất kì, có thể tính được sector bắt đầu (sector tương đối) của cluster đó bằng công thức sau:
FirstSectorOfCluster = ((N – 2) * SecPerClus) + FirstDataSector
-         FirstSectorOfCluster: sector bắt đầu của cluster
-         SecPerClus: số sector/cluster
-         FirstDataSector: sector đầu tiên của cluster số 2 trong vùng Data
Ví dụ, giá trị của cluster bắt đầu N = 0x00040832, đổi sang hệ thập phân là 264242.
Áp dụng công thức trên:
FirstSectorOfCluster = ((264 242 - 2) * 4) + 31 920 = 1 088 880.
Vậy sector vật lý là: 1 088 880 + 63 = 1 088 943.
Đọc sector vật lý 1 088 943 sẽ được phần nội dung đầu tiên của tập tin, như hình dưới đây.




LGC.
-------------------------------------------
Cập nhật 27/4/2013
------------------------------

 Tham khảo:

[3] FAT32_Hardware White Paper
[5] Brian Carrie, File System Forensic Analysis, Addison Wesley Professional, 2005







Đĩa cứng - 9 - Directory Entry

(Tiếp theo của đĩa cứng 8)


Directory (thư mục)

Directory là cấu trúc dữ liệu tương tự như Root Directory, nó cũng chứa các Directory Entry.
Trong khi Root Directory thường nằm ở phần đầu của vùng Data, thì Directory có thể nằm ở vị trí bất kì trong vùng Data.
Directory thực tế là một tập tin, tập tin này chứa các cấu trúc dữ liệu (Directory Entry) mô tả thông tin về các tập tin hay thư mục con của Directory.
Trong một ổ đĩa logic chỉ có một Root Directory, nhưng có nhiều Directory.
Root Directory là đầu mối để hệ thống truy cập tới các tập tin, các Directory con nằm trong thư mục gốc của ổ đĩa. Các Directory lại là đầu mối để đi đến các tập tin hoặc Directory con trong nó.
Directory trong hệ thống FAT32 được tổ chức theo cấu trúc cây, trong đó, Root Directory là nút gốc.
Hình sau minh họa về cấu trúc của Directory.



Directory Entry

Directory Entry có kích thước 32 byte. Mỗi Directory Entry sẽ mô tả thông tin về một tập tin (thư mục), gồm: tên tập tin, kích thước, địa chỉ bắt đầu của vùng nội dung và một số thông tin khác.
Các trường của một Directory Entry được minh họa trong bảng dưới đây:
Byte thứ
Mô tả
0-0
Kí tự đầu tiên của tên tập tin, hoặc trạng thái cấp phát (0xE5 hoặc 0x00: nếu chưa được cấp phát)
1-10
Kí tự thứ 2 đến 11 của tên tập tin
11-11
Byte thuộc tính (xem bảng về Byte thuộc tính)
12-12
Chưa sử dụng
13-13
Thời gian tạo tập tin (mili giây)
14-15
Thời gian tạo tập tin (giờ:phút:giây)
16-17
Ngày tạo tập tin
18-19
Thời gian truy cập mới nhất (gồm thao tác đọc/ ghi), nếu là ghi thì giá trị của trường này sẽ giống với trường WrtTime.
20-21
Phần byte cao (High word) của cluster bắt đầu.
22-23
Thời gian ghi tập tin mới nhất. Chú ý: tạo tập tin cũng được coi là ghi tập tin (giờ:phút:giây).
24-25
Ngày ghi tập tin mới nhất. Chú ý: tạo tập tin cũng được coi là ghi tập tin. Kí hiệu WrtTime.
26-27
Phần byte thấp (Low word) của cluster bắt đầu.
28-31
Kích thước của tập tin, đơn vị tính là byte. (nếu là thư mục, giá trị này là 0).
Chú ý: nếu tên của tập tin có kí tự đầu tiên là 0xE5, hệ thống sẽ thay thế giá trị này bằng 0x05. Nếu tên tập tin không sử dụng hết 8 byte, các byte không dùng sẽ được chèn bằng khoảng trắng (0x20).
Trường lưu kích thước của tập tin là bốn byte, do vậy kích thước tối đa của tập tin là 4GB. Với Entry là thư mục, trường này sẽ có giá trị là 0.
Các trường liên quan đến ngày tháng năm, gồm hai byte, được chia làm ba phần: năm bit thấp chứa Ngày (giá trị hợp lệ từ 1–31), bit 5–8 chứa Tháng (giá trị hợp lệ từ 1–12), bit 9-15 chứa Năm (giá trị hợp lệ 0-127), giá trị Năm này cộng với 1980 sẽ ra giá trị thật của Năm. Ví dụ về Ngày:Tháng:Năm được minh họa trong hình sau:


 Ví dụ, biểu diễn ngày 10/4/2013.


 
 

Các trường liên quan đến thời gian, gồm 16 bit, được chia làm ba phần: năm bit thấp là Giây, hệ thống đếm từng hai giây một, nên giá trị hợp lệ là 0-29, và giá trị giây thực tế là 0-58. Sáu bit kế tiếp là Phút, giá trị hợp lệ là 0-59. Năm bit cuối cùng là Giờ, giá trị hợp lệ là 0-23.
Ví dụ về Giờ:Phút:Giây được minh họa trong hình sau:

 

  Giá trị cụ thể các trường trong Byte thuộc tính được thể hiện trong bảng dưới đây.

Giá trị
Mô tả
0000 0001 (0x01)
READ_ONLY: chỉ đọc
0000 0010 (0x02)
HIDDEN: ẩn
0000 0100 (0x04)
SYSTEM: hệ thống
0000 1000 (0x08)
VOLUME_ID: tên ổ đĩa
0001 0000 (0x10)
DIRECTORY: thư mục
0010 0000 (0x20)
ARCHIVE: lưu trữ
0000 1111 (0x0f)
LONG_NAME: tên tập tin dài

Hai bit cao của Byte thuộc tính là 2 bit dự trữ, được thiết lập giá trị 0.
Các Entry có thiết lập thuộc tính LONG_NAME sẽ có cấu trúc dữ liệu khác để thể hiện tên tập tin dài.
Ví dụ về Directory Entry, xét Entry số hai trong Root Directory.



 Nội dung của Entry số hai:


Byte thứ
Mô tả
0-0
W
1-10
INDOWS
11-11
0x10 => thư mục
12-12
0
13-13
0x8E
14-15
0x5228 => giờ tạo: 10h:17:17 AM
16-17
0x425C => ngày tạo: 28/2/2013
18-19
0x425C
20-21
0x0000 => byte cao của cluster bắt đầu
22-23
0x5229
24-25
0x425C
26-27
0x5003 => byte thấp của cluster bắt đầu
28-31
0x00000000 => không thể hiện dung lượng


LGC.
-------------------------------------------
Cập nhật 23/4/2013
------------------------------

 Tham khảo:

[3] FAT32_Hardware White Paper
[5] Brian Carrie, File System Forensic Analysis, Addison Wesley Professional, 2005