TCP là giao thức cung cấp các dịch vụ song công hướng liên kết giữa các host trên mạng. Có thể xem một cuộc nối TCP tương tự như một cuộc gọi trên mạng điện thoại nhưng ở đây các cuộc nối mang tính ảo.
Cũng giống như UDP, TCP sử dụng cổng giao thức để xác định đích cuối cùng trong một máy. Mỗi cổng được gán cho một giá trị số nguyên nhỏ, và đây là định danh của nó. TCP định nghĩa một điểm cuối là một cặp số nguyên (địa chỉ IP của một máy, cổng). Ví dụ, điểm cuối (128.10.2.3, 25) xác định cổng TCP 25 trên máy có địa chỉ IP là 128.10.2.3. TCP xác định một kết nối bằng một cặp điểm cuối. Một cổng TCP cho trước có thể được dùng chung bởi nhiều kết nối.
Một cuộc nối ảo phải được thiết lập giữa hai host trước khi quá trình truyền tin song công tiến hành. Sau khi thiết lập cuộc nối, các cổng cần truyền tin được xác định hình thành nên một mạch ảo thực sự và trên mạch ảo này, truyền tin song công được tiến hành. Mạch ảo được duy trì trong suốt quá trình cuộc nối còn tồn tại dù có lúc không có dữ liệu truyền trên mạch, dẫn đến lãng phí tài nguyên trên mạng. Khi kết thúc, mạch ảo được xóa và các tài nguyên trên mạng được giải phóng.
105 trang |
Chia sẻ: maiphuongdc | Lượt xem: 4857 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Đồ án Giao thức TCP/IP và ứng dụng, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
fragment Offset” và Length sẽ quyết định độ dài của từng mảnh. Cờ “More Fragment” chỉ ra mảnh cuối cùng thuộc datagram. Trường này chỉ có ý nghĩa đối với việc tái hợp datagram.
Trường “Identification” được sử dụng để phân biệt các mảnh của một datagram này so với các mảnh của các datagram khác. Module giao thức đầu tiên của datagram sẽ thiết lập trường Identification đến một giá trị phải là duy nhất giữa trạm nguồn và trạm đích trong thời gian datagram còn tồn tại trên mạng. Module giao thức ban đầu của toàn bộ datagram sẽ thiết lập cờ MF về 0 và cờ FO(Fragment Offset) về 0.
Để phân mảnh một datagram dài, thì module IP sẽ tạo ra 2 datagram mới, copy nội dung của các Field s mào dầu của datagram đưa vào 2 phần header mới. Dữ liệu của datagram dài sẽ chia thành hai phần dựa trên đơn vị 8 octects (phần thứ hai có thể không là bội số của 8 octects). Phần thứ nhất của datagram dài được đặt vào datagram đầu tiên, cờ MF=1. Phần dữ liệu thứ hai được đặt vào mảnh thứ hai, cờ MF có giá trị giống với giá trị của MF thuộc datagram dài. Nếu ta gọi số lượng của các khối 8 octect trong phần dữ liệu của mảnh đầu tiên là NFB(Number of Fragment Blocks) thì trường FO của mảnh thứ hai có giá trị là FO của datagram dài cộng với số NFB.
Thủ tục phân mảnh trên có thể áp dụng cho n mảnh chứ không nhất thiết phải hai mảnh như mô tả.
Một ví dụ minh họa cho thấy việc phân đoạn :
Hinh 2.13. Qúa trình phân đoạn.
Cả hai máy tính đều nối trực tiếp vào Ethernet có MTU (Maximum Transfer Unit: đơn vị truyền tải tối đa của của mạng) là 1500 octect. Như thế cả hai máy đều có thể gởi các datagram dài đến 1500 octect . Tuy nhiên con đường nối chung bao gồm một mạng có MTU là 600 Octect. Nếu máy A gởi cho máy B một datagram lớn hơn 620 octect, bộ định tuyến R1 phân đoạn datagram. Tương tự máy B gởi một datagram lớn cho máy A, bộ định tuyến R2 sẽ phân đoạn datagram.
Giao thức IP không giới hạn datagram có kích thước nhỏ và cũng không đảm bảo rằng datagram lớn sẽ được chuyển mà không bị phân đoạn. Máy nguồn có thể chọn kích thước của datagram bất kỳ mà nó nghĩ là hợp lý. Việc phân đoạn và tái hợp lại sẽ tự động xảy ra không có sự tác động đặt biệt gì từ máy nguồn. Đặc tả của IP phát biểu rằng các bộ định tuyến phải chấp nhận datagram có kích thước cho tới kích thước lớn nhất của các MTU của các mạng mà nó được nối vào.
+ Sự tái hợp
Để tái hợp các mảnh của một datagram, Module IP kết hợp các mảnh datagram mà có cùng giá trị ở 4 trường là Identification, Source Address, Destination Address và Protocol. Sự kết hợp này được thực hiện bằng thay thế phần dữ liệu của mỗi mảnh theo vị trí tương đối đượoc chỉ ra bởi trường FO trong header của các mảnh. Mảnh đầu tiên sẽ có giá trị FO = 0 và mảnh cuối cùng có cờ MF = 0.
Một câu hỏi được đặt ra là: các mảnh nên được tái hợp lại sau khi đi qua một mạng, hay các Fragment được chuyển đến máy cuối cùng trước khi kết hợp lại?. trong một TCP/IP Internet, một khi một datagram được phân đoạn, các mảnh sẽ di chuyển như các datagram riêng biệt cho đến đích cuối cùng nơi mà chúng phải được kết hợp lại. Giữ nguyên cả mảnh đến đích cuối cùng có hai nhược điểm: Trước hết, vì datagram không được tập hợp lại ngay sau khi đi qua một mạng có MTU nhỏ, các mảnh nhỏ phải được chuyển tải từ lúc phân đoạn đến đích cuối cùng. Việc kết hợp datagram tại đích cuối cùng có thể không hiệu quả: kể từ nơi phân đoạn các mảnh nhỏ có thể đi qua các mạng có MTU lớn. Thứ hai: nếu có một mảnh bị thất lạc, datagram không thể kết hợp lại được. Máy nhận sẽ bắt đầu bộ điếm kết hợp khi nhận được mảnh đầu tiên. Nếu thời hạn đếm đã hết trước khi tất cả các mảnh đến được, máy nhận sẽ huỷ bỏ các mảnh đã nhận mà không xử lý gì datagram. Như vậy xác suất mất datagram sẽ tăng lên khi việc phân đoạn xảy ra vì việc mất một mảnh sẽ dẫn đến mất toàn bộ datagram ban đầu.
Mặc cho những khuyết điểm nhỏ, thực hiện vịec kết hợp lại tại đích cuối cùng vẫn là việc tốt. Nó cho phép các mảnh chuyển tải một cách độc lập và không đòi hỏi bộ định tuyến trung gian phải lấy lại và kết hợp các mảnh.
Trong mạng Intranet thì các mảnh sẽ được tái hợp lại ngay các trạm trung chuyển để được dữ liệu ban đầu, sau đó việc phân đoạn được thực hiện lại để phù hợp với mạng mới.
2.5.2.2. Định tuyến trên liên mạng.
Chúng ta biết rằng tất cả các dịch vụ Internet được xây dựng dựa trên hệ thống phát chuyển gói không kết nối, không tin cậy. Và đơn vị cơ bản của truyền tải TCP/IP internet là IP datagram. Phần này sẽ mô tả cách mà gateway định tuyến các IP datagram và phát chuyển chúng đến đích cuối cùng.
- Định tuyến trong Internet.
Trong hệ thống chuyển mạch gói, định tuyến để chỉ tiến trình chọn lựa con đường để gởi gói dữ liệu qua đó, và bộ định tuyến (Router) để chỉ bất kỳ máy tính nào cũng thực hiện việc chọn lựa này.
Việc định tuyến xảy ra tại một số mức. Ví dụ: bên trong một mạng diện rộng có nhiều kết nối vật lý giữa các bộ chuyển gói (packet switch). Bản thân mạng có trách nhiệm định tuyến các gói dữ liệu từ khi chúng vào mạng cho đến khi chúng rời mạng. Việc định tuyến nội bộ là hoàn toàn tự bao hàm trong mạng, các máy bên ngoài không thể tham gia vào những quyết định, chúng đơn thuần xem mạng như một thực thể chuyển phát gói.
Chúng ta nhớ rằng mục đích của IP là tạo ra một mạng ảo cung cấp dịch vụ phát chuyển IP datagram không kết nối. Vì thế chúng ta sẽ tập trung vào định tuyến Internet hay định tuyến IP. Định tuyến IP chọn đường dẫn để gởi datagram qua nó. Thuật toán định tuyến IP phải chọn cách để gởi datagram qua nhiều mạng vật lý.
Cả hai host và gateway đếu tham gia trong việc định tuyến IP. Khi một chương trình ứng dụng trên một host muốn thông tin, thì giao thức TCP phát ra một hoặc nhiều datagram. Trạm host phải quyết định định tuyến khi nó chọn được nơi để gởi datagram. Gateway khác host ở chỗ Gateway được nối với nhiều mạng vật lý còn host chỉ nối trực tiếp với một mạng vật lý.
-Định tuyến IP theo bảng.
Thông thường thuật toán định tuyến IP sử dụng bảng định tuyến Internet trên mỗi máy để lưu trữ thông tin về các đích có thể đến và cách để đến các đích đó. Bởi vì cả hai Host và Gateway đều định tuyến datagram nên cả hai đều có bảng định tuyến. Bất cứ khi nào phần mềm định tuyến Ip trên host hoặc Gateway cần truyền các gói datagram thì nó sẽ tham khảo vào bảng định tuyến để nó quyết định nơi nó cần gởi.
Một điều đưa ra là cái gì sẽ được lưu trong bảng định tuyến?. Nếu mỗi bảng định tuyến đều chứa thông tin về địa chỉ đích thì nó không thhể giữ thông tin trong bảng luôn được cập nhật. Hơn nữa, số lượng trạm đích quá lớn nên các máy không có đủ không gian để lưu trữ thông tin.
Để làm cho bảng định tuyến nhỏ và việc quyết định định tuyến có hiệu quả, người ta dùng phương pháp che dấu thông tin, phần mềm định tuyến IP chỉ giữ thông tin về các địa chỉ mạng đích và không lưu trữ thông tin về các địa chỉ của từng máy.
-Định tuyến với địa chỉ IP.
Chúng ta cần hiểu một điều quan trọng là ngoại trừ việc giảm bớt thời gian sống và tính lại checksum, định tuyến IP không làm thay đổi datagram ban đầu. Cụ thể, các địa chỉ datagram nguồn và đích sẽ không bị thay đổi. Chúng luôn xác định địa chỉ IP nguồn và địa chỉ IP đích cuối cùng. Khi IP thực hiện thuật giải định tuyến, nó chọn một địa chỉ IP mới giống với địa chỉ gateway. Tuy nhiên nếu datagram phân phát trực tiếp thì địa chỉ mới sẽ giống với địa chỉ đích cuối cùng.
Địa chỉ IP được chọn bởi thuật toán định tuyến gọi là địa chỉ trạm kế tiếp bởi vì đây là địa chỉ mà datagram phải được gởi đến. Sau khi thực hiện thuật toán định tuyến, IP gởi datagram và địa chỉ trạm kế tiếp đến phần mềm giao tiếp mạng đảm trách cho mạng vật lý mà datagram phải được gởi qua đó. Phần mềm giao tiếp mạng liên kết địa chỉ trạm kế với địa chỉ vật lý, định dạng khung sử dụng địa chỉ vật lý, đặt datagram vào phần dữ liệu của khung và gởi. Sau khi sử dụng địa chỉ trạm kế tiếp để tìm địa chỉ vật lý, phần mềm giao tiếp mạng sẽ hủy bỏ địa chỉ trạm kế tiếp đã sử dụng ở trên.
Việc IP tránh sử dụng địa chỉ vật lý để tính toán là vì để kiểm tra lỗi vấn đề định tuyến, người quản lý mạng cần phải thường xuyên kiểm tra bảng định tuyến. Chỉ sử dụng địa chỉ IP trong bảng định tuyến làm cho người quản trị dễ hiểu hơn và dễ dàng hơn trong việc xem xét phần mềm có cập nhật thông tin bảng định tuyến đúng hay không.
Dưới đây là quá trình định tuyến datagram trên module IP hình 2.14.
Hình 2.14. Định tuyến trên module IP.
- Thiết lập bảng định tuyến
IP sử dụng bảng định tuyến bất cứ khi nào nó cần tìm đường chuyển datagram đi, vì thế việc thay đổi trong bảng định tuyến sẽ làm thay được con đường mà datagram sẽ đi qua.
Việc thiết lập các đường định tuyến bao gồm: khởi động và cập nhật. Mỗi gateway phải thiết lập một bộ các tuyến đường khởi đầu khi khởi động, và phải cập nhật bảng khi tuyến đường thay đổi (chẳng hạn như bộ giao tiếp mạng bị hỏng). Việc khởi động tùy thuộc vào hệ điều hành. Trong một số hệ điều hành, gateway đọc bảng định tuyến ban đầu từ một bộ nhớ phụ khi khởi động, lưu trữ nó vào bộ nhớ chính. Với một số hệ khác, hệ điều hành bắt đầu từ một bảng trống (rỗng) mà nó phải điền vào bằng cách thực hiện các lệnh cụ thể. Cuối cùng, cũng có những hệ điều hành bắt đầu bằng cách rút ra một tập hợp tuyến đường ban đầu từ địa chỉ của các mạng mà các máy nối vào sau đó liên lạc với các máy lân cận để yêu cầu các tuyến đường thêm vào.
- Định tuyến theo cự ly Vecter.
Ý tưởng trong thuật toán cự ly vector rất đơn giản. Mỗi gateway bắt đầu với một bộ các tuyến đường mà nó nối vào. Nó giữ danh sách các tuyến đường trong bảng mà mỗi dòng trong bảng xác định một mạng đích và khỏang cách đến mạng đó.
Sau một khoảng thời gian định kỳ, mỗi Gateway sẽ gởi đi một bảng sao của bảng định tuyến của nó đến bất kỳ Gateway nào mà nó có thể đến trực tiếp. Các gateway nhận được các thông báo này sẽ lập ra một bảng định tuyến cho riêng mình.
Vd : khi dữ liệu thông báo định tuyến được gởi từ gateway J đến gateway K, K kiểm tra danh sách các trạm đích được thông báo và khoảng cách đến từng trạm, nếu J biết được một đường ngắn hơn đến trạm đích hoặc J có chứa các trạm đích mà K không có trong bảng của nó hoặc K hiện tại đang định tuyến đến một trạm đích thông qua J và khoảng cách của J tới trạm đích bị thay đổi, K sẽ thay thế dòng này trong bảng coi như một hình thức cập nhật thông tin của bảng
- Định tuyến theo trạng thái kết nối.
Không giống như định tuyến theo cự ly vector, mỗi gateway sẽ xác định các trạng thái kết nối logic của nó với các gateway xung quanh và lập nên một bảng đồ định tuyến trong đó các thông tin sẽ nói lên tuyến nào cho phép thông và tuyến nào bị ngắt. Sau một khoảng thời gian có chu kỳ các gateway sẽ gởi các bảng trạng thái liên kết tuyến của nó lên mạng, thông tin này được phát quảng bá, các gateway nhận được thông báo này sẽ lập nên bảng định tuyến chung cho chúng.
Ưu điểm của thuật toán này là bảng định tuyến gởi đi có dung lượng nhỏ, chỉ chứa các tuyến đã “thông ”khắc phục nhược điểm của thuật toán cự ly vector là bảng định tuyến chứa tất cả các trạm đích được nối với nó nên dung lượng bảng định tuyến lớn.
2.6. Internet Porotocol Version 6( IPv6).
2.6.1. Đặc điểm của IPv 6.
-IPv6 vẫn hỗ trợ phi kết nối, cho phép nơi gửi quyết định kích thước gói dữ liệu và xác định số host tối đa mà gói dữ liệu đi qua trước khi tới đích.
-Bên cạnh đó IPv6 đã thay đổi các chi tiết của giao thức IPv6 so với IPv4.
-Không gian địa chỉ IPv6 lớn hơn 4 lần của không gian địa chỉ IPv4.
-Tăng khả năng phân cấp địa chỉ.
-Phần mào đầu của các gói dữ liệu IPv6 linh hoạt.
-Cũng cho phép gói dữ liệu chọn lựa thông tin điều khiển nhưv IPv4 nhưng ở IPv6 có thêm một số chọn lựa mới giúp các chọn lựa hoàn thiện hơn.
-IPv6 cung cấp phương tiện cho phép các nút trên mạng đơn tự gán các địa chỉ của chúng và cho phép nhười quản lý đánh số mạng một cách tự động.
-IPv6 cung cấp khả năng mở rộng của giao thức.
2.6.2. Cấu trúc gói dữ liệu.
Gói dữ liệu của IPv6 có nhiều thay đổi so với IPv4. Một gói dữ liệu IPv6 được chia thành 3 phần. Phần mào đầu cơ sở có kích thước cố định tiếp theo là phần mở rộng tùy chọn, cuối cùng là phần dữ liệu.
2.6.2.1. Phần mào đầu cơ sở.
Ở phần mào cơ sở của IPv6 có một số trường của IPv4 đã được chuyển sang phần mở rộng nên phần mào đầu cơ sở sẽ chứa ít thông tin hơn.
Hình 2.15. Cấu trúc gói dự liệu IPv6
Phiên bản : gồm 4 bit xác định phiên bản của giao thức được dùng.
Loại lưu lượng : 8 bit chính là trường loại dịch vụ ở IPv4.
Nhãn luồng :20 bit trường này cùng với trường loại lưu lượng thực hiện quyết định chuyển gói. Trong trường hợp này chứa các thông tin mà bộ định tuyến sử dụng để phối hợp gói dữ liệu với một luồng và một độ ưu tiên nhất định.
-Trường số octet :16 bit xác định số lượng octet được chuyển trong gói dữ liệu.
-Trường mào đầu kế : xác định kiểu mào đầu của gói dữ liệu tiếp theo.
-Trường giới hạn hop : 8 bit xác định số hop tối đa mà gói dữ liệu đi qua trước khi nó bị huỷ bỏ.
-Trường địa chỉ đích : 16 octet xác định địa chỉ nơi nhận.
-Trường địa chỉ nguồn : 16 octet xác định địa chỉ nơi gửi.
2.6.2.2. Phần mở rộng của mào đầu.
Trong cấu trúc của gói dữ liệu phần mở rộng là phần có thể thay đổi. Các phần mở rộng này tương ứng với các chức năng như định tuyến, phân đoạn, giám định. Không phải lúc nào cũng cần hết chức năng này. IPv6 mỗi gói dữ liệu chỉ đưa vào các phần đầu mở rộng dành cho những phương tiện mà nó sử dụng. Nếu đưa hết vào phần cố đinh như IPv4 thì sẽ không hiệu quả.
Phần mở rộng dùng cho việc phân đoạn và tái hợp.
Khác hẳn với IPv4, IPv6 không thực hiện phân đoạn ở các bộ đinh tuyến. Phân đoạn ở IP v6 thực hiện ở đầu cuối nguồn và kết hợp lại thực hiện ở đầu cuối đích. Nghĩa là tại nơi gửi việc phân đoạn sẽ được thực hiện nếu trên tuyến đường xác định gói đi qua có MTU có kích thước nhỏ hơn. Điều này cho thấy khi gói dữ liệu thay đổi đường đi thì MTU cũng có thể bị thay đổi. Vì vậy việc phân đoạn đầu cuối-đầu cuối không có thêm việc phân đoạn ở IPv4
Phần mở rộng dành cho việc định tuyến.
Chức năng định tuyến ở IPv6 có một phần mở rộng riêng trong gói dữ liệu phần mở rộng này có các trường hỗ trợ cho việc định tuyến.
Các phần mở rộng khác.
Để giúp cho việc giám định : một vài phần mở rộng thêm vào như mở rộng hop by hop, mở rộng end to end.
2.6.3. Địa chỉ trong IPv6.
Với phiên bản mới IPv6 không gian địa chỉ đã mở rộng gấp 4 lần không gian địa chỉ IPv4. Mỗi địa chỉ chiếm 16 octet. Đây cũng là một vấn đề mới cần được giải quyết. Một địa chỉ quá dài đòi hỏi người quản trị mạng cần phải đọc, nhập và bảo trì các địa chỉ này. Địa chỉ này không thể biễu diễn ở dạng thập phân vì như vậy sẽ quá dài. Để địa chỉ gọn và dễ nhớ người thíết kế đã đưa ra phương pháp 2 chấm thập lục. Mỗi ký số trong địa chỉ dạng thập lục là 16 bit gồm 2 ký số trong địa chỉ dạng thập phân
Vd con số 128 bit biễu diễn dạng chấm thập phân :
104.230.146.100.255.255.255.255.0.017.128.150.10.255.255
khi chuyển sang dạng 2 chấm thập lục
68 E6 : 8C 64 : FF FF : FF FF : 0 11 : 80 96 : AFF :F
ngoài ngắn gọn địa chỉ biễu diễn dạng 2 chấm thập lục có thể nén được các số 0 với một địa chỉ gồm chuỗi các số 0 vd 0 :0 :0 :128 :0 :B3 :FFFF có thể viết lại 128 : 0 : B3 : FFFF.
nhưng chỉ nén được một lần trong một địa chỉ.
IPv6 có 3 loại địa chỉ như sau.
Đạ chỉ unicast: là địa chỉ của một máy hay bộ định tuyến.
Địa chỉ Anycast : là địa chỉ của một tập hợp máy tại những địa chỉ khác nhau. Gói dữ liệu khi được định tuyến đến địa chỉ này nó sẽ được đưa tới máy gần nhất trong nhóm này.
Địa chỉ multicast : là địa chỉ của một tập các máy, gói tin được định tuyến theo địa chỉ này bằng cách quảng bá.
Khi áp dụng một phiên bản mới vào một mạng lớn điều này rất phức tạp cần phải có các phần mềm nâng cấp từ IPv4 sang IPv6. Muốn vậy các địa chỉ.
IPv4 cần phải có quá trình chuyển đổi thành IPv6 trước khi nó được gán địa chỉ IPv6 hợp lệ. Trong quá trình thay phiên bản mới IPv6 các máy sử dụng IPv4 nên cần có sự chuyển đổi giữa hai loại địa chỉ này.
Các nhà thiết kế đã dự tính dùng nhóm nhỏ trong không gian địa chỉ IPv6 dành riêng với tiền tố thập phân 0000.0000 để mã hoá IPv4 địa chỉ IPv4 được mã hoá có dạng.
Các địa chỉ này gồm 80 bit đấu là 0 ; 16 bit tiếp theo có thể là 0 hay 1 ; 32 bit cuối cùng là địa chỉ IPv4 32 bit.
Việc chuyển đổi này cần có phần mềm chuyển đổi riêng. Ở các lớp trên việc tính các checksum sẽ gặp khó khăn ; do phần tính checksum bao gồm địa chỉ IP nguồn và địa chỉ IP đích. Nếu có sự thay đổi ở các địa chỉ sẽ làm thay đổi cách tính và kết qủa. Để tránh việc tính checksum không trùng khớp việc mã hoá IPv4 đã được chọn sao cho 16 bit phần bù của địa chỉ IPv4 và IPv6 là giống nhau.
2.6.4. So sánh IPv6 và IPv4.
IPv6 là phiên bản sau của IPv4 nên nó có khả năng cung cấp nhiều địa chỉ hơn IPv4 với 128 bits địa chỉ.
- Giảm thiểu thời gian xử lý header hơn trong IPv4 vì trong IPv6 phần tùy chọn chiếm phần lớn trong mào đầu.
- Một chức năng mới của IPv6 là dán nhãn các gói thuộc các luồng lưu lượng đặc biệt mà phía gởi yêu cầu xử lý đặc biệt như không mặc định chất lượng dịch vụ hoặc dịch vụ có tính thời gian thực.
2.6.5. Kết luận.
Trên đây chúng ta đã xem xét cấu trúc cũng như chức năng của các giao thức lớp Internet, đây là lớp giao thức khá quan trọng trong bộ giao thức TCP/IP, nó thực hiện chức năng đánh địa chỉ và định tuyến, điều khiển luồng. Tuy nhiên đây là giao thức không kết nối do đó nó không đáng tin cậy. Một giao thức khác sẽ bổ sung sự thiếu xót của giao thức IP này là TCP, đây là một giao thức đi chung với IP, dựa vào IP để hoạt động.
CHƯƠNG 3. CÁC GIAO THỨC LỚP TRUYỀN TẢI CỦA BỘ
GIAO THỨC TCP/IP.
---oOo---
Ở chương trước đã trình bày dịch vụ phát chuyển dữ liệu kiểu không kết nối và hình thành nên cơ sở cho tất cả thông tin Internet và giao thức IP định nghĩa nó. Chương này sẽ trình bày hai giao thức khá quan trọng trong bộ giao thức TCP/IP là giao thức điều khiển truyền TCP (Transmission Control Protocol) và giao thức UDP (User Datagram Protocol).
Các giao thức thuộc lớp Transport của bộ giao thức TCP/IP là UDP và TCP đã nói ở trên, chỉ hỗ trợ và làm việc với giao thức IP ở lớp Internet vốn là một giao thức không kết nối. Cả TCP và UDP đều có thể cung cấp dịch vụ lớp Transport cho nhiều ứng dụng ở lớp trên một cách đồng thời. Mỗi một ứng dụng và các giao thức TCP, UDP phân biệt các ứng dụng bằng các địa chỉ khác nhau gọi là cổng địa chỉ hay các cổng. Trường Protocol trong Header của
IP-Datagram cho biết các datagram sẽ được xử lý bởi TCP hay UDP ở lớp trên. Trong các giao thức sắp trình bày ở đây, trường cổng địa chỉ trong Header TCP (UDP) sẽ cho TCP (UDP) biết phải chuyển gói tin đến ứng dụng nào ở lớp trên.
3.1 . Giao Thức Datagram Người Sử Dụng UDP (User Datagram Protocol).
3.1.1. Giới thiệu.
Các chương trước đã mô tả khả năng của một TCP/IP Internet trong việc gởi các datagram giữa các máy tính, trong đó mỗi datagram được gởi qua Internet dựa vào địa chỉ IP đích đến. Tại lớp Internet Protocol, một địa chỉ xác định một máy tính, không còn phân biệt nào nữa cho người sử dụng nào hoặc chương trình ứng dụng nào sẽ nhận được datagram này. Chương này sẽ mở rộng bộ giao thức TCP/IP bằng việc thêm vào một cơ chế để phân biệt các đích đến trong một máy tính (host), cho phép nhiều chương trình ứng dụng trên một máy tính có thể cùng một lúc gởi và nhận datagram một cách độc lập.
Trong bộ giao thức TCP/IP, UDP cung cấp cơ chế chính yếu mà các chương trình ứng dụng sử dụng để gởi datagram đến các chương trình ứng dụng khác. UDP cung cấp cổng giao thức để phân biệt các chương trình đang thực hiện trên một máy đơn. Nghĩa là, cùng với dữ liệu gởi đi, mỗi thông điệp UDP còn bao gồm một giá trị cổng đích và giá trị cổng nguồn, giúp cho phần mềm UDP tại đích có thể phát chuyển thông điệp tới đúng nơi nhận và cho phép nơi nhận gởi lại lời đáp.
UDP dựa trên cơ sở Internet Protocol để chuyển cho thông điệp từ một máy đến một máy khác, nên cũng cung cấp dịch vụ phát chuyển datagram không định hướng, không có độ tin cậy như IP. Nó không sử dụng cơ chế ACK để bảo đảm rằng thông điệp đi đến đích, nó không sắp xếp thứ tự các thông điệp gởi đến.
3.1.2. Định dạng thông điệp UDP:
Mỗi thông điệp UDP được gọi là user datagram. Về mặt khái niệm, một user datagram gồm hai phần: một phần đầu UDP và một vùng dữ liệu UDP.
Hình 3.1. Cấu trúc khung UDP.
Phần đầu được chia thành bốn vùng 16 bit để xác định cổng mà thông điệp được gởi đi, cổng mà thông điệp định gởi tới, độ dài thông điệp và UDP checksum.
UDP SOURCE PORT: 16 bit, chứa giá trị cho cổng nguồn UDP. Đây là vùng tùy chọn, nó xác định cổng mà ứng dụng gởi gói tin đi và cũng là cổng mà căn cứ vào đó lời đáp lời đáp sẽ được trả lại. Khi không sử dụng (quảng bá) thì trường này nhận giá trị 0.
UDP DESTINATION PORT: 16 bits, chứa giá trị cổng đích mà ứng dụng trên trạm đích sẽ nhận.
UDP MESSAGE LENGTH: Chứa độ dài của UDP datagram tính theo Octect, bao gồm phần đầu UDP và dữ liệu của người sử dụng. Như vậy giá trị tối thiểu của trường này là 8, chính là độ dài của phần đầu UDP.
UDP CHECKSUM: vùng tùy chọn và ít được dùng, một giá trị Zero trong vùng Checksum có nghĩa là Checksum chưa được tính. UDP Checksum được dùng để đảm bảo dữ liệu nhận được là nguyên vẹn và nên được dùng.
3.1.3. Phần đầu giả UDP.
Phần đầu giả UDP bao gồm một số octet được gắn vào UDP datagram. Mục đích của việc sự dụng một phần đầu giả để kiểm chứng rằng UDP datagram đã đến được đích chính xác của nó. Điểm mấu chốt của phần đầu giả bao gồm việc nhận thức rằng đích chính xác của nó bao gồm một máy cụ thể và một cổng giao thức xác định trong máy đó. Bản thân phần đầu UDP chỉ xác định giá trị cổng giao thức. Như thế để kiểm chứng đích đến, UDP trên máy gởi sẽ tính một checksum mà bao gồm địa chỉ IP đích cũng như là UDP datagram.
Để tính checksum, UDP gán một phần đầu giả vào UDP datagram, thêm vào một octet các giá trị zero vào datagram để có được đúng bội số của 16 bit và tính checksum cho toàn bộ. Octet được nối vào và phần đầu giả sẽ không được truyền đi với UDP datagram và chúng cũng không được kể trong phần độ dài. Để tính checksum trước tiên phần mềm ghi giá trị 0 vào vùng checksum, rồi tích lũy tổng 16 bit phần bù của 1 của toàn bộ đối tượng bao gồm phần đầu giả, phần đầu UDP, và dữ liệu của người sử dụng.
Hình 3.2. phần đầu giả UDP.
Phần đầu giả được dùng trong việc tính UDP checksum bao gồm 12 octet dữ liệu được bố trí như hình. Các vùng của phần đầu giả được đánh nhãn SOURCE IP ADDRESS và DESTINATION IP ADDRESS chứa địa chỉ IP nguồn và địa chỉ IP đích mà sẽ được dùng khi gởi thông điệp UDP. Vùng PROTO chứa mã kiểu giao thức IP (17 cho UDP), và vùng UDP LENGTH chứa độ dài của UDP datagram (không bao gồm phần đầu giả).
Tại đích đến cuối cùng, phần mềm UDP kiểm chứng checksum bằng cách trích các vùng của phần đầu giả từ phần đầu của IP, lắp ráp chúng lại thành dạng phần đầu giả và tính lại checksum. Nếu checksum trùng khớp có nghĩa là datagram đã đến được đích cuối cùng của nó và cũng đến đuợc đúng cổng giao thức trong máy đó.
3.1.4. Đóng gói UDP.
UDP thuộc về lớp trên lớp Internet protocol. Các chương trình ứng dụng sẽ truy xuất UDP và UDP lại sử dụng IP để gởi và nhận datagram.
Việc phân lớp UDP ở trên IP có nghĩa là một thông điệp UDP hoàn chỉnh bao gồm phần đầu UDP và dữ liệu được đóng gói trong một IP datagram khi nó di chuyển qua Internet như hình 3.3.
Hình 3.3. Trình tự đóng gói bản tin UDP.
3.1.5. Ghép Kênh Và Phân Kênh Trong UDP (Multiplexing,
Demultiplexing).
Phần mềm đi qua các lớp của giao thức phân cấp phải ghép kênh hay phân kênh trong số các đối tượng tại lớp kế tiếp. Phần mềm UDP nhận các UDP datagram từ nhiều chương trình ứng dụng và chuyển chúng đến IP để truyền đi và nó nhận các UDP datagram từ IP và chuyển chúng đến chương trình ứng dụng thích hợp.
Về mặt khái niệm, tất cả việc ghép kênh và phân kênh giữa phần mềm UDP và các chương trình ứng dụng xuất hện thông qua cơ chế cổng. Thực tế, mỗi chương trình ứng dụng phải tương tác với hệ điều hành để có được một cổng giao thức và giá trị cổng tương ứng trước khi nó gởi datagram đi. Một khi cổng đã được ấn định thì bất kỳ datagram nào mà chương trình ứng dụng gởi thông qua đó sẽ lưu giá trị cổng đó và field UDP Source Port trong UDP Header.
Trong khi xử lý đầu vào, UDP nhận các datagram đến từ phần mềm IP và phân kênh dựa trên cổng đích UDP. Như biểu diễn trong hình 3.4.
Hình 3.4. UDP phân phát các datagram.
Một cách dễ dàng nhất là hình dung cổng UDP như một hàng đợi. Trong hầu hết các cài đặt, khi chương trình ứng dụng tương tác với hệ điều hành để sử dụng một cổng đã cho thì hệ điều hành tạo ra một hàng đợi bên trong để có thể giữ các thông điệp gởi đến. Thông thường, chương trình ứng dụng có thể xác định hoặc thay đổi kích thước hàng đợi. Khi UDP nhận một datagram, nó kiểm tra xem giá trị cổng đích có phù hợp với một trong những cổng hiện thời đang sử dụng. Nếu không, nó gởi một thông điệp lỗi ICMP “Port Unreachable” và hủy bỏ datagram đó. Nếu có cổng phù hợp, UDP sẽ đặt vào hàng đợi gói mới đến tại cổng mà chương trình ứng dụng có thể truy cập được. Dĩ nhiên, một lỗi xuất hiện khi cổng bị đầy và UDP hủy bỏ datagram đó
Các file đính kèm theo tài liệu này:
- TCP_IP va Ung dung.doc