Làm việc với địa chỉ IP

Chia sẻ: Son Cung | Ngày: | Loại File: PDF | Số trang:8

0
541
lượt xem
317
download

Làm việc với địa chỉ IP

Mô tả tài liệu
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Tham khảo tài liệu 'làm việc với địa chỉ ip', công nghệ thông tin, quản trị mạng phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả

Chủ đề:
Lưu

Nội dung Text: Làm việc với địa chỉ IP

  1. IPMAC INFORMATIC TECHNOLOGY JSC Làm việc với địa chỉ IP Địa chỉ IP, cả IPv4 và IPv6, đều tỏ ra tương đối phức tạp, nhưng thực tế chúng đều có những cấu trúc cơ bản, và sử dụng một số qui luật để có thể tính toán một cách nhanh chóng nhất. Trong tài liệu này chúng ta sẽ cùng ôn lại một số khái niệm cư bản trong IPv4 và các kỹ thuật được sử dụng để có thể làm việc với địa chỉ IP một cách đơn giản hơn. Cuối cùng chúng ta sẽ cùng đề cập đến cách ứng dụng các kỹ thuật đó trong IPv6. Cơ bản về cách gán địa chỉ Địa chỉ IPv4 là một số nhị phân 32 bit. Để dễ dàng đối với người sử dụng, người ta chia địa chỉ IPv4 ra làm 4 phần, được phân chia bởi dấu chấm (.), và mỗi phần chia đó được gọi là một octet. Một octet là một số nguyên 8 bit, còn có thể gọi là một byte. Chúng ta không sử dụng từ byte ở đây, vì byte có thể dao động, thay đổi giữa các máy tính, trong khi octet là một số cố định không thay đổi. Hình 1 minh họa cấu trúc của một địa chỉ IPv4. Hình 1: Cấu trúc của một địa chỉ IPv4 Vì mỗi octet đại diện cho một số nhị phân (cơ số 2), nằm trong khoảng từ 0 đến 8, nghìa là từ 0 đến 255. Phần này tương đối đơn giản, vậy còn subnet mask thì sao. Để hiểu về subnet mask, trước hết ta tìm hiểu cách mà các thiết bị xử lý từ subnet mask để xác định chính xác địa chỉ để gửi gói tin. Hình 2 sẽ minh họa điều này. Hình 2: Subnet mask Làm việc với địa chỉ IP 1
  2. IPMAC INFORMATIC TECHNOLOGY JSC Nếu host A, với địa chỉ IP local là 10.1.1.2 và subnet mask là 255.255.255.0, muốn gủi một gói tin tới địa chỉ IP 10.1.3.2 của host D, làm sao để host A có thể biết được host D có kết nối trực tiếp trong cùng một mạng (broadcast domain) hay không? Nếu D nằm trong cùng mạng thì A sẽ căn cứ vào địa chỉ lớp 2 cua D để gửi gói tin đi. Nếu D nằm ở khác mạng hay khác broadcast domain thì A sẽ gửi gói tin đến default gateway của mình. Để tìm hiểu xem D có nằm trong cùng mạng hay không, A sẽ sử dụng địa chỉ IP local của mình thực hiện một thuật toán AND với subnet mask. Rồi tiếp đó lại sử dụng địa chỉ IP cùng subnet mask của D, và thực hiện tiếp một thuật toán AND tương tự. Nếu hai kết quả thu được, còn gọi là địa chỉ mạng (network address) hay prefix trùng khớp thì A có thể kết luận A và D nằm trên cùng một mạng hay một broadcast domain. Tiếp đó A sẽ tra trong Address Resolution Protocol (ARP) cache để tìm địa chỉ lớp 2 của D và gửi bản tin đến D dưới dạng bản tin nội bộ. Ngược lại, nếu hai kết quả này không trùng khớp, nghĩa là hai thiết bị nằm trên hai mạng khác nhau, thì A sẽ gửi bản tin đến default gateway của mình. Lưu ý: ARP là một giao thức dùng để gán địa chỉ IP và địa chỉ MAC lớp 2 của các thiết bị trong cùng một mạng. Các thiết bị gửi một bản tin broadcast trong đó chứa địa chỉ IP của một số thiết bị mà nó tin là đang kết nối trực tiếp trong mạng, và các thiết bị với địa chỉ IP tương ứng đó sẽ reply lại với địa chỉ lớp 2 của mình, giúp thiết bị ban đầu có thể có một bảng tương ứng giữa địa chỉ IP và địa chỉ lớp 2, thuận lợi trong việc gửi các bản tin nội bộ. Nếu subnet mask ở dạng thập phân, vậy làm thế nào để xác định prefic length ? Prefix length là một dạng viết tắt của subnet mask. Prefix length là số lượng các bit được set trong subnet mask. Ví dụ một subnet mask là 255.255.255.0 thì ta nhận thấy có 24 bit 1 trong subnet mask, vì vật prefix length sẽ là 24 bits. Hình 3 sẽ minh họa về network mask và prefix length. Hình 3: Bảng Prefix Length. Làm việc với địa chỉ IPv4 Như vậy ta đã biết về cấu trúc của địa chỉ IPv4, nó được hình thành thế nào, và biết về các khái niệm subnet mask và prefix length. Vậy làm việc với chúng như thế nào ? Làm việc với địa chỉ IP 2
  3. IPMAC INFORMATIC TECHNOLOGY JSC Các câu hỏi chún ta thương gặp phải khi làm việc với địa chỉ IP là: - Địa chỉ mạng của prefix là bao nhiêu ? - Địa chỉ host là bao nhiêu ? Có hai cách để giải quyết vấn đề này, cách phức tạp và đơn giản. Trước hết ta sẽ nói về cách phức tạp, và tiếp sau sẽ đề cập về phương pháp đơn giản. Cách phức tạp Các phức tạp là ta sẽ chuyển đổi địa chỉ prefix và địa chỉ host sang dạng nhị phân và sau đó thực hiện các thuật toán AND và NOR giữa địa chỉ đó với subnet mask và sau đó lại chuyển đổi kết quả trở lại dạng thập phân. Hình 4 minh họa quá trình chuyển đổi địa chỉ một octet đơn trong một địa chỉ IPv4 sang dạng nhị phân, số được chuyển đổi ở đây là 192. Hình 4: Chuyển đổi nhị phân. Quá trình tính toán là tương đối đơn giản. Ta sẽ lấy số thập phân ban đầu chia cho 2, lấy phần dư ra, rối lại chia tiếp thương số vừa nhận được cho 2, lại lấy phần dư ra, tới khi bằng 0. Các phần dư được sắp xếp theo chiều ngược lại chính là số nhị phân cần tìm. Thực hiện phép tính với cả 4 octet ta sẽ được địa chỉ IP dưới dạng nhị phân và sau đó ta có thể dùng các thuật tóan logic AND và NOR để tím ra được prefix (network address) và host address. Hình 5 sẽ minh họa một ví dụ với địa chỉ 192.168.100.80/26. Làm việc với địa chỉ IP 3
  4. IPMAC INFORMATIC TECHNOLOGY JSC Hình 5: Ví dụ về tính toán địa chỉ. Cách đơn giản Tất cả việc chuyển đổi từ dạng thập phân sang nhị phân và ngược lại, từ nhị phân sang thập phân thật phức tạp và buồn tẻ, vậy liệu có cách nào đơn giản hơn không ? Câu trả lời là có. Trước hết chúng ta quan sát thấy rằng chúng ta chỉ làm việc với các số trong cùng một octet tại một thời điểm bất kể chiều dài của prefix là gì. Ta gọi đó là octet làm việc (hay working octet). Ta giả sử coi tất cả các octet nằm trước working octet là thuộc về địa chỉ mạng, còn các octet nằm sau working octet là thuộc về địa chỉ host. Việc đầu tiên chúng ta cần làm là xác định octet làm việc của mình. Công việc tương đổi đơn giản đó là lấy prefix chia cho 8 rồi cộng thêm 1. Hình dưới đây minh họa một số ví dụ. Note: Một cách khác để xác định working octet là ta sẽ loại bỏ số octet được chỉ ra trong phép chia. Ví dụ 192.168.100.80/26, ta lấy 26 chia cho 8 được 3. Như vậy ta sẽ loại bỏ 3 octet ban đầu, suy ra octet làm việc là octet thứ 4. Hai cách đều cho cùng một kết quả. Khi ta đã xác định được working octet, vậy việc tiếp theo ta sẽ làm là gì? Có thể ta sẽ lại làm theo cách đã chỉ ra ở phía trên, chuyển đổi qua lại giữa địa chỉ dạng nhị phân và thập phân, dùng thuật toán logic AND và NOR để tìm ra địa chỉ mạng và địa chỉ host. Nhưng có một cách đơn giản hơn để tìm ra phần mạng và phần host trong working octet. Thực hiện phép toán tương tự trên, nhưng lần này ta chỉ quan tâm đến phần dư chứ không phải toàn bộ kết quả. 192.168.100.80/26 26 ÷ 8 = 3 và phần dư là 2. Ta lấy phần dư, và tra theo bảng sau để tìm ra bước nhảy (jump) trong octet. Số này là một số ở dạng thập phân, là khoảng cách giữa các địa chỉ mạng trong octet. Làm việc với địa chỉ IP 4
  5. IPMAC INFORMATIC TECHNOLOGY JSC Trong bảng trên, dòng đầu tiên là chiều dài prefix trong octet, dòng thứ hai là giá trị của prefix khi bit này được set bằng 1, là số lượng các host trong subnet cho prefix length này là bước nhảy giữa các địa chỉ mạng với prefix length xác định được chỉ ra. Số 2 tương ứng với 64, có nghĩa là có 64 host trong subnet, tương ứng với bước nhảy 64. Điều này có nghĩa là có mỗi network ở địa chỉ 0, 64, 128, và 192 trong octet này. Việc tiếp theo là ta phải xác định chính xác địa chỉ của ta nằm trong network nào trong số các network trên. Công việc cũng tương đối đơn giản : chỉ việc lấy số network lớn nhất khớp với số octet làm việc. Trong trường hợp này, số lớn nhất khớp với 80 là 64, vậy địa chỉ mạng chính xác sẽ là 192.168.100.64/26. Vậy địa chỉ host sẽ là gì ? Việc này thật đơn giản khi ta đã có địa chỉ network. Ta chỉ việc lấy địa chỉ IP trừ đi địa chỉ network sẽ có địa chỉ host tương ứng nằm trong network : 80 – 64 = 16. Công việc này sẽ đơn giản hơn nếu bạn thực hành nhiều. Trong ví dụ thứ hai và thứ ba, bạn nhận thấy octet làm việc là octet thứ ba chứ không phải octet thứ 4. Để tìm địa chỉ host trong ví dụ này, ta sẽ tìm địa chỉ host trong octet thứ 3, rồi tiếp tục với octet thứ 4, coi đó là thuộc phần host, vì ta biết rằng phần của của octet làm việc và octet sau đó đều thuộc về địa chỉ host. Summarizations và subnets Subnets và supernets thông thường là hai vấn đề phức tạp nhất về địa chỉ IP khi ta muốn hiểu và thao tác một cách nhanh chóng. Nhưng thực chất cả hai đều dựa trên một cơ sở chung là aggregation. Hình 6 chỉ ra Aggregation hoạt động như thế nào. Hình 6: Address Aggregation. Hình minh họa trên cho thấy có 4 host với các địa chỉ lần lượt là 10.2.0.1, 10.2.0.2, 10.1.0.3, và 10.2.0.4. Router A quảng cáo một prefix 10.1.0.0/24 với ý nghĩa rằng có thể định tuyến được tới tất cả các host trong dải địa chỉ từ 10.1.0.0 đến 10.1.0.255 thông qua router A. Chú ý rằng không phải tất cả các địa chỉ trong dải kia đều tồn tại, nhưng nếu có một host trong dải đó có thể đến được thì nhất định nó phải đi qua router A. Trong IP, địa chỉ mà router A quảng cáo đi là địa chỉ mạng (network address), ta có thể hiểu một cách đơn giản rằng đó là địa chỉ của đường dây kết nối các máy tính và router chứ không phải để chỉ một thiết bị cụ thể nào. Vấn đề thường gây nhầm lẫn diễn ra ở sau đó. Khi router B cũng quảng cáo một prefix 10.2.2.0/24. Và khi các gói tin quảng cáo được gửi từ A và B đến router C thì router C làm công việc kết hợp lại, hay gộp chung lại (aggregation) hai bản tin quảng cáo thành một bản tin duy nhất. Router C quảng cáo rằng “Tất cả các gói tin đến các host có địa chỉ nằm trong dải từ 10.1.0.0 đến 10.1.1.255 đều Làm việc với địa chỉ IP 5
  6. IPMAC INFORMATIC TECHNOLOGY JSC có thể đi qua tôi”. Không có một dây dẫn nào có địa chỉ như vậy nhưng các router ở C ngoài router C có nhu cầu gửi gói tin không biết điều đó và chúng không quan tâm. Để xử lý tốt hơn đối với các dải địa chỉ được kết hợp, ta định nghĩa hai khái niêmk là subnet và supernet. Một subnet là một network được chứa hoàn toàn trong một network khac; còn supernet là network bản thân nó chứa các network khác. Ví dụ 10.1.0.0/24 và 10.1.1.0/24 là hai subnet của network 10.1.0.0/23 trong khi 10.1.0.0/23 là supernet của 10.1.0.0/24 và 10.1.1.0/24. Bây giờ ta nhìn vào dạng nhị phân của các địa chỉ này. Hình 7: Chi tiết về Aggregation Khi ta nhìn vào dạng nhị phân của hai địa chỉ 10.1.0.0/24 và 10.1.1.0/24 ta nhận thấy chỉ có bit thứ 24 là thay đổi. Nếu ta thay đổi chiều dài prefix sang 23 bit, ta có thể hoàn toàn “che lấp” (“masked- out”) bit thay đổi này. Lúc này thì dải địa chỉ cỉa 10.1.0.0/23 sẽ trùng với dải địa chỉ kết hợp của hai địa chỉ 10.1.0.0/24 và 10.1.1.0/24. Vấn đề khó khăn nhất của thực hiện subnet Vấn đề khó khăn nhất mà đa số người dùng gặp phải khi muốn thực hiện subnet đó là việc quyết định xem subnet nhỏ nhất là thế nào để có thể đáp ứng đủ số lượng host trên segment và đồng thời khồn gây ra sự lãng phí tài nguyên địa chỉ. Vấn đề này thường được nảy sinh dưới dạng như sau: “Bạn có 5 subnets với số lượng host tương ứng trên mỗi subnet như sau: 58, 14, 29, 49 và 3. Bạn được cấp một dải địa chỉ 10.1.1.0/24. Hãy xác định xem bạn cần phân chia dải địa chỉ trên như thế nào để đáp ứng được nhu cầu sử dụng cho từng subnet trên?” Vấn đề này ban đầu tỏ ra tương đối phức tạp, nhưng nếu ta sử dụng bảng đã nêu ở phần trước để tìm ra bước nhảy trong mạng thì vấn đề trở nên khá dễ dàng. Trước hết ta sẽ tuần tự theo các bước để giải quyết vấn đề trong ví dụ này, từ đó thấy được hoạt động thực sự của nó thế nào. - Sắp xếp các mạng theo thứ tự từ lớn nhất đến nhỏ nhất. - Tìm số nhỏ nhất trong bảng khớp với số host lớn nhất + 2. (chú ý: trừ trường hợp point-to- point ra, còn lại bạn không thể cấu hình địa chỉ với toàn bit 0 hay toàn bit 1 ở phần host; trong point-to-point bạn có thể dùng một địa chỉ prefix dạng /31, là một địa chỉ không kèm địa chỉ broadcast). - Tiếp tục với các dải khác cho đến khi bạn hết dải địa chỉ hoặc công việc kết thúc. Tuy nhiên liệu thực sự nó có hoạt động không, ta cùng xét trong ví dụ. - Ta sắp xếp các subnet theo chiều giảm dần ta có thứ tự : 58, 49,29,14,3. - Bắt đầu với 58 o Số nhỏ nhất trong bảng lớn hơn (58+2) là 64, và 64 là 2 bits o Prefix ban đầu có chiều dài 24 bit, ta thêm 2 bit vào được 26. o Network đầu tiên là 10.1.1.0/26 o Network tiếp theo là 10.1.1.0 + 64, vì vậy ta có thể tiếp tục với 10.1.1.64 - Block tiếp theo là 49 o Số nhỏ nhất lớn hơn (49+2) là 64, 2 bit o Ta thêm 2 bit vào prefix ban đầu ta có /26 o Ta bắt đầu block này ở 10.1.1.64, vì vậy địa chỉ của subnet này sẽ là 10.1.1.64/26. Làm việc với địa chỉ IP 6
  7. IPMAC INFORMATIC TECHNOLOGY JSC o Mạng tiếp theo sẽ là 10.1.1.64 + 64, vì vậy ta lại bắt đầu chu trình tiếp theo từ mạng 10.1.1.128 - Block tiếp theo là 29 host o Số nhỏ nhất lớn hơn (29+2) là 32, 32 tương ứng với 3 bits o Thêm 3 bit và ta có /27 o Ta bắt đầu block ở network 10.1.1.128, nên địa chỉ mạng sẽ là 10.1.1.128/27. o Mạng tiếp theo sẽ là 10.1.1.128 + 32, vì vậy chu trình tiếp theo sẽ bắt đầu từ địa chỉ 10.1.1.160. - Block tiếp theo là 14 o Số nhỏ nhất tương ứng với (14+2) là 16, 16 tương ứng với 4 bít o Prefix mới sẽ là /28 o Ta bắt đầu ở network 10.1.1.160, vậy địa chỉ mạng sẽ là 10.1.1.160/28. o Mạng tiếp theo là 10.1.1.160 + 16, vì vậy chu trình tiếp theo sẽ bắt đầu từ địa chỉ 10.1.1.176. - Block cuối cùng là 3 host: o Số nhỏ nhất lớn hơn (3+2) là 8, 32 tương ứng với 5 bits o Thêm 5 bit và ta có /29 o Ta bắt đầu block ở network 10.1.1.176, nên địa chỉ mạng sẽ là 10.1.1.176/29. o Đây là block cuối cùng, và công việc đã kết thúc. Trên đây là một ví dụ rất cơ bản về việc xử lý với việc phân nhỏ một dải địa chỉ thành các dải địa chỉ nhỏ hơn tùy theo nhu cầu sử dụng bằng cách sử dụng bước nhảy (jump) đã nêu ở trên. Hình 8 minh họa kết quả của việc phân chia địa chỉ theo các subnet phân cấp Hình 8: Sơ đồ phân chia subnet. Trong phần minh họa trên: - Dòng đầu tiên trong mỗi box chứa octet cuối của địa chỉ mạng ở dạng thập phân và nhị phân. - Dòng thứ hai là chiều dài của prefix - Dòng thứ ba chỉ ra số host yêu cầu trong mỗi subnet - Box màu xám chỉ ra các dải địa chỉ chưa dùng đến ở mức này. Làm việc với địa chỉ IP 7
  8. IPMAC INFORMATIC TECHNOLOGY JSC Làm việc với địa chỉ IPv6 Địa chỉ IPv6 tỏ ra khó để thao tác hơn rất nhiều, nhưng thực chất là không phải như vậy. Mặc dù lớn hơn, nhưng địa chỉ IPv6 vẫn được cấu tạo từ những thành phần cơ bản và router cũng như các host cũng đều sử dụng một cách tương tự. Điều chúng ta cần lưu ý là một địa chỉ hexa trong địa chỉ IPv6 tương ứng với một octet trong địa chỉ dạng nhị phân. Các phương thức để tìm địa chỉ mạng, địa chỉ host cũng như các khái niệm về subnet và supernet là tương đương. Ví du, giả sử ta có địa chỉ IPv6 là 2002:FF10:9876:DD0A:9090:AC56:0E01/63 và ta cần biết địa chỉ mạng là thế nào (địa chỉ host ít tác dụng trong IPv6 vì IPv6 sử dụng luôn địa chỉ MAC) - 63 ÷ 8 = 7, dư 7 - Octet làm việc là octet thứ 8, là 0A - Phần dư là 7, ta tra trong bảng sẽ thấy bước nhảy sẽ là 2, vì vậy các mạng sẽ là 00, 02, 04, 06, 08, 0A, 0C và 0E. - Địa chỉ mạng sẽ là 2002:FF10:9876:DD0A::/63. Địa chỉ lớn hơn, nhưng phương pháp thao tác là như nhau, chỉ có điều ta cần nhớ là mỗi cặp số trong IPv6 tương ứng với 1 octet. Kết luận Địa chỉ IP tỏ ra tương đối phức tạp khi ta mới làm quen và nhìn vào nó, nhưng thực chất nó có những thành phần và những qui tắc chung. Khi nắm được các thành phần ta sẽ biết cách để xé nhỏ vấn đề ra các thành phần nhỏ hơn để dễ dàng xử lý, cũng như khi ta thiết kế một mạng với khả năng mở rộng cao thì đòi hỏi ta phải thiết kế theo hướng module. Ip thực sự đơn giản nếu ta nắm vững được cấu trúc của nó cũng như các kỹ thuật thao tác trên nó. Chử Kiên Bình binhck@ipmac.com.vn Creative Commons Some Rights Reserved Làm việc với địa chỉ IP 8
Đồng bộ tài khoản