Đề tài Tìm hiểu bộ giao thức TCP/IP

Tài liệu Đề tài Tìm hiểu bộ giao thức TCP/IP: Lời giới thiệu Mặc dù rất nhiều giao thức được đưa ra nhằm áp dụng cho internet, nhưng chỉ một bộ giao thức nổi bật được sử dụng rộng rãi nhất cho liên mạng. Bộ giao thức đó là bộ giao thức internet TCP/IP (the TCP/IP Internet Protocols); nhiều chuyên gia gọi nó đơn giản là TCP/IP. TCP/IP là bộ giao thức đầu tiên được phát triển để sử dụng cho internet.TCP/IP bắt đầu được nghiên cứu vào những năm 1970, xấp xỉ thời gian với mạng cục bộ được phát triển. Quân đội Mỹ đã đầu tư rất nhiều công sức vào việc nghiên cứu bộ giao thức TCP/IP và liên mạng thông qua tổ chức ARPA. Quân đội Mỹ là một trong những tổ chức đầu tiên mà có rất nhiều mạng khác nhau. Do đó họ cũng là những tổ chức đầu tiên nhận ra nhu cầu cần thiết có dịch vụ toàn mạng. Vào giữa những năm 1980, tổ chức khoa học quốc gia và một vài cơ quan chính phủ của Mỹ đã tiếp tục nghiên cứu phát triển giao thức TCP/IP và liên mạng diện rộng nhằm thử ngiệm bộ giao thức naỳ. Việc nghiên cứu trên internet và giao thức TCP/IP đã đạt đượ...

