Mạng căn bản 5 – Hành trình gói packet

I. PHÂN TÍCH QUÁ TRÌNH BẮT TAY GIỮA HAI MÁY TÍNH : 

– Máy A muốn liên lạc với máy X, phải biết IP address của nó (hoặc Hostname/ Domain name).Máy A dò trong ARP cache để tìm địa chỉ MAC đích có chưa, nếu chưa sẽ dùng ARP gửi thông điệp (Broadcast) đến tòan mạng. Có 2 trường hợp:

1. Host X cùng Segment với nó :
– Host A gửi thông điệp với địa chỉ IP đích (đã biết) và MAC đích là FF-FF-FF-FF-FF-FF để hỏi xem MAC của địa chỉ này là gì. Các Host trên segment đều nhận và xử lý gói này ,Host nào có địa chỉ IP trùng với yêu cầu sẽ gửi lại thông tin cho Host A là “IP này có MAC là : ……”.Host A nhập thông tin vào ARP cache (RAM). Khi muốn liên lạc với X thì lại tra trong ARP cache để biết địa chỉ MAC cần đến.

– ARP là gì :

  • Trong protocol TCP/IP có ARP protocol. ARP tự động cập nhật các MAC tương ứng với các IP và xây dựng một bảng ARP table trong máy tính trong cùng mạng subnet. Lúc này , nếu A và X ở trong cùng LAN, thì khi A muốn gửi packet cho X, nó sẽ match IP của X với MAC tương ứng trong bang ARP của nó.
  • Nếu A biết IP của X , nhưng không match được MAC tương ứng trong bảng ARP của nó , thì khi này nó sẽ gứi một packet , gọi là ARP request, với địa chỉ MAC Broadcast FFFFFFFFFF. Lúc này tất cả máy tính trên cùng một mạng sẽ nhận được gói này và chuyển lên lớp Network; nhưng chỉ có máy có IP match với IP destination address trong ARP request mới gửi trả lại gói tin có chứa địa chỉ MAC tương ứng mà máy A muốn tìm .
  • Gói tin này là ARP reply. Nếu Host X available trên Segment thì nó sẽ biết là gói tin này gửi cho nó nhờ vào địa chỉ IP mà Host A ghi trong gói tin ARP request và nó sẽ trả lời bằng 1 gói tin ARP reply. Gói tin ARP reply sẽ có MAC nguồn là MAC của Host X, MAC đích là MAC của Host A, khi Host A nhận được gói tin này tự nhiên sẽ biết được MAC của X. Sau khi A nhận được ARP reply , nó sẽ mở gói và update bảng ARP table của nó: IP và MAC của máy X.

2. Host X không cùng Segment với Host A :

Lúc đó phải nhờ đến router để forward yêu cầu này đến các segment khác. Trong trường hợp này, router sẽ gửi địa chỉ MAC của interface mà nhận gói ARP request trên Router cho máy gửi (máy A ).

– Nói một cách khác để liên lạc với một máy tính khác không cùng nằm trên 1 segment ta phải sử dụng đến “default gateway”. Default Gateway là một phần của một Host (máy tính). Nó là một địa chỉ IP của một interface trên router, và được cấu hình cho Host. Địa chỉ IP của Host và của Default Gateway phải cùng segment mạng.

– Lúc này, máy gửi (A) sẽ kiểm tra xem nó và máy nhận (B) có cùng nằm trên một subnet hay không. Nếu không, nó sẽ đóng gói packet gửi với IP destination address là của máy nhận và MAC address destinaiton là của Router nối với subnet của nó.

– Nếu Proxy ARP hay default gateway không được cấu hình, thì không có “traffic” nào có thê rời khỏi một subnet (một mạng cục bộ). Phải có một trong hai cái được cấu hình ( hay cho phép) để có thể giao tiếp với các segment mạng khác được. “IP source và dest không bao giờ thay đổi, chỉ có MAC source và dest là thay đổi thôi”.

