Ở phần trước thì mình đã giới thiệu cho các bạn về mô hình OSI và TCP/IP rồi, trong đó có tầng Transport là tầng mà ở cả hai mô hình đều có.
Trong khi đó, tầng transport là tầng chịu trách nhiệm về giao tiếp logic giữa các ứng dụng chạy trên các máy chủ khác nhau, hoạt động thông qua 2 giao thức là TCP và UDP.
Giao thức TCP thì tin cậy hơn, đảm bảo chất lượng gói tin được truyền đi nhưng tiêu tốn thời gian để kiểm tra dữ liệu.
Còn giao thức UDP thì tốc độ truyền tải dữ liệu nhanh chóng hơn, nhưng không tin cậy bằng vì không có cơ chế xác thực kiểm tra như giao thức TCP.
Okay, nếu như bạn cũng quan tâm đến mảng kiến thức này thì hãy cùng mình tìm hiểu chi tiết hơn về 2 loại giao thức ở tầng Trasnport này nhé!
Mục Lục Nội Dung
#1. Giao thức TCP là gì?
TCP (viết tắt của cụm từ Tranmission Control Protocol) là giao thức truyền tải hướng kết nối (Connection Oriented), nghĩa là trước khi kết nối phải thực hiện thiết lập kết nối đầu xa. Tiến trình này được gọi là tiến trình bắt tay 3 bước.
Cụ thể hơn thì như sau:
Giả sử máy tính PC A muốn truyền dữ liệu tới PC B thì đầu tiên, PC A sẽ phải thiết lập kết nối TCP tới host B thông qua quá trình bắt tay 3 bước:
Bước 1: PC A gửi cho PC B một gói tin có cờ SYN được bật lên, với số thứ tự được đánh là n
Bước 2: PC B nhận được gói tin SYN của PC A thì nó gửi lại gói tin có cờ SYN có số thứ tự SEQ là m, kèm theo cờ ACK có số thứ tự SEQ là n+1 để xác nhận.
Bước 3: PC A nhận được SYN từ B thì sẽ gửi lại gói tin với SYN có số thứ tự SEQ là n+1 kèm theo cờ ACK có số thứ tự SEQ là m+1
=> Sau khi 3 bước được hoàn tất, kết nối TCP được thiết lập giữa hai máy A và B và có thể truyền dữ liệu được với nhau.
Như vậy ta có thể thấy được, TCP có cơ chế ACK ( Acknowledgement) dùng để xác nhận dữ liệu đã được truyền tới đích hay chưa và cơ chế đánh số thứ tự gói tin (Sequencing) mục đích là để lắp ráp các gói tin chính xác ở thời điểm gửi và nhận gói tin tránh bị trùng lặp.
Nếu không nhận được phản hồi nó sẽ gửi lại gói tin để đảm bảo quá trình không bị thất thoát. Chính vì vậy dữ liệu sẽ không bị mất trên đường truyền, nhưng bù lại tốc độ truyền tải dữ liệu sẽ bị chậm.
#2. Giao thức UDP là gì?
UDP (viết tắt của cụm từ User Datagram Protocol) là giao thức truyền tải hướng không kết nối (Connectionless).
Giao thức UDP không có quá trình bắt tay 3 bước như giao thức TCP, mà thay vào đó, nó sẽ truyền dữ liệu ngay lập tức, bỏ qua cơ chế xác thực cũng như đánh số thứ tự cho các gói tin.
Các gói tin liên tục được gửi cho bên nhận, bên gửi không cần “phải chờ” xem bên nhận đã nhận được hay chưa, mà cứ tiếp tục gửi tiếp.
Chính vì vậy, nếu bên nhận có bị mất một vài gói tin thì coi như sẽ bị mất (bên gửi sẽ không gửi lại), đó cũng là lý do tại sao những ứng dụng dùng giao thức UDP sẽ rất nhanh, vì nó đã bỏ qua bước kiểm tra lỗi khi truyền gói tin.
Một ví dụ đơn giản cho giao thức UDP chính là Game Online.
Bạn thử hình dung khi Thạch đang chơi một tựa game online như Liên minh huyền thoại chẳng hạn.
Máy chủ sẽ liên tục gửi hàng loạt các gói tin UDP đến máy tính của Thạch, đang combat rất căng thẳng thì chẳng may Thạch bị mất mạng, Thạch không thể điều khiển tướng của mình để tiếp tục combat ᵔᴥᵔ
Vâng, và lúc kết nối Internet trở lại thì giao tranh đã kết thúc và Thạch đã lên bảng điểm số 😀
Như vậy ta có thể thấy, bên gửi là máy chủ vẫn tiếp tục gửi gói tin mà không cần biết bên nhận có nhận được hay không.
Điều này cũng tương tự với khi bạn đang xem video trực tiếp (Live Stream) vậy, nếu bị mất kết nối – video của bạn sẽ bị dừng và sau đó nó sẽ chuyển tới đoạn phát sóng mới nhất tiếp theo.
Việc bỏ qua cơ chế sửa lỗi giúp UDP tăng tốc độ kết nối và giảm độ trễ thời gian thực, một điều rất quan trọng trong Game Online và Video phát trực tiếp.
#3. So sánh giao thức TCP và UDP
TCP | UDP |
Hướng kết nối | Hướng không kết nối |
Tốc độ chậm | Tốc độ nhanh |
Có cơ chế xác thực khi bị mất gói tin | Không có cơ chế xác thực khi mất gói tin |
Đánh dấu gói tin | Không đánh dấu gói tin |
Độ tin cậy cao | Độ tin thấp |
Header 20 byte | Header 8 byte |
#4. Lời Kết
Okay, như vậy là bạn đã hiểu được giao thức TCP là gì và UDP là gì rồi phải không nào ?!
Qua phân tích bên trên thì chúng ta có thể thấy, giao thức TCP hay UDP đều có những ưu điểm và nhược điểm riêng.
Tùy vào từng trường hợp cụ thể, cũng như nhu cầu sử dụng mà chúng ta sẽ lựa chọn cho phù hợp. Đối với những ứng dụng cần có độ tin cậy cao và không cần tốc độ quá nhanh thì chúng ta sẽ sử dụng TCP, ví dụ như website, email, hoặc gửi dữ liệu,…
Còn với những ứng dụng cần phải có tốc độ nhanh, độ trễ thấp… thì chúng ta sẽ sử dụng giao thức UDP. Chẳng hạn như Game online, Livestream, Video trực tuyến,….
Hy vọng những thông tin trong bài viết này sẽ hữu ích với bạn, đừng quên chia sẻ bài viết nếu bạn thấy hữu ích nhé !\
CTV: Đinh Hoàng Thạch – Blogchiasekienthuc.com
Edit by Kiên Nguyễn