doc45 trang | Chia sẻ: hunglv | Lượt xem: 1667 | Lượt tải: 2download
Bạn đang xem trước 20 trang mẫu tài liệu Đề tài Tìm hiểu bộ giao thức TCP/IP, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Lời giới thiệu Mặc dù rất nhiều giao thức được đưa ra nhằm áp dụng cho internet, nhưng chỉ một bộ giao thức nổi bật được sử dụng rộng rãi nhất cho liên mạng. Bộ giao thức đó là bộ giao thức internet TCP/IP (the TCP/IP Internet Protocols); nhiều chuyên gia gọi nó đơn giản là TCP/IP. TCP/IP là bộ giao thức đầu tiên được phát triển để sử dụng cho internet.TCP/IP bắt đầu được nghiên cứu vào những năm 1970, xấp xỉ thời gian với mạng cục bộ được phát triển. Quân đội Mỹ đã đầu tư rất nhiều công sức vào việc nghiên cứu bộ giao thức TCP/IP và liên mạng thông qua tổ chức ARPA. Quân đội Mỹ là một trong những tổ chức đầu tiên mà có rất nhiều mạng khác nhau. Do đó họ cũng là những tổ chức đầu tiên nhận ra nhu cầu cần thiết có dịch vụ toàn mạng. Vào giữa những năm 1980, tổ chức khoa học quốc gia và một vài cơ quan chính phủ của Mỹ đã tiếp tục nghiên cứu phát triển giao thức TCP/IP và liên mạng diện rộng nhằm thử ngiệm bộ giao thức naỳ. Việc nghiên cứu trên internet và giao thức TCP/IP đã đạt được những kết quả đáng kể. Liên mạng đã trở thành một ý tưởng quan trọng trong hệ thống mạng hiện đại. Thực tế, công nghệ mạng đã tạo ra một cuộc cách mạng trong truyền thông máy tính. Nhiều tổ chức lớn đã sử dụng internet như là một hệ thống truyền thông máy tính cơ bản của họ. Các tổ chức nhỏ hơn và các cá nhân cũng đã bắt đầu tiến hành như vậy. Hơn nữa, cùng với việc liên kết các internet riêng, công nghệ TCP/IP đã tạo ra một mạng Internet toàn cầu có tới hơn 5 triệu máy tính trong các trường học, tổ chức thương mại và các tổ chức quân đội, chính phủ ở khắp nơi trên hơn 82 nước trên toàn thể giới. Thực tế đã chứng minh bộ giao thức TCP/IP có ý nghĩa cực kì quan trọng và có ứng dụng lớn trong thời đại ngày nay_thời đại của internet .Do hạn chế về mặt thời gian nên trong phần tiểu luận viết về giao thức TCP/IP này em chỉ trình bày một số vấn đề khái quát về giao thức TCP/IP. Phần I Sơ lược về giao thức TCP/IP I. Các lớp và giao thức TCP/IP Mô hình tham chiếu 7 lớp OSI đã được phát minh trước khi có internet. Do vậu mô hình này đã có những lớp không phù hợp với giao thức internet. Hơn nữa, mô hình này đã dành toàn bộ một lớp cho một bộ giao thức mà điểu này trở nên kém quan trọng bằng hệ thống máy tính đã thay đổi từ các hệ thống phân chi thời gian lớn thành các máy trạm riêng. Do vậy các nhà nghiên cứu mà phát triển giao thức TCP/IP đã phát minh ra mô hình lớp mới. Mô hình phân lớp TCP/IP hay còn gọi là mô hình phân lớp Internet hay mô hình tham chiếu Internet (Internet Reference Model) có 5 lớp như trên hình sau ứng dụng Lớp 5 Lớp 4 Lớp 3 Lớp 2 Lớp 1 Truyền tải Liên mạng Nối ghép mạng Vật lý Hình1.Năm lớp của mô hình tham chiếu TCP/IP Hình 2. Mô hình giao thức TCP/IP và so sánh với OSI 4 lớp của mô hình tham chiếu TCP/IP tương ứng với một hoặc nhiều lớp trong mô hình tham chiếu OSI. Lớp 1: vật lý Lớp 1 tương ứng với phần cứng mạng cơ bản giống như lớp 1 của mô hình tham chiếu 7 lớp OSI. Lớp 2: Nối ghép mạng Lớp 2 chỉ ra cách thức dữ liệu được tổ chức trong frame và máy tính truyền đi các frame như thế nào, tương tự như lớp 2 trong mô hình tham chiếu OSI. Lớp 3: Internet Lớp 3 chỉ ra định dạng các gói tin được truyền qua internet và cơ chế sử dụng để truyền tiếp các gói tin từ một máy tính thông qua một hoặc nhiều router đến máy tính đích. Lớp 4: truyền tải Lớp 4 giống như lớp 4 trong mô hình OSI, chỉ ra làm thế nào để đảm bảo độ tin cậy khi truyền tin. Lớp 5: ứng dụng Lớp 5 tương ứng với lớp 6 và lớp 7 trong mô hình OSI. Mỗi giao thức lớp 5 chỉ ra một ứng dụng sử dụng internet như thế nào. II. Máy chủ, router và các lớp giao thức TCP/IP định nghĩa ra thuật ngữ máy chủ (host computer) để chỉ bất kỳ hệ thống máy tính nào mà được nối với internet và có chạy các ứng dụng. Host computer có thể chỉ là một máy tính cá nhân nhỏ nhưng cũng có thể là máy mainframe lớn. Hơn nữa, CPU của máy chủ có thể là nhanh hay chậm, bộ nhớ lớn hay bé và mạng mà có máy chủ nối kết có thể có tốc độ nhanh hay chậm. Giao thức TCP/IP cho phép bất kỳ một cặp máy chủ nào cũng có thể giao tiếp với nhau bất chấp sự khác nhau về phần cứng. Cả máy chủ và router đều cần đến phần mềm giao thức TCP/IP. Tuy nhiên, router không sử dụng giao thức trong tất cả các lớp. Đặc biệt router không cần giao thức lớp 5 cho các ứng dụng như là việc truyền file bởi vì router không chạy các ứng dụng đó. Phần II Địa chỉ IP I. IP_ Địa chỉ giao thức internet Mục đích của liên mạng là tạo ra một hệ thống truyền thông đồng nhất. Để đạt được điều này, phần mềm giao thức internet phải ẩn đi mọi chi tiết về các mạng vật lý và đưa ra những đặc điểm thuận lợi của một mạng ảo. Sự hoạt động của mạng ảo giống như bất kỳ mạng nào khác, cho phép các máy tính truyền và nhận các gói tin. Sự khác biệt cơ bản giữa internet và một mạng vật lý đó là internet chỉ là một mạng hoàn toàn trừu tượng được hình dung ra bởi người thiết kế nó và được tạo ra bằng phần mềm. Những người thiết kế tự do lựa chọn địa chỉ, định dạng gói tin, và kỹ thuật truyền tin độc lập với phần cứng vật lý cụ thể. Địa chỉ là một thành phần khó nhất của mạng internet. Để tạo ra được một hệ thống đồng bộ, tất cả các máy tính phải có một cơ chế đánh địa chỉ đồng bộ. Nhưng các địa chỉ vật lý của mạng không thể dùng được bởi một mạng internet có thể gồm nhiều công nghệ mạng khác nhau và mỗi công nghệ có một định dạng địa chỉ của riêng nó. Do vậy, các địa chỉ của hai công nghệ mạng khác nhau có thể không tương thích với nhau bởi vì chúng khác nhau về kích thước và định dạng. Để đảm bảo sự đồng bộ về địa chỉ trên tất cả các host, phần mềm giao thức định nghĩa một cơ chế đánh địa chỉ mà hoàn toàn độc lập với địa chỉ phần cứng. Mặc dù cơ chế đánh địa chỉ cho internet là trừu tượng tạo ra bởi phần mềm, nhưng các địa chỉ giao thức sử dụng đối với các đến các đích trong mạng ảo cũng giống như là cách mà địa chỉ phần cứng sử dụng trong mạng vật lý. Để truyền gói tin qua mạng internet, máy gửi để địa chỉ giao thức của máy đích trong gói tin và truyền gói tin đó đến phần mềm giao thức để truyền đi. Phần mềm sẽ sử dụng địa chỉ giao thức đích kho nó chuyển tiếp các gói tin này qua mạng internet đến máy tính đích. Để tạo ra một địa chỉ đồng bộ trong mạng internet, phần mềm giao thức định nghĩa ra một cơ chế đánh địa chỉ trừu tượng mà mỗi host được thiết lập một địa chỉ duy nhất. Người sử dụng , các chương trình ứng dụng và các lớp phần mềm giao thức cao hơn sử dụng địa chỉ trừu tượng này để giao tiếp với nhau. II. Cơ chế đánh địa chỉ IP Trong stack giao thức TCP/IP, địa chỉ được quy định bởi giao thức liên mạng (IP - internet protocol). Chuẩn IP quy định mỗi host được thiết lập một số 32 bit duy nhất gọi là địa chỉ giao thức liên mạng của host, hay thường được viết tắt là địa chỉ IP hoặc địa chỉ internet. Mỗi gói tin gửi qua mạng đều có chứa địa chỉ IP 32 bit của máy gửi và địa chỉ của máy nhận. Do vậy, để truyền thông tin qua mạng TCP/IP, một máy tính cần biết địa chỉ IP của máy tính cần truyền đến. 1. Phân cấp địa chỉ IP Mỗi địa chỉ IP 32 bit được chia thành hai phần: phần đầu và phần cuối; phân cấp làm hai mức để dễ dàng cho việc định tuyến. Phần đầu địa chỉ xác định mạng vật lý mà máy tính nối vào, còn phần sau xác định địa chỉ của từng máy tính nối trong mạng đó. Do vậy, mỗi mạng vật lý trong liên mạng được thiết lập một giá trị duy nhất gọi là số của mạng (network number). Số của mạng xuất hiện trong phần đầu của địa chỉ của mỗi máy tính nối mạng đó. Hơn nữa, mỗi máy tính trong mạng vật lý cụ thể cũng được thiết lập một giá trị duy nhất là phần sau của địa chỉ. Mặc dù không có hai mạng nào có thể cùng có một giá trị network number và không có hai máy tính nào trong cùng một mạng có cùng giá trị phần sau, nhưng một giá trị phần sau có thể sử dụng trong một hoặc nhiều mạng khác nhau. Ví dụ, nếu liên mạng gồn có 3 mạng, chúng có thể đánh số các mạng là 1, 2 và 3. Ba máy tính nối với mạng 1 có thể có giá trị phần sau là 1, 3 và 5, trong khi 3 máy tính nối mạng 2 có thể thiết lập giá trị phần sau là 1, 2 và 3. Sự phần cấp địa chỉ IP phải đảm bảo hai tính chất quan trọng sau: Mỗi máy tính có một giá trị địa chỉ duy nhất. Mặc dù việc thiết lập giá trị network number phải được phối hợp trên toàn mạng, nhưng phần sau của địa chỉ có thể thiết lập một cách cục bộ. Tính chất thứ nhất luôn được đảm bảo bởi vì một địa chỉ đầy đủ có cả phần đầu và phần sau, và chúng được thiết lập đảm bảo tính duy nhất. Nếu hai máy tính nối với hai mạng vật lý khác nhau, địa chỉ của chúng sẽ khác nhau ở phần đầu. Nếu hai máy tính nối với cùng một mạng vật lý thì địa chỉ của chúng khác nhau ở phần sau. 2. Các lớp của địa chỉ IP Mỗi khi lựa chọn việc thiết kế địa chỉ IP và việc phân chia địa chỉ thành hai phần, các nhà thiết kế phải quyết định bao nhiêu bit dành cho mỗi phần. Phần đầu cần sô bit đủ để tạo ra số mạng là duy nhất để có thể thiết lập cho mỗi mạng vật lý thuộc liên mạng. Phần sau cần số bit đủ để đảm bảo mỗi máy tính nối với cùng một mạng vật lý cũng có giá trị phần sau là duy nhất. Không phải dễ dàng để đưa ra sự chọn lựa bởi vì thêm một bit vào phần này đồng nghĩa với việc giảm một bit của phần kia. Việc chọn lựa phần đầu lớn thích hợp cho nhiều mạng nhưng điều đó lại giới hạn kích thước của mỗi mạng; nếu chọn phần sau lớn thì mỗi mạng vật lý có thể chứa nhiều máy tính nhưng lại bị giới hạn về tổng số mạng. Bởi vì một liên mạng có thẻ có các công nghệ mạng bât kỳ nên một liên mạng có thể có một số ít các mạng lớn trong khi một liên mạng khác lại có thể có nhiều mạng nhỏ. Quan trọng hơn, một liên mạng có thể là sự kết hợp của cả mạng lớn và mạng nhỏ. Kết quả là người thiết kế phải chọn lựa cơ chế đánh địa chỉ sao cho thoả mãn được sự thích hợp với cả mạng lớn và mạng nhỏ. Cơ chế chia địa chỉ IP thành 3 lớp cơ bản, trong đó mỗi lớp có kích thước các phần khác nhau. Bốn bit đầu của mỗi địa chỉ quyết định địa chỉ đó thuộc lớp nào, và chỉ ra phần còn lại của địa chỉ được chia thành các phần như thế nào. Hình dưới đây minh hoạ 5 lớp địa chỉ, các bit đầu để xác định các lớp và sự phân chia của phần đầu và phần sau. Các con số quy ước việc sử dụng số bit của giao thức TCP/IP từ trái qua phải và số 0 là bit đầu tiên. 01234 8 16 24 31 bits Class A suffix prefix 0 prefix suffix 0 Class B 1 suffix prefix 0 1 1 Class C Multicast address 1 0 1 1 Class D 1 1 1 Class E Reserved for future use 1 5 lớp của địa chỉ IP trong đó địa chỉ để thiết lập cho các máy là thuộc lớp A,B hoặc C. Lớp A, B và C gọi là các lớp cơ bản bởi vì chúng sử dụng cho địa chỉ của các host. Lớp D sử dụng cho multicast để dùng cho một tập các máy tính. Để sử dụng địa chỉ multicast, một tập các máy trạm phải thoả thuận dùng chung một địa chỉ multicast. Mỗi khi một nhóm multicast được thiết lập, một bản sao của bất kỳ gói tin nào chuyên đến địa chỉ multicast đều được chuyển đến tất cả các máy trạm thuộc nhóm multicast. Như trên hình vẽ ta thấy, các lớp cơ bản sử dụng đơn vị byte để phân chia địa chỉ thành phần đầu và phần sau. Lớp A xác định ranh giới giữa byte đầu tiên và byte thứ hai. Lớp B xác định ranh giới giữa byte thứ hai và byte thứ ba, và lớp C ranh giới giữa byte thứ 3 và thứ 4. 3. Tính toán các lớp của một địa chỉ Phần mềm IP tính lớp của địa chỉ đích mỗi khi nó nhận được một gói tin. Vì sự tính toán này được lặp lại thường xuyên, nên nó phải hết sức hiệu quả. Địa chỉ Ip gọi là địa chỉ tự nhận dạng bởi vì lớp của địa chỉ có thể tính được từ bản thân địa chỉ đó. Một phần nguyên nhân của việc sử dụng các bit đầu để biểu thị từng lớp địa chỉ thay vì sử dụng khoảng giá trị xuất phát từ việc nghiên cứu sự tính toán: sử dụng các bit có thể làm giảm thời gian tính toán. Đặc biệt, một vài máy tính có thể kiểm tra các bit nhanh hơn việc so sánh giữa các số nguyên. Ví dụ, trên máy tính có các lệnh logic and và shift và tìm chỉ số, 4 bit đầu có thể được lấy ra và sử dụng một bảng chỉ số để xác định lớp của địa chỉ. Hình sau minh hoạ nội dung của bảng sử dụng để tính toán. 4 bit đầu của địa chỉ Chỉ số (hệ thập phân) Lớp địa chỉ 0000 0 A 0001 1 A 0010 2 A 0011 3 A 0100 4 A 0101 5 A 0110 6 A 0111 7 A 1000 8 B 1001 9 B 1010 10 B 1011 11 B 1100 12 C 1101 13 C 1110 14 D 1111 15 E Hình 3.Bảng có thể sử dụng để tính các lớp địa chỉ. 4 bit đầu tiên của địa chỉ được lấy ra để sử dụng như là chỉ số trong bảng. Như trên bảng ta thấy, 8 tổ hợp bắt đầu bằng số 0 thuộc lớp A. 4 tổ hợp bắt đầu bằng 10 thuộc lớp B, và 2 tổ hợp bắt đầu bằng 110 thuộc lớp C. Một địa chỉ bắt đầu bằng 111 thuộc lớp D và cuối cùng một địa chỉ bắt đầu bằng 1111 thuộc lớp E là lớp để dự phòng chưa sử dụng đến. Ký hiệu thập phân bằng chấm Mặc dù các địa chỉ IP là số 32 bit, người sử dụng hiếm khi đọc hoặc nhập giá trị vào ở dạng nhị phân. thay vào đó, khi giao tiếp với người sử dụng, phần mềm sử dụng dạng địa chỉ khác thuận tiện hơn. Gọi là dạng ký hiệu thập phân bằng chấm (dotted decimal notation), dạng này gom 8 bit của số 32 bit thành các giá trị thập phân và dùng dấu chấm để phân chia thành các phần. Hình sau minh hoạ ví dụ số nhị phân và và các dạng thập phân chấm tương đương. Số nhị phân 32 bit Thập phân chấm tương đương 10000001 00110100 00000110 00000000 129.52.6.0 11000000 00000101 00110000 00000011 192.5.48.3 00001010 00000010 00000000 00100101 10.2.0.37 10000000 00001010 00000010 00000011 128.10.2.3 10000000 10000000 11111111 00000000 128.128.255.0 Hình 4. ví dụ về số 32 bit nhị phân và dạng thập phân chấm tương đương. Mỗi byte được viết thành số thập phân và dùng dấu chấm để phân tách các byte. Thập phân chấm coi mỗi byte là một số nguyên nhị phân không dấu. Như trong ví dụ cuối cùng, giá trị nhỏ nhất có thể là 0 xuất hiện khi toàn bộ các bit là 0 và giá trị lớn nhất có thể là 255 khi toàn bộ các bit là 1. Do vậy, địa chỉ thập phân chấm chỉ nằm trong khoảng từ 0.0.0.0 đến 255.255.255.255 4. Các lớp và các ký hiệu thập phân bằng chấm Dạng thập phân chấm có thể làm việc tốt với các địa chỉ IP bởi vì nó phân chia các phần của địa chỉ theo các byte. Trong lớp A, 3 byte cuối tương ứng với địa chỉ phần sau của máy trạm. tương tự như vậy, địa chỉ lớp B có 2 byte cho địa phần sau của máy trạm và lớp C có 1 byte. Nhưng không may là việc dùng dạng thập phân chấm không chia thành từng bit để cót hể thấy rõ các lớp địa chỉ, các lớp phải nhận biết từ giá trị thập phân của địa chỉ. Hình sau chỉ ra khoảng giá trị thập phân cho mỗi lớp. Lớp Khoảng giá trị A 0 đến 127 B 127 đến 191 C 192 đến 223 D 224 đến 239 E 240 đến 255 Hình 5. khoảng giá trị thập phân thuộc byte đầu tiên của mỗi lớp địa chỉ Sự phân chia các khoảng địa chỉ Cơ chế lớp địa chỉ IP không chia địa chỉ 32 bit thành các khoảng bằng nhau giữa các lớp, và các lớp không có chứa cùng một số mạng. Ví dụ, hơn một nửa số địa chỉ IP (những địa chỉ mà có bit đầu bằng 0) thuộc lớp A. Lớp A chỉ có thể chứa 128 mạng bởi vì bit đầu của địa chỉ lớp A là 0 và phần đầu của địa chỉ này là 1 byte. Do vậy chỉ có 7 bit còn lại là sử dụng để đánh số các mạng. Hình sau tóm tắt số các mạng lớn nhất có thể trong mỗi lớp và số máy trạm lớn nhất trên mỗi mạng. Lớp địa chỉ Số bit thuộc phần đầu Số mạng lớn nhất Số bit phần sau Số máy trạm lớn nhất mỗi mạng A 7 128 24 16777216 B 14 16384 16 65536 C 21 2097152 8 256 Hình 6: số mạng lớn nhất và máy trạm trên mỗi mạng với 3 lớp địa chỉ IP Như trên bảng ta thấy, số bit cho mỗi phần đầu và phần cuối của mỗi lớp địa chỉ quyết định các số giá trị duy nhất có thể có để thiết lập. Ví dụ, phần đầu của n bit cho phép có 2n số mạng duy nhất, trong khi phần cuối có n bit sẽ có 2n số máy trạm cho mỗi mạng. 5. Nơi quản lý các địa chỉ Trên toàn bộ mạng, mỗi mạng phải có giá trị địa chỉ duy nhất. Đối với các mạng kết nối Internet toàn cầu, một tổ chức có thể lấy số các mạng từ các công ty cung cấp dịch vụ kết nối Internet. Các công ty đó gọi là nhà cung cấp dịch vụ Internet (Internet Service Provider - ISP). Các nhà cung cấp dịch vụ Internet phối hợp với tổ chức trung tâm là nơi quản lý đánh số điạ chỉ Internet (internet Assigned Number Authority), để đảm bảo số cấp cho mỗi mạng là duy nhất trên toàn mạng. Với liên mạng riêng biệt, việc chọn số cho mỗi mạng có thể được quyết định bởi tổ chức ấy. Để đảm bảo rằng mỗi phần đầu của địa chỉ là duy nhất, một nhóm xây dựng liên mạng quyết định việc phối hợp thiết lập các giá trị. Thông thường, người quản trị mạng thiết lập phần đầu địa chỉ cho tất cả các mạng trong liên mạng của công ty đó để đảm bảo các giá trị đó không bị trùng nhau. III. Ví dụ về một cách đánh địa chỉ Một ví dụ sẽ làm sáng tỏ ý tưởng và giải thích việc thiết lập các địa chỉ trong thực tế. Hãy xem xét một tổ chức chọn lựa để xây dựng liên mạng TCP/IP gồm có 4 mạng vật lý. Tổ chức này phải mua các router để nối kết 4 mạng đó, và sau đó phải thiết lập địa chỉ IP. Để bắt đầu, tổ chức sẽ chọn lựa một giá trị duy nhất cho mỗi mạng để làm phần đầu địa chỉ. Khi đã thiết lập giá trị cho phần đầu của địa chỉ, các giá trị số sẽ được chọn lựa theo lớp A, B và C tuỳ vào kích thước của mạng vật lý. Thông thường các mạng thiết lập địa chỉ thuộc lớp C trừ phi lớp B thực sự cần thiết còn lớp A thì hiếm khi được lựa chọn bởi rất ít mạng có thể chứa tới 65536 máy trạm. Đối với mạng kết nối Internet toàn cầu, nhà cung cấp dịch vụ sẽ thực hiện việc chọn lựa. Đối với các liên mạng lẻ, người quản trị mạng sẽ lựa chọn lớp địa chỉ. Hãy để ý ví dụ về liên mạng riêng lẻ đã nói ở trên. người quản trị mạng sẽ ước tính kích thước của các mạng vật lý và dùng các kích thước đó để chọn lựa phần đầu. Nếu tổ chức đó mong muốn một mạng nhỏ, hai mạng kích thước trung bình và một mạng lớn, người quản trị mạng có thể thiết lập phần đầu địa chỉ thuộc lớp C (192.5.48), hai mạng có phần đầu địa chỉ thuộc lớp B (ví dụ 128.10 và 128.211), và một mạng địa chỉ phần đầu thuộc lớp A(ví dụ 10). Hình 7 minh hoạ một liên mạng với 4 mạng vật lý đã được thiết lập phần đầu của địa chỉ, và ví dụ về địa chỉ IP thiết lập cho máy trạm. Prefix 128.10 Prefix 128.211 128.10.0.1 128.10.0.2 128.211.28.4 128.211.6.115 Prefix 10 Prefix192.5.48 192.5.48.85 192.5.48.3 10.0.0.49 10.0.0.37 Hình 7 : ví dụ về liên mạng riêng lẻ với các địa chỉ IP thiết lập cho các máy trạm. Kích thước của các đám mấy biểu thị cho các mạng vật lý tương ứng với số máy trạm nối kết vào mỗi mạng; kích thước của mỗi mạng quyết định lớp địa chỉ thiết lập. Như trên hình vẽ ta thấy, địa chỉ IP thiết lập cho các máy trạm luôn bắt đầu với phần đầu là giá trị mà đã thiết lập cho mạng vật lý của máy trạm đó. Phần sau của địa chỉ được thiết lập bởi người quản trị mạng cục bộ có thể lấy giá trị bất kỳ. Trong ví dụ, hai máy trạm nối với mạng có giá trị đầu 129.10 có giá trị phần sau là 1 và 2. Mặc dù nhiều quản trị mạng chọn giá trị phần sau theo thứ tự, nhưng địa chỉ IP không bắt buộc phải làm như vậy. Sự thiết lập địa chỉ trong ví dụ chỉ ra rằng có thể lấy giá trị phần sau tuỳ ý như là 37 hoặc 85. IV .Địa chỉ IP đặc biệt Cùng với việc thiết lập địa chỉ cho mỗi máy trạm, việc có một số địa chỉ có thể sử dụng để biểu diễn các mạng hoặc một tập các máy tính cũng khá là thuận tiện. IP đưa ra một tập các địa chỉ đặc biệt tạo ra để dự trữ. Đó là, địa chỉ đặc biệt mà không bao giờ được đặt cho máy trạm. Trong phần này chúng ta sẽ xem xét cả về cú pháp và ý nghĩa của các địa chỉ đặc biêt này. 1. Địa chỉ mạng Một trong những nguyên nhân đưa ra các dạng địa chỉ đặc biệt có thể nhận thấy qua hình sau – sẽ rất thuận tiện khi có một địa chỉ có thể sử dụng địa chỉ phần đầu để biểu diễn địa chỉ cho một mạng cụ thể. IP đưa ra địa chỉ máy trạm là 0 và sử dụng nó để biểu diễn một mạng. Do đó, địa chỉ 128.211.0,0 biểu diễn mạng mà đã thiết lập địa chỉ lớp B với phần đầu địa chỉ là 128.211. Địa chỉ mạng dùng để chỉ đến bản thân mạng đó mà không phải là máy trạm nào nối với mạng đó. Do vậy, địa chỉ mạng không bao giờ nên xuất hiện là địa chỉ đích trong gói tin. 2. Địa chỉ quảng bá trực tiếp Đôi khi, rất thuận tiện khi có thể gửi một gói tin đến tất cả các máy trạm thuộc cùng một mạng vật lý. Để làm cho việc truyền toàn mạng dễ dàng, IP định nghĩa ra một địa chỉ quảng bá trực tiếp (directed broadcast address) cho mỗi mạng vật lý. Khi một gói tin được gửi đến địa chỉ quảng bá trực tiếp, một gói tin sẽ được truyền qua liên mạng đến khi nó đến được mạng cần thiết. Gói tin sau đó sẽ được truyền đến tất cả các máy trạm thuộc mạng đó. Địa chỉ quảng bá trực tiếp có dạng phần đầu là địa chỉ của mạng và phần sau gồm toàn số 1. Để đảm bảo mỗi mạng có thể trực tiếp thực hiện việc quảng bá, IP dự trữ địa chỉ máy trạm có chứa toàn bit 1. Người quản trị mạng phải không được thiết lập địa chỉ máy trạm gồm toàn 0 hoặc 1 hoặc phần mềm có thể bị hỏng. Nếu phần cứng mạng hỗ trợ quảng bá, việc quảng bá trực tiếp sẽ được thực hiện nhờ phần cứng. Trong trường hợp đó, sự truyền tin của một gói tin sẽ tới tất cả các máy tính trong mạng. Khi việc quảng bá trực tiếp không được thực hiện bởi phần cứng trong mạng, phần mềm phải thực hiện việc truyền từng bản sao của gói tin đó đến từng máy trạm trên mạng. 3. Địa chỉ quảng bá giới hạn Thuật ngữ quảng bá giới hạn để chỉ việc quảng bá chỉ thực hiện trong một mạng vật lý; thông tục chúng ta có thể gọi đó là quảng bá giới hạn với đường dây đơn (single wire). Quảng bá giới hạn được thực hiện trong quá trình khởi động của máy tính khi nó chưa biết giá trị số của mạng. IP dự trữ địa chỉ gồm toàn các bit 1 để quy định quảng bá giới hạn. Do vậy, IP sẽ thực hiện gửi bất kỳ gói tin nào mà có địa chỉ gồm toàn bit 1 trên toàn mạng cục bộ. 4. Địa chỉ của máy tính này Một máy tính cần biết địa chỉ IP của nó để gửi hoặc nhận các gói tin truyền đi liên mạng bởi mỗi gói tin cần có địa chỉ nguồn và đích. Bộ giao thức TCP/IP có các giao thức cho phép máy tính có thể xác định được địa chỉ IP của nó khi máy tính được khởi động. Thật là thú vị vì các giao thức khởi động sử dụng IP để kết nối. Khi dùng các giao thức khởi động đó, máy tính không thể cung cấp địa chỉ IP nguồn chính xác. Để thực hiện được điều này, IP dự trữ một địa chỉ gồm toàn các số 0 để chỉ địa chỉ của máy tính này. 5. Địa chỉ lặp quay lại IP định nghĩa một địa chỉ lặp quay lại được sử dụng để kiểm tra các ứng dụng của mạng. những người lập trình thường sử dụng kiểm tra lặp quay lại cho việc tìm lỗi ban đầu với các ứng dụng mạng vừa được viết. Để thực hiện kiểm tra lặp quay lại, người lập trình cần có hai ứng dụng mà định giao tiếp với nhau qua mạng. Mỗi ứng dụng cần có phần mã lệnh thực hiện việc tương tác với phần mềm giao thức TCP/IP. Thay vì việc phải thực hiện từng chương trình trên các máy khác nhau, người lập trình có thể chạy cả hai chương trình trên một máy tính và chỉ dẫn chúng thực hiện địa chỉ IP lặp quay lại khi kết nối. Khi một ứng dụng gửi dữ liệu đến một ứng dụng khác, dữ liệu truyền qua các ngăn xếp giao thức để đến chương trình kia. Do vậy, người lập trình có thể kiểm tra chương trình ứng dụng của mình một cách nhanh chóng không cần chạy trên hai máy tính và không cần truyền các gói tin qua mạng. IP dự trữ lớp A với phần đầu địa chỉ mạng là 127 cho sử dụng với lặp quay lại. Địa chỉ của máy trạm sử dụng với 127 là không xác định – tất cả các địa chỉ máy trạm là như nhau. Theo quy ước người lập trình thường sử dụng địa chỉ máy trạm là 1 có dạng 127.0.0.1 là phổ biến nhất cho lặp quay lại. Trong suốt quá trình kiểm tra lặp quay lại không có một gói tin nào ra khỏi máy tính – phần mềm IP chỉ truyền gói tin từ ứng dụng này sang ứng dụng kia. Kết quả, địa chỉ lặp quay lại không bao giờ xuất hiện trong gói tin truyền qua mạng. Tóm tắt các địa chỉ IP đặc biệt Bảng sau tóm tắt các dạng địa chỉ đặc biệt. Prefix Suffix Kiểu địa chỉ Mục đích Toàn số 0 Toàn số 0 Cho máy tính này Sử dụng khi khởi động Giá trị mạng Toàn số 0 Mạng Xác định một mạng Giá trị mạng Toàn số 1 Quảng bá trực tiếp Quảng bá trên một mạng xác định Toàn số 1 Toàn số 1 Quảng bá giới hạn Quảng bá trên một mạng cục bộ 127 Bât kỳ Lặp quay lại Kiểm tra Bảng tóm tắt các dạng địa chỉ đặc biệt. Chúng ta đã nói rằng địa chỉ đặc biệt là để dự trữ và không bao giờ dùng để thiết lập cho máy trạm. Hơn nữa, mỗi địa chỉ đặc biệt này bị giới hạn trong một sử dụng. Ví dụ, địa chỉ quảng bá không bao giờ được xuất hiện trong địa chỉ nguồn của gói tin và địa chỉ toàn 0 phải không được sử dụng sau khi máy tính thực hiện xong việc khởi động và đã có một địa chỉ IP. 6. Dạng địa chỉ quảng bá Berkeley Trường đại học California tại Berkeley phát triển và phân phối việc bổ sung giao thức TCP/IP như là một phần của BSD UNIX. Sự bổ sung BSD có những đặc tính không chuẩn nên có thể ảnh hưởng đến việc thực hiện xảy ra sau. Thay vì việc sử dụng phần sau địa chỉ gồm toàn 1 để biểu diễn địa chỉ quảng bá trực tiếp, sự bổ sung của Berkeley sử dụng phần sau gồm toàn số 0. Các dạng địa chỉ đó gọi là quảng bá berkeley (Berkeley broadcast). Nhiều nhà chế tạo máy tính thực hiện các phần mềm TCP/IP đầu tiên của họ theo bổ sung của Berkeley, và một số nơi vẫn sử dụng quảng bá Berkeley. Một vài thực hiện TCP/IP với các thông số cấu hình cho phép chọn lựa giữa chuẩn TCP/IP hoặc dạng Berkeley; rất nhiều sự thực hiện được xây dựng để chấp nhận cả hai dạng địa chỉ quảng bá TCP/IP chuẩn và địa chỉ Berkeley. V. Router và các nguyên tắc đánh địa chỉ IP Cùng với việc thiết lập các địa chỉ liên mạng cho các máy trạm, giao thức liên mạng cũng quy đinh rằng các router cũng cần có địa chỉ IP. Thực tế mỗi router có thể được thiết lập hai hoặc nhiều địa chỉ IP: Một router có nhiều kết nối với các mạng vật lý. Mỗi địa chỉ IP có chứa phần đầu để chỉ một mạng vật lý. Do vậy, một địa chỉ IP không đủ cho một router bởi vì mỗi router nối kết với nhiều mạng. Kỹ thuật IP có thể được giải thích bởi nguyên lý cơ bản: Một địa chỉ IP không xác định một máy tính. Thay vào đó, mỗi địa chỉ IP xác định một kết nối giữa một máy tính và một mạng. một máy tính với nhiều kết nối mạng (ví dụ như router) phải được thiết lập mỗi kết nối một địa chỉ IP. Hình 8 minh hoạ ý tưởng với ví dụ chỉ ra việc thiết lập địa chỉ IP cho hai router nối kết 3 mạng. Ethernet 131.108.0.0 Token Ring 223.240.129.0 131.108.99.5 223.240.129.2 223.240.129.17 78.0.0.17 Wan 78.0.0.0 Hình 8. ví dụ của địa chỉ IP thiết lập cho 2 router. Mỗi mạch nối ghép được thiết lập một địa chỉ có chữa phần đầu là mạng mà mạch nối ghép đó kết nối IP không đòi hỏi cùng một phần sau cho địa chỉ thiết lập cho các nối ghép của cùng một router. Trên hình vẽ, ví dụ router kết nối Ethernet và Token ring có phần sau địa chỉ là 99.5 (kết nối với Ethernet) và 2 (kết nối với Token Ring). Tuy nhiên, IP không ngăn cấm việc sử dụng cùng một giá trị địa chỉ phần sau cho tất cả các kết nối. Do vậy, ví dụ cũng chỉ ra rằng có thể chọn lựa cùng một giá trị phần sau địa chỉ là 17 cho cả hai nối ghép của router với mạng Token ring và mạng WAN. Trong thực tế sử dụng cùng một giá trị phần sau có thể giúp cho việc quản lý liên mạng bởi dùng cùng một giá trị số sẽ dễ dàng nhớ được. Phần III Đóng kết địa chỉ giao thức (ARP) I.Giới thiệu chung Địa chỉ Ip là địa chỉ ảo bởi chúng chỉ được duy trì bởi phần mềm. Không có một phần cứng nào mạng cục bộ hay mạng diện rộng có thể hiểu được mối quan hệ giữa phần đầu địa chỉ IP với một mạng cụ thể hoặc mối quan hệ giữa phần sau của địa chỉ IP với một máy tính cụ thể. Hơn nữa một khung tin truyền qua mạng vật lý cần có địa chỉ phần cứng của máy tính đích. Do vậy, trước khi phần mềm giao thức có thể truyền các gói tin qua mạng vật lý, nó cần chuyên địa chỉ IP của máy tính đích sang địa chỉ vật lý tương ứng. 2. Địa chỉ giao thức và sự phân phát các gói tin Khi một chương trình ứng dụng đưa ra dữ liệu cần truyền qua liên mạng, phần mềm giao thức sẽ để dữ liệu trong các gói tin mà có chứa địa chỉ của máy nhận. Phần mềm trong mỗi máy trạm và router sử dụng địa chỉ giao thức đích đó để chọn lựa máy tiếp theo cần chuyển tới. Khi mà máy tiếp theo đã được lựa chọn, phần mềm giao thức sẽ truyền gói tin đó qua mạng vật lý để đến máy đã được chọn. Để tạo ra được một mạng ảo lớn, phần mềm làm việc với địa chỉ IP khi truyền tiếp các gói tin. Cả địa chỉ của máy tiếp và địa chỉ đích của gói tin đều là địa chỉ IP. Không may là địa chỉ giao thức không thể được sử dụng để truyền các frame qua phần cứng mạng vật lý bởi nó không hiểu được địa chỉ IP. Thay vào đó, frame gửi qua mạng vật lý phải sử dụng định dang frame của phần cứng và tất cả địa chỉ trong frame đều là địa chỉ vật lý. Kết quả là, địa chỉ giao thức của máy tiếp sẽ được chuyển thành địa chỉ vật lý tương ứng trước khi frame được truyền đi. II. Phân giải địa chỉ Sự chuyển đổi địa chỉ giao thức của máy tính thành địa chỉ vật lý tương ứng gọi là sự phân giải địa chỉ (address resolution), và địa chỉ giao thức được gọi là chuyển đổi sang địa chỉ vật lý tương ứng. Phân giải địa chỉ là cục bộ với mỗi mạng. Một máy tính có thể chuyển đổi địa chỉ của một máy tính khác chỉ khi hai máy tính đó thuộc cùng một mạng vật lý – một máy tính không bao giờ phân giải địa chỉ của một máy tính ở trên mạng khác. Ví dụ, hãy xem xét một liên mạng đơn giản trên hình sau: C E A R2 R1 DD F B Hình 9.Một liên mạng đơn giản với 2 router R1 và R2 nối kết 3 mạng vật lý; mỗi mạng có hai máy trạm kết nối. Trên hình 9, máy trạm A và B nối với cùng một mạng vật lý. Nếu một ứng dụng trên máy trạm A gửi dữ liệu đến một ứng dụng trên máy trạm B, ứng dụng sử dụng địa chỉ IP của B là địa chỉ đích. Phần mềm giao thức trên máy A chuyển đổi địa chỉ IP của B thành địa chỉ phần cứng của B và dùng địa chỉ phần cứng đó để truyền đi frame trực tiếp. Chúng ta đã nói rằng phân giải địa chỉ chỉ cho phép thực hiện trong cùng một mạng vật lý. Trên hình vẽ, nếu ứng dụng trên máy A gửi một thông điệp đến máy trạm F nằm ở một mạng khác, phần mềm trên máy trạm A không thể chuyển đổi được địa chỉ của F. thya vào đó phần mềm trên A trước tiên quyết định rằng gói tin đó cần truyền qua router R1. Phần mềm trên A sẽ chuyển đổi địa chỉ của router R1 và sau đó sẽ gửi gói tin đó đến router. Phần mềm trên R1 xác định rằng gói tin cần truyền tiếp đến R2, chuyển đổi địa chỉ của R2 và gửi gói tin đi. Cuối cùng R2 nhận gói tin xác định rằng địa chỉ F được nối với mạng vật lý bên phải nhất, chuyển đổi địa chỉ của F và chuyển gói tin đến F. Như trong ví dụ trên, mỗi máy tính nhận điều khiển gói tin chuyển đổi địa chỉ của máy tiếp trước khi gửi gói tin đi. III.Kỹ thuật phân giải địa chỉ Thuật toán mà phần mềm sử dụng để chuyển đổi địa chỉ giao thức thành địa chỉ phần cứng phụ thuộc và giao thức và cơ chế địa chỉ phần cứng. Ví dụ, phương pháp sử dụng để chuyển đổi địa chỉ IP thành địa chỉ Ethernet khác với phương pháp chuyển đổi địa chỉ IP thành địa chỉ ATM bởi vì cơ chế đánh địa chỉ của mạng Ethernet khác với mạng ATM. Hơn nữa, bởi vì router hoặc máy trạm đa kết nối có thể kết nối với nhiểu kiểu mạng vật lý khác nhau, những máy tính như vậy có thể sử dụng nhiều kiểu phân giải địa chỉ. Do vậy, một máy tính được nối với nhiều mạng có thể cần nhiều môđun chuyển đổi địa chỉ. Thuật toán phân giải địa chỉ có thể được nhóm lại thành 3 loại: Bảng tra cứu. Sự tương ứng giữa địa chỉ được lưu trữ trong một bảng trong bộ nhớ và phần mềm sẽ tìm kiếm trong bảng đó khi cần chuyển đổi địa chỉ. Tính toán dạng gần đúng. Địa chỉ giao thức thiết lập cho một máy tính phải được lựa chọn cẩn thận vì vậy địa chỉ phần cứng của máy tính có thể được tính toán từ địa chỉ giao thức bằng cách sử dụng các toán tử logic và số học cơ bản. Trao đổi thông điệp. Các máy tính trao đổi thông điệp qua mạng để chuyển đổi một địa chỉ. Một máy tính gửi một thông điệp và yêu cầu gửi địa chỉ kèm, và các máy tính khác gửi trả lời mà có chứa các thông tin yêu cầu. IV. Giao thức phân giải địa chỉ TCP/IP có thể sử dụng một trong 3 phương pháp phân giải địa chỉ; phương pháp lựa chọn cho mạng cụ thể phụ thuộc vào cơ chế địa chỉ sử dụng cho phần cứng. Bảng tra cứu thường được sử dụng phân giải địa chỉ với mạng WAN, tính toán gần đúng sử dụng với mạng có thể cấu hình được, và trao đổi thông điệp sử dụng trong mạng LAN có địa chỉ tĩnh. Để đảm bảo rằng tất cả các máy tính đều chấp nhận một định dạng chính xác và ý nghĩa của các thông điệp sử dụng trong phân giải địa chỉ, bộ giao thức TCP/IP gồm có một giao thức phần giải địa chỉ (ARP – address resolution protocol). Chuẩn ARP định nghĩa hai loại thông điệp cơ bản: sự yêu cầu và sự trả lời. Thông điệp yêu cầu có chứa địa chỉ IP và yêu cầu địa chỉ phần cứng tương ứng; thông điệp trả lời có cả địa chỉ IP và địa chỉ phần cứng. V. Định dạng thông điệp ARP ARP có một trường có kích thước cố định vào đầu mỗi thông điệp ARP để chỉ ra kích thước của trường địa chỉ phần cứng. Ví dụ, khi ARP sử dụng với mạng Ethernet, địa chỉ phần cứng dài 6 byte vì địa chỉ Ethernet là 48 bit. ARP không bị giới hạn với địa chỉ IP hoặc địa chỉ phần cứng đưa ra – về mặt lý thuyết, giao thức có thể sử dụng gắn địa chỉ mức cao hơn với địa chỉ phần cứng. Trong thực tế bởi tính phổ biến của ARP nên nó ít khi được sử dụng: hầu hết sự thực hiện của ARP là gắn địa chỉ IP với địa chỉ Ethernet. Tóm lại: mặc dù định dạng thông điệp ARP là khá linh hoạt cho phép các địa chỉ IP và phần cứng bất kỳ. ARP luôn luôn sử dụng gắn kết địa chỉ IP 32 bit với địa chỉ Ethernet 48 bit. Hình 10 minh hoạ định dạng của thông điệp ARP với địa chỉ giao thức IP là 4 byte và địa chỉ phần cứng Ethernet là 6 byte. TARGET PADDR (tất cả 4 byte) TARGET HADDR (4 byte cuối) SENDER HADDR (4 byte đầu ) TARGET HADDR SENDER PADDR SENDER PADDR SEND HADDR (2 byte ) OPERATION HADDR LEN PADDRLEN Hardware address type Protocol address type 0 8 16 24 31 Hình 10 .Định dạng của một thông điệp ARP khi sử dụng địa chỉ giao thức internet gắn kết với địa chỉ phần cứng Ethernet Mỗi dòng của hình vẽ tương ứng với 32 bit của thông điệp ARP. Hai trường 16 bit đầu tiên chứa giá trị của kiểu địa chỉ phần cứng và địa chỉ giao thức. Ví dụ, trường HARDWARE ADDRESS TYPE có giá trị là 1 khi ARP là dùng với Ethernet và trường PROTOCOL ADDRESS TYPE có giá trị là 0x0800 khi ARP sử dụng với IP. Hai trường tiếp theo, HADDR LEN và PADDR LEN chỉ ra số byte của địa chỉ phần cứng và địa chỉ giao thức. Trường OPERATION chỉ ra liệu thông điệp này là yêu cầu (giá trị =1) hay trả lời (giá trị 2). Mỗi thông điệp ARP có chứa các trường cho sự gắn kết hai địa chỉ. Một gắn kết tương ứng với địa chỉ của máy gửi và gắn kết kia tương ứng với địa chỉ của máy nhận, mà trong ARP gọi là target. Khi thông điệp yêu cầu gửi đi, máy gửi không biết địa chỉ phần cứng của đích (đó là thông tin nó yêu cầu biết). Do đó, trường TARGET HADDR trong thông điệp yêu cầu có giá trị 0 bởi vì nội dung này không sử dụng. Trong thông điệp trả lời, gắn kết đích chỉ rõ cho máy tính ban đầu mà gửi yêu cầu. Do đó, thông tin đích trong trả lời không có mục đích gì - nó tồn tại từ phiên bản trước của giao thức. VI. Gửi đi một thông điệp ARP Khi một máy tính gửi đi một thông điệp đến máy tính khác, thông điệp đó được đặt trong một frame. Thông điệp ARP được xem như là một dữ liệu cần được truyền đi – phần cứng mạng không biết gì về định dạng của thông điệp và cũng không xem xét nội dung của các trường. Về mặt kỹ thuật, việc đặt thông điệp trong một frame để truyền đi gọi là đóng gói (encapsulation); ARP được đóng gói trực tiếp trong frame phần cứng. Hình sau minh hoạ khái niệm này. ARP MESSAGE CRC FRAME DATA AREA FRAME HEADER Hình11: minh hoạ một thông điệp ARP được đóng gói trong frame Ethernet. Toàn bộ thông điệp ARP được đặt trong vùng dữ liệu của frame; phần cứng mạng không dịch cũng như không thay đổi gì nội dung của thông điệp. VII. Xử lý thông điệp ARP đến Khi một thông điệp ARP đến, giao thức chỉ ra cho máy nhận phải thực hiện hai bước cơ bản. Bước thứ nhất, máy nhận lấy ra địa chỉ máy gửi và kiểm tra xem liệu gắn kết này đã có trong cache. Nếu như vậy, máy nhận sử dụng gắn kết trong thông điệp ARP để thay thế cho gắn kết đã lưu trữ trước. Cập nhật một gắn kết mới là việc làm tối ưu bởi nó rất có ích trong trường hợp địa chỉ phần cứng của máy gửi đã thay đổi. Bước thứ hai, máy nhận xem xét trường OPERATION của thông điệp để xác định thông điệp đó là yêu cầu hay trả lời. Nũu thông điệp là trả lời, máy nhận đã có một yêu cầu trước đó và đang chờ sự gắn kết. Nếu thông điệp là yêu cầu máy nhận so sánh trường TARGER PADDR với địa chỉ giao thức cục bộ. Nếu chúng giống nhau máy tính đó sẽ là đích của yêu cầu và phải gửi thông điệp trả lời. Để tạo ra thông điệp trả lời, máy tính bắt đầu từ thông điệp yêu cầu, chuyển đổi gắn kết của máy gửi và đích, chen thêm địa chỉ phần cứng vào trường SENDER HADDR, và chuyển giá trị trường OPERATION thành 2. ARP có sự tối ưu hơn: sau khi một máy tính trả lời thông điệp yêu cầu, máy tính đó sẽ lấy ra gắn kết của địa chỉ máy gửi và thêm vào cache của nó cho lần sử dụng sau. Để hiểu sự tối ưu này, cần thiết phải biết hai thực tế sau: Hỗu hết các giao tiếp giữa máy tính là thực hiện theo hai chiều – nếu một thông điệp được gửi từ máy này đến máy kia thì rất có khả năng rằng sự trả lời sẽ được gửi trở lại. Bởi vì mỗi gắn kết địa chỉ đỏi hỏi bộ nhớ, một máy tính không thể lưu trữ số lượng tuỳ ý gắn kết địa chỉ. Điều thứ nhất giải thích tại sao việc lấy gắn kết địa chỉ của máy gửi là tối ưu hiệu suất ARP. Nhớ lại rằng mỗi máy tính chỉ gửi một yêu cầu ARP đến một đích nhất định khi nó muốn gửi một gói tin. Do vậy, khi máy tính W gửi một yêu cầu ARP cho máy tính Y, W phải có thông điệp để chuyển đến Y. Rất có thể rằng mỗi khi một gói tin được truyển đi, một gói tin cũng sẽ được truyền trở lại từ Y đến W. Nếu Y không có gắn kết địa chỉ của W, Y sẽ cần phải gửi đi yêu cầu ARP và W lại phải trả lời. Thực hiện lấy gắn kết gửi đi từ W từ thông điệp yêu cầu giảm bớt được việc gửi yêu cầu ARP lần sau của Y. Điều thứ hai giải thích tại sao sự tối ưu chỉ thực hiện bởi máy tính là đích của thông điệp yêu cầu. Bởi vì tất cả các máy tính trên mạng đều nhận được thông điệp ARP, nên có thể là tất cả các máy tính đó đều lấy gắn kết địa chỉ của máy nhận và lưu trữ lại. Tuy nhiên, làm như vậy sẽ lãng phí thời gian CPU và bộ nhớ bởi không phải tất cả các cặp máy tính cần giao tiếp. Do vậy, ARP được tối ưu để thực hiện ghi trước gắn kết địa chỉ mà có thể cần thiết sau đó. VII. Các lớp, phân giải địa chỉ, địa chỉ giao thức Lớp thấp nhất của mô hình lớp TCP/IP tương ứng với phần cứng vật lý của mạng, và lớp tiếp theo tương ứng với phần mềm nối ghép mạng dùng để truyền và nhận các gói tin. Phân giải địa chỉ là ví dụ về chức năng thực hiện với lớp mạch nối ghép. Phần mềm phân giải địa chỉ ẩn đi mọi chi tiết của địa chỉ vật lý và cho phép phần mềm ở lớp cao hơn sử dụng các địa chỉ giao thức. Do vậy, có một ranh giới khái niệm quan trọng ẩn chứa giữa lớp mạch nối ghép và các lớp cao hơn: các ứng dụng cũng như là phần mềm giao thức lớp cao hơn được xây dựng chỉ sử dụng địa chỉ giao thức. Hình sau minh hoạ ranh giới địa chỉ này. Các ứng dụng Các địa chỉ giao thức được sử dụng Lớp cao hơn của phần mềm giao thức Giới hạn địa chỉ giao thức điểu khiển thiết bị phân giải địa chỉ Các địa chỉ phần cứng được sử dụng Phần cứng mạng Hình 12:minh hoạ phần mềm giao thức lớp trong một máy tính và ranh giới khải niệm giữa lớp nối ghếp mạng và các lớp cao hơn. Phần mềm trên ranh giới sử dụng địa chỉ giao thức ; phần mềm dưới ranh giới chuyển đổi mỗi địa chỉ giao thức thành địa chỉ vật lý tương ứng. Phần VI IP datagram và datagram forwarding I. IP Datagram Các giao thức TCP/IP dùng tên gọi IP Datagram để ám chỉ một gói tin liên mạng. IP Datagram bắt đầu với phần header và sau đó là phần dữ liệu. Hình sau minh hoạ định dạng một IP Datagram. header Vùng dữ liệu Hình 13 Định dạng chung của một IP Datagram với phần header và sau đó là vùng dữ liệu. Phần header có chứa các thông tin điều khiển nơi gửi và cách gửi đi IP Datagram. Khối lượng dữ liệu có trong một datagram là không cố định. Máy gửi tin chọn lựa lượng dữ liệu thích hợp cho từng mục đích cụ thể. Ví dụ, một ứng dụng truyền đi sự bấm phím qua mạng có thể đặt mỗi sự gõ phím trong một datagram, trong khi một ứng dụng truyền một file lớn có thể gửi đi một datagram lớn. Điều quan trọng là: Kích thước của một datagram được quyết định bởi ứng dụng mà gửi dữ liệu đi. Việc cho phép kích thước của các datagram thay đổi làm cho IP có thể thích nghi với các ứng dụng khác nhau. Trong phiên bản hiện tại của IP, một datagram có thể chứa ít là 1 byte dữ liệu hoặc nhiều nhất là 64Kb dữ liệu gồm cả phần header. Trong hầu hết các datagram, phần header nhỏ hơn nhiều so với phần dữ liệu. Để hiểu tại sao chúng ta cần thiết xem xét đến chi phí cho việc truyền dữ liệu. Giống như frame header dùng trong mạng vật lý, một datagram header biểu diễn toàn bộ – trong khi nó chiếm các byte header truyền tin, một mạng không thể truyền đi một dữ liệu của người sử dụng. Bởi vì kích thước của datagram header là cố định, nên gửi đi các datagram lớn kết quả là nhiều byte dữ liệu hơn được truyền đi trên một đơn vị thời gian (thông lượng lớn hơn). Tương tự như một frame header, một datagram header có chứa các thông tin để định tuyến datagram truyền qua liên mạng. Ví dụ, header có chứa địa chỉ của máy tính gửi datagram cũng như là địa chỉ của máy tính mà datagram gửi đến. Các địa chỉ trong trong datagram header khác với các địa chỉ sử dụng trong frame header – một datagram có chứa các địa chỉ IP, trong khi một frame có chứa địa chỉ phần cứng. Tóm lại: một gói tin gửi qua mạng TCP/IP gọi là IP Datagram. Mỗi datagram gồm có hai phần là header và phần dữ liệu. Địa chỉ nguồn và đích trong datagram là các địa chỉ IP. II. Truyền tiếp một IP Datagram Chúng ta đã nói rằng các datagram truyền đi qua liên mạng theo một đường dẫn bắt đầu từ máy nguồn qua các router và đến máy đích. Mỗi router dọc theo đường đi nhận được datagram đó, lấy ra địa chỉ đích từ header, và sử dụng địa chỉ đích để quyết định máy tiếp nào để gửi datagram đó đến. Router sau đó sẽ chuyển tiếp datagram đến máy tiếp đó, có thể là máy tính đích hoặc router khác. Để tạo ra việc lựa chọn máy tiếp một cách hiệu quả và dễ dàng cho con người hiểu được sự tính toán, mỗi router IP lưu giữ thông tin trong một bảng định tuyến. Một bảng định tuyến phải được khởi tạo khi router khởi động, và phải được cập nhật nếu như cấu hình mạng thay đổi hoặc phần cứng bị trục trặc. Bảng định tuyến có các dòng và mỗi dòng gồm có đích và máy tiếp dùng để đến được đích. Hình 14 chỉ ra nội dung của bảng định tuyến của một trong 3 router được sử dụng để liên kết 4 mạng trong một liên mạng nhỏ. R1 R2 R3 Net 4 Net 3 Net 2 Net 1 (a) Đích Máy tiếp Net 1 R1 Net 2 Truyền trực tiếp Net 3 Truyền trực tiếp Net 4 R3 (b) Hình 14(a) ví dụ liên mạng có 3 router nối kết 4 mạng vật lý, (b) bảng định tuyến của router R2. Mỗi dòng của bảng liệt kê mạng đích và máy tiếp theo một đường dẫn để đến mạng đó. Như trên hình vẽ ta thấy, router r2 nối kết trực tiếp với các mạng Net 2 và Net 3. Do đó, R2 có thể truyền một datagram đến bất kỳ máy tính đích này nối với hai mạng đó. Khi một datagram muốn truyền đến mạng 4, R2 phải truyền datagram đó đến router R3. Mỗi đích liệt kê trong bảng định tuyến là một mạng, không phải là một máy trạm. Sự phân biệt này là quang trọng bởi vì một liên mạng có thể có nhiều gấp 1000 lần máy trạm có trong các mạng này. Do vậy, sử dụng các mạng là các đích trong bảng định tuyến góup cho kích thước của chúng nhỏ hơn. Tóm lại: Bởi vì mỗi đích trong bảng định tuyến tương ứng với 1 mạng, số dòng trong bảng tỷ lệ với số mạng trong một liên mạng. III. Địa chỉ IP và các dòng bảng định tuyến Trong thực tế, một bảng định tuyến IP thường phức tạp. Thứ nhất, trường đích trong mỗi dòng có chứa phần đầu mạng của mạng đích. Thứ hai, một trường thêm vào trong mỗi dòng có chứa mặt nạ địa chỉ (address mask) để chỉ ra số bit của đích tương ứng với phần đầu mạng. Thứ ba, một địa chỉ Ip sử dụng trong trường máy tiếp để biểu diễn mỗi router. Hình sau minh hoạ một bảng định tuyến. 128.1.0.9 40.0.0.8 30.0.0.7 128.1.0.0 40.0.0.0 192.4.10.0 30.0.0.0 192.4.10.9 128.1.0.8 40.0.0.7 (a) Đích Mặt nạ Máy tiếp 30.0.0.0 255.0.0.0 40.0.0.7 40.0.0.0 255.0.0.0 Truyền trực tiếp 128.1.0.0 255.255.0.0 Truyền trực tiếp 192.4.10.0 255.255.255.0 128.1.0.9 (b) Hình 15(a) liên mạng có 4 mạng và 3 router và có các địa chỉ IP thiết lập cho các nối ghép router,15 (b) bảng định tuyến của router trung tâm. Mỗi dòng trong bảng liệt kê các đích, mặt nạ, và máy tiếp sử dụng để tới đích. Hai mạng dâu tiên trong hình vẽ có địa chỉ phần đầu thuộc lớp A, mạng thứ 3 thuộc lớp B và mạng thứ 4 thuộc lớp C. Mỗi router được thiết lập hai đại chỉ IP , mỗi địa chỉ thuộc một nối ghép. Ví dụ, router mà kết nối mạng 30.0.0.0 với mạng 40.0.0.0 có hai địa chỉ là 30.0.0.7 và 40.0.0.7. Mặc dù địa chỉ phần sau là giống nhau cho cả hai nối ghép của router, nhưng IP cũng không đòi hỏi phải cần thiết như vậy – quảng trị mạng có thể tự do thiết lập giá trị địa chỉ khác nhau cho mỗi nối ghép. IV. Trường mặt nạ và truyền tiếp datagram Quá trình sử dụng bảng định tuyến để chọn lựa máy tiếp cho mỗi datagram được gọi là sự định tuyến (routing) hoặc sự truyền tiếp (forwding). Trường mặt nạ (Mask) trong mỗi dòng bảng định tuyến sử dụng để lấy ra địa chỉ phần mạng trong quá trình tìm kiếm. Để hiểu mặt nạ được sử dụng như thế nào, tưởng tượng rằng khi phần mềm định tuyến được đưa đến một datagram để truyền tiếp. Cũng giả sử rằng datagram đó cũng có địa chỉ IP đích là D. Phần mềm định tuyến phải tìm một dòng trong bảng để tìm ra máy tiếp cho D. Để làm điều này, phần mềm xem xét mỗi dòng trong bảng bằng việc sử dụng mặt nạ trong mỗi dòng để tìm ra phần đầu địa chỉ D và so sánh kết quả với trường đích trong mỗi dòng. Nếu hai kết quả bằng nhau, datagram sẽ được truyền tiếp đến máy tiếp trong dòng đó. Mặt nạ bit giúp cho việc lấy ra phần đầu địa chỉ dễ dàng – phần mềm sẽ thực hiện phép logic and giữa địa chỉ đích D của datagram và giá trị mặt nạ. Do vậy sự tính toán để xem xét dòng thứ IP Datagram trong bảng có thể được diễn tả như sau: If ((Mask[i] & D) == Destination[i]) forward to NextHop[i]; Trong ví dụ trên, giả sử rằng datagram cần chuyển đến địa chỉ 192.4.10.3 và nó đang ở router có bảng định tuyến trong hình 16.3. Hơn nữa giả sử phần mềm tìm kiếm trong bảng tuần tự. Dòng đầu không thoả mãn bởi 255.0.0.0 & 192.4.10.3 không bằng 30.0.0.0. Sau khi kiểm tra không thoả mãn dòng 2 và 3, cuối cùng phần mềm định tuyến sẽ chọn được máy tiếp là 128.1.0.9 bởi vì 255.255.255 & 192.4.10.3 == 192.4.10.0. V. Các địa chỉ của đích và của máy tiếp Có mối liên hệ gì giữa địa chỉ đích trong header của datagram và địa chỉ của máy tiếp mà datagram được chuyển tới? Trường DESTINATION IP ADDRESS trong datagram có chứa địa chỉ của đích cuối cùng. Khi một router nhận một datagram, router lấy ra địa chỉ đích D và dùng nó để tính toán địa chỉ của router tiếp theo mà datagram cần được gửi đến là N. Mặc dù datagram được gửi trực tiếp đến N, header trong datagram vẫn chứa địa chỉ đích D. Nói cách khác: Địa chỉ đích trong datagram header luôn là địa chỉ đích cuối cùng. Khi một router truyền tiếp một datagram đến router khác, địa chỉ của máy tiếp không xuất hiện trong header của datagram. Mặc dù tất cả các định tuyến đều được tính toán sử dụng địa chỉ IP. Saukhi tính địa chỉ của máy tiếp N, phần mềm IP sử dụng địa chỉ gắn kết đã nói trong phần trước để chuyển đổi N sang địa chỉ phần cứng tương ứng để truyền đi. Trong tiếp theo, chúng ta sẽ học về cách datagram được truyền qua mạng vật lý. VI. Truyền đi với nỗ lực hết mình (Best-effort Delivery) Cùng với việc đưa ra định dạng của một datagram cho liên mạng, giao thức liên mạng cũng đưa ra ngữ nghĩa của sự truyền thông, và dùng thuật ngữ nỗ lực hết sức (best-effort) để chỉ một dịch vụ mà nó đưa ra. Một cách trực quan các chuẩn chỉ ra mặc dù IP nỗ lực hết sức để truyền đi mõi datagram, Ip không đảm bảo rằng nó sẽ quản lý được hết các sự cố như là: Sự trùng lặp datagram Sự truyền bị trễ hoặc sai thứ tự Sự sai lệch dữ liệu Sự mất các datagram Cần có các lớp phần mềm giao thức khác để quản lý các sự cố này. Dường như có vẻ hơi lạ khi cho rằng Ip có thể bị xảy ra những lỗi này. Tuy nhiên, có mộtl ý do quan trọng: mỗi lớp của phần mềm giao thức có trách nhiệm trong một khía cạnh truyền thông nhất định., và IP không thể quản lý hết các lỗi này. Hơn nữa, bởi vì các mạng vật lý có thể gây ra các lỗi như vậy, nên phần mềm mà dùng IP phải có trách nhiệm giải quyết các sự cố đó. VII . Định dạng header của IP datagram Hình sau minh hoạ các trường của một IP datagram header, bao gồm trường SOURCE IP ADDRESS chứa địa chỉ Internet của máy gửi, và DESTINATION IP ADDRESS chứa địa chỉ internet của máy nhận, và trường TYPE chỉ ra kiểu dữ liệu. Hình 16. Cấu trúc gói IP VERS H.LEN SERVICE TYPE TOTAL LENGTH FLAGS FRAGMENT OFFSET TIME TO LIVE TYPE HEADER CHECKSUM DESTINATION IP ADDRESS IP OPTIONS (may br omitted) PADDING SOURCE IP ADDRESS BEGIN NING OF DATA Các trường của Ip datagram header. Cả địa chỉ nguồn và đích là địa chỉ internet. Mỗi trường của IP datagram header có kích thước cố định. Datagram có 4 bit đầu tiên là phiên bản của giao thức (phiên bản hiện tại là 4) và 4 bit chiều dài của header để chỉ ra số 32 bit trong phần header. Trường SERVICE TYPE có chứa giá trị để chỉ ra datagram truyền qua mạng với độ trễ nhỏ nhất hay là với thông lượng lớn nhất; một router biết nhiều định tuyến để đến đích và dùng giá trị này để chọn lựa các định tuyến. Trường TOTAL LENGTH là giá trị nguyên 16 bit để chỉ ra tổng số byte của datagram gồm cả phần data và header Trường TIME TO LIVE để ngăn không cho datagram truyền vô tận trong mạng khi nó rơi vào đường vòng lặp; các đường dẫn đó có thể xuất hiện khi phần mềm bị hoạt động sai hoặc khi việc cấu hình nhầm định tuyến. Máy gửi khởi tạo giá trị TIME TO LIVE là một giá trị số nguyên từ 1 đến 255. Mỗi router nhận được datagram sẽ giảm giá trị của trường này đi 1. Nếu bộ đếm tới 0, datagram sẽ bị huỷ bỏ và thông báo lỗi sẽ được gửi đến máy nguồn. Trường HEADER CHECKSUM kiểm tra các bit của header có bị thay đổi khi truyền. Máy gửi tính toán tổng số 1 trong tất cả các giá trị 16 bit trong header bao gồm cả trường checksum, và sau đó lưu nó vào trong trường này. Máy nhận cũng thực hiện tính toán tương tự và thực hiện so sánh với giá trị trong trường này. Để cho kích thước của datagram nhỏ, IP đưa ra một lựa chọn có thể có. Khi datagram IP không có lựa chọn, trường H. LEN có giá trị là 5 và header kết thúc sau trường DESTINATION ADDRESS. Bởi vì chiều dài của header được xác định bằng bội số của 32 bit, nếu chọn lựa không kết thúc đúng giá trị là 32 bit, PADDING chứa các bit 0 thêm vào header để đảm bảo là bội của 32 bit. Phần V Sự đóng gói IP, phân đoạn và hợp lại. I. Sự truyền đi các datagram và các frame Khi một máy trạm hoặc router xử lý một datagram, phần mềm IP trước tiên lựa chọn máy tiếp mà datagram phải truyền tới N và sau đó truyền datagram đó qua mạng vật lý đến N. Nhưng không may là phần cứng mạng không hiểu được định dạng của các datagram và địa chỉ Internet. Do vậy, mỗi công nghệ phần cứng đưa ra một định dạng frame và một cơ chế địa chỉ riêng; phần cứng chỉ chấp nhận và truyền đi cac gói tin mà gắn liền với định dạng frame cụ thể và sử dụng cơ chế địa chỉ phần cứng tương ứng. Hơn nữa,bởi vì một liên mạng gồm có nhiều mạng vật lý không đồng bộ nên định dạng của khung tin truyền qua mạng này khác so với định dạng của frame truyền qua mạng trước đó. II. Sự đóng gói Một datagram có thể được truyền qua một mạng vật lý như thế nào mặc dù nó không hiểu được định dạng của datagram đó? Câu trả lời nằm ở kỹ thuật gọi là đóng gói (encapsulation). Khi một IP Datagram được đóng gói trong một frame, toàn bộ datagram đó được đặt trong phần dữ liệu của frame. Phần cứng mạng coi các frame mà có chứa datagram giống hệt như các frame khác. Thực tế, phần cứng không kiểm tra hoặc thay đổi gì nội dùng của phần dữ liệu của frame. Hình sau minh hoạ khái niệm. IP header IP Data Area FRAME DATA FRAME HEADER Hình 17 Hình 17.minh hoạ một IP Datagram được đóng gói trong một frame phần cứng. Toàn bộ datagram nằm trong phần dữ liệu của frame. Làm thế nào để máy nhận biết được liệu vùng dữ liệu của frame đến là một IP Datagram hay là dữ liệu khác? Máy nhận và máy gửi phải thống nhất một giá trị dùng trong trường kiểu frame. Khi nó đặt một datagram trong một frame, máy gửi thiết lập trường kiểu của frame một giá trị đặc biệt dành riêng cho IP. Khi một frame đến mà có giá trị đặc biệt trong trường kiểu, máy nhận biết rằng vùng dữ liệu có chứa một IP Datagram. Một frame mà mang một IP Datagram phải có địa chỉ đích như bình thường. Do đó, cùng với việc đặt một datagram vào trong cùng dữ liệu của frame, sự đóng gói cũng đòi hỏi máy gửi phải cung cấp địa chỉ vật lý của máy tiếp mà datagram cần gửi tới. Để tính ra địa chỉ thích hợp, phần mềm trong máy tính gửi phải thực hiện gắn kết địa chỉ . Sự gắn kết này để chuyển đổi địa chỉ IP của máu tiếp thành địa chỉ vật lý tương ứng mà sau đó dùng chúng làm địa chỉ đích trong frame header. Tóm lại: một datagram được đóng gói trong một frame để truyền đi qua một mạng vật lý. Địa chỉ đích trong frame đó là địa chỉ của máy tiếp mà datagram cần gửi tới; địa chỉ đó nhận được bằng cách chuyển đổi địa chỉ IP của máy tiếp thành địa chỉ vật lý tương ứng. III. Sự truyền tin qua liên mạng Sự đóng gói áp dụng cho việc truyền tin tại một thời điểm. Sua khi máy gửi chọn được máy tiếp, máy gửi đóng gói datagram trong một frame và truyền nó đến máy tiếp qua mạng. Khi frame đến máy tiếp, phần mềm nhận chuyển lại IP Datagram và huỷ bỏ frame. Nếu datagram cần phải truyền tiếp đến mạng khác, một frame mới lại được tạo ra. Hình sau minh hoạ cách mà một datagram được đóng gói mà mở gói khi được truyền từ nguồn đến đích qua 3 mạng và 2 router. Mỗi mạng có thể có một công nghệ phần cứng khác nhau do vậy mà định dạng frame cũng khác nhau. Máy nguồn Datagram Header 1 Datagram Net 1 Router 1 Datagram Header 2 Datagram Net 2 Router 2 Datagram Net 3 Header 3 Datagram Máy đích Datagram Hình 18 Một IP Datagram xuất hiện từng bước trong quá trình được truyền qua liên mạng. Mỗi khi nó truyền qua mạng vật lý nó được đóng gói vào một frame thích hợp của mạng đó. Như trên hình vẽ, máy trạm và router lưu trữ một datagram trong bộ nhớ mà không có phần header thêm vào. Khi datagram truyền qua mạng vật lý, datagram được đóng gói trong một frame thích hợp với mạng đó. Kích thước của frame header xuất hiện trước datagram phụ thuộc vào công nghệ của mạng. Ví dụ, nếu mạng 1 là Ethernet, header của frame 1 là Ethernet header. Tương tự, nếu mạng 2 là mạng vòng FDDI, header của frame 2 là FDDI header. Một quan sát quan trọng đó là các header frame không bị chồng lên nhau trong quá trình truyền một datagram. Trước khi một datagram được truyền qua mạng nhất định, datagram đó được đóng gói, thường là việc gắn thêm header vào đầu. Khi frame đến máy tiếp, datagram được lấy ra khỏi frame trước khi nó được định tuyến và đóng gói vào frame chuyển đi. Do vậy, khi datagram đến đích cuối cùng, frame mang datagram bị huỷ bỏ và datagram lại xuất hiện trở lại đúng với kích thước của nó khi được gửi đi. Tóm lại: khi một datagram nằm trong một frame mạng đến, máy nhận lấy ra datagram đó từ phần dữ liệu của frame và huỷ bỏ frame header. IV. Sự hợp lại Quá trình tạo lại datagram gốc từ các phân đoạn gọi là sự tái hợp. Bởi vì mỗi phân đoạn bắt đầu với phần header giống với của datagram gốc, nên tất cả các phân đoạn có dùng một địa chỉ đích. Hơn nữa, phân đoạn mà chứa phần dữ liệu cuối cùng sẽ có một bit thêm vào được thiết lập trong header. Do vậy, máy nhận thực hiện việc tái hợp lại có thể biết được liệu các phân đoạn được truyền đến thành công hay không. Một điều thú vị là giao thức liên mạng xác định rằng địa chỉ cuối cùng của máy trạm trong mọi phân đoạn đều giống nhau. Ví dụ, xem xét liên mạng trong hình 21 minh hoạ. R1 Net 2 (MTU =1000) Net 1 (MTU =1500) H1 R2 H2 Net 3 (MTU =1500) Hình 21. Một ví dụ của liên mạng trong đó các máy trạm có thể tạo ra các datagram mà đòi hỏi sự phân mảnh. Mỗi khi một datagram được phân mảnh, các phân mảnh đó đều được truyền tiếp đến đích cuối cùng, và tái hợp chúng lại. Trong hình vẽ, máy trạm H1 gửi đi một datagram 1500 byte đến máy trạm H2, router R1 sẽ chia datagram thanh hai phân đoạn, mỗi cái sẽ được truyền tiếp đến R2. Router R2 không tái hợp csac phân đoạn mà nó sẽ dùng địa chỉ đích của mỗi phân đoạn để truyền tiếp chúng. Máy trạm cuối cùng, H2 tập hợp các phân đoạn và tái hợp chúng lại để tạo ra datagram gốc. Việc yêu cầu địa chỉ đích cuối để tái hợp các phân đoạn có hai ưu điểm chính. Thứ nhất, nó giảm được lượng tin trạng thái trong mỗi router. Khi truyền tiếp một datagram, một router không cần biết liệu datagram đó là một phân mảnh hay không. Thứ hai, nó cho phép định tuyến thay đổi linh hoạt. Nếu một router ngay lập tức tái hợp các phân đoạn thì tất cả các phân đoạn phải đến router đó. Nhờ việc không tái hợp khi đến tận đích cuối cùng, giao thức liên mạng IP cho phép tự do truyền đi các phân đoạn của một datagram theo các định tuyến khác nhau. V. Nhận dạng một datagram Nhớ lại rằng IP không đảm bảo việc truyền đi. Do vậy, các phân đoạn có thể bị mất hoặc đến sai thứ tự. Hơn nữa, nếu một nguồn gửi đi nhiều datagram đến cùng một đích, các phân đoạn của các datagram có thể đến theo thứ tự khác nhau. Vậy làm thế nào mà giao thức IP có thể tái hợp được các phân đoạn đến sai thứ tự? Mỗi máy gửi đều thiết lập một giá trị số nhận dạng duy nhất trong trường IDENTIFICATION của mỗi datagram đi. Khi một router thực hiện phân đoạn một datagram, router sẽ sao chép số nhận dạng trong mỗi phân đoạn. Máy nhận dùng số nhận dạng và địa chỉ Ip nguồn trong phân đoạn đến để xác định phân đoạn nào thuộc datagram nào. Hơn nữa, trường FRAGMENT OFFSET cũng cho máy nhận biết thứ tự các phân đoạn trong một datagram. VI. Sự mất phân đoạn Giao thức IP không đảm bảo sự truyền đi – nếu phân cứng gây ra mất các gói tin, một datagram hoặc phân đoạn được đóng gói trong đó sẽ bị mất. Khi tất cả các phân đoạn của một datagram đến, datagram sẽ được tái hợp lại. Tuy nhiên, khi có sự cố xảy ra với một hoặc nhiều phân đoạn của datagram đó, và phân đoạn đó có thể đến trễ hoặc bị mất. Mặc dù datagram đó không thể tái hợp lại nhưng máy nhận vẫn phải lưu các phân đoạn lại đề phòng trường hợp các phân đoạn chỉ do bị trễ. Máy nhận không thể giữ các phân đoạn lâu bởi vì các phân đoạn sẽ chiếm dung lượng bộ nhớ của máy. Để tránh bị hết bộ nhớ, giao thức IP giới hạn thời gian lớn nhất có thể lưu trữ các phân đoạn. Khi một phân đoạn đầu tiên của một datagram đến, máy nhận bắt đầu tính giờ. Nếu tất cả các phân đoạn của datagram đến trước khi thời gian hết thời gian cho phép, máy nhận sẽ huỷ bỏ thời gian và tiến hành tái hợp datagram. Tuy nhiên, nếu hết thời gian trước khi tất các phân đoạn đến kịp, máy nhận sẽ huỷ bỏ toàn bộ phân đoạn đã nhận được. Kết quả của đo thời gian để tái hợp của IP là tất cả hoặc không có gì: hoặc tất cả các phân đoạn đến và sự tái hợp thành datagram thành công, hoặc IP sẽ huỷ bỏ toàn bộ các phân đoạn nhận được. Đặc biệt không có cơ chế nào để cho máy nhận báo cho máy gửi biết là phân đoạn nào đã đến thành công. Sự thiết kế này là hoàn toàn nhạy cảm bởi máy gửi không biết được về sự phân đoạn. Hơn nữa, nếu máy gửi tiến hành truyền lại datagram đó, việc định tuyến cũng có thể khác điều đó có nghĩa là sự truyền lại không cần thiết phải truyền qua đúng định tuyến trước. Do vậy, không có điều gì đảm bảo rằng sự truyền lại datagram sẽ phân mảnh giống như cách nó đã làm trước đó. Phần VI Giao thức IP tương lai (IPv6) Trong phần này chúng ta sẽ tập trung xem xét đến phiên bản mới của giao thức IP trong tương lai. Phần này bắt đầu bằng việc xem xét những thế mạnh và hạn chế của phiên bản giao thức IP hiện tại, sau đó chúng ta sẽ xem xét đến một cách tổng thể phiên bản IP mới mà IEIF đã để xuất ra nhằm thay thế phiên bản hiện thời. Phần này giải thích các đặc điểm của phiên bản hiện tại, và đưa ra các cách khắc phục các hạn chế của phiên bản hiện thời. Sự thành công của giao thức IP Phiên bản IP hiện thời đã đạt được những thành công không thể phủ nhận. Ip đã giúp cho liên mạng có thể hoạt động tốt trong việc điều khiển các mạng không đồng nhất, những sự thay đổi trong công nghệ phần cứng và sự tăng lên đáng kể về khoảng cách. Để khắc phục sự không đông nhất, IP đưa ra định dạng của gói tin đồng bộ (các IP Datagram) và cơ chế truyền các gói tin. Phiên bản hiện tại của Ip cũng thích hợp với những thay đổi về công nghệ phần cứng. Mặc dù dữ liệu đó đã được đưa ra trước khi công nghệ mạng cục bộ trở nên phổ biến nhưng sự thiết kế chính lại được tiếp tục thực hiện tốt qua một vài thế hệ của công nghệ phần cứng. Ip bây giờ cũng được dùng trong các mạng mà đòi hỏi việc thực hiện một số công việc lớn nhanh hơn so với các mạng mà được dùng khi IP được thiết kế cho nó. Hơn nữa, một vài mạng hiện địa đưa ra kích thước của frame lớn hơn nhiều kích thước frame do Ip đưa ra. Quan trọng hơn, IP làm việc hiệu quả trên các mạng bởi vì nó ưu điểm là tăng được kích thước của frame. I. Các đặc điểm của giao thức IPv6 Ipv6 giữa lại rất nhiều các đặc tính thiết kế mà đã thành công trong Ipv4. Giống như Ipv4, Ipv6 là không liên kết – mỗi datagram có chứa địa chỉ đích, và mỗi datagram được định tuyến một cách độc lập. Giống như Ipv4, header của datagram có chứ số lượng lớn nhất các máy tiếp mà datagram có thể qua trước khi bị huỷ bỏ. Hơn nữa, Ipv6 giữa lại hầu hết các đặc tính linh hoạt chung đã có trong chọn lựa của Ipv4. Mặc dù giữ lại khá nhiều đặc tính cơ bản của phiên bản cũ, Ipv6 có những thay đổi chi tiết. Ví dụ, Ipv6 sử dụng địa chỉ lớn hơn và có toàn bộ phần định dạng header mới. Cuối cùng, Ipv6 dùng một dãy các header có chiều dài cố định để thực hiện các thông tin chọn lựa thay vì một header với trường tuỳ chọn chiều dài thay đổi của phiên bản trước. Các đặc tính mới của Ipv6 có thể được nhóm lại thành 5 loại chính: Kích thước địa chỉ: thay vì dùng địa chỉ 32 bit, mỗi địa chỉ của Ipv6 có chiều dài là 128 bit. Do vậy mà khoảng không gian địa chỉ đủ lớn để thích hợp với việc tiếp tục phát triển mạng Internet toàn cầu trong nhiều năm tới. Định dạng của header: phần header của Ipv6 Datagram hoàn toàn khác so với header của Ipv4. Hỗu hết mọi trường trong header đều thay đổi; một vài cái được thay thế. Các header mở rộng. Không giống như Ipv4 mà sử dụng một định dạng header với tất cả các datagram, Ipv6 mã hoá thông tin trong từng header riêng biệt. Một datagram bao gồm một header cơ sở, tiếp đến là không hoặc nhiều header mở rộng và cuối cùng là phần dữ liệu. Hỗ trợ cho âm thanh và hình ảnh. Ipv6 gồm có cơ chế cho phép máy gửi và nhận thiết lập một đường truyền chất lượng cao thông qua phần cứng cơ sở và để kết hợp các datagram với được truyền đó. Mặc dù cơ chế đó chỉ dự định dùng cho các ứng dụng âm thanh và hình ảnh mà đòi hỏi hiệu suất cao, nhưng nó cũng có thể sử dụng để kết hợp các datagram với đường truyền chi phí thấp. Giao thức có thể co dãn. không giống như Ipv4, Ipv6 không chỉ ra tất cả các đặc tính có thể của giao thức. Thay vào đó người thiết kế phải cung cấp một cơ chế cho phép máy gửi thêm các thông tin cần thiết vào một datagram. Cơ chế mở rộng này làm cho Ipv6 linh hoạt hơn so với Ipv4, và điều này có nghĩa là các đặc tính mới có thể được thêm vào thiết kế khi cần. II. Định dạng Datagram của Ipv6 Như trên hình 22 minh hoạ, một Ipv6 Datagram bắt đầu với phần header cơ sở tiếp đến có thể không hoặc có nhiều các header mở rộng, và cuối cùng là phần dữ liệu. Tuỳ chọn Vùng dữ liệu Header mở rộng N ... Header mở rộng 1 Header cơ sở Hình 22. mẫu chung một Ipv6 Datagram. Các header mở rộng là tuỳ chọn – datagram nhỏ nhất có header cơ sở tiếp đến là vùng dữ liệu. Mặc dù đã minh hoạ cấu trúc chung của một datagram, nhưng các trường trong hình vẽ vẫn chưa được vẽ chi tiết. Đặc biệt, một vài header mở rộng có kích thước lớn hơn header cơ sở trong khi một vài header khác có thể nhỏ hơn. Hơn nữa, trong nhiều datagram, kích thước của vùng dữ liệu nhỏ hơn kích thước của các header. Định dạng header cơ sở của Ipv6 Mặc dù header cơ sở của Ipv6 lớn gấp hai lần header của Ipv4 nhưng nó lại chứa ít thông tin hơn. Hình 23 minh hoạ định dạng đó. Như trên hình vẽ chỉ ra, hầu hết không gian của header dành cho hai trường nhận dạng máy gửi và máy nhận. Như trong Ipv4, trường SOURCE ADDRESS nhận dạng máy gửi và trường DESTINATION ADDRESS nhận dạng máy nhận. Mỗi địa chỉ chiếm 16 byte gấp 4 lần địa chỉ của Ipv4. 0 4 16 24 31 VERS FLOW LABEL NEXT HEADER PAYLOAD LENGTH HOP LIMIT SOURCE ADDRESS DESTINATION ADDRESS Hình 23. định dạng của một header cơ sở Ipv6. Cùng với các trường địa chỉ đích và nguồn, header cơ sở còn chứa 5 trường nữa. Trường VERS xác nhận dữ liệu đó là phiên bản 6. Trường PAYLOAD LENGTH tương tự như trường chiều dài của datagram của Ipv4. Không giống như Ipv4, trường PATLOAD LENGTH không chỉ chỉ ra kích thước của vùng dữ liệu kích thước đó bao gồm cả phần header. Trường HOP LIMIT tương tự như trường TIME-TO-LIVE của Ipv4. Ipv6 đặt là HOP LIMIT chính xác hơn – datagram sẽ bị huỷ bỏ nếu HOP LIMIT đếm đến giá trị 0 trước khi datagram đó đến được đích. Các trường còn lại trong phần header cần có những giải thích chi tiết hơn. Trường FLOW LABEL dự định để sử dụng cho các ứng dụng mới mà đòi hỏi hiệu suất cao. Nhãn này có thể dùng để gắn kết một datagram với một đường dẫn riêng. Nhãn này được chia thành 2 phần – một phần dùng để chỉ ra lớp truyền tải, và phần còn lại dùng để định nghĩa đường dẫn cụ thể. Lớp truyền tải chỉ ra các đặc điểm chung mà các datagram cần. Ví dụ, để gửi đi một sự tương tác (ví dụ như phím bấm hoặc chuyển động chuột), có thể dùng lớp truyền tải chung cho độ trễ thấp. để gửi đi âm thanh với thời gian thực qua một liên mạng, máy gửi có thể đòi hỏi phần cứng cơ sở thiết lập đường truyền có độ trễ nhỏ hơn 100 mili giây. Khi đường truyền được thiết lập, hệ thống mạng trả về một thẻ nhận dạng mà máy gửi đặt nó trong mỗi datagram để gửi đi theo đường truyền đó. Các router dùng giá tị trong trường FLOW LABEL để định tuyến datagram đó dọc theo đường truyền đã định trước. Trường NEXT HEADER dùng để chỉ ra kiểu thông tin theo sau phần header hiện tại. Ví dụ, nếu datagram gồm một header mở rộng, trường NEXT HEADER sẽ chỉ ra kiểu của header mở rộng. Nếu không có phần header mở rộng, trường NEXT HEADER sẽ chỉ ra kiểu dữ liệu chứa trong phần dữ liệu của datagram. Hình 24 minh hoạ khái niệm. TCP Data Base Header NEXT=TCP (a) TCP Data Route header NEXT=TCP Base Header NEXT=ROUTE (b) Hình 24. hai Ipv6 Datagram trong đó hình (a) gồm có phần header cơ sở và phần dữ liệu và hình (b) gồm có header cơ sở, header định tuyến, và dữ liệu. Trường NEXT HEADER trong mỗi header chỉ ra kiểu của phần tiếp theo. II. Ipv6 làm việc với nhiều header như thế nào Bởi vì chuẩn giao thức chỉ đưa ra một giá trị duy nhất cho mỗi kiểu header có thể, nên không bao giờ có sự nhập nhằng trong sự nhận dạng của trường NEXT HEADER. Máy nhận dùng trường NEXT HEADER trong mỗi header để xác định phần theo sau là gì. Nếu giá trị trong trường tường ứng bới kiểu của dữ liệu, máy nhận truyền datagram đó đến cho mođun phần mềm thực hiện xử lý dữ liệu. Nếu giá trị trong trường NEXT HEADER tương ứng với một header khác, phần mềm IP phân tích header và dịch nội dung của nó. Ngay khi nó kết thúc với một header, IP dùng trường NEXT HEADER để xác định phần sau header đó là dữ liệu hay là một header khác. Làm thế nào để phần mềm Ipv6 biết đâu là kết thúc của một header và bắt đầu một phần mới? Mỗi vài kiểu header có kích thước cố định. Ví dụ, header cơ sở có kích thước cố định chính xác là 40 byte. Để chuyển đến phần sau header cơ sở, phần mềm Ipv6 chỉ cần cộng thêm 40 vào địa chỉ của phần header cơ sở. Một vài header mở rộng không có kích thước cố định. Trong trường hợp đó, header phải có đủ thông tin để Ipv6 có thể xác định được đâu là kết thúc của header. Ví dụ, hình 25 minh hoạ dạng chung của của một header tuỳ chọn Ipv6 có chứa thông tin giống như phần tuỳ chọn trong datagram Ipv4. Phần header tuỳ chọn mở rộng minh hoạ một cách Ipv6 quản lý các header mà có kích thước không cố định. Khi biên soạn một datagram, máy gửi lưu trữ chiều dài của phần header tuỳ chọn trong trường HEADER LEN. Khi máy nhận bắt gặp một header tuỳ chọn mở rộng, nó dùng trường HEADER LEN để xác định vị trí tiếp theo của mục tiếp, và trường NEXT HEADER để xác định kiểu. 0 8 16 31 HEADER LEN NEXT HEADER Một hoặc nhiều tuỳ chọn Hình 25 phần header tuỳ chọn mở rộng Ipv6. Bởi vì kích thước của phần header tuỳ chọn có thể biến đổi trong mỗi datagram, trường HEADER LEN sẽ xác định chính xác chiều dài của nó. III. Sự phân đoạn Không giống như Ipv4 gồm có các trường cho sự phân mảnh trong mỗi header của datagram, Ipv6 để các thông tin về sự phân mảnh trong một header riêng. Hơn nữa, khi sự phân mảnh cần thiết, toàn bộ datagram gốc (gồm cả phần header gốc) sẽ được chia thành các phần nhỏ và đặt trong phần payload của các phân đoạn. một header cơ sở mới được tạo ra cho mỗi phân đoạn, và header mở rộng phân đoạn được chèn thêm vào để xác nhận đó là một phân đoạn. Hình 26 minh hoạ sự phân đoạn của Ipv6. P3 P2 P1 Base header Data (a) P1 Frag. 1 header New Base header (b) Frag. 2 header New Base header P2 Frag. 3 header New Base header P3 (c) (d) Hình 26. minh hoạ sự phân đoạn trong Ipv6. Datagram gốc gồm có header trong hình (a), được chia thành các phần nhỏ đặt trong phần payload của các phân đoạn hình b, c, d. Như trên hình vẽ, mỗi phân đoạn đều có kích thước nhỏ hơn datagram gốc. Với Ipv4, kích thước của phân đoạn được chọn là giá trị của đơn vị truyền cực đại (MTU) của mạng cơ sở mà phân đoạn đó cần truyền qua. Do vậy, phân đoạn cuối cùng có thể nhoe hơn các phân đoạn khác bởi vì nó chứa phần dữ liệu còn lại sau khi đã chia thành các phần có kích thước bằng giá trị MTU từ datagram gốc. Sự phân mảnh trong Ipv6 khác hẳn so với sự phân mảnh trong Ipv4. Nhớ lại rằng trong Ipv4, một router thcự hiện sự phân mảnh khi router đó nhận được một datagram qua lớn so với khả năng của mạng có thể truyền được nó. Trong Ipv6, máy trạm gửi có trách nhiệm cho sự phân mảnh. Do vậy, các máy trạm cần thiết chọn lựa một kích thước cho datagram mà không phải phân mảnh; các router dọc theo đường truyền nhận được một datagram lớn sẽ không thực hiện phân mảnh datagram đó. IV. Cơ chế địa chỉ của Ipv6 Giống nhưa Ipv4, Ipv6 thiết lập một địa chỉ duy nhất cho mỗi kết nối giữa một máy tính với mạng vật lý. Do vậy, nếu một máy tính (có thể là router) kết nối với 3 mạng vật lý, máy tính đó sẽ được thiết lập 3 địa chỉ. Cũng giống như Ipv4, Ipv6 chia địa chỉ thành 2 phần là phần đầu để xác nhận thuộc mạng nào và phần cuối để xác định máy tính cụ thể trên mạng đó. Mặc dù cũng có cùng cách tiếp cận về việc thiết lập địa chỉ cho máy tính, địa chỉ Ipv6 khác với Ipv4 trong một số cách. Thứ nhất, tất cả các chi tiết của địa chỉ là hoàn toàn khác. thứ hai, Ipv6 đưa ra một tập các địa chỉ đặc biệt khác hẳn so với các địa chỉ đặc biệt của Ipv4. Đặc biệt, Ipv6 không có địa chỉ đặc biệt cho việc truyền quảng bá trong một mạng cụ thể. Thay vào đó, mỗi địa chỉ Ipv6 thuộc một trong 3 kiểu cơ bản sau: Unicast: địa chỉ tương ứng của một máy tính đơn. Một datagram gửi đến địa chỉ này sẽ được truyền đi theo đường truyền ngắn nhất đến đích. Multicast: địa chỉ tương ứng với một tập các máy tính, có thể ở nhiều vị trí khác nhau; các thành viên thuộc tập hợp có thể thay đổi bất kỳ lúc nào. Khi một datagram được gửi đến địa chỉ này, Ipv6 sẽ chuyển một bản sao của datagram đó đến mọi thành viên thuộc tập hợp Cluster: địa chỉ tương ứng với một tập các máy tính mà có cùng phần đầu địa chỉ (ví dụ tất cả các máy cùng thuộc một phòng). Một datagram gửi đến địa chỉ này sẽ được định tuyến theo đường đi ngắn nhất và sau đó được truyền đến chính xác một trong tất cả các máy tính đó (ví dụ là máy tính gần máy gửi nhất). Nguyên nhân đưa ra địa chỉ cluster xuất phát từ việc muốn cho phép làm một bản sao của các dịch vụ. Ví dụ, một công ty đưa ra một dịch vụ trên một mạng có thiết lập địa chỉ cluster cho một vài máy tính mà tất cả đều cung cấp dịch vụ đó. Khi một người sử dụng gửi một datagram đến địa chỉ cluster, Ipv6 sẽ gửi datagram đó đến một trong các máy tính thuộc cluster đó. Nếu người sử dụng từ một vị trí khác gửi một datagram đến địa chỉ cluster, Ipv6 có thể chọn lựa để định tuyến datagram đến các thành viên khác nhau thuộc cluster cho phép cả hai máy tính có thể xử lý các yêu cầu đồng thời. Phân cách địa chỉ hệ 16 của Ipv6 Mặc dù một địa chỉ chiếm 128 bit có thể thích hợp với sự phát triên của Internet, nhưng việc viết chúng quả thật rất cồng kềnh. Ví dụ, một địa chỉ 128 bit viết dưới dạng chấm cách thập phân: 105.220.136.100.255.255.255.255.0.0.18.128.140.10.255.255 để giảm số ký tự dùng để viết một địa chỉ, người thiết kế Ipv6 đã đưa ra một dạng cú pháp biểu diễn gọn hơn gọi là phân cách thập lục phân bằng dấu hai chấm (colon hexadecimal notation) trong đó mỗi nhóm 16 bit được viết trong hệ 16 và phân cách bằng dấu hai châm. Ví dụ, khi biểu diễn địa chỉ trên trong dạng này sẽ là: 69DC:8864:FFFF:FFFF:0:1280:8C0A:FFFF Như trong ví dụ ta thấy, phân cách thập lục phân bằng dấu hai chấm cần ít ký tự để biểu diễn một địa chỉ hơn. Cùng với việc tối ưu hoá gọi là nén số 0 (zero compression) còn có thể làm giảm được kích thước nữa. Sự nén số 0 là việc thay thể một dãy các số 0 bằng hai dấu hai chấm. Ví dụ, địa chỉ là: FF0C:0:0:0:0:0:0:B1 có thể viết lại là: FB0C::B1 Không gian của địa chỉ Ipv6 lớn và cơ chế đánh địa chỉ dùng nén số 0 đặc biệt quan trong bởi người thiết kế cho rằng có nhiều địa chỉ Ipv6 có chứa một dãy các số 0. Đặc biệt, để giúp cho việc dễ dàng chuyển đổi sang giao thức mới, người thiết kế thực hiện việc ánh xạ địa chỉ Ipv4 hiện tại thành địa chỉ Ipv6. Bất kỳ địa chỉ Ipv6 nào mà bắt đầu với 98 bit 0 là có chứa địa chỉ Ipv4 ở 32 bit cuối. Phần VII Tcp_dịch vụ truyền tin cậy Lời giới thiệu Trong phần trước đã nói đến dịch vụ truyền gói tin không liên kết dùng IP và các giao thức đi kèm dùng để thông báo lỗi. Trong phần này chúng ta sẽ xem xét đến TCP, giao thức truyền thông chính trong bộ giao thức TCP/IP, và giải thích làm thế nào mà giao thức đó đem lại sự truyền tin đáng tin cậy. TCP đạt được một nhiệm vụ mà dường như không thể làm được đó là nó sử dụng dịch vụ datagram không tin cậy đưa ra bởi IP khi truyền dữ liệu đến máy tính khác, nhưng cung cấp một dịch vụ truyền dữ liệu đáng tin cậy đến các chương trình ứng dụng. TCP phải khắc phục các sự mất hay độ trễ trong liên mạng để tạo ra khả năng truyền tin hiệu quả và nó phải thực hiện làm sao để không làm quá tải mạng và các router. Sau khi xem xét các dịch vụ mà TCP đem lại cho các ứng dụng, trong phần này sẽ xem xét đến các kỹ thuật TCP sử dụng để đạt được độ tin cậy. I. Sự cần thiết truyền tin đáng tin cậy Những người lập trình luôn phải nghĩ rằng độ tin cậy là yếu tố cơ bản trong một hệ thống máy tính. Ví dụ, một người lập trình có thể được yêu cầu để xây dựng một chương trình ứng dụng để truyền dữ liệu đến thiết bị vào ra như là máy in. Chương trình ứng dụng chỉ cần viết dữ liệu vào thiết bị nhưng không cần kiểm tra dữ liệu đó có đến đầy đủ hay không. Thay vào đó, chương trình ứng dụng dựa vào hệ thông máy tính bên dưới để đảm bảo độ tin cậy khi truyền, hệ thống đảm bảo rằng dữ liệu sẽ không bị mất, trùng lặp hoặc truyền sai thứ tự. Phần mềm TCP cần thiết ở mỗi đầu cuối của kết nối ảo, nhưng không có trên các router kết nối. Từ góc độ của TCP, toàn bộ liên mạng là một hệ thống truyền thông thực hiện chấp nhận và chuyển giao các thông điệp mà không thay đổi hoặc tác động đến nội dung. Giao thức truyền thông như là TCP phải được thiết kế một cách cẩn thận để có thể đạt được độ tin cậy. Vấn đề chính là ở chỗ: sự chuyển giao không tin cậy là do hệ thống truyền thông bên dưới và máy tính bị khởi động lại. Để hiểu phạm vị của sự vấn đề, hãy xem xét một tình huống có hai chương trình ứng dụng hình thành kết nối TCP, giao tiếp với nhau, đóng kết nối và sau đó lại hình thành kết nối mới. Bởi vì bất kỳ thông điệp nào cũng có thể bị mất, trùng lặp, trễ hoặc truyền sai thứ tự, các thông điệp từ lần kết nối thứ nhất có thể bị trùng lặp và bị trễ khá lâu đến khi lần kết nối thứ hai được thiết lập. Các thông điệp phải rõ ràng, hoặc giao thức phải chấp nhận thông điệp trùng lặp từ lần kết nối cũ và cho phép chúng can thiệp vào kết nối mới. Hệ thống máy tính bị khởi động lại là một trong những thách thức lớn khác với những người thiết kế giao thức TCP. Tưởng tượng một tình huống trong đó hai chương trình ứng dụng thiết lập một kết nối và sau đó một trong hai máy tính bị khởi động lại. Mặc dù phần mềm giao thức trên máy tính bị khởi động lại không biết về sự kết nối nữa, nhưng phần mềm giao thức trên máy tính mà không bị khởi động lại vẫn cho rằng kết nối vẫn tồn tại. Hơn nữa, gói tin trùng lặp mà bị trễ gây ra một sự thách thức khó khăn đặc biệt bởi vì giao thức phải có khả năng loại bỏ các gói tin đó. II. Sự truyền lại và mất các gói tin Làm thế nào TCP đạt được độ tin cậy? Câu trả lời khá phức tạp bởi vì TCP sử dụng các kỹ thuật khá đa dạng để thực hiện các phần khác nhau của sự cố. Một trong những kỹ thuật quan trọng nhất đó là kỹ thuật truyền lại. Khi TCP truyền dữ liệu, máy gửi khắc phục các gói tin bị mất bằng việc thực hiện truyền lại. Cả hai bên giao tiếp phải tham gia thực hiện. Khi TCP nhận dữ liệu, nó gửi một thông báo nhận được (acknowledgement) trở lại cho máy gửi. Mỗi khi nó gửi đi dữ liệu, TCP bắt đầu khởi tạo một đồng hồ. Nếu thời gian hết trước khi một acknowledgement đến, máy gửi sẽ truyền lại dữ liệu. Hình dưới đây minh hoạ sự truyền lại. Sự kiện tại máy trạm 1 Sự kiện tại máy trạm 2 Gửi thông điệp 1 Nhận thông điệp 1 Gửi ack 1 Nhận ack 1 Gửi thông điệp 2 Nhận thông điệp 2 Gửi ack 2 Nhận ack 2 Gửi thông điệp 3 Mất gói tin Thời gian truyền lại hết Gửi lại thông điệp 3 Nhận thông điệp 3 Gửi ack 3 Nhận ack 3 Hình 28. ví dụ về sự truyền lại. Các mục bên trái tương ứng với sự kiện trong một máy tính truyền dữ liệu, mục bên phải tương ứng với các sự kiện trong máy tính nhận dữ liệu, và thời gian đi xuống. Máy gửi truyền lại dữ liệu bị mất. Cơ chế truyền lại của TCP là chìa khoá cho sự thành công của nó bởi vì nó thực hiện được các giao tiếp qua mạng bất kỳ và cho phép nhiều chương trình ứng dụng có thể giao tiếp đồng thời. Ví dụ, một ứng dụng có thể gửi dữ liệu qua kênh vệ tinh đến một máy tính ở nước khác, trong khi một ứng dụng khác truyền dữ liệu qua mạng cục bộ đến một máy tính trong phòng cạnh đó. TPC phải sẵn sàng để truyền lại bất kỳ thông điệp nào bị mất trên cả hai kết nối đó. Câu hỏi đặt ra là: TCP nên chờ bao lâu trước khi truyền lại? Các acknowledgement từ một máy tính trong mạng cục bộ thì đến trong vòng vài phần nghìn giây. Nếu chờ qua lâu sẽ làm cho mạng được rỗi và không đạt được thông lượng cực đại. Do vậy, trong mạng cục bộ, TCP không nên chờ một thời gian dài trước khi truyền lại. Tuy nhiên, việc truyền lại trong một vài phần nghìn giây sẽ không tốt với mạng khoảng cách lớn kết nối bằng vệ tinh bởi vì sự truyền đi không cần thiết sẽ tiêu tốn dải tần và thông lượng của mạng bị giảm đi. TCP đối mặt với một thách thức khó khăn đó là phải phân biệt giữa truyền một đích khoảng cách xa và trong cục bộ: quá nhiều datagram có thể gây ra tắc nghẽn mạng. thực tế, tổng thời gian yêu cầu để truyền đi một thông điệp và nhận một acknowledgement có thể tăng hoặc giảm phụ thuộc vào độ lớn của cường độ trong một vài mili giây. Tóm lại: Độ trễ cho dữ liệu truyền đến đích và một acknowledgement gửi trở lại phụ thuộc vào cường độ trong mạng cũng như là khoảng cách đến đích. Bởi vì TCP cho phép nhiều chương trinh ứng dụng giao tiếp với nhiều đích đồng thời và bởi vì các điều kiện về cường độ trên mạng ảnh hưởng đễn độ trễ, nên TCP phải thực hiện các độ trễ khác nhau mà có thể thay đổi nhanh chóng. III. Sự truyền lại thích hợp Trước khi TCP được phát minh, giao thức truyền thông dùng giá trị độ trễ cố định để truyền lại – người thiết kế giao thức hoặc quản lý mạng chọn lựa một giá trị đủ lớn cho độ trễ mong chờ. Những người thiết kế làm việc trên TCP nhận ra rằng thời gian hết cố định sẽ làm việc không tốt với các liên mạng. Do vậy, họ chọn lựa việc tạo ra sự truyền lại của TCP có khả năng thích nghi. Đó là TCP điều khiển độ trễ của kết nối hiện thời, và có những thay đổi thích hợp thời gian truyền lại để thích nghi với những điều kiện thay đổi. Làm thế nào để TCP có thể điều khiển được độ trễ? Thực tế TCp không thể biết chính xác độ trễ của từng phần thuộc liên mạng tại mọi thời điểm. Thay vào đó TCP ước tính độ trễ khứ hồi (round-trip delay) cho mỗi kết nối tích cực bằng cách đo thời gian cần thiết để nhận được sự đáp lại. Mỗi khi nó gửi đi một thông điệp, TCP ghi nhận thời điểm mà thông điệp đó gửi đi. Khi một sự trả lời đến, TCP trừ thời gian thông điệp được gửi với thời gian hiện tại để nhận được giá trị ước tính cho độ trễ khứ hồi đối với kết nối đó. Khi nó gửi đi các gói tin dữ liệu và nhận được các acknowledgement, TCP tạo ra một dãy các giá trị ước tính độ trễ khứ hồi và dùng hàm thống kê để tính ra giá trị trung bình. Cùng với giá trị trung bình, TCP lưu giữa một ước lượng của biến thể, và dùng sự kết hợp tuyến tính của giá trị trung bình ước tính và biến thể để làm giá trị cho sự truyền lại. Kinh nghiệm đã cho thấy rằng sự truyền lại thích nghi TCP làm việc rất tốt. Dùng biến thể giúp cho TCP phản ứng nhanh chóng khi độ trễ tăng bởi số lượng lớn các gói tin. Dùng giá trị trung bình giúp cho TCP khởi tạo lại giá trị thời gian truyền lại nếu độ trễ trả về một giá trị thấp hơn sau khi có sự quá tải tạm thời. Khi độ trễ duy trì không đổi, TCP điều chỉnh thời gian truyền lại đến một giá trị lớn hơn độ trễ khứ hồi một chút. Khi độ trễ bắt đầu biến đổi, TCP điều chỉnh thời gian truyền lại đến giá trị lớn hơn nhiều giá trị trung bình để có thể chịu được khả năng cực đại. Để hiểu mà sự truyền lại thích nghi giúp cho TCP đạt được thông lượng cực đại trên mỗi kết nối, hãy xem xét một trường hợp bị mất gói tin trong hai kết nối mà có độ trễ khứ hồi khác nhau. Ví dụ, hình trên minh hoạ sự truyền tin trên hai kết nối đó. IV. So sánh giữa thời gian truyền lại Est 1 Est 1 Est 2 Est 2 Time out Packet lost Packet lost Time out Hình 29. Hết thời gian và sự truyền lại trên hai kết nối mà có độ trễ khứ hồi khác nhau. TCP tối ưu thông lượng bằng việc dùng một ước tính khứ hồi để tính thời gian truyền lại. Như trên hình vẽ, TCP thiết lập thời gian hết truyền lại lớn hớn độ trễ khứ hồi. Nếu độ trễ là lớn TCP dùng thơì gian không tính truyền lại lớn hơn; nếu độ trễ nhỏ, TCP dùng thời gian không tính nhỏ. Mục đích là để chờ đủ lớn để xác định một gói tin có bị mất mà không bị chờ lâu hơn cần thiết. V. Bộ đệm, điều khiển luồng và cửa sổ TCP dùng cơ chế cửa sổ (window) để điều khiển luồng dữ liệu. Khi một kết nối được thiết lập, mỗi đầu kết nối cấp phát một vùng đệm để lưu giữ các dữ liệu đến, và gửi đi kích thước của vùng đệm đến đầu kia. Khi dữ liệu đến, máy nhận gửi đi các acknowledgement và chúng cũng chỉ ra kích thước vùng đệm còn lại. Khối lượng buffer sẵn có tại bất kỳ thời điểm gọi là cửa sổ, và một sự thông báo về kích thước của nó gọi là một thông báo cửa sổ (window advertisement). Một máy nhận gửi đi một thông báo cửa sổ trong mỗi acknowledgement. Nếu ứng dụng nhận có thể đọc dữ liệu ngay khi đến, máy nhận sẽ gửi một thông báo giá trị cửa sổ dương theo mỗi acknowledgement. Tuy nhiên, nếu bên gửi thực hiện nhanh hơn bên nhận (có thể do tốc độ CPU nhanh hơn), dữ liệu sẽ đầy vùng đệm của máy nhận làm cho máy nhận có cửa sổ là 0. Máy gửi khi nhận được thông báo giá trị cửa sổ là 0 sẽ phải dừng gửi đến khi máy nhận gửi trở lại một thông báo giá trị cửa sổ dương. Trong hình vẽ, máy gửi dùng một phân đoạn kích thước cực đại là 1000 byte. Sự truyền đi bắt đầu khi máy nhận thông báo một kích thước cửa sổ ban đầu là 2500 byte. Máy gửi ngay lập tức truyền đi 3 đoạn, hai đoạn 1000 byte và một đoạn 500 byte. Khi các đoạn đó đến, máy nhận tạo ra một acknowledgement với kích thước cửa sổ giảm xuống bằng lượng dữ liệu đến. Trong ví dụ này, 3 đoạn đầu tiên điền vào vùng đệm của máy nhận nhanh hơn tốc độ ứng dụng có thể tiêu thụ dữ liệu. Do vậy, cửa sổ thông báo sẽ tiến tới 0, và máy gửi không thể truyền thêm dữ liệu nữa. Sau khi ứng dụng nhận tiêu thụ dữ liệu 2000 byte, máy nhận gửi đi một acknowledgement để thông báo kích thước cửa sổ là 2000 byte. Kích thước của cửa sổ luôn được thông báo lớn hơn dữ liệu được chấp nhận, do vậy, máy nhận đang thông báo rằng nó chấp nhận 2000 byte vượt quá 2500 byte nó đã nhận. Máy gửi đáp lại bằng việc truyền thêm hai đoạn nữa. Khi mỗi đoạn đến, máy nhận gửi một acknowledgement với kích thước cửa sổ giảm đi 1000 byte. Lặp lại lần nữa, kích thước cửa sổ giảm tới 0, làm cho máy gửi dừng việc truyền tin. Cuối cùng, ứng dụng máy nhận thu thập được dữ liệu, và TCP nhận truyền đi một ack với kích thước cửa sổ dương. Nếu máy gửi có dữ liệu chờ để gửi, máy gửi có thể tiếp tục quá trình truyền một đoạn khác. VI. Sự thống nhất 3 bên Để đảm bảo rằng các kết nối được thiết lập hoặc kết thúc một cách an toàn, TCP dùng một cách bắt tay 3 bên trong đó 3 thông điệp sẽ được trao đổi. Các nhà khoa học đã chứng minh rằng sự trao đổi 3 bên là cần thiết và đủ để đảm bảo rằng sự thống nhất này là rõ ràng bất chấp sự mất gói tin, trùng lặp và độ trễ. TCP dùng thuật ngữ đoạn đồng bộ (synchronization segment) để miêu tả các thông điệp trong bắt tay 3 bên dùng để tạo ra kết nối, và thuật ngữ FIN segment (finish) để miểu tả các thông điệp trong bắt tay 3 bên khi đóng kết nối. Hình dưới minh hoạ bắt tay 3 bên dùng để đóng một kết nối. Sự kiện ở máy trạm 1 Sự kiện ở máy trạm 2 Gửi đi FIN+ACK Nhận FIN+ACK Gửi đi FIN+ACK Nhận FIN+ACK Gửi ACK Nhận ACK Hình 30. bắt tay 3 bên dùng để đóng kết nối. Các ack gửi đi theo mỗi hướng để đảm bảo rằng tất cả các dữ liệu đã đến trước khi kết nối đó kết thúc. Giống như các thông điệp khác, TCP tủyền lại các đoạn SYN hoặc FIN bị mất. Hơn nữa, sự bắt tay đảm bảo TCP không mở hoặc đóng một kết nối chỉ khi cả hai bên đều tương tác với nhau. Một phần để tạo ra bắt tay 3 bên dùng để tạo ra một kết nối đòi hỏi mỗi đầu tạo ra một số 32 bit ngẫu nhiên. Nếu một ứng dụng cố gắng thiết lập một kết nối TCP mới sau khi một máy tính khởi động lại, TCP chọn một số ngẫu nhiên mới. Bởi vì mỗi kết nối mới nhận một dãy giá trị ngẫu nhiên mới nên một cặp ứng dụng có thể dùng TCP để giao tiếp, đóng kết nối và sau đó thiết lập một kết nối mới mà không bị các gói tin trùng lặp hoặc trễ. VII. Điều khiển tắc nghẽn Một trong những lĩnh vực thú vị nhất của TCP đó là cơ chế điều khiển tắc nghẽn. Trong hầu hết liên mạng hiện đại, mất gói tin (hoặc trễ trong thời gian dài) có thể bị gây ra bởi tắc nghẽn nhiều hơn là do phần cứng trục trặc. Thú vị là các giao thức truyền thông thực hiện sự truyền lại có thể còn làm nghiêm trọng sự tắc nghẽn bởi việc tống thêm nhiều bản sao của một thông điệp vào mạng. Nếu tắc nghẽn gây ra bị truyền lại qua nhiều, toàn bộ hệ thống có thể tới một tình trạng sụp đổ tắc nghẽn (congestion collapse), tương tự như tắc nghẽn giao thông trên đường cao tốc. Để tránh sự cố này, TCP luôn luôn dùng gói tin bị mất để đo độ tắc nghẽn của mạng, và đáp lại bằng việc giảm tốc độ truyền lại dữ liệu. Mỗi khi một thông điệp bị mất, TCP bắt đầu điều khiển tắc nghẽn. Thay vì truyền lại dữ liệu đủ để điền đầy vùng đệm của máy nhận, TCP bắt đầu bằng việc gửi đi một thông điệp đơn có chứa dữ liệu. Nếu ack đến mà không có thông tin bị mất, TCP sẽ gấp đôi lượng dữ liệu gửi đi, và gửi đi 2 thông điệp nữa. Nếu có ack trả lời cho 2 thông điệp đó, TCP sẽ gấp 4 lần lượng dữ liệu và cứ như vậy. Sự tăng theo hàm mũ đến khi TCP gửi được một nửa kích thước của cửa sổ máy nhận và nó sẽ giảm dần tốc độ tăng để truyền. Cơ chế điều khiển tắc nghẽn của TCP đáp ứng rất tốt sự tăng nhanh của liên mạng. Bằng cách giảm nhanh chóng, TCp có thể tránh được sự tắc nghẽn. Hơn nữa, bởi vì nó tránh thêm vào sự truyền lại với tắc nghẽn của liên mạng, cơ chế điều khiển tắc nghẽn của TCP ngăn ngừa được sự sụp đổ do tắc nghẽn. VIII. Định dạng một đoạn TCP TCP dùng một định dạng cho tất cả các thông điệp, bao gồm các thông điệp có chứa dữ liệu, ack và thông điệp bắt tay 3bên để khởi tạo hoặc kết thúc một kết nối. TCP dùng thuật ngữ phân đoạn (segment) để chỉ một thông điệp: Hình 20.6 minh hoạ định dạng của phân đoạn đó. DESTINATION PORT SOURCE PORT SEQUENCE NUMBER 0 4 10 16 24 31 ACKNOWLEDGEMENT NUMBER HLEN NOT USED CODE BITS WINDOW URGENT POINTER CHECK SUM BEGIN NING OF DATA Hình 31. định dạng một phân đoận TCP. Mỗi thông điệp gửi từ TCP trên một máy đến TCP trên máy khác dùng định dạng này bao gồm cả dữ liệu và acknowledgement Để hiểu định dạng của phân đoạn, cần nhớ lại rằng kết nối TCP có chứa hai luồng dữ liệu theo hai hướng ngược nhau. Nếu ứng dụng tại mỗi bên cùng truyền dữ liệu đồng thời, TCP có thể gửi một phân đoạn có chứa acknowledgement cho dữ liệu đến, một thông báo cửa sổ chỉ ra lượng cùgn đệm còn trống cho dữ liệu đến và dữ liệu đi. Do vậy, một vài trường trong phân đoạn để chỉ luồng dữ liệu truyền một hướng, trong khi các trường khác chỉ luồng dữ liệu truyền theo chiều ngược lại. Khi một máy tính gửi đi một phân đoạn, trường ACKNOWLEDGEMENT NUMBER và trường WINDOW chỉ dữ liệu truyền đến: trường ACK NUMBER chỉ ra số thứ tự của dữ liệu nhận được và trường WINDOW chỉ ra vùng trống còn lại của vùng đệm. Trường SEQUENCE NUMBER chỉ dữ liệu đi. Nó chứa số thứ tự của dữ liệu được truyền đi trong phân đoạn. Máy nhận dùng số thứ tự đó để sắp xếp lại các phân đoạn mà đến sai thứ tự và để tính số ack. Trường DESTINATION PORT xác định chương trình ứng dụng nào trên máy nhận sẽ nhận dữ liệu này, ngược lại trường SOURCE PORT xác nhận ứng dụng nào gửi dữ liệu đi. Cuối cùng trường CHECKSUM có chứa giá trị checksum của toàn bộ phân đoạn TCP gồm phần header và dữ liệu. Mục lục

Các file đính kèm theo tài liệu này:

  • doc77056.DOC