Trang chủTin tứcTransport Layer là gì? Tầng giao vận trong mô hình OSI
Transport Layer là gì? Tầng giao vận trong mô hình OSI

Mô hình OSI (Open Systems Interconnection) bao gồm 7 lớp cho phép người dùng hình dung dễ dàng hơn về cơ chế giao tiếp giữa các máy tính. Transport layer là một trong 7 tầng của mô hình OSI.

Transport layer sử dụng cơ chế phân đoạn (Segmentation) để chuẩn hóa dữ liệu theo kích thước truyền và nhận diện dịch vụ bằng port. Do đó, các bản tin của các dịch vụ khác nhau có thể được truyền trên cùng một đường truyền, tiết kiệm băng thông, tạo điều kiện truyền và cung cấp khả năng sửa lỗi cụ thể.

Bài viết cùng chủ đề:

Các giao thức của Transport Layer trong mô hình OSI
Các giao thức của Transport Layer trong mô hình OSI

1. Transport layer trong mô hinh OSI

Transport layer (vận chuyển) là tầng thứ tư của mô hình OSI, chịu trách nhiệm đáp ứng các yêu cầu dịch vụ từ tầng phiên (Session) và đưa ra yêu cầu các dịch vụ từ tầng mạng (Network). Thực hiện các nhiệm vụ dồn kênh và phân kênh. Truyền và trao đổi dữ liệu giữa các máy chủ (host) qua kết nối end-to-end. Chịu trách nhiệm khắc phục lỗi (Error recovery), điều khiển luồng dữ liệu (Flow control), đảm bảo dữ liệu được truyền đi một cách hoàn hảo nhất. Nó thực hiện phân mảnh dữ liệu bằng cách đóng gói các PDU lớp cao hơn (Protocol data unit - Đơn vị dữ liệu giao thức) vào dữ liệu tầng Transport.

Transport layer có hai phương thức truyền tải chính: connectionless và connection - oriented.

Các giao thức đặc trưng của tầng vận chuyển: UDP (User Datagram Protocol) và TCP (Transmission Control Protocol). Các gói UDP bị phân mảnh được gọi là Datagram và TCP được gọi là Segment.

2. Các dịch vụ dồn kênh và phân kênh

Transport layer thực hiện ghép kênh và tách kênh dữ liệu, cho phép nhiều chương trình chạy trên cùng một máy tính trên các số cổng khác nhau.

Trong môi trường đa tác vụ hiện đại, nhiều ứng dụng mạng chạy đồng thời trên một máy tính. Do đó, chúng ta cần một cơ chế để xác định ứng dụng nào sẽ nhận được dữ liệu. Để điều này hoạt động chính xác, dữ liệu từ các ứng dụng khác nhau được ghép kênh ở lớp Transport và được gửi đến lớp ứng dụng (Application). Ngược lại, dữ liệu nhận được từ lớp ứng dụng được phân tách ở lớp vận chuyển và được gửi đến đúng ứng dụng. Điều này được thực hiện thông qua các "cổng" vận chuyển.

2.1. Dồn kênh

Dịch vụ dồn thực hiện nhiệm vụ nhận dữ liệu từ các tiến trình lớp ứng dụng (qua socket). Dữ liệu này được đóng gói theo giao thức của tầng vận chuyển và được gửi trên liên kết mạng. Mỗi tiến trình dịch vụ được gán một địa chỉ “cổng” khác nhau.

Dữ liệu được chuyển từ tầng Application đến tầng Transport
Dữ liệu được chuyển từ tầng Application đến tầng Transport

2.2. Phân kênh

Dữ liệu từ lớp vận chuyển gửi đến các quy trình khác nhau của lớp ứng dụng bằng cách sử dụng thông tin trong header gói tin.

Tương tự như ghép kênh, các quy trình được gán các địa chỉ “cổng” khác nhau.

Dữ liệu được gửi đến từ tầng Transport đến tầng Application
Dữ liệu được gửi đến từ tầng Transport đến tầng Application

3. Giao thức UDP (User Datagram Protocol) trong Transport layer

3.1. Tổng quan UDP trong Transport layer

Một trong những thường được sử dụng trong Transport layer là giao thức UDP. Đây là một giao thức vận chuyển connectionless điển hình. Phương thức này không thiết lập kết nối trước khi gửi, nó sẽ gửi ngay lập tức (gửi nỗ lực nhất).

Phương thức connectionless không đảm bảo độ đáng tin cậy như: xác nhận, kiểm soát luồng (flow control), hay đánh số các gói tin bị phân mảnh trên đường truyền, v.v.

Như vậy, giao thức này được sử dụng cho các gói tin như thoại và video vì chúng được truyền rất nhanh. Tuy nhiên, đường truyền này không có độ tin cậy cao và dễ bị mất gói và lỗi.

