Lập trình Windows với MFC Microsoft Visual C++ 6.0 Lê Ngọc Thạn h lntmail@yahoo.com thông tin yêu cầu không xác định được thì nó sẽ chuyển đến DNS server

Một phần của tài liệu Visual C++ lý thuyết và ứng dụng (Trang 107 - 109)

thông tin yêu cầu không xác định được thì nó sẽ chuyển đến DNS server cùng cấp khác, kết quả thực hiện được hoặc không thực hiện được đều được trả về theo lộ trình ngược lại.

13.1.7 IP Routing:

IP routing là tiến trình xử lý gửi packet đến host nhận dựa trên địa chỉ IP của host. Tiến trình này xảy ra ở host gửi thông tin theo giao thức TCP/IP và ở thiết bị định tuyến (router device) nhằm thực hiện quyết định lựa chọn vị trí mà packet sẽ được chuyển đến.

Để thực hiện quyết định trên, tầng IP tham khảo bảng định tuyến được lưu trữ trong bộ nhớ. Nội dung bảng định tuyến được khởi tạo mặc nhiên khi TCP/IP vừa được khởi động. Các mục bổ sung có thể được thực hiện bởi người quản trị hệ thống mạng (WinNT router table) hoặc thực hiện một cách tự động trong quá trình liên lạc với các bộ định tuyến.

Có hai dạng phổ biến khi gửi packet; gửi trực tiếp và gửi gián tiếp.

ƒ Gửi trực tiếp (Direct delivery): Xảy ra khi host nhận và host gửi được kết nối trực tiếp. Thông tin được đóng gói ở host gửi theo cấu trúc qui định của tầng giao tiếp mạng và được gửi đi.

ƒ Gửi gián tiếp (Indirect delivery): Xảy ra khi host nhận và host gửi được kết nối thông qua một trung gian (bộ định tuyến). Khi đó sẽ có một quá trình gửi gián tiếp từ host đến bộ định tuyến, từ bộ định tuyến trực tiếp đến host nhận (hoặc gián tiếp đến một bộ định tuyến khác).

MFC với Internet 195

à A gửi trực tiếp đến B

à A gửi gián tiếp packet đến router1 , router 1 gửi gián tiếp đến router 2, router 2 gửi trực tiếp đến C.

2 Bảng định tuyến:

Bảng định tuyến được xác lập trên tất cả các host (node, router) và được đặt bởi các giá trị mặc nhiên trong quá trình khởi động của giao thức TCP/IP. Nội dung của bảng chứa thông tin về hệ thống các địa chỉ IP trên mạng, cách kết nối với các địa chỉ ấy.

Mỗi khi một gói thông tin được gửi đi, bảng định tuyến sẽ được sử dụng để xác định:

- Địa chỉ của host nơi gửi đến: Nếu gửi trực tiếp thì đó chính là địa chỉ của host nhận packet, ngược lại, là địa chỉ của bộ định tuyến. - Giao diện sử dụng để gửi: Bao gồm thông tin về cấu trúc vật lý

và logic của thiết bị kết nối mạng ở nơi gửi và nơi nhận. Cấu trúc nội dung của một mục trong bảng định tuyến:

[ Network ID, Subnet Mask, Next Hop, Interface, Metric ] Trong đó:

- Network ID: Địa chỉ mạng tương ứng với tuyến truyền tin. - Subnet Mask: Giá trị dùng tách địa chỉ mạng từ địa chỉ IP. - Next Hop: Địa chỉ IP của host trung gian kế tiếp.

196 Lập trình Windows với MFC - Microsoft Visual C++ 6.0 - Lê Ngọc Thạnh - lntmail@yahoo.com- Interface: Thiết bị giao tiếp mạng được sử dụng. - Interface: Thiết bị giao tiếp mạng được sử dụng.

- Metric: Chi phí của tuyến truyền, làm cơ sở cho việc lựa chọn tuyến tối ưu.

Thông tin của mục trong bảng định tuyến qui định đặc điểm tuyến: - Tuyến kết nối trực tiếp với hệ thống mạng: Giá trị của Next Hop

là rỗng hoặc chứa địa chỉ IP của thiết bị giao tiếp mạng.

- Tuyến kết nối trung gian với hệ thống mạng: Giá trị của Next Hop chứa địa chỉ IP của bộ định tuyến trung gian giữa host gửi và host nhận.

- Tuyến kết nối trực tiếp với một host cụ thể: Khi đó Network ID chứa địa chỉ của host và giá trị của subnet mask là 255.255.255.255.

