Cách một gói tin được tạo ra và truyền đi trên mạng Internet, tìm hiểu cách thức hoạt động của một số giao thức thông dụng.
Tại máy tính
Tại lớp Application
Lớp Application là lớp gần nhất với người dùng, từ đây, dữ liệu, yêu cầu từ người dùng sẽ được sử dụng để tạo thành một khối Data lớn theo khuôn dạng nhất định.
Ví dụ khi nhập địa chỉ một trang web vào trình duyệt, thì một yêu cầu HTTP GET sẽ được tạo ra, dựa trên những thông tin mà người dùng nhập.
Tại lớp Transport
Tại lớp Transport, dữ liệu sẽ được chia nhỏ thành các khối dữ liệu có kích thước phù hợp, sau đó được đóng gói lại, một Header được thêm vào nhằm theo dõi luồng dữ liệu và tập hợp dữ liệu tại máy đích. Những gói tin nhỏ này gọi là các Segment.
Có rất nhiều ứng dụng, dịch vụ chạy trên mỗi host, nên để chuyển chính xác dữ liệu cho các ứng dụng dịch vụ, lớp Transport gán cho mỗi application một định danh gọi là port number. Mọi ứng dụng muốn truy cập mạng đều được gán port number, port number này là độc nhất trên host đó. Ví dụ một số port number thông dụng:
HTTP: 80
FTP: 21
DNS: 53
SMTP: 25
Tùy theo ứng dụng khác nhau, yêu cầu độ tin cậy khác nhau, lớp Transport sử dụng giao thức TCP hay UDP cho phù hợp:
TCP: là giao thức tin cậy, đảm bảo cho tất vả dữ liệu đều được chuyển tới đích đúng và đủ.
UDP: là giao thức đơn giản, không cung cấp bất kỳ sự tin cậy nào.
Tại lớp Network
Tại đây, các Segment sẽ được gắn thêm một header gọi là IP Header, bao gồm hai thông tin chính là địa chỉ Source IP và Destination IP. Các gói tin bây giờ được gọi là Datagram.
Source IP là địa chỉ IP của máy gửi, địa chỉ này có thể được đặt bởi người dùng hay cấp phát động qua giao thức DHCP. Giao thức DHCP nói một cách đơn giản là khi một máy tính được kết nối vào một mạng mà địa chỉ IP của nó chưa được đặt, DHCP Server (Cài đặt trên Router) sẽ lấy một địa chỉ IP sẵn có trong “bồn” địa chỉ IP dùng để cấp phát cho các client, cấp phát cho DHCP client (máy tính cần cấp phát địa chỉ IP). DHCP là giao thức của lớp Application.
Địa chỉ IP máy đích có thể nhập trực tiếp hay được xác định qua giao thức DNS. Nhập trực tiếp ví dụ như thay vì nhập http://google.com ta có thể nhập trực tiệp địa chỉ http://118.69.249.158/ vào trình duyệt, kết quả đều dẫn tới website tìm kiếm này. Vậy nếu ta không biết chính xác địa chỉ IP cần gửi tới, thì đầu tiên, máy tính sẽ dò tìm trong DNS cache, nơi lưu những thông tin về những địa chỉ đã truy cập, ta có thể xem thông tin DNS Cache bằng câu lệnh ipconfig /displaydns trong Command Prompt:
Nếu không tìm thấy IP tương ứng với tên miền cần tìm, một DNS Request sẽ được gửi tới DNS server để xử lý. DNS server sẽ phản hồi những thông tin cần thiết để máy tính sử dụng, những thông tin sẽ được lưu ngược lại vào DNS cache để sử dụng vào lần sau.
Tại lớp Data link và Physical
Để một gói tin có thể gửi tới đích, chúng ta cần thêm một loại địa chỉ nữa đó là địa chỉ MAC hay địa chỉ vật lý. Địa chỉ này là độc nhất cho mọi thiết bị. Một header lại được thêm vào Datagram, hai thông tin chính là Source MAC và Destination MAC. Các gói tin bây giờ được gọi là Frame.
Source MAC chính là địa chỉ MAC của máy gửi, ta có thể kiểm tra địa chỉ MAC của máy tính bằng câu lệnhgetmac trong Command Prompt.
Để xác định địa chỉ Destination MAC dựa vào Destination IP, máy tính sẽ từ động tìm kiếm trong ARP cache. Ta có thể xem thông tin ARP cache bằng cách sử dụng câu lệnh arp –a trong Command Prompt.
Nếu không tìm thấy Destination MAC tương ứng với Destination IP, máy tính sẽ sử dụng giao thức ARP. Một gói tin gọi là ARP Request đính kèm Destination IP sẽ được gửi Broadcast tới tất cả các máy trong mạng chứa máy nguồn, một số trường hợp xảy ra như sau:
Nếu Destination IP là địa chỉ IP cục bộ của mạng đó, máy tính mang địa chỉ IP này sẽ trả lời với địa chỉ MAC của nó về cho máy gửi ARP Request. Vậy Destination MAC ở đây chính là địa chỉ MAC của máy tính cùng mạng với máy gửi.
Nếu Destination IP là địa chỉ IP của mạng khác, Router chứa mạng này sẽ phát hiện ra điều đó và trả lời với địa chỉ MAC của router nên Destination MAC ở đây sẽ là địa chỉ MAC của router.
Nếu Destination IP là địa chỉ IP của mạng khác và địa chỉ Default Gateway cũng như Subnetmask đã được đặt, máy tính sẽ sử dụng thông tin này để xác định được Gateway và gửi gói tin đến đây. Destination MAC ở đây sẽ là địa chỉ của Gateway, thường sẽ là một router.
Destination MAC sau khi được xác định sẽ lưu lại vào ARP Cache cho lần sử dụng tiếp theo.
Sau khi xác định đầy đủ địa chỉ Source MAC và Destination MAC, các Frame bây giờ sẽ được đưa xuống lớp Physical, được mã hóa và chuyển đổi thành các tín hiệu vật lý thích hợp, để đưa lên đường truyền.
Khi ra khỏi máy tính
Tại Switch
Các máy tính trong cùng một mạng thường sẽ được tập hợp lại thông qua Switch. Vậy nên điểm đến tiếp theo của frame sẽ là một port Switch, tại đây, frame được đặt trong một hàng đợi, mỗi frame có mức ưu tiên khác nhau và switch dựa vào điều này để xử lý các frame quan trọng trước.
Tại đây, Switch sẽ mở gói tin ra và đọc địa chỉ Source MAC, lưu vào MAC Address table, tại đây lưu số port và địa chỉ MAC kết nối trực tiếp với port này, tiếp theo đọc Destination MAC của gói tin so sánh với bảng MAC Address table của switch và có những hành động tương ứng:
Nếu Destination MAC là địa chỉ tồn tại trong MAC address table, switch sẽ gửi gói tin qua port tương ứng.
Nếu Destination MAC là địa chỉ không tồn tại trong MAC Address table hoặc là địa chỉ Broadcast, switch sẽ gửi gói tin ra tất cả các port trừ cổng nhận vào.
Nếu Destination MAC trùng với Source MAC, frame sẽ bị drop – không gửi ra bất kỳ port nào.
Ví dụ: Bảng MAC Address Table của một Switch (Nguồn: http://www.authsecu.com)
Như vậy, nếu máy nhận nằm trong cùng một mạng với máy gửi, thì chỉ cần thông qua switch, frame đã có thể được chuyển tới đích. Trường hợp máy nhận nằm khác mạng với máy gửi. Frame sẽ được chuyển tiếp tới Router để xử lý.
Tại Router
Đầu tiên, Router sẽ gỡ bỏ header của lớp Data Link (bao gồm Source MAC và Destination MAC). Tiếp theo, Router đọc thông tin lớp Network (Bao gồm Source IP và Destination IP).
Router sử dụng Destination IP, so sánh với Routing Table. Routing Table chứa danh sách các đường đi được sử dụng để chuyển gói tin và interface đầu ra tương ứng. Các đường đi này có thể được gán tĩnh bởi người quản trị Router đấy, hoặc có thể được thêm vào qua các giao thức định tuyến như OSPF, EIGRP, RIP, IS-IS….. Các giao thức này nhằm tìm ra đường đi ngắn nhất đến mạng đích và lưu vào Routing Table.
Ví dụ bảng Routing Table của Router (Nguồn: http://www.carbonwind.net)
Nếu không tìm được đường đi nào tương ứng với địa chỉ mạng của Destination IP, hoặc trường TTL trong IP Header (sẽ giảm dần qua mỗi router, dùng để tránh trường hợp gói tin bị loop vô tận) bằng 0, gói tin sẽ bị drop và Router gửi thông báo “Destination host unreachable” ngược lại cho máy gửi.
Nếu tìm được đường đi tương ứng với địa chỉ mạng của Destination IP, Router thêm lại header chứa Source MAC – chính là địa chỉ MAC của interface tương ứng với đường đi tìm được và Destination MAC – là địa chỉ của MAC của interface Router tiếp theo. Như vậy, trong suốt quá trình gửi đi, Source IP và Destination IP luôn được giữ nguyên (trừ trường hợp sử dụng NAT, VPN) còn Source MAC và Destination MAC sẽ thay đổi mỗi khi qua Router.
Quá trình trên sẽ được lặp lại cho đến khi Router phát hiện ra Destination IP nằm chung mạng với một Interface của Router. Khi đó Router cũng sẽ sử dụng giao thức ARP để xác định địa chỉ MAC của máy đích, và dùng nó để làm Destination MAC và gửi gói tin đến máy đích.