– Proxy ARP: Theo cách thức hoạt động của proxy ARP, ta có thể thấy rằng client khi muốn biết MAC của một Host nào đó, nó chỉ đơn giản là Broadcast ARP-Request lên mạng. Router sẽ có trách nhiệm đáp trả lại bằng ARP-Reply nếu nó nhận thấy IP-destination là thuộc mạng khác. Như vậy, cấu hình IP cho client cực kỳ đơn giản, nhưng gánh nặng lại đè lên router. Thử tưởng tượng cứ sau 1 phút, ARP-entry bị hủy bỏ, thế là các client thi nhau Broadcast lên mạng thì router “tiêu” như chơi.

– Ngoài ra, proxy ARP còn gặp một bất lợi nếu trong segment có tới hơn 1 router. Chọn router nào, nếu như các router đều có route đến mạng đích ?

– Default-Gateway: Nếu client biết rằng IP-dest không thuộc mạng của nó, nó dùng MAC của default-gateway để gửi gói tin, router default-gateway nhận lấy gói tin sẽ biết phải xử lý tiếp theo như thế nào (dựa trên IP source/destination). Cách này giảm tải cho router, giải quyết được trường hợp có nhiều router nối vào cùng segment, và đỡ gây nhầm lẫn.

– Nếu Host A có cấu hình sử dụng Defaul gateway trong TCP/IP protocol thì gói tin ARP request sẽ không phải dạng Broadcast mà được gửi thẳng đến cho Router ( TCP/IP stack quy định như vậy). Tất nhiên để gửi được gói tin này đến cho Router thì nó cũng phải request MAC của defaul gateway trên Router trước, sau đó khi có MAC của default gateway thì Host A sẽ tạo 1 gói tin ARP request MAC của Host X với IP đích là IP Host X, MAC đích là MAC của default gateway.

– Khi Router gateway nhận được gói tin này thì nó sẽ Forward qua interface trên segment thích hợp, tại đây phần Datalink header sẽ được lấy ra (Pull out) và phần Datalink header mới sẽ được gắn vào với mục đích để truyền trên Segment của Host B. Khi Host B nhận được gói tin ARP request thì cũng sẽ trả lời lại bằng gói tin ARP reply được gửi đến DefautGateway trên Segment của nó.

– Khi Router nhận được gói tin này cũng làm việc tương tự như khi gửi đi từ Host A (pull out Datalink header, gắn datalink header mới v.v….)

– Nếu Host A không có cấu hình default gateway (tất nhiên sẽ Broadcast gói tin ARP request) nhưng nếu Router trên Segment của Host A có chức năng ARP Proxy thì căn cứ trên IP mà gói tin ARP request yêu cầu ROUTER sẽ so sánh với Routing Table của nó và nhận gói tin này nếu Match trong Routing table, sau đó sẽ forward qua Segment thích hợp. Quá trình tiếp theo tương tự như trường hợp A.

– Như vậy : nếu 1 trong 2 default gateway của 2 segment cấu hình sai thì sẽ dẫn đến việc Host A không thể liên lạc được với Host X và ngược lại. Ngoài ra nếu thời gian tồn tại của ARP cache trong memory quá lâu công với việc có thay đổi MAC của DF gateway sẽ dẫn đến việc tạm thời không thể thực hiện ARP request.

3. Ví dụ minh họa cho các lý thuyết nêu trên :

– Xin lưu ý các IP cùa source và destination là không thay đổi chỉ có mac là thay đổi

Máy A——-Router1——–Router2——–Router3——Máy B

– Đầu tiên máy A đóng gói gói tin như sau :

– IP nguồn là IP của máy A. IP đích là IP của máy B xuống đến tầng datalink máy A sẽ xem máy B có trong cùng subnet với mình không, trong truờng hợp này là không.

– Lúc này máy A sẽ dùng : MAC nguồn là của máy A. MAC đích là MAC của interface trên router1 nối với subnet A.

– Router1 sẽ xem IP đích có nằm trong subnet của mình hay không trong truờng hợp này là không, lúc này router sẽ đóng gói địa chỉ MAC nguồn là MAC cùa interface mà router này nối với router2, MAC đích sẻ là MAC trên interface của router2, router2 cũng xử lý giống router 1 và chuyển đến router3.