- Tuyến mặc nhiên: Tuyến được sử dụng khi có một tác vụ định tuyến không thành công. Giá trị của network ID là 0.0.0.0 và subnet mask là 0.0.0.0.

Network

Address Netmask Gateway Interface Address Metric Purpose 0.0.0.0 0.0.0.0 157.55.16.1 157.55.27.90 1 Default Route 127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1 Loopback Network 157.55.16.0 255.255.240.0 157.55.27.90 157.55.27.90 1 DirectyAttached Network 157.55.27.90 255.255.255.255 127.0.0.1 127.0.0.1 1 Local Host 157.55.255.255 255.255.255.255 157.55.27.90 157.55.27.90 1 Network Broadcast 224.0.0.0 224.0.0.0 157.55.27.90 157.55.27.90 1 Multicast Address 255.255.255.255 255.255.255.255 157.55.27.90 157.55.27.90 1 Limited Broadcast

( Một bảng định tuyến của Windows NT )

2 Xử lý định tuyến:

Xử lý định tuyến là xử lý thực hiện lựa chọn mục định tuyến trong bảng định tuyến và dùng nó cho việc gửi thông tin. Việc lựa chọn này được thực hiện thông qua các bước sau:

- Trên mỗi mục định tuyến, thực hiện phép toán AND giữa địa chỉ host nhận và giá trị subnet mask. Kiểm tra kết quả này với Network ID để đánh giá độ phù hợp (độ tương tự).

- Chọn ra các mục định tuyến có mức độ phù hợp cao nhất. Trong các mục định tuyến này, chọn ra các mục có chi phí tuyến truyền nhỏ nhất. Cuối cùng, từ các mục định tuyến chọn được, mục định tuyến được sử dụng là mục còn rỗi. (adsbygoogle = window.adsbygoogle || []).push({});

MFC với Internet 197

Host gửi: Packet được gửi từ giao thức ở tầng cấp cao hơn của IP (TCP, UDP, ...). Khi đó vai trò IP ở host gửi như sau:

- Đặt giá trị cho trường TTL (Times-To-Live) theo giá trị qui định của ứng dụng tầng cấp cao hoặc lấy giá trị mặc nhiên của hệ thống. - Xác định tuyến tối ưu cho packet truyền đi.

- Nếu không xác định được tuyến truyền thì thông báo lỗi đến tầng truyền thông ở cấp cao hơn. Ngược lại, thực hiện truyền theo tuyến. Host định tuyến: Vai trò của IP như sau:

- Kiểm tra checksum của packet. Nếu sai thì hủy packet.

- Kiểm tra địa chỉ IP của host nhận trên packet. Nếu địa chỉ này là địa chỉ một bộ định tuyến thì nội dung packet (trừ phần nội dung IP header) được chuyển cho giao thức tầng cấp cao tương ứng. Ngược lại, giảm giá trị trường TTL đi 1; nếu giá trị trường này bằng 0 thì hủy bỏ packet và gửi thông điệp "ICMP Time Expired-TTL Expired" cho host gửi, ngược lại xác định tuyến gửi và gửi packet. Host nhận: Vai trò của IP như sau:

- Kiểm tra checksum của packet. Nếu sai thì hủy packet.

- Nếu địa chỉ host nhận ghi trên packet không phải là địa chỉ của host đang xử lý thì hủy packet.

- Gửi nội dung packet (trừ IP header) lên giao thức tầng cao hơn. 13.2 LẬP TRÌNH TCP/IP VỚI WINSOCK:

Winsock (Windows Socket) có xuất xứ từ BSD (Berkeley Software Distribution - UNIX), tương thích với windows qua phiên bản WinSock1.1. Winsock là một giao diện với các dịch vụ xây dựng trên giao thức truyền thông TCP và UDP. Thông qua winsock, ứng dụng có thể triển khai dễ dàng các tác vụ truyền thông trên tầng truyền thông của mô hình mạng.

13.2.1 Port:

Port là khái niệm được diễn tả bằng một giá trị số (số hiệu port) giúp phân biệt các tiến trình trên cùng một host đồng sử dụng giao thức TCP/IP. Các ứng dụng khác nhau sử dụng TCP/IP có thể thực hiện được cùng một lúc trên một host với điều kiện chúng phải sử dụng các số hiệu port khác nhau. 13.2.2 Socket:

Một phần của tài liệu Visual C++ lý thuyết và ứng dụng (Trang 107 - 109)