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ủ đề:
- Tầng vật lý trong mô hình OSI: Từ vật lý đến ứng dụng
- Kiến thức tổng quan về tầng liên kết dữ liệu - Data Link Layer
- Mô hình mạng OSI được sử dụng rộng rãi trong thực tế như thế nào?
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.
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.
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á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 |
Có |
Sử dụng phiên |
Không |
Có |
Độ tin cậy |
Không |
Có |
Xác thực |
Không |
Có |
Đánh thứ tự |
Không |
Có |
Điều khiển luồng |
Không |
Có |
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.