Mấy ngày nay toàn viết lý thuyết suông nên hôm nay sẽ đụng chân đụng tay một chút. Bài LAB đơn giản thôi, ko có gì phức tạp cả.
OK, trên là mô hình bài LAB. Bây giờ ta sẽ đi cấu hình trên từng con sw.
1.Tạo VLANs
------------------------------------
Switch(config)#hostname SW1
SW1(config)#VLAN 10
SW1(config-vlan)#exit
SW1(config)#vlan 20
SW1(config-vlan)#exit
SW1(config)#vlan 30
SW1(config-vlan)#exit
SW1(config)#
-----------------------------------
Switch(config)#hostname SW2
SW2(config)#vlan 10
SW2(config-vlan)#exit
SW2(config)#vlan 20
SW2(config-vlan)#exit
SW2(config)#vlan 30
SW2(config-vlan)#exit
SW2(config)
----------------------------------
2. Gán port vào các VLANs
----------------------------------
SW1(config)#int fa0/3
SW1(config-if)#switchport mode access //đưa port vào trạng thái access
SW1(config-if)#switchport access vlan 10 //gán port vào vlan tương ứng
SW1(config-if)#int fa0/5
SW1(config-if)#s
SW1(config-if)#sw
SW1(config-if)#sw mod
SW1(config-if)#sw mode acc
SW1(config-if)#sw mode access
SW1(config-if)#sw acc vlan 20
SW1(config-if)#int fa0/7
SW1(config-if)#sw mod acc
SW1(config-if)#sw acc vlan 30
----------------------------------
OK, như vậy ta đã gán các port vào các vlan. Bây giờ ta sẽ xem lại cấu hình bằng lệnh show vlan
---------------------------------
SW1#show vlan
----------------------------------
OK vậy là đã gán đc các port vào các vlan
3.Cấu hình đường trunk
---------------------------------
SW1(config)#int fa0/1
SW1(config-if)#swt
SW1(config-if)#sw
SW1(config-if)#switchport mo
SW1(config-if)#switchport mode ?
access Set trunking mode to ACCESS unconditionally
dynamic Set trunking mode to dynamically negotiate access or trunk mode
trunk Set trunking mode to TRUNK unconditionally
SW1(config-if)#switchport mode tr
SW1(config-if)#switchport mode trunk
%LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/1, changed state to down
%LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/1, changed state to up
SW1(config-if)#
--------------------------------------
Kiểm tra lại với lệnh show vlan thì ko thấy fa0/1 nằm trong bất cứ vlan nào nữa. Như vậy là ta đã cấu hình xong đường trunk. Mặc định ở dòng sw 2960 của Cisco thì nó chỉ sử dụng 802.1q còn ở một số dòng cũ hơn bạn có thể phải chọn xem sẽ dùng trunking nào.
Cấu hình tương tự cho con sw2, sau đó ping lại để kiểm tra tại các host.
-------------------------------------
PC>ipconfig
IP Address......................: 192.168.10.2
Subnet Mask.....................: 255.255.255.0
Default Gateway.................: 0.0.0.0
PC>ping 192.168.10.1
Pinging 192.168.10.1 with 32 bytes of data:
Reply from 192.168.10.1: bytes=32 time=93ms TTL=128
Reply from 192.168.10.1: bytes=32 time=96ms TTL=128
Reply from 192.168.10.1: bytes=32 time=49ms TTL=128
Reply from 192.168.10.1: bytes=32 time=78ms TTL=128
Ping statistics for 192.168.10.1:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 49ms, Maximum = 96ms, Average = 79ms
PC>
------------------------------------------
file pkt:http://vnnshare.com/download/kFtKZnNAWK/Trunking.rar
Friday, April 30, 2010
Thursday, April 29, 2010
FIle system trong Linux /bin
/bin
Đây là thư mục chứa các câu lệnh dành cho cả user và root nhưng có thể sử dụng mà ko cần các filesystem khác chưa đc mounted.Trong thư mục này ko có subdir, một số câu lệnh hoặc các link đến các câu lệnh đc yêu cầu có trong /bin như:
---------------------------------------------------------------------------------
cat-------------Utility to concatenate files to standard output
chgrp--------Utility to change file group ownership
chmod-------Utility to change file access permissions
chown------ Utility to change file owner and group
cp------------- Utility to copy files and directories
date----------Utility to print or set the system data and time
dd-------------Utility to convert and copy a file
df-------------Utility to report filesystem disk space usage
dmesg-------Utility to print or control the kernel message buffer
echo--------- Utility to display a line of text
false--------- Utility to do nothing, unsuccessfully
hostname- Utility to show or set the system's host name
kill------------ Utility to send signals to processes
ln-------------- Utility to make links between files
login--------- Utility to begin a session on the system
ls-------------- Utility to list directory contents
mkdir------- Utility to make directories
mknod----- Utility to make block or character special files
more------- Utility to page through text
mount----- Utility to mount a filesystem
mv---------- Utility to move/rename files
ps----------- Utility to report process status
pwd-------- Utility to print name of current working directory
rm---------- Utility to remove files or directories
rmdir----- Utility to remove empty directories
sed -------- The `sed' stream editor
sh----------- The Bourne command shell
stty-------- Utility to change and print terminal line settings
su---------- Utility to change user ID
sync------ Utility to flush filesystem buffers
true------- Utility to do nothing, successfully
umount-- Utility to unmount file systems
uname---- Utility to print system information
---------------------------------------------------------------------------------------
Các tiện ích sau nếu như đc cài đặt vào trong hệ thống thì phải để trong /bin:
---------------------------------------------------------------------------------------
csh---------- The C shell (optional)
ed----------- The `ed' editor (optional)
tar---------- The tar archiving utility (optional)
cpio-------- The cpio archiving utility (optional)
gzip-------- The GNU compression utility (optional)
gunzip---- The GNU uncompression utility (optional)
zcat-------- The GNU uncompression utility (optional)
netstat---- The network statistics utility (optional)
ping-------- The ICMP network test utility (optional)
----------------------------------------------------------------------------------------
Thường thì một số các tiện ích này sẽ đc tự động cài đặt trong quá trình ta cài LInux OS
Đây là thư mục chứa các câu lệnh dành cho cả user và root nhưng có thể sử dụng mà ko cần các filesystem khác chưa đc mounted.Trong thư mục này ko có subdir, một số câu lệnh hoặc các link đến các câu lệnh đc yêu cầu có trong /bin như:
---------------------------------------------------------------------------------
cat-------------Utility to concatenate files to standard output
chgrp--------Utility to change file group ownership
chmod-------Utility to change file access permissions
chown------ Utility to change file owner and group
cp------------- Utility to copy files and directories
date----------Utility to print or set the system data and time
dd-------------Utility to convert and copy a file
df-------------Utility to report filesystem disk space usage
dmesg-------Utility to print or control the kernel message buffer
echo--------- Utility to display a line of text
false--------- Utility to do nothing, unsuccessfully
hostname- Utility to show or set the system's host name
kill------------ Utility to send signals to processes
ln-------------- Utility to make links between files
login--------- Utility to begin a session on the system
ls-------------- Utility to list directory contents
mkdir------- Utility to make directories
mknod----- Utility to make block or character special files
more------- Utility to page through text
mount----- Utility to mount a filesystem
mv---------- Utility to move/rename files
ps----------- Utility to report process status
pwd-------- Utility to print name of current working directory
rm---------- Utility to remove files or directories
rmdir----- Utility to remove empty directories
sed -------- The `sed' stream editor
sh----------- The Bourne command shell
stty-------- Utility to change and print terminal line settings
su---------- Utility to change user ID
sync------ Utility to flush filesystem buffers
true------- Utility to do nothing, successfully
umount-- Utility to unmount file systems
uname---- Utility to print system information
---------------------------------------------------------------------------------------
Các tiện ích sau nếu như đc cài đặt vào trong hệ thống thì phải để trong /bin:
---------------------------------------------------------------------------------------
csh---------- The C shell (optional)
ed----------- The `ed' editor (optional)
tar---------- The tar archiving utility (optional)
cpio-------- The cpio archiving utility (optional)
gzip-------- The GNU compression utility (optional)
gunzip---- The GNU uncompression utility (optional)
zcat-------- The GNU uncompression utility (optional)
netstat---- The network statistics utility (optional)
ping-------- The ICMP network test utility (optional)
----------------------------------------------------------------------------------------
Thường thì một số các tiện ích này sẽ đc tự động cài đặt trong quá trình ta cài LInux OS
Wednesday, April 28, 2010
FIle system trong Linux /sbin
Filesystem là gì?!
Ok, để nói ngắn gọn thì có thể nói như vầy:
Filesystem là các phương thức và cấu trúc các dữ liệu mà một OS sử dụng để duy trì các files trong disk hoặc trong các partitions. Cách mà các files đc tổ chức trong disk.
Trong Linux thì nó sẽ đc tổ chức thành dạng cây phân tầng(có lẽ bạn đã nghe qua rồi nhỉ?!:P)
Với LInux thì mọi thứ đều bắt đầu từ root dir, đc thể hiện bởi dấu gạch chéo: /(frontflash)
và sau đó các subdir sẽ lần lượt đc trình bày bên dưới.
(Nếu bạn để ý thì trong Window$ nó sẽ dùng dấu \(backflash) để làm đường dẫn đến các thư mục.)
Bây giờ cùng xem xét cấu trúc của filesystem trong Linux
Vào terminal xem trực tiếp luôn!
-----------------------------------------------
randomx@Ubuntu9:/$ ls -la
total 25
drwxr-xr-x 22 root root 680 2010-04-18 21:43 .
drwxr-xr-x 22 root root 680 2010-04-18 21:43 ..
drwxr-xr-x 2 root root 2984 2010-04-14 07:33 bin
drwxr-xr-x 3 root root 648 2010-04-14 07:39 boot
lrwxrwxrwx 1 root root 11 2010-04-14 06:49 cdrom -> media/cdrom
-rw-r--r-- 1 cuong cuong 467 2009-02-13 08:49 .deb
drwxr-xr-x 16 root root 3920 2010-04-28 18:55 dev
drwxr-xr-x 138 root root 6848 2010-04-28 18:55 etc
drwxr-xr-x 3 root root 72 2010-04-14 06:56 home
lrwxrwxrwx 1 root root 33 2010-04-14 07:36 initrd.img -> boot/initrd.img-2.6.31-20-generic
lrwxrwxrwx 1 root root 33 2010-04-14 06:57 initrd.img.old -> boot/initrd.img-2.6.31-14-generic
drwxr-xr-x 18 root root 5960 2010-04-20 22:19 lib
drwxr-xr-x 8 root root 264 2010-04-28 18:55 media
drwxr-xr-x 3 root root 72 2010-04-14 15:38 mnt
drwxr-xr-x 2 root root 48 2009-10-29 03:55 opt
dr-xr-xr-x 192 root root 0 2010-04-28 18:51 proc
drwx------ 18 root root 656 2010-04-27 23:15 root
drwxr-xr-x 2 root root 4432 2010-04-14 07:36 sbin
drwxr-xr-x 2 root root 48 2009-10-20 06:05 selinux
drwxr-xr-x 3 root root 72 2010-04-15 14:41 srv
drwxr-xr-x 12 root root 0 2010-04-28 18:51 sys
drwxrwxrwt 20 root root 952 2010-04-28 20:12 tmp
drwxr-xr-x 12 root root 288 2010-04-14 21:16 usr
drwxr-xr-x 15 root root 360 2009-10-29 04:02 var
lrwxrwxrwx 1 root root 30 2010-04-14 07:36 vmlinuz -> boot/vmlinuz-2.6.31-20-generic
lrwxrwxrwx 1 root root 30 2010-04-14 06:57 vmlinuz.old -> boot/vmlinuz-2.6.31-14-generic
-----------------------------------------------------
Bạn hãy chỉ để ý đến các thư mục thôi nhé("d" đầu tiên ở cột đầu tiên á, các phần khác tớ blur đi rồi...)
Theo phương châm chia để trị thì mỗi ngày tớ sẽ overview một dir thôi. Từ từ nó mới ngấm sâu đc!:P
Hôm nay tớ sẽ bắt đầu với
/sbin
Đây là thư mục con nằm trong thư mục root, nó chứa các chương trình sẵn sàng để thực thi. Thường thì đó là các chương trình dành cho việc quản trị hệ thống và đc nằm dưới quyền trực tiếp của Root user.
Các chương trình nằm trong /sbin thường là các chương trình cần thiết cho quá trình boot hệ thống. Nếu bạn đang đọc bài trên một Linux OS thì thử ls -la nó xem sao!
Một số chương trình đc nằm trong /sbin như:
Sau khi đã mount /usr thì mọi thứ đc thực thi sẽ đc đặt trong /usr/sbin.
sbin trong /sbin là viết tắt của system binaries. Một binary hoặc binary file là 1 kiểu của file chứa một vài dữ liệu thuộc dạng "non-text". Các file có khả năng thực thi là một kiểu của binary file
Ok, để nói ngắn gọn thì có thể nói như vầy:
Filesystem là các phương thức và cấu trúc các dữ liệu mà một OS sử dụng để duy trì các files trong disk hoặc trong các partitions. Cách mà các files đc tổ chức trong disk.
Trong Linux thì nó sẽ đc tổ chức thành dạng cây phân tầng(có lẽ bạn đã nghe qua rồi nhỉ?!:P)
Với LInux thì mọi thứ đều bắt đầu từ root dir, đc thể hiện bởi dấu gạch chéo: /(frontflash)
và sau đó các subdir sẽ lần lượt đc trình bày bên dưới.
(Nếu bạn để ý thì trong Window$ nó sẽ dùng dấu \(backflash) để làm đường dẫn đến các thư mục.)
Bây giờ cùng xem xét cấu trúc của filesystem trong Linux
Vào terminal xem trực tiếp luôn!
-----------------------------------------------
randomx@Ubuntu9:/$ ls -la
total 25
drwxr-xr-x 22 root root 680 2010-04-18 21:43 .
drwxr-xr-x 22 root root 680 2010-04-18 21:43 ..
drwxr-xr-x 2 root root 2984 2010-04-14 07:33 bin
drwxr-xr-x 3 root root 648 2010-04-14 07:39 boot
lrwxrwxrwx 1 root root 11 2010-04-14 06:49 cdrom -> media/cdrom
-rw-r--r-- 1 cuong cuong 467 2009-02-13 08:49 .deb
drwxr-xr-x 16 root root 3920 2010-04-28 18:55 dev
drwxr-xr-x 138 root root 6848 2010-04-28 18:55 etc
drwxr-xr-x 3 root root 72 2010-04-14 06:56 home
lrwxrwxrwx 1 root root 33 2010-04-14 07:36 initrd.img -> boot/initrd.img-2.6.31-20-generic
lrwxrwxrwx 1 root root 33 2010-04-14 06:57 initrd.img.old -> boot/initrd.img-2.6.31-14-generic
drwxr-xr-x 18 root root 5960 2010-04-20 22:19 lib
drwxr-xr-x 8 root root 264 2010-04-28 18:55 media
drwxr-xr-x 3 root root 72 2010-04-14 15:38 mnt
drwxr-xr-x 2 root root 48 2009-10-29 03:55 opt
dr-xr-xr-x 192 root root 0 2010-04-28 18:51 proc
drwx------ 18 root root 656 2010-04-27 23:15 root
drwxr-xr-x 2 root root 4432 2010-04-14 07:36 sbin
drwxr-xr-x 2 root root 48 2009-10-20 06:05 selinux
drwxr-xr-x 3 root root 72 2010-04-15 14:41 srv
drwxr-xr-x 12 root root 0 2010-04-28 18:51 sys
drwxrwxrwt 20 root root 952 2010-04-28 20:12 tmp
drwxr-xr-x 12 root root 288 2010-04-14 21:16 usr
drwxr-xr-x 15 root root 360 2009-10-29 04:02 var
lrwxrwxrwx 1 root root 30 2010-04-14 07:36 vmlinuz -> boot/vmlinuz-2.6.31-20-generic
lrwxrwxrwx 1 root root 30 2010-04-14 06:57 vmlinuz.old -> boot/vmlinuz-2.6.31-14-generic
-----------------------------------------------------
Bạn hãy chỉ để ý đến các thư mục thôi nhé("d" đầu tiên ở cột đầu tiên á, các phần khác tớ blur đi rồi...)
Theo phương châm chia để trị thì mỗi ngày tớ sẽ overview một dir thôi. Từ từ nó mới ngấm sâu đc!:P
Hôm nay tớ sẽ bắt đầu với
/sbin
Đây là thư mục con nằm trong thư mục root, nó chứa các chương trình sẵn sàng để thực thi. Thường thì đó là các chương trình dành cho việc quản trị hệ thống và đc nằm dưới quyền trực tiếp của Root user.
Các chương trình nằm trong /sbin thường là các chương trình cần thiết cho quá trình boot hệ thống. Nếu bạn đang đọc bài trên một Linux OS thì thử ls -la nó xem sao!
Một số chương trình đc nằm trong /sbin như:
- fsck:file system check and repair ultilities
- grub:LInux boot loader
- halt: stop the system
- ifconfig: configure a network interface
- klogd: intercepts and logs kernel messages
- lilo: Linux loader
- modinfo: display information about a kernel module
- route: manipulate the IP ROuting table
- update: updates an application
- .....
Sau khi đã mount /usr thì mọi thứ đc thực thi sẽ đc đặt trong /usr/sbin.
sbin trong /sbin là viết tắt của system binaries. Một binary hoặc binary file là 1 kiểu của file chứa một vài dữ liệu thuộc dạng "non-text". Các file có khả năng thực thi là một kiểu của binary file
Tuesday, April 27, 2010
[Overview] Routing Protocols
1.Autonomous System
IP routing protocol đc chia thành 2 nhóm chính:
Interior Gateway Protocol(IGP): đây là nhóm mà 1 routing protocol đc thiết kế để sử dụng bên trong một autonomous system(AS)
Exterior Gateway Protocol(EGP): đây là nhóm mà 1 routing protocol đc thiết kế để sử dụng giữa các autonomous system khác nhau.
OK, vừa rồi có một thuật ngữ mà bạn vừa thấy đó là AS, bây giờ mình sẽ explain về AS
Autonomous System(AS) là thuật ngữ đc sử dụng để chỉ các thiết bị trong cùng 1 vùng đc đặt dưới một sự quản lý, hoạt động tương tự với nhau. Trong routing thì nó thường là một vùng bao gồm các router đặt chung dưới một vùng hoạt động với cùng giao thức hay tương tự
Còn một số giao thức dùng để truyền tải giữa các router khác AS gọi là Border Gateway Protocol(BGP)
Mỗi một AS sẽ đc gán một con số để phân biệt với nhau, gọi là AS number do ICANN cung cấp
2.Các kiểu Routing Protocol
Routing Protocol đc chia thành 3 nhóm chính:
Distance Vector: đại diện như Rip, IGRP(đây là chuẩn của riêng Cisco, hiện đã thay thế)
Link-State: đại diện như OSPF, IS-IS
Hybrid: EIGRP(Enhanced IGRP)
3.Metrics
Khi trong một mạng đc cấu hình với nhiều route để đi đến đích thì lúc đó phải có một cách để xác định xem đường đi nào là tốt nhất (best route) để đến đc đích đó. Vì vậy mỗi RP sẽ đưa ra một "metric" để xác định xem route đó có tốt hay ko! Với mỗi RP thì sẽ có cách nhìn nhận về route khác nhau cho nên sẽ có cách để xđ metric khác nhau
Ví dụ: RIP sẽ chọn route dựa vào hop count tức là để đi đc đến đích, nó sẽ xem route nào có ít router phải đi qua nhất, khi đó nó sẽ chọn route đó là best route
Còn đối với OSPF thì lại khác, OSPF sẽ lựa chọn route dựa vào cost đc tính theo công thức: cost= 10000 0000/bandwith in bps
4.Autosumarization and Manual Summarization
Việc forward các packet đến đích của router nhanh hay chậm, một phần cũng là do kích thước của Routing table. Routing table càng nhỏ, forward càng nhanh, và ngược lại. Việc summarization giúp cho routing table trở nên nhỏ gọn hơn mà vẫn đảm bảo đầy đủ các route trong nó. Có 2 cách để sum route là autosum và manual-sum. Manual-sum là cách do người quản trị cấu hình và quản lý việc sum. Thường thi manual-sum sẽ tốt hơn so với auto-sum
5. Classless và Classful Routing Protocols
OK, đây là một đề tài hay(mình nghĩ thế:P). Nhưng hiện tại ta chỉ xem xét ở mức overview thôi. Đi sâu vào nó có lẽ sẽ có cả đống chuyện để bàn.
Về mặt sơ lược thì:
Classless Routing Protocols là giao thức sẽ quảng bá mask cho mạng, nói rõ hơn chút xíu là khi quảng bá route nó sẽ đem theo subnet mask, hỗ trợ VLSM và summarization. Các giao thức ở đây là OSPF, EIGRP,Ripv2
Classful Routing Protocols là giao thức ngược lại với Classless, nó ko quảng bá subnet mask, ko hỗ trợ VLSM và route summarization. Giao thức tiêu biểu là Ripv1
So sánh đơn giản là vầy:
6. Convergence
Thuật ngữ này để chỉ về việc toàn bộ các quá trình sẽ diễn ra với routing protocols khi trong mạng có sự thay đổi làm ảnh hưởng đến mạng. Ví dụ như một route nào đó bị failed hay 1 router mới đc gắn thêm vào, nó có thể gây ra sự biến đổi trong mạng. Qúa trình đc sử dụng bở routing protocols để nhận ra sự thay đổi đó, xem xét lại xem hiện tại best-route là route nào, thay đổi các routing table của cá router khác đc gọi là convergence.
Khả năng convergence là rất quan trọng. Việc convergence nhanh hay chậm sẽ ảnh hưởng rất nhiều đến việc hình thành một mạng ổn định. Sau này sẽ gặp trường hợp nói về routing loop là một vấn đề liên quan trực tiếp đến Convergence.
IP routing protocol đc chia thành 2 nhóm chính:
Interior Gateway Protocol(IGP): đây là nhóm mà 1 routing protocol đc thiết kế để sử dụng bên trong một autonomous system(AS)
Exterior Gateway Protocol(EGP): đây là nhóm mà 1 routing protocol đc thiết kế để sử dụng giữa các autonomous system khác nhau.
OK, vừa rồi có một thuật ngữ mà bạn vừa thấy đó là AS, bây giờ mình sẽ explain về AS
Autonomous System(AS) là thuật ngữ đc sử dụng để chỉ các thiết bị trong cùng 1 vùng đc đặt dưới một sự quản lý, hoạt động tương tự với nhau. Trong routing thì nó thường là một vùng bao gồm các router đặt chung dưới một vùng hoạt động với cùng giao thức hay tương tự
Còn một số giao thức dùng để truyền tải giữa các router khác AS gọi là Border Gateway Protocol(BGP)
Mỗi một AS sẽ đc gán một con số để phân biệt với nhau, gọi là AS number do ICANN cung cấp
2.Các kiểu Routing Protocol
Routing Protocol đc chia thành 3 nhóm chính:
Distance Vector: đại diện như Rip, IGRP(đây là chuẩn của riêng Cisco, hiện đã thay thế)
Link-State: đại diện như OSPF, IS-IS
Hybrid: EIGRP(Enhanced IGRP)
3.Metrics
Khi trong một mạng đc cấu hình với nhiều route để đi đến đích thì lúc đó phải có một cách để xác định xem đường đi nào là tốt nhất (best route) để đến đc đích đó. Vì vậy mỗi RP sẽ đưa ra một "metric" để xác định xem route đó có tốt hay ko! Với mỗi RP thì sẽ có cách nhìn nhận về route khác nhau cho nên sẽ có cách để xđ metric khác nhau
Ví dụ: RIP sẽ chọn route dựa vào hop count tức là để đi đc đến đích, nó sẽ xem route nào có ít router phải đi qua nhất, khi đó nó sẽ chọn route đó là best route
Còn đối với OSPF thì lại khác, OSPF sẽ lựa chọn route dựa vào cost đc tính theo công thức: cost= 10000 0000/bandwith in bps
4.Autosumarization and Manual Summarization
Việc forward các packet đến đích của router nhanh hay chậm, một phần cũng là do kích thước của Routing table. Routing table càng nhỏ, forward càng nhanh, và ngược lại. Việc summarization giúp cho routing table trở nên nhỏ gọn hơn mà vẫn đảm bảo đầy đủ các route trong nó. Có 2 cách để sum route là autosum và manual-sum. Manual-sum là cách do người quản trị cấu hình và quản lý việc sum. Thường thi manual-sum sẽ tốt hơn so với auto-sum
5. Classless và Classful Routing Protocols
OK, đây là một đề tài hay(mình nghĩ thế:P). Nhưng hiện tại ta chỉ xem xét ở mức overview thôi. Đi sâu vào nó có lẽ sẽ có cả đống chuyện để bàn.
Về mặt sơ lược thì:
Classless Routing Protocols là giao thức sẽ quảng bá mask cho mạng, nói rõ hơn chút xíu là khi quảng bá route nó sẽ đem theo subnet mask, hỗ trợ VLSM và summarization. Các giao thức ở đây là OSPF, EIGRP,Ripv2
Classful Routing Protocols là giao thức ngược lại với Classless, nó ko quảng bá subnet mask, ko hỗ trợ VLSM và route summarization. Giao thức tiêu biểu là Ripv1
So sánh đơn giản là vầy:
6. Convergence
Thuật ngữ này để chỉ về việc toàn bộ các quá trình sẽ diễn ra với routing protocols khi trong mạng có sự thay đổi làm ảnh hưởng đến mạng. Ví dụ như một route nào đó bị failed hay 1 router mới đc gắn thêm vào, nó có thể gây ra sự biến đổi trong mạng. Qúa trình đc sử dụng bở routing protocols để nhận ra sự thay đổi đó, xem xét lại xem hiện tại best-route là route nào, thay đổi các routing table của cá router khác đc gọi là convergence.
Khả năng convergence là rất quan trọng. Việc convergence nhanh hay chậm sẽ ảnh hưởng rất nhiều đến việc hình thành một mạng ổn định. Sau này sẽ gặp trường hợp nói về routing loop là một vấn đề liên quan trực tiếp đến Convergence.
Routing
Router là một thiết bị hoạt động trên layer3 của OSI. Sẽ làm việc trực tiếp với các Packet. Việc di chuyển các packet đi trên mạng yêu cầu các routers phải biết đc đường đi đến từng mạng mà nó có thể đưa gói tin tớ đích.Công việc di chuyển này đòi hỏi các Routers phải có các protocols riêng để có thể nói chuyện đc với nhau. Các protocols này đc gọi là Routing protocols
Một số thuật ngữ:
1.Connected Routes
Khi một router kết nối với một router khác, nó sẽ có mọt đường đi đến router đó, mỗi đường đi đi ra trực tiếp từ router đó đc gọi là connected routes
ví dụ:
R1(fa0/0)---------------(fa0/0)R2
|
|
(fa0/1)
R3
giả cử ta có sơ đồ trên, đường mạng nối R1 với R2 là 192.168.1.0 và đường mạng nối R1 với R3 là 172.16.0.0
Khi đó R1 sẽ có 1 route đi đến R2(192.168.1.0) và có 1 route đi đến R3(172.16.0.0).
Trong trường hợp này, connected route của R1 chính là 2 route ở trên.
Nếu dứng trên R1, dùng lệnh show ip route thì trong routing table sẽ thấy các dòng có chữ "C" đứng trước, đó chính là biểu hiện cho connected route
--------------------------------------------------
R1#show ip route
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
* - candidate default, U - per-user static route, o - ODR
P - periodic downloaded static route
Gateway of last resort is not set
C 172.16.0.0/16 is directly connected, FastEthernet0/1
C 192.168.1.0/24 is directly connected, FastEthernet0/0
--------------------------------------------------
2. Static route
Với mô hình trên, nếu đứng ở vị trí của R3 thì ta vẫn chưa thể đưa gói tin đến đích là các mạng của R2 đươc, thậm việc đưa gói tin đến mạng của R1 và R2 cũng chưa đc, bởi vì sau khi cấu hình cơ bản cho
router, các router vẫn chưa đc định tuyến để học các mạng khác ko connected với nó.
Static route là mọt kiểu định tuyến tĩnh, việc cấu hình là do người quản trị cấu hình bằng tay cho các routers.
để cấu hình static route ta có thể dùng cú pháp lệnh:
R(config)#ip route [network] [netmask] [nexthop]
Gỉa sử với mô hình trên, để R3 có thể học đc mạng của R1 và R2 thì ta sẽ cấu hình trên R3:
R3(config)#ip route 192.168.1.0 255.255.255.0 fa0/1
dùng lệnh show ip route trên R3 để xác nhận lại
---------------------------------------------------
R3#show ip route
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
* - candidate default, U - per-user static route, o - ODR
P - periodic downloaded static route
Gateway of last resort is not set
C 172.16.0.0/16 is directly connected, FastEthernet0/1
S 192.168.1.0/24 is directly connected, FastEthernet0/1
--------------------------------------------------
chữ "S" đứng đầu cho thấy đây là mạng học qua static route
Dùng Ping để kiểm tra kết nối:
--------------------------------------------------
R3#ping 192.168.1.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.1.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 62/62/63 ms
--------------------------------------------------
Lưu ý là lệnh ping sẽ có dùng một gói tin phát đi để kiểm tra và khi thiết bị nhận đc phải trả về gói tin đó, vì vậy cần phải cấu hình trên cả 2 thiết bị để ping đc.
3. Default route
Khi một gói tin đc đóng gói với IP source và IP đích vào IP header thì lúc đến router, router sẽ kiểm tra xem gói tin đó có dest IP trùng với bất kỳ một route nào mà nó có trong routing table hay ko. Nếu
trùng(match) thì nó sẽ forward gói tin ra theo route đó. Còn nếu không có thì sao?! Mặc định thì nếu kop match bất kỳ mọt route nào thì router sẽ drop gói tin đó.
Khái niệm default route: DR là một route đảm bảo rằng tất cả gói tin đến với router đều đc forward, nó sẽ match tất cả các gói tin kể cả các gói tin với IP ko nằm trong routing table của nó.
Khi một gói tin mà đích của nó ko có trong bất kỳ một entry nào của routing table thì gói tin đó sẽ đc forward đến default route.
Default route đc sử dụng trong trường hợp nào?!
Quay lại với mô hình trên, hãy tưởng tượng rằng con R2 đc kết nối tới Internet, như ta biết thì Internet có rất nhiều mạng. Nếu với định nghĩa của routing thì khi gói tin đến R2, nó phải cho R2 biết nó muốn đi
đâu, điều đó có nghĩa là R2 phải học tất cả các mạng trong Internet. Điều này là không thể vì như thế sẽ chẳng đủ bộ nhớ để cho R2 lưu trữ các route vào routing table.
Khi đó giải pháp là ta sẽ cấu hình default route trên R2 để nó biết rằng, khi gói tin muốn đi ra Internet, nó sẽ forward gói tin theo default route vì nó ko biết đc dest IP của gói tin là ở đâu.
Ưu điểm của default route là giúp cho routing table nhỏ gọn hơn, ko bị quá tải.
Cấu hình default route:
R(config)#ip route 0.0.0.0 0.0.0.0 [nexthop]
Ví dụ với mô hình trên, ta sẽ thêm một route vào R2 để ra một mạng ko có trong routing table của các routers khác. Ta sẽ thử đặt một webserver vào đây(mình sẽ đưa file cấu hình bằng Packet Tracer lên)
R1(fa0/0)---------------(fa0/0)R2(fa0/1)---------webserver
|
|
(fa0/1)
R3
Gỉa sử mạng giữa R2 và webserver là 192.168.2.0/24.
Có 2 cách để cấu hình, ở đây ta chỉ làm theo bước đơn giản là cấu hình lần lượt trên từng Routers.
Ở R2 ta sẽ cấu hình default route chỉ đến webserver, từ R1 sẽ chỉ đến R2, từ R3 sẽ chỉ đến R1.
Cấu hình:
----------------------------------------
R1(config)#ip route 0.0.0.0 0.0.0.0 fa0/0
R2(config)#ip route 0.0.0.0 0.0.0.0 fa0/1
R3(config)#ip route 0.0.0.0 0.0.0.0 fa0/1
----------------------------------------
show run cấu hình để xem lại, dùng ping để kiểm tra các kết nối.
---------------------------------------
R3#ping 192.168.2.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.2.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 78/87/94 ms
---------------------------------------
Show cấu hình từ R3 ta thấy không có route nào đến 192.168.2.0/24
---------------------------------------
R3#show ip rout
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
* - candidate default, U - per-user static route, o - ODR
P - periodic downloaded static route
Gateway of last resort is 0.0.0.0 to network 0.0.0.0
C 172.16.0.0/16 is directly connected, FastEthernet0/1
S 192.168.1.0/24 is directly connected, FastEthernet0/1
S* 0.0.0.0/0 is directly connected, FastEthernet0/1
---------------------------------------
OK, mình đã giới thiệu về Routing, connected route, static route, default route. Bữa sau mình sẽ giới thiệu về Dynamic routing!;)
Đây là file cấu hình bằng Packet tracer, bạn có thể tham khảo!
http://vnnshare.com/download/lyztN2ynV2/tut.rar
Một số thuật ngữ:
1.Connected Routes
Khi một router kết nối với một router khác, nó sẽ có mọt đường đi đến router đó, mỗi đường đi đi ra trực tiếp từ router đó đc gọi là connected routes
ví dụ:
R1(fa0/0)---------------(fa0/0)R2
|
|
(fa0/1)
R3
giả cử ta có sơ đồ trên, đường mạng nối R1 với R2 là 192.168.1.0 và đường mạng nối R1 với R3 là 172.16.0.0
Khi đó R1 sẽ có 1 route đi đến R2(192.168.1.0) và có 1 route đi đến R3(172.16.0.0).
Trong trường hợp này, connected route của R1 chính là 2 route ở trên.
Nếu dứng trên R1, dùng lệnh show ip route thì trong routing table sẽ thấy các dòng có chữ "C" đứng trước, đó chính là biểu hiện cho connected route
--------------------------------------------------
R1#show ip route
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
* - candidate default, U - per-user static route, o - ODR
P - periodic downloaded static route
Gateway of last resort is not set
C 172.16.0.0/16 is directly connected, FastEthernet0/1
C 192.168.1.0/24 is directly connected, FastEthernet0/0
--------------------------------------------------
2. Static route
Với mô hình trên, nếu đứng ở vị trí của R3 thì ta vẫn chưa thể đưa gói tin đến đích là các mạng của R2 đươc, thậm việc đưa gói tin đến mạng của R1 và R2 cũng chưa đc, bởi vì sau khi cấu hình cơ bản cho
router, các router vẫn chưa đc định tuyến để học các mạng khác ko connected với nó.
Static route là mọt kiểu định tuyến tĩnh, việc cấu hình là do người quản trị cấu hình bằng tay cho các routers.
để cấu hình static route ta có thể dùng cú pháp lệnh:
R(config)#ip route
Gỉa sử với mô hình trên, để R3 có thể học đc mạng của R1 và R2 thì ta sẽ cấu hình trên R3:
R3(config)#ip route 192.168.1.0 255.255.255.0 fa0/1
dùng lệnh show ip route trên R3 để xác nhận lại
---------------------------------------------------
R3#show ip route
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
* - candidate default, U - per-user static route, o - ODR
P - periodic downloaded static route
Gateway of last resort is not set
C 172.16.0.0/16 is directly connected, FastEthernet0/1
S 192.168.1.0/24 is directly connected, FastEthernet0/1
--------------------------------------------------
chữ "S" đứng đầu cho thấy đây là mạng học qua static route
Dùng Ping để kiểm tra kết nối:
--------------------------------------------------
R3#ping 192.168.1.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.1.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 62/62/63 ms
--------------------------------------------------
Lưu ý là lệnh ping sẽ có dùng một gói tin phát đi để kiểm tra và khi thiết bị nhận đc phải trả về gói tin đó, vì vậy cần phải cấu hình trên cả 2 thiết bị để ping đc.
3. Default route
Khi một gói tin đc đóng gói với IP source và IP đích vào IP header thì lúc đến router, router sẽ kiểm tra xem gói tin đó có dest IP trùng với bất kỳ một route nào mà nó có trong routing table hay ko. Nếu
trùng(match) thì nó sẽ forward gói tin ra theo route đó. Còn nếu không có thì sao?! Mặc định thì nếu kop match bất kỳ mọt route nào thì router sẽ drop gói tin đó.
Khái niệm default route: DR là một route đảm bảo rằng tất cả gói tin đến với router đều đc forward, nó sẽ match tất cả các gói tin kể cả các gói tin với IP ko nằm trong routing table của nó.
Khi một gói tin mà đích của nó ko có trong bất kỳ một entry nào của routing table thì gói tin đó sẽ đc forward đến default route.
Default route đc sử dụng trong trường hợp nào?!
Quay lại với mô hình trên, hãy tưởng tượng rằng con R2 đc kết nối tới Internet, như ta biết thì Internet có rất nhiều mạng. Nếu với định nghĩa của routing thì khi gói tin đến R2, nó phải cho R2 biết nó muốn đi
đâu, điều đó có nghĩa là R2 phải học tất cả các mạng trong Internet. Điều này là không thể vì như thế sẽ chẳng đủ bộ nhớ để cho R2 lưu trữ các route vào routing table.
Khi đó giải pháp là ta sẽ cấu hình default route trên R2 để nó biết rằng, khi gói tin muốn đi ra Internet, nó sẽ forward gói tin theo default route vì nó ko biết đc dest IP của gói tin là ở đâu.
Ưu điểm của default route là giúp cho routing table nhỏ gọn hơn, ko bị quá tải.
Cấu hình default route:
R(config)#ip route 0.0.0.0 0.0.0.0
Ví dụ với mô hình trên, ta sẽ thêm một route vào R2 để ra một mạng ko có trong routing table của các routers khác. Ta sẽ thử đặt một webserver vào đây(mình sẽ đưa file cấu hình bằng Packet Tracer lên)
R1(fa0/0)---------------(fa0/0)R2(fa0/1)---------webserver
|
|
(fa0/1)
R3
Gỉa sử mạng giữa R2 và webserver là 192.168.2.0/24.
Có 2 cách để cấu hình, ở đây ta chỉ làm theo bước đơn giản là cấu hình lần lượt trên từng Routers.
Ở R2 ta sẽ cấu hình default route chỉ đến webserver, từ R1 sẽ chỉ đến R2, từ R3 sẽ chỉ đến R1.
Cấu hình:
----------------------------------------
R1(config)#ip route 0.0.0.0 0.0.0.0 fa0/0
R2(config)#ip route 0.0.0.0 0.0.0.0 fa0/1
R3(config)#ip route 0.0.0.0 0.0.0.0 fa0/1
----------------------------------------
show run cấu hình để xem lại, dùng ping để kiểm tra các kết nối.
---------------------------------------
R3#ping 192.168.2.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.2.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 78/87/94 ms
---------------------------------------
Show cấu hình từ R3 ta thấy không có route nào đến 192.168.2.0/24
---------------------------------------
R3#show ip rout
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
* - candidate default, U - per-user static route, o - ODR
P - periodic downloaded static route
Gateway of last resort is 0.0.0.0 to network 0.0.0.0
C 172.16.0.0/16 is directly connected, FastEthernet0/1
S 192.168.1.0/24 is directly connected, FastEthernet0/1
S* 0.0.0.0/0 is directly connected, FastEthernet0/1
---------------------------------------
OK, mình đã giới thiệu về Routing, connected route, static route, default route. Bữa sau mình sẽ giới thiệu về Dynamic routing!;)
Đây là file cấu hình bằng Packet tracer, bạn có thể tham khảo!
http://vnnshare.com/download/lyztN2ynV2/tut.rar
Monday, April 26, 2010
Tổng quan IPv4
Bàn về địa chỉ IP!
Okie, hôm nay sẽ post một bài nói về địa chỉ IP, có lẽ cũng đã có quá nhiều tut trên mạng rồi...Ở đây ta bàn về cấu trúc của IPv4
Địa chỉ IPv4 đc chia ra thành 5 lớp A,B,C,D,E. Trong đó lớp D là lớp dự phòng ko bàn tới( thực ra nếu có đọc về Cisco thì nó sẽ nằm trong module ROUTE của CCNP-theo code mới của nó), còn lớp E phục vụ cho công tác nghiên cứu của các vị researchers nên cũng ko bàn luôn!:P
Bây giờ ta sẽ đi bàn về địa chỉ 3 lớp A,B,C.
Một địa chỉ IPv4 gồm có 32bits đc chia thành 4 phần gọi là 4 octet.
|------------|---------------|---------------|-------------|
| ----octet--------- octet-------- octet----------- octet--- |
|------------|---------------|---------------|-------------|
<------------------------32bits-------------------------->
1.Địa chỉ lớp A(Class A)
Địa chỉ IP đc chia thành 2 phần, một phần gọi là netID dùng để định danh mạng, và phần hostID dùng để định danh host!
Địa chỉ lớp A có phần netID chiếm octet đầu tiên(8bit). Bit đầu tiên bắt đầu là bit 0
0xxxxxxx|------------------------
--netID--|---hostID---------------
-------------32bits----------------
Do bit đầu tiên là 0 cho nên số mạng trong lớp A chỉ còn có 2^7=128 mạng.
Trong lớp A này có một dãy địa chỉ mạng cũng không thể sử dụng đc đó là địa chỉ Loopback. Dãy IP của nó là 127.0.0.0
Như vậy tổng cộng trong lớp A ta chỉ có 126 mạng có thể sử dụng đc
Địa chỉ cho mạng sẽ chạy từ:
Binary:00000001->01111111
Decimal:1.0.0.0->126.0.0.0
Số host cho mỗi mạng là: 2^(32-8) hosts
2. Địa chỉ lớp B(Class B)
Lớp B có phần netID chiếm 2 octet đầu tiên. Ở octet thứ nhất thì 2 bit đầu tiên là 10
10xxxxxx xxxxxxxx|------------------------
--------netID----|---------hostID--------
Như vậy trong lớp B có 2^16 mạng có thể sử dụng.
Địa chỉ cho mạng này sẽ chạy từ
Binary:10000000 00000000 ->10111111 11111111
Decimal:128.0.0.0->191.255.0.0
Số host cho mỗi mạng là: 2^16 hosts
3. Địa chỉ lớp C(Class C)
Lớp C có phần net ID chiếm 3 octet đầu.Ở octet thứ nhất thì 3 bits đầu tiên là 110
110xxxxx xxxxxxxx xxxxxxxx|------------------
-------------netID--------|----hostID-------
Như vậy trong lớp C có 2^24 mạng có thể sử dụng.
Địa chỉ cho mạng này chạy từ:
Binary:11000000 00000000 00000000 -> 11011111 11111111 11111111
Decimal:192.0.0 -> 223.255.255
Số host cho mỗi mạng là: 2^8 hosts
----
OK, như vậy là đã cho bạn một cái nhìn có thể nói là sơ lược nhất về các lớp IP, nhưng vẫn có chỗ sai, nếu bạn để ý thì sẽ thấy mình tính số hosts và số mạng ko giống như các tut khác!;). Bây giờ mình sẽ chỉ ra 2 chỗ sai. Nếu bạn chưa thấy thì dừng lại một chút tìm chỗ sai của mình nhé!;)
------------------------------------------------
Now, mình sẽ chỉ ra 2 chỗ sai của mình ở trên:
3.1 Chỗ sai thứ nhất: số mạng có thể sử dụng
Như ở trên mình nói thì với lớp A ta có thể dùng 126 mạng, điều này là do ta đã loại bỏ 2 trường hợp mà mình đã nhắc ở trên. Còn đối với lớp B và C thì sao?!
Thật ra, đối với lớp B mình dùng "2^16" mạng là hoàn toàn sai!:D. Tại sao?! Bởi vì chỉ có 14 bit là có thể chạy qua lại giữa 0 và 1 mà thôi, 2 bit đầu tiên là bất di bất dịch, bạn ko có quyền sửa đổi 2 vị trí này, như vậy đúng ra ta sẽ có:
Mình đã nói là: lớp A có 2^24 hosts cho mỗi mạng, lớp B có 2^16, lớp C có 2^8. Như vậy là sai(theo cái lý thuyết mà chúng ta đang cần nắm;) )
Tại sao lại sai nhỉ? Có gì sai đâu khi có từng ấy bit dành cho phần hostID?!
Thật ra nó sai ở chỗ người ta đưa ra 2 loại địa chỉ mà chúng ta ko đc dùng để đặt cho các hosts.
Bây giờ mình sẽ lấy địa chỉ của lớp B ra làm ví dụ!
Địa chỉ của lớp B có phần hostID là 16bits. Bây giờ mình sẽ lấy địa chỉ đầu tiên dành cho hosts đó là các bit đều ở trạng thái bằng 0
10xxxxxx xxxxxxxx|00000000 00000000
-----netID-------|-------hostID--------
Nếu như cách tính(sai) ở trên thì trạng tất cả các bit bằng 0 vẫn đc chấp nhận trong phần host(2^16).Với địa chỉ trên bạn sẽ có là một địa chỉ mạng đúng ko?! Đây là cái sai thứ nhất!:D
Với địa chỉ 100.10.0.0 thì các bit host đều bằng 0, nhưng đây là địa chỉ phần mạng! Như vậy nó sẽ ko đc dùng để đặt cho host
Loại địa chỉ thứ 2:đây là địa chỉ mà tất cả các bit host đều bằng 1. Khi đó theo quy ước thì địa chỉ này là địa chỉ broadcast. Địa chỉ này cũng ko đc sử dụng cho host.
Ví dụ: 100.10.11111111.11111111
-----netID--|-------hostID-----
Decimal:100.10.255.255
Như vậy với mỗi lần tính số hosts/net ta phải làm một thao tác đó là trừ đi 2 giá trị ko sử dụng đc cho host này.
Như vậy:
Lớp A, số hosts/net là: (2^24)-2 hosts
Lớp B, số hosts/net là: (2^16)-2 hosts
Lớp C, số hosts/net là: (2^8)-2 hosts
-----------------------------------------------
Có thể bạn sẽ bị lùng bùng với cách diễn giải của mình, nhưng cứ yên tâm, chút nữa ta sẽ cùng nhau rút ra vấn đề chính để có thể nhớ dễ dàng và chính xác hơn!:D
-----------------------------------------------
4.Địa chỉ Private và địa chỉ Public
Nôm na là địa chỉ riêng và địa chỉ công cộng( người Việt mình dịch ra như vậy, để dễ hơn thôi, ta thì cứ từ ngữ chuyên ngành mà dùng cho nhanh!:P)
Bây giờ mình sẽ bàn về địa chỉ Private
4.1 Địa chỉ Private
Mình nêu ra một ví dụ như vầy:
Mình chuyển đến khu trọ mới, đk một đường dây Internet. Sau đó khu trọ mới có vài người cũng muốn mình share net cho họ(share liền vì IT mà!:P)
Sau đó mình để ý rằng, trong cái mạng LAN bé nhỏ đó có dãy địa chỉ IP là 192.168.1.x. Địa chỉ của máy mình là 192.168.1.2. Mấy máy của các nhà khác thì lần lượt từ .3, .4....
Một ngày nọ, mình đến nhà thằng bạn chơi, dùng máy nó nghịch chút thì thấy rằng máy nó cũng là 192.168.1.2!:|. Tại sao lại vậy nhỉ?! Nguyên tắc là các máy không đc trùng IP với nhau cơ mà?! Sao máy nó lại có IP giống máy mình?!
Câu trả lời là hiện tại mình và thằng bạn mình đang dùng địa chỉ IP Private.
Địa chỉ Private là địa chỉ thường đc sử dụng trong các mạng LAN, địa chỉ này không thể đi ra Internet đc. Nó chỉ có ý nghĩa với mạng LAN của bạn mà thôi. Trong mạng LAN này thì máy của bạn cũng có IP duy nhất trong mạng. Như vậy là hoàn toàn hợp lệ.
Nói vậy cũng có nghĩa là: mạng 192.168.1.x của khu trọ nhà mình với nhà thằng bạn là hoàn toàn đúng, và với các dãy IP này ko thể nói chuyện trực tiếp với nhau đc.
Như vậy địa chỉ Private là địa chỉ của mạng LAN, không thể đi ra Internet. Địa chỉ này thường do người Administrator quản lý.
Với mỗi lớp mạng thì sẽ có một dãy địa chỉ IP Private riêng
Lớp A: 10.0.0.0
Lớp B: 172.16.0.0->172.31.0.0
Lớp C: 192.168.0.0->192.168.255.0
4.2 Địa chỉ Public
Cũng với ví dụ trên của mình, vậy thì cái máy của mình làm sao có thể chat với thằng bạn mình, làm sao mình có thể dùng Google đc?!
Mỗi khi bạn đi ra Internet với chiếc máy của mình thì máy của bạn cũng sẽ phải được định danh bằng 1 IP duy nhất trên Internet, ko chung đụng với bất cứ ai. Bạn lên mạng lướt web, vào 4rum, chat với bạn bè cũng là bằng IP đó. Đó là IP Public, địa chỉ này là một tài nguyên mạng cho nên mỗi khi bạn đk 1 dịch vụ Internet thì ISP sẽ cung cấp cho bạn một IP để bạn có thể ra ngoài Internet đc.
Để biết được IP Public của mình, bạn có thể vào trang http://whatismyip.com để xem
Ngày xưa, khi mình đọc đến đây thì mình có 1 thắc mắc nho nhỏ đó là: mạng LAN của mình có nhiều máy, vậy chẳng lẽ mỗi máy ra mạng lại đc cấp 1 IP Public riêng và ko trùng nhau?!
Nhưng đâu thể nào như vậy đc, với tình trạng khan hiếm IP như hiện nay ở VN thì điều đó là ko thể. ISP sẽ dùng một công nghệ gọi là NAT( Network Address Translation) để làm cho tất cả các máy trong mạng LAN của bạn đi ra ngoài chỉ với 1 IP nhưng vẫn đảm bảo máy bạn ra Internet ngon lành!:D. Mình sẽ đề cập đến cái NAT này sau!;)
Dãy địa chỉ Public là các địa chỉ còn lại không thuộc vào dãy IP Private mình đã đưa ra ở trên!:)
--------------------------------
OK, Mình đã giới thiệu sơ lược về địa chỉ IP rồi, bây giờ ta cùng review lại các ý chính
-IPv4 có 32bit, chia làm 4 octet
-Có 3 lớp địa chỉ IP đc sử dụng
-Số mạng mỗi lớp
-Số host trên mỗi mạng: (2^n)-2 với n là số bit dành cho phần host
-Địa chỉ Private và địa chỉ Public
Đó là các mục chúng ta vừa tìm hiểu, mỗi người hãy xây dựng cho mình một cách riêng để nhớ nhé!;)
Okie, hôm nay sẽ post một bài nói về địa chỉ IP, có lẽ cũng đã có quá nhiều tut trên mạng rồi...Ở đây ta bàn về cấu trúc của IPv4
Địa chỉ IPv4 đc chia ra thành 5 lớp A,B,C,D,E. Trong đó lớp D là lớp dự phòng ko bàn tới( thực ra nếu có đọc về Cisco thì nó sẽ nằm trong module ROUTE của CCNP-theo code mới của nó), còn lớp E phục vụ cho công tác nghiên cứu của các vị researchers nên cũng ko bàn luôn!:P
Bây giờ ta sẽ đi bàn về địa chỉ 3 lớp A,B,C.
Một địa chỉ IPv4 gồm có 32bits đc chia thành 4 phần gọi là 4 octet.
|------------|---------------|---------------|-------------|
| ----octet--------- octet-------- octet----------- octet--- |
|------------|---------------|---------------|-------------|
<------------------------32bits-------------------------->
1.Địa chỉ lớp A(Class A)
Địa chỉ IP đc chia thành 2 phần, một phần gọi là netID dùng để định danh mạng, và phần hostID dùng để định danh host!
Địa chỉ lớp A có phần netID chiếm octet đầu tiên(8bit). Bit đầu tiên bắt đầu là bit 0
0xxxxxxx|------------------------
--netID--|---hostID---------------
-------------32bits----------------
Do bit đầu tiên là 0 cho nên số mạng trong lớp A chỉ còn có 2^7=128 mạng.
Trong lớp A này có một dãy địa chỉ mạng cũng không thể sử dụng đc đó là địa chỉ Loopback. Dãy IP của nó là 127.0.0.0
Như vậy tổng cộng trong lớp A ta chỉ có 126 mạng có thể sử dụng đc
Địa chỉ cho mạng sẽ chạy từ:
Binary:00000001->01111111
Decimal:1.0.0.0->126.0.0.0
Số host cho mỗi mạng là: 2^(32-8) hosts
2. Địa chỉ lớp B(Class B)
Lớp B có phần netID chiếm 2 octet đầu tiên. Ở octet thứ nhất thì 2 bit đầu tiên là 10
10xxxxxx xxxxxxxx|------------------------
--------netID----|---------hostID--------
Như vậy trong lớp B có 2^16 mạng có thể sử dụng.
Địa chỉ cho mạng này sẽ chạy từ
Binary:10000000 00000000 ->10111111 11111111
Decimal:128.0.0.0->191.255.0.0
Số host cho mỗi mạng là: 2^16 hosts
3. Địa chỉ lớp C(Class C)
Lớp C có phần net ID chiếm 3 octet đầu.Ở octet thứ nhất thì 3 bits đầu tiên là 110
110xxxxx xxxxxxxx xxxxxxxx|------------------
-------------netID--------|----hostID-------
Như vậy trong lớp C có 2^24 mạng có thể sử dụng.
Địa chỉ cho mạng này chạy từ:
Binary:11000000 00000000 00000000 -> 11011111 11111111 11111111
Decimal:192.0.0 -> 223.255.255
Số host cho mỗi mạng là: 2^8 hosts
----
OK, như vậy là đã cho bạn một cái nhìn có thể nói là sơ lược nhất về các lớp IP, nhưng vẫn có chỗ sai, nếu bạn để ý thì sẽ thấy mình tính số hosts và số mạng ko giống như các tut khác!;). Bây giờ mình sẽ chỉ ra 2 chỗ sai. Nếu bạn chưa thấy thì dừng lại một chút tìm chỗ sai của mình nhé!;)
------------------------------------------------
Now, mình sẽ chỉ ra 2 chỗ sai của mình ở trên:
3.1 Chỗ sai thứ nhất: số mạng có thể sử dụng
Như ở trên mình nói thì với lớp A ta có thể dùng 126 mạng, điều này là do ta đã loại bỏ 2 trường hợp mà mình đã nhắc ở trên. Còn đối với lớp B và C thì sao?!
Thật ra, đối với lớp B mình dùng "2^16" mạng là hoàn toàn sai!:D. Tại sao?! Bởi vì chỉ có 14 bit là có thể chạy qua lại giữa 0 và 1 mà thôi, 2 bit đầu tiên là bất di bất dịch, bạn ko có quyền sửa đổi 2 vị trí này, như vậy đúng ra ta sẽ có:
- Lớp B sẽ có 2^14 mạng có thể dùng
- Lớp C sẽ có 2^21 mạng có thể dùng
Mình đã nói là: lớp A có 2^24 hosts cho mỗi mạng, lớp B có 2^16, lớp C có 2^8. Như vậy là sai(theo cái lý thuyết mà chúng ta đang cần nắm;) )
Tại sao lại sai nhỉ? Có gì sai đâu khi có từng ấy bit dành cho phần hostID?!
Thật ra nó sai ở chỗ người ta đưa ra 2 loại địa chỉ mà chúng ta ko đc dùng để đặt cho các hosts.
- Loại địa chỉ thứ nhất ko đc dùng cho host: Đó là địa chỉ của lớp mạng(các bit host đều bằng 0)
- Loại địa chỉ thứ 2 ko đc dùng cho host: Đó là địa chỉ broadcast(tất cả các bit host đều bằng 1)
Bây giờ mình sẽ lấy địa chỉ của lớp B ra làm ví dụ!
Địa chỉ của lớp B có phần hostID là 16bits. Bây giờ mình sẽ lấy địa chỉ đầu tiên dành cho hosts đó là các bit đều ở trạng thái bằng 0
10xxxxxx xxxxxxxx|00000000 00000000
-----netID-------|-------hostID--------
Nếu như cách tính(sai) ở trên thì trạng tất cả các bit bằng 0 vẫn đc chấp nhận trong phần host(2^16).Với địa chỉ trên bạn sẽ có là một địa chỉ mạng đúng ko?! Đây là cái sai thứ nhất!:D
Với địa chỉ 100.10.0.0 thì các bit host đều bằng 0, nhưng đây là địa chỉ phần mạng! Như vậy nó sẽ ko đc dùng để đặt cho host
Loại địa chỉ thứ 2:đây là địa chỉ mà tất cả các bit host đều bằng 1. Khi đó theo quy ước thì địa chỉ này là địa chỉ broadcast. Địa chỉ này cũng ko đc sử dụng cho host.
Ví dụ: 100.10.11111111.11111111
-----netID--|-------hostID-----
Decimal:100.10.255.255
Như vậy với mỗi lần tính số hosts/net ta phải làm một thao tác đó là trừ đi 2 giá trị ko sử dụng đc cho host này.
Như vậy:
Lớp A, số hosts/net là: (2^24)-2 hosts
Lớp B, số hosts/net là: (2^16)-2 hosts
Lớp C, số hosts/net là: (2^8)-2 hosts
-----------------------------------------------
Có thể bạn sẽ bị lùng bùng với cách diễn giải của mình, nhưng cứ yên tâm, chút nữa ta sẽ cùng nhau rút ra vấn đề chính để có thể nhớ dễ dàng và chính xác hơn!:D
-----------------------------------------------
4.Địa chỉ Private và địa chỉ Public
Nôm na là địa chỉ riêng và địa chỉ công cộng( người Việt mình dịch ra như vậy, để dễ hơn thôi, ta thì cứ từ ngữ chuyên ngành mà dùng cho nhanh!:P)
Bây giờ mình sẽ bàn về địa chỉ Private
4.1 Địa chỉ Private
Mình nêu ra một ví dụ như vầy:
Mình chuyển đến khu trọ mới, đk một đường dây Internet. Sau đó khu trọ mới có vài người cũng muốn mình share net cho họ(share liền vì IT mà!:P)
Sau đó mình để ý rằng, trong cái mạng LAN bé nhỏ đó có dãy địa chỉ IP là 192.168.1.x. Địa chỉ của máy mình là 192.168.1.2. Mấy máy của các nhà khác thì lần lượt từ .3, .4....
Một ngày nọ, mình đến nhà thằng bạn chơi, dùng máy nó nghịch chút thì thấy rằng máy nó cũng là 192.168.1.2!:|. Tại sao lại vậy nhỉ?! Nguyên tắc là các máy không đc trùng IP với nhau cơ mà?! Sao máy nó lại có IP giống máy mình?!
Câu trả lời là hiện tại mình và thằng bạn mình đang dùng địa chỉ IP Private.
Địa chỉ Private là địa chỉ thường đc sử dụng trong các mạng LAN, địa chỉ này không thể đi ra Internet đc. Nó chỉ có ý nghĩa với mạng LAN của bạn mà thôi. Trong mạng LAN này thì máy của bạn cũng có IP duy nhất trong mạng. Như vậy là hoàn toàn hợp lệ.
Nói vậy cũng có nghĩa là: mạng 192.168.1.x của khu trọ nhà mình với nhà thằng bạn là hoàn toàn đúng, và với các dãy IP này ko thể nói chuyện trực tiếp với nhau đc.
Như vậy địa chỉ Private là địa chỉ của mạng LAN, không thể đi ra Internet. Địa chỉ này thường do người Administrator quản lý.
Với mỗi lớp mạng thì sẽ có một dãy địa chỉ IP Private riêng
Lớp A: 10.0.0.0
Lớp B: 172.16.0.0->172.31.0.0
Lớp C: 192.168.0.0->192.168.255.0
4.2 Địa chỉ Public
Cũng với ví dụ trên của mình, vậy thì cái máy của mình làm sao có thể chat với thằng bạn mình, làm sao mình có thể dùng Google đc?!
Mỗi khi bạn đi ra Internet với chiếc máy của mình thì máy của bạn cũng sẽ phải được định danh bằng 1 IP duy nhất trên Internet, ko chung đụng với bất cứ ai. Bạn lên mạng lướt web, vào 4rum, chat với bạn bè cũng là bằng IP đó. Đó là IP Public, địa chỉ này là một tài nguyên mạng cho nên mỗi khi bạn đk 1 dịch vụ Internet thì ISP sẽ cung cấp cho bạn một IP để bạn có thể ra ngoài Internet đc.
Để biết được IP Public của mình, bạn có thể vào trang http://whatismyip.com để xem
Ngày xưa, khi mình đọc đến đây thì mình có 1 thắc mắc nho nhỏ đó là: mạng LAN của mình có nhiều máy, vậy chẳng lẽ mỗi máy ra mạng lại đc cấp 1 IP Public riêng và ko trùng nhau?!
Nhưng đâu thể nào như vậy đc, với tình trạng khan hiếm IP như hiện nay ở VN thì điều đó là ko thể. ISP sẽ dùng một công nghệ gọi là NAT( Network Address Translation) để làm cho tất cả các máy trong mạng LAN của bạn đi ra ngoài chỉ với 1 IP nhưng vẫn đảm bảo máy bạn ra Internet ngon lành!:D. Mình sẽ đề cập đến cái NAT này sau!;)
Dãy địa chỉ Public là các địa chỉ còn lại không thuộc vào dãy IP Private mình đã đưa ra ở trên!:)
--------------------------------
OK, Mình đã giới thiệu sơ lược về địa chỉ IP rồi, bây giờ ta cùng review lại các ý chính
-IPv4 có 32bit, chia làm 4 octet
-Có 3 lớp địa chỉ IP đc sử dụng
-Số mạng mỗi lớp
-Số host trên mỗi mạng: (2^n)-2 với n là số bit dành cho phần host
-Địa chỉ Private và địa chỉ Public
Đó là các mục chúng ta vừa tìm hiểu, mỗi người hãy xây dựng cho mình một cách riêng để nhớ nhé!;)
Wednesday, April 7, 2010
Cơ bản về Router Cisco và quá trình Boot
Một thiết bị của Cisco(Router,SW...) thường có 4 kiểu, mỗi kiểu đc dành riêng cho từng mục đích cụ thể....
+ROM: quản lý quá trình POST, Bootstrap,ROMMON, và RXBoot.
+RAM: tương tự như RAM trong PC vậy, mục đích của nó cũng là cấp phát vùng nhớ để cung cấp cho ác quá trình. Cụ thể hơn trong Cisco devices thì là lưu trữ Routing Table, ARP Cache và bộ nhớ đệm buffers.
+NVRAM(Non-Volatile RAM): dữ liệu lưu trữ trong NVRAM thì sẽ ko bị mất khi restart hay khi bị mất điện. File cấu hình của thiết bị đc lưu trữ ở đây
------------------------
IOS Startup Process
Khi ta khởi động thiết bị Cisco ta có thể nhìn thấy thông tin đc hiện ra. Các thông tin này có thể rất có ích cho ta việc tìm thấy các thông tin quan trọng ví như khi thiết bị có lỗi xảy ra hay có một cấu hình nào đó làm thay đổi trạng thái thông thường của thiết bị...
Quá trình để khởi động một Router Cisco như sau:
1. Chạy POST
2. Tìm kiếm IOS
4.Nếu như nó ko tìm thấy một IOS nào đáp ứng đc yêu cầu của nó từ flash thì nó sẽ broadcast để tìm một TFTP server với hi vọng là sẽ tìm đc một IOS có thể đáp ứng nhu cầu của nó.
5.Nếu ko có 1 TFTP server nào đc tìm thấy hoặc ko có 1 IOS nào đủ tốt cho nó thì khi đó Router sẽ load RXBOOT-chứa 1 mini IOS. IOS này có một vài các chức năng giống như một IOS thật. Mục đích chính của RXBOOT là cho phép bạn kết nối một cách thủ công đến một TFTP server để download một IOS tốt xuống flash. Khi đó, command prompt cho RXBOOT sẽ có dạng:
Router(boot)>
6.Nếu ko may RXBOOT cũng thất bại, thì khi đó Router sẽ load ROMMON. ROMMON cũng có thể kết nối đến TFTP server.Nếu đến đây mà vẫn ko giải quyết đc vấn đề thì...:D
7.Sau khi IOS đc load, Router sẽ xem xét file startup-config trong NVRAM. Nếu tìm thấy file này sẽ đc copy vào RAM và đc đổi tên thành running-config
8.Nếu ko có startup-config trong NVRAM, Router sẽ broadcast để tìm TFTP server nếu nó có 1 file config cho Router
9.Nếu quá trình trên vẫn fail thì sẽ vào lại Setup mode
----Chú thích-----
_IOS: hệ điều hành của thiết bị(Router, SW). Hoạt động giống như 1 hđh của máy tính.
_Startup-config: đây là file cấu hình khi khởi động
_Running-config: file cấu hình hiện tại của thiết bị
+ROM: quản lý quá trình POST, Bootstrap,ROMMON, và RXBoot.
- -POST:Power On Self Test quá trình này tương tự như quá trình POST của một máy tính. Mục đích của nó là kiể tra các thiết bị phần cứng, các cấu hình.
- -Bootstrap: mục đích của nó là tìm kiếm một hệ điều hành để load
- -ROMMON là những dòng lệnh đc thiết lập để có thể kết nối đến một TFTP server và phục hồi lại khi IOS lỗi
- -RXBOOT: là một IOS mini có chức năng giúp đỡ quá trình phục hồi IOS từ TFTP
+RAM: tương tự như RAM trong PC vậy, mục đích của nó cũng là cấp phát vùng nhớ để cung cấp cho ác quá trình. Cụ thể hơn trong Cisco devices thì là lưu trữ Routing Table, ARP Cache và bộ nhớ đệm buffers.
+NVRAM(Non-Volatile RAM): dữ liệu lưu trữ trong NVRAM thì sẽ ko bị mất khi restart hay khi bị mất điện. File cấu hình của thiết bị đc lưu trữ ở đây
------------------------
IOS Startup Process
Khi ta khởi động thiết bị Cisco ta có thể nhìn thấy thông tin đc hiện ra. Các thông tin này có thể rất có ích cho ta việc tìm thấy các thông tin quan trọng ví như khi thiết bị có lỗi xảy ra hay có một cấu hình nào đó làm thay đổi trạng thái thông thường của thiết bị...
Quá trình để khởi động một Router Cisco như sau:
- Chạy POST
- Tìm kiếm IOS
- Load IOS lên RAM
- Tìm cấu hình
- Load cấu hình lên RAM
1. Chạy POST
2. Tìm kiếm IOS
- -Giả sử rằng ko có lỗi nào trong quá trình POST, bootstrap sẽ kiểm tra cấu hình file start-up trong NVRAM để boot các câu lệnh hệ thống. Các câu lệnh này có thể đã đc chỉnh sửa bời admin để thay đổi một cái gì đó khi khởi động, có thể là load một IOS khác nào đó để test!
4.Nếu như nó ko tìm thấy một IOS nào đáp ứng đc yêu cầu của nó từ flash thì nó sẽ broadcast để tìm một TFTP server với hi vọng là sẽ tìm đc một IOS có thể đáp ứng nhu cầu của nó.
5.Nếu ko có 1 TFTP server nào đc tìm thấy hoặc ko có 1 IOS nào đủ tốt cho nó thì khi đó Router sẽ load RXBOOT-chứa 1 mini IOS. IOS này có một vài các chức năng giống như một IOS thật. Mục đích chính của RXBOOT là cho phép bạn kết nối một cách thủ công đến một TFTP server để download một IOS tốt xuống flash. Khi đó, command prompt cho RXBOOT sẽ có dạng:
Router(boot)>
6.Nếu ko may RXBOOT cũng thất bại, thì khi đó Router sẽ load ROMMON. ROMMON cũng có thể kết nối đến TFTP server.Nếu đến đây mà vẫn ko giải quyết đc vấn đề thì...:D
7.Sau khi IOS đc load, Router sẽ xem xét file startup-config trong NVRAM. Nếu tìm thấy file này sẽ đc copy vào RAM và đc đổi tên thành running-config
8.Nếu ko có startup-config trong NVRAM, Router sẽ broadcast để tìm TFTP server nếu nó có 1 file config cho Router
9.Nếu quá trình trên vẫn fail thì sẽ vào lại Setup mode
----Chú thích-----
_IOS: hệ điều hành của thiết bị(Router, SW). Hoạt động giống như 1 hđh của máy tính.
_Startup-config: đây là file cấu hình khi khởi động
_Running-config: file cấu hình hiện tại của thiết bị
Sunday, April 4, 2010
Proxy ARP
Theo mặc định thì Router sẽ drop các gói tin broadcast khi gói tin này đến bất kỳ 1 interface nào của nó. Nhưng nếu vậy thì làm sao các máy khác mạng có thể liên lạc đc với nhau khi yêu cầu là phải có source MAC và dest MAC trong Frame gửi đi?! Đây là một chức năng trên Router làm nhiệm vụ "giả" MAC của host đích để đánh lừa host gửi, nhưng vẫn đảm bảo rằng dữ liệu đến đúng nơi cần thiết!
1. Sơ lược về ARP( RFC 826 )
ARP(Address Resolution Protocols) là một giao thức hoạt động nhằm map giữa địa chỉ logic(IP) và địa chỉ vật lý(MAC).
Cơ chế hoạt động của ARP như sau:
-Khi 2 host trong cùng mạng muốn liên lạc với nhau chúng phải biết được rằng địa chỉ vật lý(MAC address) của host kia là gì. Ban đầu các máy chưa hề biết nhau, vì vậy muốn biết đc MAC của máy đích thì máy gửi sẽ broadcast gói tin lên mạng. Trong gói tin này sẽ chứa IP nguồn là IP của máy gửi, IP đích là IP của máy cần biết M. Khi gói tin đến đúng đc máy có IP tương ứng thì máy nhận sẽ phải gửi lại một gói tin chứa MAC của mình.
-Ta có thể hình dung như sau:
Như ta đã xem xét sơ lược ở trên thì gói tin ARP request là một gói tin dạng broadcast. Bây giờ ta thử xem xét đến việc truyền tải giữa 2 host ở 2 mạng khác nhau xem sao. 2 mạng khác nhau muốn kết nối với nhau phải sử dụng một thiết bị layer3 như Router để có thể truyền tải thông tin cho nhau. Nhưng giả sử ở mạng A ta có hostA muốn kết nối tớ hostB ở mạng B mà vẫn chưa biết MAC của host B thì sao?! Nếu sử dụng 1 gói tin broadcast thì sẽ ko khả thi vì như ta biết thì gói tin broadcast sẽ bị drop khi đến 1 interface nào đó của Router. Như vậy làm sao để có thể lấy đc MAC hostB?!....
Vấn đề trên đc giải quyết qua RFC 1027 đó là sử dụng Proxy ARP. Ta cùng xem xét về vấn đề này...
Cùng xem một ví dụ:
HostA(172.16.10.100/16) muốn gửi các gói tin đến host D(172.16.20.200) trong subnet B. Như trên hình thì hostA có subnet mask là /16, tức là đang ở ClassB, và nó sẽ tin rằng nó đc kết nối trực tiếp đến các host trong cùng mạng 172.16.0.0. Khi hostA muốn truyền tải thông tin cho bất kỳ một host nào mà nó tin rằng nó đang đc kết nối trực tiếp thì nó sẽ gửi một ARP request đến host đích để lấy thông tin về layer2(MAC). Khi đó gói tin broadcast của hostA gửi đi sẽ có các thông số:
TRong gói tin ARP request này hostA sẽ yêu cầu host D gửi cho nó MAC của host D. Vì gói tin dưới dạng broadcast nên tất cả các host trong mạng đều nhận đc và xử lý, kể cả interface e0 của Router, nhưng gói tin này sẽ ko đến đc hostD vì Router đã drop gói tin ngay khi nó đến e0.
Khi Router biết rằng địa chỉ đích(172.16.20.200) ở mạng khác và nó có thể đến đc hostD thì nó sẽ gửi cho hostA một gói tin:
Đây chính là gói tin ARP Proxy reply mà router gửi về cho hostA. Gói tin này đc đóng gói trong Ethernet Frames với source MAC là MAC của interface kết nối đến subnet của hostA và dest MAC chính là MAC của hostA. Đây là gói tin dưới dạng unicast.
Khi hostA nhận đc gói tin trên nó sẽ cache vào ARP table của nó:
Kể từ bây giờ, khi hostA muốn gửi gói tin đến hostD thì nó sẽ gửi gói tin đến interface e0 của router, router sẽ biết cách để forward gói tin đến đúng đích. Và nếu hostA muốn gửi gói tin đến bất kỳ một host nào đang ở trong subnet B thì sẽ biết phải forward đến e0. ARP table của hostA:
Nhờ nguyên tắc của Proxy ARP mà ta vẫn nghe thấy rằng trong quá trình truyền dữ liệu thì chỉ có MAC thay đổi còn IP thì ko đổi....
1. Sơ lược về ARP( RFC 826 )
ARP(Address Resolution Protocols) là một giao thức hoạt động nhằm map giữa địa chỉ logic(IP) và địa chỉ vật lý(MAC).
Cơ chế hoạt động của ARP như sau:
-Khi 2 host trong cùng mạng muốn liên lạc với nhau chúng phải biết được rằng địa chỉ vật lý(MAC address) của host kia là gì. Ban đầu các máy chưa hề biết nhau, vì vậy muốn biết đc MAC của máy đích thì máy gửi sẽ broadcast gói tin lên mạng. Trong gói tin này sẽ chứa IP nguồn là IP của máy gửi, IP đích là IP của máy cần biết M. Khi gói tin đến đúng đc máy có IP tương ứng thì máy nhận sẽ phải gửi lại một gói tin chứa MAC của mình.
-Ta có thể hình dung như sau:
- Trong một mạng có 2 host A,B. Host A đã có IP của host B và muốn biết MAC của host B. Khi đó HostA gửi lên mạng một gói tin ARP Request với IP của hostB và MAC của hostA.
- Vì đây là gói tin broadcast nên tất cả các host trong mạng sẽ đều phải xử lý gói tin, nhưng chỉ có host nào có IP đúng như IP đích của gói tin thì mới reply lại, trong trường hợp này thì chỉ có hostB reply lại, đem theo MAC của host B.
- Như vậy hostA đã học đc MAC của hostB và có thể truyền dữ liệu đến hostB.
Như ta đã xem xét sơ lược ở trên thì gói tin ARP request là một gói tin dạng broadcast. Bây giờ ta thử xem xét đến việc truyền tải giữa 2 host ở 2 mạng khác nhau xem sao. 2 mạng khác nhau muốn kết nối với nhau phải sử dụng một thiết bị layer3 như Router để có thể truyền tải thông tin cho nhau. Nhưng giả sử ở mạng A ta có hostA muốn kết nối tớ hostB ở mạng B mà vẫn chưa biết MAC của host B thì sao?! Nếu sử dụng 1 gói tin broadcast thì sẽ ko khả thi vì như ta biết thì gói tin broadcast sẽ bị drop khi đến 1 interface nào đó của Router. Như vậy làm sao để có thể lấy đc MAC hostB?!....
Vấn đề trên đc giải quyết qua RFC 1027 đó là sử dụng Proxy ARP. Ta cùng xem xét về vấn đề này...
Cùng xem một ví dụ:
HostA(172.16.10.100/16) muốn gửi các gói tin đến host D(172.16.20.200) trong subnet B. Như trên hình thì hostA có subnet mask là /16, tức là đang ở ClassB, và nó sẽ tin rằng nó đc kết nối trực tiếp đến các host trong cùng mạng 172.16.0.0. Khi hostA muốn truyền tải thông tin cho bất kỳ một host nào mà nó tin rằng nó đang đc kết nối trực tiếp thì nó sẽ gửi một ARP request đến host đích để lấy thông tin về layer2(MAC). Khi đó gói tin broadcast của hostA gửi đi sẽ có các thông số:
TRong gói tin ARP request này hostA sẽ yêu cầu host D gửi cho nó MAC của host D. Vì gói tin dưới dạng broadcast nên tất cả các host trong mạng đều nhận đc và xử lý, kể cả interface e0 của Router, nhưng gói tin này sẽ ko đến đc hostD vì Router đã drop gói tin ngay khi nó đến e0.
Khi Router biết rằng địa chỉ đích(172.16.20.200) ở mạng khác và nó có thể đến đc hostD thì nó sẽ gửi cho hostA một gói tin:
Đây chính là gói tin ARP Proxy reply mà router gửi về cho hostA. Gói tin này đc đóng gói trong Ethernet Frames với source MAC là MAC của interface kết nối đến subnet của hostA và dest MAC chính là MAC của hostA. Đây là gói tin dưới dạng unicast.
Khi hostA nhận đc gói tin trên nó sẽ cache vào ARP table của nó:
Kể từ bây giờ, khi hostA muốn gửi gói tin đến hostD thì nó sẽ gửi gói tin đến interface e0 của router, router sẽ biết cách để forward gói tin đến đúng đích. Và nếu hostA muốn gửi gói tin đến bất kỳ một host nào đang ở trong subnet B thì sẽ biết phải forward đến e0. ARP table của hostA:
Nhờ nguyên tắc của Proxy ARP mà ta vẫn nghe thấy rằng trong quá trình truyền dữ liệu thì chỉ có MAC thay đổi còn IP thì ko đổi....
Saturday, April 3, 2010
Quá trình đóng gói dữ liệu-Encapsulation
Khi một máy tính gửi dữ liệu trên mạng để đến một máy khác thì dữ liệu phải trải qua một quá trình đóng gói(encapsulation)
Quá trình đóng gói-Encapsulation
Datalink Sublayers
các thông tin bên trong PDUs
Quá trình đóng gói này thực ra là việc dùng các thông tin về các giao thức để “bao quanh” dữ liệu sao cho mỗi lần dữ liệu đến từng layer thì mỗi layer sẽ hiểu và sẽ xử lý thông tin tốt nhất.
Để truyền tải và trao đổi dữ liệu thì mỗi layers sẽ sử dụng Protocol Data Unit. Mỗi khi data xuống một layer nào đó sẽ đc thêm thông tin của layer đó và layer tương ứng ở phía host nhận dữ liệu sẽ đọc được thông tin này. Sau khi đọc xong thì thông tin đó sẽ đc gỡ bỏ để đưa lên cho layer phía trên.
Hình dưới cho ta thấy các PDUs và cách chúng thêm thông tin cho mỗi layer. Dữ liệu đc di chuyển xuống Transport layer, sau đó dữ liệu đc chia nhỏ ra thành các phần giống nhau và như vậy đã tạo ra một header của Trans layer(PDU). Mỗi phần nhỏ sau khi chia ra sẽ được đánh thứ tự để bên nhận có thể sắp xếp đúng sau khi nhận dữ liệu.
Quá trình đóng gói-Encapsulation
Cũng ở trong hình ta có thể thấy đơn vị dữ liệu cho các layers:
- -Transport: Segments
- -Network: Packets
- -Data link: Frames
- -Physical: Bits
Các segments sẽ đc đưa xuống Network layer để thêm vào IP header, mục đích của Network layers là đánh địa chỉ mạng và chỉ đường đi cho gói tin trên mạng. Địa chỉ mạng(ví dụ IP) có mục đích là đưa Segments đến đúng nơi nhận/ Segments sau khi đc thêm IP header của Network layer thì đc gọi là Packets hay datagram.
Khi packet xuống đến Datalink layer thì sẽ đc đóng gói thành các frame. Frame header mang theo thông tin về địa chỉ vật lý của host nguồn và host đích.
Ở trên ta thấy các packet đc đóng gói thành các frame sẽ đc đưa thêm vào 2 thông tin là LLC header và MAC header. Tại sao trong Datalink layer lại có tới 2 thông tin đc thêm vào?
Điều đó là do trong Datalink layer có 2 sublayer(layer con) là Logical Link Control(LLC) và Media Access Control(MAC)
Datalink Sublayers
Lớp LLC liên kết với Network layer để xác định loại địa chỉ logic đang dùng là gì và sẽ đóng gói frame theo kiểu tương ứng.-
Lớp MAC lại kết hợp với lớp cuối cùng là Physical l để biết môi trường truyền dẫn bên dưới là gì để có cách thức sử dụng phù hợp. -
Ví dụ: nếu môi trường truyền dẫn là Ethernet, các frame sẽ đóng gói và định địa chỉ theo chuẩn 802.3, và quyết định có sử dụng cơ chế CSMA/CD hay không; nếu môi trường truyền dẫn là không dây thì đóng gói frame theo chuẩn 802.11 và sử dụng cơ chế CSMA/CA,...
(Tham khảo thêm tại: http://www.tcpipguide.com/free/t_DataLinkLayerLayer2.htm )
Để đưa các frame này lên mạng thì các thông tin phải đc chuyển sang dạng tín hiệu digital. Physical layer có trách nhiệm sẽ mã hóa các thông tin thành các chuỗi bit 0 1 để các thiết bị có thể đọc đc.
-----------Quá trình De-Encapsulation---------------
Sau khi quá trình Encapsulation diễn ra ở bên gửi và thông tin đã đc gửi qua bên nhận bằng các bit 0 1 thì bên nhận sẽ thực hiện quá trình tái kiến trúc lại các thông tin
-Sau khi nhận đc các bit 0 1 thì bên nhận sẽ đồng bộ các tín hiệu digital và sau đó sẽ decode các tín hiệu digital. Bên gửi sẽ tiến hành việc xây dựng lại các frames từ các thông tin ở Physical layer đưa lên.
-Khi các thiết bị bắt đầu việc xây dựng lại frames thì sẽ check các thông tin từ FCS(Frame Check Sequence) để xác định đúng thứ tự các frame và check lỗi(tham khảo thêm về FCS:http://en.wikipedia.org/wiki/Frame_check_sequence ), nếu sai bất kỳ một thông tin nào đó hoặc trong quá trình vận chuyển xảy ra lỗi thì sẽ bị loại bỏ. Các thông tin sau khi đc kiểm tra, nếu vẫn ổn thì sẽ đc đưa vào các frame.
-Sau khi đã rebuild lại Frame thì frame sẽ đc đưa lên Network layer, ở đây frame header sẽ đc gỡ bỏ và thông tin đc kiểm tra đó là IP header. Thông tin về địa chỉ Logic(IP) sẽ đc kiểm tra ở đây, sau khi kiểm tra xong thì IP header sẽ đc gỡ bỏ để đưa lên layer tiếp theo phía trên.
….
Cứ như vậy quá trình de-encapsulation sẽ đc diễn ra thông qua các layers và sau đó sẽ đc biểu diễn thành các dữ liệu cho người dùng.
các thông tin bên trong PDUs
Subscribe to:
Posts (Atom)