3.2. Cấu trúc dữ liệu UDP datagram trong Transport layer

16 bit Source port

16 bit Destination port

16 bit UDP length

16 bit UDP checksum

Data

  • Các trường source port, destination port: Cho phép xác định cổng nguồn (cổng tự sinh ra bên máy khách có giá trị từ 0 => 2^16) và cổng đích (Port dịch vụ, như web có cổng HTTP = 80 web, 443 cho HTTPS, v.v.).
  • Các cổng có thể được xem như địa chỉ lớp 4.
  • Trường UDP length: Xác định độ dài gói UDP.
  • UDP checksum: Thực hiện kiểm tra lỗi trên UDP datagrams.
  • Data: Dữ liệu từ các lớp cao hơn được gói gọn trong UDP datagram.

4. Giao thức TCP (Transmission Control Protocol)

4.1. Tổng quan

Transmission Control Protocol (TCP) là một giao thức truyền dẫn trong Transport layer hướng kết nối (connection - oriented) với các thuộc tính sau:

  • TCP là một giao thức vận chuyển hướng kết nối. Điều này có nghĩa là bạn phải thiết lập kết nối với đầu từ xa trước khi gửi bất kỳ dữ liệu nào. Quá trình thiết lập kết nối với TCP được gọi là tiến trình bắt tay ba bước (threeway handshake). 
  • Cung cấp một cơ chế xác nhận (Acknowledgement): Khi A gửi dữ liệu cho B, B nhận được dữ liệu đó và gửi lại 1 gói tin cho A để xác nhận là đã nhận. Nếu không nhận được tin nhắn xác nhận, A sẽ gửi tin nhắn cho đến khi nhận được gói tin xác nhận từ B.
  • Nó cung cấp một cơ chế để sắp xếp thứ tự các gói tin (sequencing) sử dụng để đặt chính xác các gói tại điểm nhận gói tin và loại bỏ các gói trùng lặp.
  • Có các cơ chế kiểm soát luồng thích hợp (flow control) được đưa ra để tránh tắc nghẽn trong quá trình truyền dữ liệu.
  • Hỗ trợ cơ chế full-duplex (gửi và nhận dữ liệu cùng lúc).
  • Khôi phục dữ liệu bị mất trong quá trình vận chuyển (A gửi mà B không xác nhận, gửi lại).

4.2. Cấu trúc dữ liệu gói tin TCP Segment

Cấu trúc gói tin TCP
Cấu trúc gói tin TCP
  • Các trường source port, destination port: Cho phép xác định cổng nguồn (cổng tự sinh ra bên máy khách có giá trị từ 0 => 2^16) và cổng đích (Port dịch vụ, như web có cổng HTTP = 80 web, 443 cho HTTPS, v.v.).
  • Trường số thứ tự (Sequence number field): Trường đánh số thứ tự byte đầu tiên trong phần data của segment. Đảm bảo rằng các gói tin được sắp xếp lại đúng theo thứ tự ban đầu nếu chúng bị phân mảnh trên đường truyền đến bên nhận.
  • Trường Acknowledgement number field: Được sử dụng để chỉ ra rằng dữ liệu đã được nhận. Dữ liệu được gửi bởi người gửi bị hỏng ACK cảnh báo người gửi gửi lại dữ liệu. Trường ACK chỉ ra số byte, không phải Segment của TCP.
  • Header length:Cho biết độ dài của TCP header.
  • Các bit control: Thực hiện các chức năng như kiểm soát thiết lập kết nối, kiểm soát lỗi và kiểm soát luồng,...
  • Window size: Chỉ định số byte mà thiết bị sẵn sàng chấp nhận để kiểm soát luồng.
  • Checksum: Kiểm tra lỗi trên các TCP segment. 
  • Urgent pointer: Chỉ thị báo điểm kết thúc của dữ liệu với mức độ ưu tiên cao.
  • Options field: Tùy chọn có thể được cấu hình thêm để phù hợp với người dùng và nhu cầu của họ.
  • Data: Dữ liệu ở các lớp trên được chuyển xuống lớp Transport. 

4.3. Thủ tục bắt tay 3 bước

Giả sử máy A muốn kết nối với máy B.

  • Máy chủ A gửi cờ SYN đến máy chủ B để kiểm tra xem máy chủ B có sẵn sàng kết nối để thực hiện truyền dữ liệu không.
  • Khi máy B sẵn sàng gửi, nó sẽ gửi lại cờ SYN/ACK để hỏi máy A đã sẵn sàng gửi chưa. 
  • Khi máy chủ A đã sẵn sàng, nó sẽ gửi lại cờ ACK để xác nhận việc truyền.

Khi quá trình bắt tay đã được thiết lập, hai máy chủ A và B có thể trao đổi dữ liệu với nhau. 

