Tất cả các giao thức ở lớp Transport đều có các tính năng chính sau:
Phân đoạn và tổng hợp – hầu hết các mạng đều có một giới hạn về khối lượng dữ liệu mà có thể chứa trong một PDU. Tại máy gửi, lớp Transport phân đoạn dữ liệu từ lớp Application thành các khối dữ liệu có kích thước phù hợp với giới hạn này. Tại máy nhận, lớp Transport tổng hợp sắp xếp lại dữ liệu trước khi gửi nó đến ứng dụng hay dịch vụ đích.
Phối hợp các cuộc trao đổi – có thể có nhiều ứng dụng hay dịch vụ đang chạy trên mỗi máy tính trên mạng. Mỗi ứng dụng hay dịch vụ này được gán một địa chỉ gọi là port để lớp Transport có thể xác định dữ liệu này thuộc ứng dụng hay dịch vụ nào.
Bên cạnh việc sử dụng thơng tin trong header đối với tính năng cơ bản như phân đoạn và tổng hợp sắp xếp lại dữ liệu, một vài giao thức tại lớp Transport hỗ trợ:
Truyền theo hướng có kết nối (Connection-oriented): thiết lập một kết nối giữa
hai ứng dụng trước khi chúng truyền dữ liệu thực sự. Làm như vậy đảm bảo rằng các ứng dụng đã sẳn sàng nhận dữ liệu và việc quản lý chúng trở nên chặt chẽ hơn.
Phân phát dữ liệu tin cậy: đảm bảo rằng máy nhận đã nhận đầy đủ các segment mà máy gửi đã gửi. Nếu có segment nào bị mất vì những lý do nào đó trong quá trình truyền thì máy gửi sẽ gửi lại segment đó.
Sắp xếp lại dữ liệu theo đúng thứ tự: khi đi từ nguồn đến đích, các segment có
thể đi theo nhiều hướng khác nhau với thời gian truyền khác nhau. Do đó, chúng có thể đến đích khơng đúng trật tự như ban đầu. Dựa vào số thứ tự của các segment, lớp Transport sắp xếp chúng lại đúng thứ tự mà máy gửi đã gửi.
Điều khiển luồng (Flow control): mỗi máy tính thường bị giới hạn về các tài
nguyên như bộ nhớ, bandwidth,… Khi lớp Transport nhận biết được những tài nguyên này bị quá tải, một vài giao thức có thể yêu cầu ứng dụng đang gửi hãy giảm tốc độ gửi. Lớp Transport thực hiện điều này bằng cách điều chỉnh khối lượng dữ liệu truyền. Điều khiển luồng có thể ngăn chặn tình trạng mất các segment và tránh truyền lại không cần thiết.
1.3.2 | HỖ TRỢ TRUYỀN KHÔNG TIN CẬY
Như đã biết, tính năng chính của lớp Transport là quản lý việc trao đổi dữ liệu giữa các ứng dụng trên các máy tính. Tuy nhiên, các ứng dụng khác nhau có thể có những yêu cầu về vận chuyển dữ liệu khác nhau, vì thế có nhiều giao thức Transport khác nhau đã được phát triển để đáp ứng các yêu cầu này.
Có những dịch vụ địi hỏi việc vận chuyển dữ liệu phải tin cậy, nhưng cũng có những dịch vụ khơng cần như vậy. Trong ngữ cảnh này, tin cậy (reliability) có nghĩa là đảm bảo rằng mỗi segment được gửi từ máy gửi đều phải đi đến đích. Để đạt được độ tin cậy này, lớp Transpor có ba hoạt động cơ bản:
Máy gửi theo dõi tất cả các segment đã được gửi ra ngoài.
Sau khi nhận được các segment, máy nhận phải phản hồi lại cho máy gửi rằng
mình đã nhận được những segment nào.
Máy gửi sẽ truyền lại bất kỳ segment nào mà nó khơng được máy nhận xác nhận là đã nhận được.
Vì phải theo dõi, phản hồi và truyền lại dữ liệu bị mất nên phát sinh nhiều thông tin điều khiển được trao đổi giữa máy gửi và máy nhận. Chính vì điều này làm cho tải qua các máy tính và các tài nguyên mạng tăng lên. Những thông tin điều khiển này nằm trong header của Transport.
Đây chính là sự đánh đổi giữa giá trị của độ tin cậy và gánh nặng mà nó đặt ra cho mạng. Dựa trên yêu cầu của ứng dụng, những người phát triển ứng dụng phải cân nhắc
việc chọn giao thức vận chuyển ở lớp Transport cho phù hợp. Bên cạnh giao thức vận chuyển dữ liệu tin cậy, lớp Transport cịn có giao thức vận chuyển không tin cậy (unreliable). Giao thức này chỉ quan tâm đến một điều là làm sao vận chuyển dữ liệu càng nhanh càng tốt (best-effort). Do đó, nó khơng có ba hoạt động cơ bản trên. Việc xử lý lỗi và truyền lại được giao phó cho giao thức ở lớp Application.
Xác định nhu cầu về độ tin cậy
Các dịch vụ như cơ sở dữ liệu, web, e-mail đều yêu cầu tất cả dữ liệu được gửi phải đến được đích trong trạng thái ngun vẹn giống như ban đầu thì mới có thể sử dụng được. Vì thế, các dịch vụ này phải dùng giao thức ở lớp Transport có độ tin cậy cao.
Các ứng dụng khác thì cho phép mất một lượng dữ liệu nhỏ. Ví dụ, nếu một hay hai segment của chuỗi dữ liệu video bị lỗi tại ứng dụng đích, nó chỉ tạo ra một lỗ thủng tạm thời trong chuỗi dữ liệu, điều này có thể làm cho chất lượng hình ảnh giảm đi một ít nhưng người dùng không dễ nhận ra điều này. Trong trường hợp này, tốt hơn hết là hiển thị hình ảnh tốt nhất có thể có tại thời điểm các segment đến và bỏ qua độ tin cậy.
1.3.3 | TCP VÀ UDP
Hai giao thức phổ biến của họ giao thức TCP/IP tại lớp Transport là Transmission Control Protocol (TCP) và User Datagram Protocol (UDP). Cả hai giao thức này đều có nhiệm vụ là quản lý việc trao đổi dữ liệu giữa các ứng dụng. Sự khác nhau giữa hai giao thức này là tính năng của chúng: TCP là một giao thức tin cậy, cịn UDP là một giao thức khơng tin cậy.
Transmission Control Protocol (TCP)
TCP là một giao thức hướng kết nối (oriented-connection), được mô tả trong RFC 793. Nó cung cấp một phương thức truyền dữ liệu song cơng hồn tồn (full duplex) tin cậy. Đối với TCP, một kết nối phải được thiết lập trước khi một hoạt động truyền thông tin thực sự có thể bắt đầu. TCP chịu trách nhiệm phân chia dữ liệu thành các segment, sắp xếp lại các segment thành dữ liệu ban đầu tại đích, truyền lại bất kỳ segment nào không thể nhận được. TCP cung cấp một mạch ảo giữa các ứng dụng. vì các tính năng trên, nên TCP phải phát sinh thêm thông tin điều khiển được trao đổi giữa các máy tính.
Các ứng dụng của TCP:
Hypertext Transfer Protocol (HTTP).
Telnet.
v.v …
User Datagram Protocol (UDP)
UDP là một giao thức không kết nối (connectionless protocol). Nó là một giao thức đơn giản dùng để trao đổi các datagram mà khơng có báo nhận và cũng khơng có sự bảo đảm chuyển phát nào. Xử lý lỗi và truyền lại được giao phó cho giao thức lớp cao hơn. Nó truyền các datagram theo phương thức “best-effort”. Do đó, ưu điểm của UDP là chi phí phân phối dữ liệu thấp. UDP được thiết kế cho các ứng dụng không cần sắp xếp lại các segment theo đúng thứ tự.
Các ứng dụng của UDP gồm:
Dynamic Host Control Protocol (DHCP).
Domain Name System (DNS).
Simple Network Management Prorocol (SNMP).
Trivial File Transfer Protocol (TFTP).
Voice over IP (VoIP).
Video streaming.
v.v…
1.3.4 | ĐỊA CHỈ PORT
Để phân biệt các segment và datagram của mỗi ứng dụng, cả TCP và UDP đều dựa vào thông tin duy nhất là chỉ số port. Thông tin này nằm trong phần header.
Source port là số nhận dạng của ứng dụng nguồn. Destination port là số nhận dạng của ứng dụng đích ở xa.
Port được gán theo nhiều cách khác nhau, tùy thuộc vào thông điệp này là một yêu cầu từ client gửi đến server hay một trả lời từ server gửi đến client. Trong khi các dịch vụ server đều được gán với một port cố định và tĩnh, thì các ứng dụng client được gán một port động ngẫu nhiên. Lý do vì nếu các dịch vụ server thay đổi port thường xuyên thì người dùng khơng thể nào biết được port của chúng để truy cập đến.