– Router3 sẽ xem IP này có nằm trong subnet của mình không, nếu có thì nó sẽ xem xét địa chỉ MAC tương ứng với IP này (router3 biết được vì nó tra trong bảng ARP của nó có chứa máy B vì B cùng subnet) ứng với IP này router3 xác định đưọc MAC là máy B, tuy vậy nó vẫn gửi Brodcast đến tất cả các máy trong subnet có máy B nhưng chỉ máy B nhận gói tin vì nó có MAC trùng với MAC đích trong gói tin.

– Máy A sẽ gửi 1 gói tin gọi là ARP request (ARP = Address Resolution Protocol) bằng cơ chế Broadcast để tất cả các máy đều có thể nhận được gói tin này

II. HÀNH TRÌNH CƠ BẢN CỦA MỘT GÓI DỮ LIỆU TRÊN MẠNG :

1. Các hành trình :

– Khi một ứng dụng Internet được gọi thì một loạt các sự kiện sẽ xảy ra. Giả sử rằng ta sử dụng Firefox để kiểm tra xem một tin tức trên trang web yêu thích. Một loạt các sự kiện đã được thiết lập nên trong sự chuyển động này là hoàn toàn trong suốt đối. Sau khi bắt tay TCP/IP ban đầu, trình duyệt web sẽ gửi một yêu cầu đến máy chủ web server mà ta đang cần. Thông tin yêu cầu HTTP GET bây giờ cần phải gửi đến web server. Những gì xảy ra với Firefox khi kích ứng dụng là làm một yêu cầu đến hệ thống. Quá trình này sẽ đưa dữ liệu mà Firefox muốn gửi được copy từ các không gian nhớ của các ứng dụng đến bộ đệm bên trong không gian trung tâm.

– Phụ thuộc vào giao thức truyền tải nào mà ứng dụng sử dụng, lớp socket sẽ gọi cả UDP và TCP. Chúng ta cần phải nhớ rằng có rất nhiều ứng dụng không sử dụng TCP như một giao thức truyền tải. DNS sử dụng cả hai UDP và TCP, trong khi các ứng dụng khác như là TFTP chỉ sử dụng UDP. Lớp socket gọi giao thức truyền tải thích hợp, khi đó dữ liệu sẽ được copy xuống vào bộ đệm socket.

2. Sự chia nhỏ dữ liệu :

Khi copy dữ liệu từ yêu cầu GET được thực hiện đến một bộ đệm socket, TCP sẽ chia nhỏ dữ liệu này nếu cần thiết. Mặc dù một yêu cầu GET là tương ứng với một gói và sẽ đi bên trong MTU của Ethernet không có vấn đề gì, nhưng việc gì sẽ xảy ra nếu các yêu cầu của trình duyệt vượt quá MTU? Khi đó TCP sẽ chia nhỏ dữ liệu để bảo đảm kích thước phù hợp với giới hạn 1500bytes của Ethernet MTU. Một điểm chính đáng nhớ ở đây là sự chia nhỏ này sẽ xảy ra tại lớp TCP nếu ứng dụng yêu cầu sử dụng TCP như là giao thức truyền tải dữ liệu của chúng.

3. Việc truyền tải dữ liệu trong môi trường mạng :

Dữ liệu được tạo hợp với chức năng lớp truyền tải riêng của nó, hãy xem xét lớp IP. Tại đây, header IP được xây dựng và tất cả các địa chỉ IP quan trọng được gán vào. Sau đó, dự liệu sẽ theo các đường liên kết dữ liệu, nơi mà cả hai lớp điều khiển liên kết logic và điều khiển truy cập thực hiện phần việc này. Cuối cùng, dữ liệu được sẵn sàng để truyền bằng các lớp vật lý được tích hợp trong hệ thống bằng các NIC card. Với hầu hết các người dùng tại nhà, một router SoHo đã được kết hợp của cả chuyển mạch (switch) và router đơn giản. Với người dùng trong công ty, switch là một phần cứng tách biệt với router của nó. Nếu trong môi trường công ty các máy tính có thể nối với các switch qua đường cáp. Nếu switch không có bảng hard-coded CAM thì swtich cần chú ý đến địa chỉ MAC của máy tính (duy nhất cho mỗi Ethernet card). Khi gói dữ liệu đến từ quá trình truyền tải của nó mang theo dữ liệu của website như được yêu cầu trong GET request chuyển mạch theo hướng ngược của trình khách nó sẽ hiểu nơi để gửi các gói đó trở lại.

