Có nhiều bạn sợ môn Mạng máy tính, nhất là chia mạng con.
Vì thế mình sẽ giúp các bạn làm sao để làm tốt bài tập chia mạng con, cũng như là cách chia mạng con nhanh nhất để các bạn không còn phải sợ nó nữa.
I/ Một chút thông tin cần biết:
A – Địa chỉ IP
Hiện nay hầu hết chúng ta đang xài địa chỉ IPv4 (IP version 4) và nó đã sắp hết.
Cấu trúc của một địa chỉ IPv4 có 32 bit (4bytes) chia làm 4 octec.
Nó sẽ có dạng: xxxxxxxx.yyyyyyyy.zzzzzzzz.tttttttt (với x y z t là bit 0 hoặc 1).
Để dễ dàng hơn trong việc hiểu, ng ta thường đọc dưới dạng số thập phân VD 192.168.4.2 thay vì 11000000.10101000.00000100.00000010.
Địa chỉ IP gồm có 2 phần. Phần Net ID và Host ID.
Chúng ta chỉ quan tâm đến địa chỉ lớp A,B,C
Địa chỉ mặc định lớp A có octec đầu tiên làm NET ID, 3 octet còn lại làm Host ID Địa chỉ mặc định lớp B có 2 octec đầu tiên làm NET ID, 2 octet còn lại làm Host ID Địa chỉ mặc định lớp C có 3 octec đầu tiên làm NET ID, 1 octet còn lại làm Host ID Cách nhận biết địa chỉ nào đó thuộc Lớp A, lớp B, hay lớp C, ta dựa vào Octet đầu tiên Giả sử địa chỉ IP có dạng x.y.z.t
Nếu x từ 1 đến 126 -> địa chỉ lớp A Nếu x từ 128 đến 191 -> dịa chỉ lớp B Nếu x từ 192 -> 224 -> địa chỉ lớp C
Riêng 127.0.0.1 là địa chỉ loop back. Địa chỉ này chính là địa chỉ đại diện chi máy chúng ta (Vào menu Run gừ ping 127.0.0.1 thỡ biết liền)
B- Subnet Mask.
Có nhiều bạn vẫn khó hình dung được subnet mask là cái gì.
Theo mình thì Subnet Mask (mặt nạ mạng) là một chuỗi 32bit tương tự như địa chỉ IP, có điều nó giúp cho máy tính biết, phần nào là Net ID, phần nào là Host ID bằng cách bật các bit Phần Net ID lên 1, và các bit phần Host ID là 0.
Ví dụ ta có một địa chỉ mạng là 10.0.0.0
Khi đó ta có thể biết được mạng này thuộc lớp A (Octec đầu tiên < 126).
Subnet Mask của mạng sẽ là 255.0.0.0 (tức là 11111111.00000000.00000000.0000000)
Khi vào sâu hơn bài tập mình sẽ nói kĩ hơn về Subnet mask.
Tóm lại các bạn cứ hiểu Subnet Mask như một cái mặt nạ, chỗ nào các bạn che đi (Bật bit 1 lên) thì chỗ đó là Net ID, chỗ nào các bạn không che (Bật bit 0 lên) thì chỗ đó là Host ID
II/ Bài tập
2. Byte đầu tiên của một địa chỉ IP có dạng: 11011011. Vậy nó thuộc lớp nào:
a. Lớp A b. Lớp B c. Lớp C d. Lớp D
các bạn có thể đổi nhỉ phân sang thập phân để biết nó là lớp mấy.
Riêng mình thì mình dựa vào các bit ở Octet đầu tiên 0 là lớp A, 10 là lớp B, 110 là lớp C, 1110 là lớp D.
3 Subnet Mask nào sau đây là hợp lệ:
a. 0.255.255.255 b. 0.0.0.255 c. 255.0.0.255 d. 255.255.255.0
Subnet mask thì các bit 1 luôn đứng trước các bit 0 => Câu đúng là câu D
NAT và PAT
Network Address Translation: NAT là kỹ thuật thay đổi các địa chỉ mạng (Network Address) trong một gói tin (packet) để gây ảnh hưởng trong quá trình định hướng đi của packet cho một mục đích cụ thể. Địa chỉ mạng ở đây muốn nói đến địa chỉ IP WAN (Internet Protocol) ở layer 3, ngoài ra còn có thể thay đổi số port ở layer 4 theo mô hình phân lớp OSI. Bên cạnh đó địa chỉ mạng còn được phân biệt địa chỉ nguồn (source) và địa chỉ đích (destination). Tùy theo mục đích dùng NAT mà ta thay đổi một số hoặc tất cả các loại địa chỉ trên, trên cùng một packet.
Đây là loại hình NAT phổ biến nhất, ta còn hay gọi là Des NAT, hay NAT Inbound. NAT theo kiểu này chỉ thay đổi địa chỉ IP đích của gói tin mà không đụng đến các thành phần khác. Đây cũng là kiểu được sử dụng mặc định trong các ROUTER ( thiết bị định tuyến nói chung ) theo cách sau:
• Khi client gửi packet request i tới ROUTER, i sẽ có dest IP là Virtual IP của ROUTER (141.149.65.3), source IP là IP của client (188.1.1.10). Do ROUTER đại diện cho tất cả những server thực đằng sau, nên IP của ROUTER cũng là địa chỉ đại diện, client sẽ chỉ liên hệ với ROUTER mà không biết được địa chỉ thật của các server là gì ( trước khi biết VIP của router nó phải nhờ DNS server dịch từ tên miền sang địa chỉ IP ). Địa chỉ IP đại diện của ROUTER còn là địa chỉ IP ảo (Virtual IP - VIP)
• ROUTER sẽ gửi repquest i đến server để xử lý nên nó thực hiện thay dest IP trong i thành IP của server (10.10.10.20), source IP vẫn giữ nguyên (188.1.1.10). Thao tác này gọi là Destination NAT ( dịch chuyển IP đích ).
• Khi server trả lời, packet reply sẽ đi qua lại ROUTER. Tại đây packet được un-NAT, nghĩa là thay lại địa chỉ IP của server (lúc này trở thành source IP) bằng VIP của ROUTER.
Reverse NAT
Trong cơ chế của ROUTER, các server thật chỉ được cấp địa chỉ IP private (vì nhiều lý do, trong đó có sự hạn chế về số lượng IP public và tính bảo mật, ngoại trừ một số trường hợp đặc biệt cho server kết nối thẳng IP public), nghĩa là không thể đi ra Internet được. ROUTER được publish ra Internet để nhận request cho các server bên trong, nên nó thường có một, hoặc nhiều địa chỉ IP public để các client kết nối từ bên ngoài vào, và địa chỉ này cũng là VIP. Khi client muốn sử dụng dịch vụ của server bên trong, ROUTER thực hiện việc chuyển đổi địa chỉ dest IP từ public sang private để đến được server, đó là kiểu NAT ta xét ở trên. Trong trường hợp ngược lại, khi server bên trong muốn khởi tạo kết nối với bên ngoài Internet, ROUTER phải thực hiện việc chuyển địa chỉ source IP của packet đi ra từ private sang public để có thể lưu thông trên Internet.
Do cách hoạt động như vậy nên kiểu NAT này còn được gọi là SourceNAT, hay NAT outbound.
Port-Address Translation (PAT)
Hai trường hợp trên ta đã xem xét hai kiểu thay đổi địa chỉ IP, trường hợp thứ ba này còn được gọi là “NAT port”, nghĩa là số port TCP/UDP ở trong packet sẽ bị thay đổi (ở đây ta không xét đến các protocol khác cũng có dùng port). PAT cũng là một phần tất yếu trong các chức năng
- Bảo mật là ích lợi đầu tiên mà ta thấy ngay. Bằng cách không mở những cổng mặc định trên server, ta có thể gây khó khăn hơn cho việc tấn công ác ý. Chẳng hạn, ta có thể chạy một Web server trên port 4000, và liên kết port 80 của VIP trên ROUTER đến port 4000 của server thật.
Lúc bấy giờ, kẻ tấn công không thể khai thác trực tiếp lên port 80 của server thật được, vì nó không được mở.
- Khả năng co dãn (scalability) PAT cho phép ta chạy cùng một ứng dụng trên nhiều port. Tùy theo cách thiết kế ứng dụng, có thể việc chạy nhiều bản sao của nó sẽ làm tăng hiệu suất phục vụ lên. Chẳng hạn ta có thể chạy máy chủ web IIS trên các port 80, 81, 82 của mỗi server thật. Sau đó chỉ cần liên kết port 80 của VIP với mỗi port chạy IIS của server thật. Load balancer sẽ phân bổ lưu thông không chỉ cho các server mà còn giữa các port trên từng server.
- Khả năng quản trị (manageability) chẳng hạn khi host nhiều website trên một bộ các server thật, ta có thể chỉ cần dùng một VIP để đại diện cho tất cả các domain của các website. Lúc này ROUTER sẽ nhận tất cả các request đến port 80 ở cùng một VIP. Web server của ta có thể chạy mỗi domain trên một port khác nhau, chẳng hạn www.abc.com trên port 81, www.xyz.com trên port 82. ROUTER có thể gửi lưu thông đến port phù hợp dựa trên domain trong URL của mỗi HTTP request.
Full NAT
Như vậy ta đã xét kỹ thuật NAT thay đổi lần lượt địa chỉ đích, địa chỉ nguồn, rồi thay đổi port khi định tuyến. Mỗi sự thay đổi là một loại hình NAT có ứng dụng trong từng trường hợp riêng.
Kết hợp các kiểu thay đổi này lại, ta có một kiểu NAT khác phức tạp hơn là Full NAT. Kiểu NAT này có tên gọi như vậy vì nó bao gồm các thay đổi sau đây trên gói tin request:
• Địa chỉ IP nguồn (source IP)
• Địa chỉ IP đích (dest IP)
• Port nguồn (source port)
Lưu ý source port ở đây là port của client, còn dest port là port được request trên server, chẳng hạn port 80 ở ví dụ trên.
Kiểu NAT này khác với những kiểu NAT trên ở chỗ, packet từ server reply có thể bỏ qua ROUTER mà đi thẳng đến client ở ngoài Internet. Vấn đề ở chỗ địa chỉ IP của server vẫn là private IP, do đó đương nhiên packet reply mang địa chỉ source là IP nội bộ sẽ chẳng bao giờ đến được client.
Vậy thì bằng cách nào để buộc server phải trả lời thông qua ROUTER để được NAT địa chỉ IP đi ra Internet? Cách đơn giản nhất là ta có thể khai báo cho ROUTER là default gateway của các server. Nhưng cách này yêu cầu ROUTER phải ở cùng subnet với các server (cùng Layer 2 broadcast domain). Nếu không thể nằm cùng subnet thì sao? Đây là chỗ Full NAT khác biệt FULL NAT được sử dụng.
sự nữa. Vì thế server sẽ reply lại cho ROUTER và ROUTER sẽ đổi lại dest IP thành IP của client thực sự (188.1.1.100) để gửi đi.
Như vậy source port được thay đổi ở chỗ nào? Mỗi lần thay đổi một source IP của client thành source IP của ROUTER, gọi là một session, thì ROUTER thực hiện lưu lại những thông tin của client trong session đó bằng cách đổi source port trong cùng packet (lúc này đang là source port của client).
Source port lúc này có ý nghĩa như là một session ID không hơn không kém. Khi server reply về cho ROUTER, source port cũng được gửi trả về theo packet reply. Dựa vào source port này, ROUTER xác định được session của client trong bảng lưu để thay lại source IP, source port của client như cũ.
Ưu điểm của kiểu NAT này là cho phép bạn thực hiện việc thay đổi địa chỉ thông qua ROUTER trên mọi topology mạng. Nhược điểm là không lấy được các thông tin về IP, port từ phía client.
Những ứng dụng như Web có sử dụng thông tin từ source IP của client thì không nên dùng mô hình này. Đa số các sản phẩm ROUTER đều cung cấp chức năng log và report source IP của các request.
Enhanced NAT
Những kỹ thuật NAT vừa trình bày ở trên đều xoay quanh việc thay đổi địa chỉ IP, cũng như port trong packet header. Tuy nhiên có những protocol đặc biệt chứa thông tin địa chỉ hay port nhúng trong packet payload, cũng cần phải được thay đổi cùng với packet header.
Điều này đòi hỏi ROUTER phải hiểu biết theo từng protocol cụ thể. Khái niệm enhanced NAT nói đến kiểu NAT phức tạp được thực hiện với những hiểu biết theo từng protocol cụ thể để làm cho những protocol đó hoạt động được với việc định tuyến gói tin.
Trong số các protocol đặc biệt đó, thông dụng nhất là các protocol streaming media (ví dụ RTSP - Real Time Streaming Protocol). Đây cũng là các protocol sử dụng cân bằng tải phổ biến nhất, vì chúng cực kì ngốn tài nguyên mạng và tính toán khi phải phục vụ đồng thời cho hàng trăm đến hàng ngàn người sử dụng.
Các protocol streaming thường gồm có hai kết nối, một kết nối điều khiển xây dựng trên TCP và một kết nối dữ liệu dựa trên UDP. Để khởi đầu, client khởi tạo một kênh điều khiển đến một well-known port trên server. Client và server sẽ thoả thuận các điều khoản cho kênh điều khiển.
Sự thoả thuận gồm có IP của server và số port của server mà client sẽ gửi dữ liệu đến trên kết nối dữ liệu.
Nếu các server có địa chỉ IP private, ROUTER sẽ thực hiện Destination NAT cho kết nối điều khiển. Nhưng đồng thời ROUTER cũng phải xem các thông tin thoả thuận và thay đổi mọi thông tin về địa chỉ IP hay port mà server và client trao đổi sao cho client sẽ gửi dữ liệu đến VIP public chứ không phải IP private của server (những thông tin này nằm trong payload của packet).
Hơn nữa, dest port được chọn trong quá trình thoả thuận lại không biết trước được nên phải xử lý request ngay cả khi port chưa được liên kết đến bất kỳ server nào.
Tuy nhiên, nhiều doanh nghiệp lại có những chính sách bảo mật trên tường lửa làm cho những kết nối dữ liệu trên nền tảng UDP có thể không thành công. Do đó nhiều hệ thống streaming media cho phép stream trên nền HTTP, nghĩa là toàn bộ dòng dữ liệu sẽ được gửi đi bằng kết nối được thiết lập bởi giao tiếp HTTP. Điều này làm cho việc NAT trở nên nhẹ nhàng hơn.
Direct Server Return (DSR)
Xét lại 2 kiểu NAT trên, ta xem hai cách xử lý cùng với các ưu nhược điểm của chúng là gán default gateway hay dùng kỹ thuật Full NAT để ép các reply của server không phải đi qua ROUTER.
Nhưng trường hợp ta muốn server trả lời trực tiếp cho client mà không thông qua ROUTER thì sao? Đây không phải là câu hỏi vô lý, vì trong trường hợp năng lực xử lý của ROUTER bị giới hạn, thì việc tách dòng lưu thông reply đi trực tiếp mà không qua ROUTER sẽ giúp ROUTER tập trung vào xử lý các lưu thông request hiệu quả hơn, tránh tắc nghẽn, nâng cao hiệu suất.
Nhưng với địa chỉ IP private, các server làm sao trả lời trực tiếp qua Internet đến client được?
Chỉ với một chút phù phép xoay quanh các địa chỉ IP là vấn đề sẽ được giải quyết: khi được thiết lập để thực hiện DSR, ROUTER không chuyển dest IP thành IP của server mà vẫn giữ nguyên là VIP (public IP). ROUTER chỉ đổi dest MAC thành MAC của server để packet có thể đến được server. Như vậy giới hạn của DSR là ROUTER và các server phải nằm cùng subnet.
Vấn đề còn lại là làm sao để khi server nhận request packet từ ROUTER chuyển đến sẽ không từ chối, vì dest IP không phải là IP của server, mà là VIP! Một cách đơn giản, ta cấu hình để VIP là địa chỉ của loopback interface trên mỗi server. ROUTER dùng cách này vì lợi dụng những tính chất thú vị sau đây của loopback interface:
• Có thể gán bất kỳ địa chỉ IP nào, không bắt buộc phải bắt đầu bằng 127.
• Vì loopback interface không phải là một thiết bị thật, nó không có địa chỉ MAC, nên hệ thống sẽ không trả lời cho các request ARP. Do đó sẽ không có hệ thống bên ngoài nào biết được địa chỉ IP của loop back interface. Tuy nhiên, hệ thống vẫn nhận request đến IP của loop back interface và trả lời như là các interface khác.
Ta có thể thiết lập một địa chỉ IP public cho loop back interface trên Linux như sau:
ifconfig lo 141.149.65.3 netmask 255.255.255.0 up.
Như vậy, bằng một chút thủ thuật với các địa chỉ, server thật không cần địa chỉ IP public vẫn có thể nhận request và trả lời trực tiếp cho client.
DSR rất hữu ích cho những ứng dụng tốn băng thông như FTP, streaming media, khi mà kích