4.4. Cơ chế kiểm soát luồng (Flow control)

Nếu máy A gửi dữ liệu quá nhanh, máy B không thể xử lý dữ liệu kịp thời và dễ bị mất dữ liệu. Để tránh mất dữ liệu, máy nhận trong phương thức TCP sẽ kích hoạt điều khiển luồng bằng cách gửi một thông báo đến máy A cho biết máy B không xử lý kịp và chưa sẵn sàng để nhận các segment mới được gửi đến.

Khi nhận được thông báo này, máy A ngừng gửi các segment để đợi máy B xử lý. Sau khi máy B xử lý xong sẽ gửi thông báo sẵn sàng nhận dữ liệu và host A tiếp tục gửi các phân đoạn.

4.5. Cơ chế ACK (Acknowledgement)

Máy A gửi một segment có Window size = 1, máy B nhận segment và phản hồi lại gói ACK 2. Khi A nhận được ACK 2, nó tiếp tục gửi segment tiếp theo đi. Tiến trình tiếp tục diễn ra đến khi gửi hết gói tin.

Để cải thiện hiệu suất, có thể tăng kích thước cửa sổ như hình bên dưới (Window size = 3).

Trường hợp xử lý tắc nghẽn khi tăng Window size.

Giả sử máy chủ A gửi segment có Window size = 3. Máy chủ B chỉ nhận được với Windows size =2, khi đó máy B gửi tin nhắn đến máy A yêu cầu truyền lại với Windows size = 2.

5. Các ứng dụng thường chạy ở Transport layer

5.1. Các ứng dụng của Transport layer

Tầng Transport layer sẽ đọc thông tin của gói tin thông qua TCP hoặc UDP Header để xác định dữ liệu được đóng gói bên trong mà không cần mở gói để xem nội dung bên trong. Để thực hiện được điều này, giao thức TCP/IP sẽ dùng một số port đặc trưng trong TCP/UDP Header để xác nhận giao thức lớp trên được đóng gói trong phần data.

Ứng dụng

Giao thức tầng ứng dụng

Tầng Transport tương ứng

Port

Thư điện tử

SMTP

TCP

25

Truy cập từ xa

Telnet

TCP

23

Web

HTTP,HTTPS

TCP

80,443

Truyền file

FTP

TCP

20,21

File Sever

NFS

Thường là UDP

2049

Đa phương tiện

Phụ thuộc vào hãng sản xuất

Thường là UDP

 

Điện thoại qua Internet

Phụ thuộc vào hãng sản xuất

Thường là UDP

 

Quản lý mạng

SNMP

Thường là UDP

161

Định tuyến

RIP

Thường là UDP

520

Tên miền

DNS

Thường là UDP

53

5.2. So sánh cơ bản giữa TCP và UDP

Các đặc trưng

UDP

TCP

Tốc độ truyền

Nhanh hơn TCP

Chậm UDP

Dung lượng gói tin

Có dung lượng nặng

Có dung lượng nhẹ

Hướng liên kết

Không

Sử dụng phiên

Không

Độ tin cậy

Không

Xác thực

Không

Đánh thứ tự

Không

Điều khiển luồng

Không

Bảo mật

Ít hơn TCP

Nhiều hơn UDP

Việc lựa chọn giao thức TCP hay UDP tùy thuộc vào nhu cầu và chức năng sử dụng:

  • Đối với việc truyền tải dữ liệu cần nhanh và đảm bảo tốc độ truyền thì việc lựa chọn UDP là phù hợp.
  • TCP là sự lựa chọn tốt nhất để truyền dữ liệu và thông tin phải đầy đủ và đảm bảo tính toàn vẹn của dữ liệu trong quá trình truyền. 

6. Kết luận

Tóm lại, Transport layer nằm tại tầng thứ tư của mô hình OSI, có chức năng là chia nhỏ các gói tin lớn khi truyền và tập hợp lại chúng khi nhận. Transport layer giúp đảm bảo tính toàn vẹn của dữ liệu (không mất, không lặp, đúng thứ tự) trong quá trình chia tách gói tin khi gửi và nhận.

Tác giả:
author avatar
Mình là Huy, hiện mình đang là kỹ sư hệ thống tại SunCloud. Mình có nhiều năm kinh nghiệm, kiến thức chuyên môn về mạng, hệ thống, điện toán mây và an ninh bảo mật. Mình đã triển khai và vận hành rất nhiều dự án thực tế cho doanh nghiệp, cơ quan. Mình đã đạt được một số chứng chỉ quốc tế như CCNP, LPI, VCP, đồng thời mình vẫn đang tiếp tục học tập để trau dồi kiến thức mỗi ngày. Mình rất yêu thích công nghệ, đam mê chia sẻ những kiến thức, thông tin hữu ích cho mọi người.

Tin tức nổi bật