– Trình khách hiểu các gateway mặc định của nó như thế nào? Dù nó là mạng công ty hay tại nhà thì hệ thống sẽ luôn thực hiện một gói DHCP một lần để nó khởi động và lấy thông tin chính từ server DHCP. Do không phải tất cả các hệ thống đều sử dụng DHCP, vì thế không có địa chỉ IP hay gateway được định trước. Thông tin trong đó như là tên server DNS nào được sử dụng, địa chỉ IP của nó và địa chỉ IP gateway mặc định. Nếu DHCP bị tắt, người quản trị hệ thống sẽ phải vào tất cả các thông tin này bằng tay. Cực kỳ không hiệu quả chút nào, nên nó giải thích tại sao DHCP được bật trong hầu hết các mạng.

– Với gateway mặc định ở gần, máy tính hiểu đích đi đến để truy cập Internet và lấy dữ liệu trang web khi được yêu cầu bởi Firefox. Sau khi các gói đi qua switch nó hình thành đường để dễ dàng đi qua firewall đến router. Các packet nên được cho qua một firewall, khi đó firewall sẽ làm một vài công việc chính. Một firewall với đầy đủ tính năng sẽ ghi địa chỉ IP và port nguồn, cộng địa chỉ IP và port đích. Firewall sẽ giữ thông tin này trong bảng trạng thái của bộ nhớ, bằng cách này nó sẽ quy định sự truy cập vào mạng bên trong như thế nào. Nếu một gói không được ghi thì nó sẽ không được truy cập vào trong mạng. Trong một dịp khác chúng tôi sẽ giới thiệu với các bạn về vai trò của firewall đối với việc bảo vệ máy tính của bạn như thế nào.

4. Các router và NAT :

– Bây giờ, khi các gói đã đi qua firewall, nếu hiện tại nó đang đi đến router. Địa chỉ IP cá nhân mà các gói có (giả định nó là một địa chỉ cơ bản 192.168/16) sẽ được biến đổi thành một địa chỉ IP chung có thể định tuyến, cái mà được cho bởi ISP của bạn. Nó cũng được gán cho router của bạn. Các gói bây giờ bắt đầu cuộc hành trình của nó trên Internet và qua vô số các router trong chuyến đi của nó. Mỗi thời điểm đó, các gói hướng đến một router khác. Vậy cái gì xảy ra với chính các gói.

– Hãy bắt đầu bằng việc nhìn vào router. Nó sẽ định tuyến các gói dựa vào thông tin trong bảng định tuyến của chính nó. Đến khi router tiếp theo nhận được các gói này nó sẽ tính toán theo bảng định tuyến của nó để tìm ra con đường ngắn nhất cho việc truyền tải gói tin này. Một trong vài phần nó sẽ thay đổi đó là TTL “time to live”. Bây giờ phần header IP của nó được thay đổi, do đó các router cần phải tính toán một giá trị tổng mới cho các gói. Cứ tương tự như vậy cho tới khi các gói đến được địa chỉ đích mong muốn của nó.

– Lớp vật lý sẽ thực hiện một IRQ đến CPU đã chỉ rõ rằng có dữ liệu đã được xử lý. Sau đó, dữ liệu sẽ đi lên lớp data link, đây chính là nơi mà webserver sẽ nhận ra MAC và tiếp tục đi lên lớp IP, sau đó là lớp transport (nơi dữ liệu được đưa vào bộ đệm). Tại lớp này các thông tin của ứng dụng mà dữ liệu mang theo cho nó được xử lý ở đây. Kết quả cuối cùng là thông tin được yêu cầu cho yêu cầu GET đã được gửi trở lại. Tương tự như thế với một gói mới thì quá trình cũng xảy một loạt các sự kiện như vậy.

About Terri

System Administrator @Netpower Datacenter

Posted on 05.01.2009, in Basic & Networking, Technical Articles and tagged , , . Bookmark the permalink. Leave a comment.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: