Tầng giao vận

Trong các ngành tin học và viễn thông, tầng giao vận là tầng thứ tư trong bảy tầng của mô hình OSI. Tầng này chịu trách nhiệm đáp ứng các đòi hỏi về dịch vụ của tầng phiên và đưa ra các yêu cầu dịch vụ đối với tầng mạng (Network Layer).

Tầng giao vận cung cấp dịch vụ xuyên dụng chuyển dữ liệu giữa các máy chủ ("hosts"). Tầng này chịu trách nhiệm sửa lỗi ("error recovery"), điều khiển lưu lượng dữ liệu, đảm bảo dữ liệu được chuyển tải một cách trọn vẹn. Trong Bộ giao thức liên mạng - TCP/IP, chức năng này thường được thực hiện bởi giao thức định hướng kết nối TCP.

Giao vận kiểu datagram, UDP - "Giao thức Datagram Người dùng", không cung cấp dịch vụ sửa lỗi hay điều khiển lưu lượng dữ liệu mà dành nhiệm vụ này cho phần mềm ứng dụng. Mục đích của tầng giao vận là cung cấp dịch vụ xuyên dụng chuyển dữ liệu giữa các người dùng đầu cuối, nhờ đó các tầng trên không phải quan tâm đến việc cung cấp dịch vụ truyền dữ liệu đáng tin cậy và hiệu quả.

Tầng giao vận thường biến dịch vụ đơn giản, có độ tin cậy thấp của tầng mạng thành một dịch vụ mạnh hơn. Có một danh sách dài liệt kê những dịch vụ có thể được cung cấp bởi tầng này. Không có một dịch vụ nào trong đó là bắt buộc cả, bởi vì không phải chương trình ứng dụng nào cũng yêu cầu tất cả những dịch vụ hiện có. Một số dịch vụ làm lãng phí chi phí phụ, hoặc trong vài trường hợp còn gây phản tác dụng.


; Định hướng kết nối ("Connection-Oriented"): Dịch vụ này thường dễ dùng hơn là các mô hình phi kết nối ("connection-less model"), vì thế cho nên ở những nơi mà tầng mạng chỉ cung cấp dịch vụ phi kết nối, thường có dịch vụ hướng kết nối được xây dựng chồng lên trên nó, tại tầng giao vận.
; Phân phát theo trật tự đã gửi ("Same Order Delivery"): Tầng mạng thường không đảm bảo các gói dữ liệu đến theo trật tự mà nó được gửi, song đặc tính này lại là một đặc tính có ưu điểm, nhưng thông thường đây lại là một đặc tính được trọng dụng, vì vậy cho nên tầng giao vận phải đảm bảo việc này. Cách đơn giản nhất là gắn cho mỗi gói dữ liệu một con số, để cho thiết bị nhận sắp xếp lại trật tự của các gói dữ liệu.
; Dữ liệu đáng tin cậy ("Reliable Data"): Mạng truyền thông nền tảng có thể có độ nhiễu cao, và dữ liệu nhận được không phải bao giờ cũng giống như dữ liệu đã được gửi. Tầng giao vận có thể sửa lỗi này: thường là bằng cách cung cấp một giá trị tổng kiểm của dữ liệu, giá trị đó phát hiện một số dạng sai sót nhỏ. Đương nhiên, truyền thông tín hiệu hoàn toàn không có lỗi là một việc không khả thi, song giảm đáng kể số lỗi không được phát hiện là một việc có thể thực hiện được. Tầng giao vận còn có thể truyền lại những gói dữ liệu bị thất lạc trên đường truyền.
; Điều khiển lưu lượng ("Flow Control"): Lượng bộ nhớ trong máy tính chỉ có hạn. Nếu không điều khiển lưu lượng dữ liệu, thì một máy tính lớn có thể làm ngập một máy khác với lượng thông tin quá lớn làm máy tính đó không kịp xử lý dữ liệu. Hiện tại, vấn đề này không phải là một vấn đề lớn, vì giá của bộ nhớ rẻ, trong khi giá của băng thông ("bandwidth") lại đắt, song trước đây, vấn đề này đã là một vấn đề quan trọng. Việc điều khiển lưu lượng cho phép thiết bị nhận dữ liệu nói "Khoan nào!" trước khi nó bị tràn. Đôi khi chức năng này đã được mạng nền tảng cung cấp, song tầng giao vận có thể gắn thêm chức năng này nếu chưa có.
; Định hướng byte ("Byte Orientation"): Thay vì giải quyết các vấn đề theo từng gói dữ liệu, tầng giao vận có thể bổ sung khả năng nhìn dữ liệu truyền thông như là một dòng các byte (ký tự). Cách này dễ giải quyết hơn là khi các gói dữ liệu có kích thước ngẫu nhiên, song nó ít khi khớp với mô hình truyền thông mà thông thường sẽ là một dãy các thông điệp có kích thước do người dùng xác định.
; Cổng ("Port"): Về căn bản, cổng là phương pháp đánh địa chỉ các thực thể khác nhau tại cùng một địa điểm. Ví dụ, dòng đầu tiên trên một địa chỉ gửi thư có thể hiểu là một dạng cổng, nó phân biệt giữa các cư dân khác nhau trong cùng một ngôi nhà. Các chương trình ứng dụng lắng nghe thông tin trên các cổng riêng của nó, và chính vì vậy mà chúng ta có thể dùng nhiều chương trình ứng dụng mạng trong cùng một lúc.

Trên Internet có rất nhiều dịch vụ của tầng giao vận, song hai dịch vụ thường dùng nhất là TCP và UDP. TCP phức tạp hơn, nó cung cấp kết nối và dòng định hướng byte, dòng này hầu như không có lỗi, với các dịch vụ điều khiển lưu lượng dữ liệu, nhiều cổng, và phân phát dữ liệu đúng trật tự. UDP là một dịch vụ datagram đơn giản, nó cung cấp khả năng giảm lỗi hạn chế ("limited error reduction") và có nhiều cổng. TCP là chữ viết tắt của thuật ngữ tiếng Anh ""Transmission Control Protocol" - tạm dịch là "Giao thức điều khiển truyền vận". UDP là chữ viết tắt của thuật ngữ tiếng Anh "User Datagram Protocol" - tạm dịch là "Giao thức datagram người dùng"". Các lựa chọn khác bao gồm Giao thức kiểm soát tắc nghẽn gói dữ liệu ("Datagram Congestion Control Protocol" - DCCP) và Giao thức truyền vận điều khiển dòng ("Stream Control Transmission Protocol" - SCTP).

Một vài dịch vụ, chẳng hạn như định hướng kết nối ("connection orientation") có thể được cài đặt tại tầng giao vận hay tầng mạng. Tư tưởng là tầng mạng cài đặt một tập các lựa chọn nào dễ nhất: đối với một số mạng truyền thông, cài đặt truyền thông phi kết nối là việc dễ dàng nhất, trong khi đối với các mạng khác, việc cài đặt truyền thông hướng kết nối lại dễ hơn cả. Tầng giao vận sử dụng nhóm các lựa chọn đơn giản nhất này để cài đặt bất cứ tổ hợp của các lựa chọn nào mà trong thực tế được mong muốn.