TCP so với UDP: Giải mã cuộc tranh luận về độ tin cậy và hiệu quả

Hôm nay, chúng ta sẽ bắt đầu bằng việc tập trung vào TCP. Ở phần trước của chương về phân lớp, chúng ta đã đề cập đến một điểm quan trọng. Ở lớp mạng và các lớp tiếp theo, vấn đề chủ yếu nằm ở kết nối máy chủ với máy chủ, nghĩa là máy tính của bạn cần biết máy tính khác ở đâu để kết nối. Tuy nhiên, giao tiếp trong mạng thường là giao tiếp giữa các tiến trình chứ không phải giữa các máy. Do đó, giao thức TCP giới thiệu khái niệm cổng. Một cổng chỉ có thể được sử dụng bởi một tiến trình, cung cấp giao tiếp trực tiếp giữa các tiến trình ứng dụng chạy trên các máy chủ khác nhau.

Nhiệm vụ của lớp vận chuyển là cung cấp dịch vụ truyền thông trực tiếp giữa các tiến trình ứng dụng chạy trên các máy chủ khác nhau, vì vậy nó còn được gọi là giao thức đầu cuối. Lớp vận chuyển ẩn các chi tiết cốt lõi của mạng, cho phép tiến trình ứng dụng thấy như thể có một kênh truyền thông đầu cuối logic giữa hai thực thể lớp vận chuyển.

TCP là viết tắt của Transmission Control Protocol (Giao thức Điều khiển Truyền dẫn) và được biết đến là một giao thức hướng kết nối. Điều này có nghĩa là trước khi một ứng dụng có thể bắt đầu gửi dữ liệu đến ứng dụng kia, hai tiến trình phải thực hiện bắt tay. Bắt tay là một tiến trình được kết nối logic, đảm bảo việc truyền dữ liệu đáng tin cậy và việc tiếp nhận dữ liệu có trật tự. Trong quá trình bắt tay, một kết nối được thiết lập giữa máy chủ nguồn và máy chủ đích bằng cách trao đổi một loạt các gói tin điều khiển và thống nhất một số tham số và quy tắc để đảm bảo việc truyền dữ liệu thành công.

TCP là gì? (Mylinking củaMạng TapMôi giới gói tin mạngcó thể xử lý cả gói TCP hoặc UDP)
TCP (Giao thức điều khiển truyền dẫn) là một giao thức truyền thông lớp vận chuyển dựa trên luồng byte, đáng tin cậy, hướng kết nối.

Hướng kết nối: Hướng kết nối có nghĩa là giao tiếp TCP là một-một, tức là giao tiếp điểm-điểm-đầu cuối, không giống như UDP, có thể gửi tin nhắn đến nhiều máy chủ cùng một lúc, do đó không thể đạt được giao tiếp một-nhiều.
Đáng tin cậy:Độ tin cậy của TCP đảm bảo các gói tin được chuyển đến người nhận một cách đáng tin cậy bất kể sự thay đổi trong liên kết mạng, điều này làm cho định dạng gói giao thức của TCP phức tạp hơn so với UDP.
Dựa trên luồng byte:Bản chất dựa trên luồng byte của TCP cho phép truyền các thông điệp có bất kỳ kích thước nào và đảm bảo thứ tự thông điệp: ngay cả khi thông điệp trước đó chưa được nhận đầy đủ và ngay cả khi các byte tiếp theo đã được nhận, TCP sẽ không chuyển chúng đến lớp ứng dụng để xử lý và sẽ tự động loại bỏ các gói trùng lặp.
Sau khi máy chủ A và máy chủ B thiết lập kết nối, ứng dụng chỉ cần sử dụng đường truyền ảo để gửi và nhận dữ liệu, do đó đảm bảo việc truyền dữ liệu. Giao thức TCP chịu trách nhiệm kiểm soát các tác vụ như thiết lập, ngắt kết nối và duy trì kết nối. Cần lưu ý rằng ở đây chúng tôi nói đường truyền ảo chỉ có nghĩa là thiết lập kết nối, còn kết nối giao thức TCP chỉ cho biết hai bên có thể bắt đầu truyền dữ liệu và đảm bảo độ tin cậy của dữ liệu. Các nút định tuyến và vận chuyển được xử lý bởi các thiết bị mạng; bản thân giao thức TCP không liên quan đến các chi tiết này.

Kết nối TCP là dịch vụ song công toàn phần, nghĩa là máy chủ A và máy chủ B có thể truyền dữ liệu theo cả hai hướng trong một kết nối TCP. Tức là dữ liệu có thể được truyền giữa máy chủ A và máy chủ B theo luồng song phương.

TCP lưu trữ tạm thời dữ liệu trong bộ đệm gửi của kết nối. Bộ đệm gửi này là một trong những bộ đệm được thiết lập trong quá trình bắt tay ba bước. Sau đó, TCP sẽ gửi dữ liệu trong bộ đệm gửi đến bộ đệm nhận của máy chủ đích vào thời điểm thích hợp. Trên thực tế, mỗi đối tác sẽ có một bộ đệm gửi và một bộ đệm nhận, như minh họa ở đây:

TCP-UDP

Bộ đệm gửi là một vùng bộ nhớ được quản lý bởi triển khai TCP ở phía bên gửi, được sử dụng để lưu trữ tạm thời dữ liệu cần gửi. Khi bắt tay ba bước được thực hiện để thiết lập kết nối, bộ đệm gửi sẽ được thiết lập và sử dụng để lưu trữ dữ liệu. Bộ đệm gửi được điều chỉnh động theo tình trạng tắc nghẽn mạng và phản hồi từ bên nhận.

Bộ đệm nhận là một vùng bộ nhớ được quản lý bởi triển khai TCP ở phía nhận, được sử dụng để lưu trữ tạm thời dữ liệu đã nhận. TCP lưu trữ dữ liệu đã nhận trong bộ đệm nhận và chờ ứng dụng cấp trên đọc dữ liệu đó.

Lưu ý rằng kích thước của bộ đệm gửi và bộ đệm nhận bị giới hạn, khi bộ đệm đầy, TCP có thể áp dụng một số chiến lược, chẳng hạn như kiểm soát tắc nghẽn, kiểm soát luồng, v.v., để đảm bảo truyền dữ liệu đáng tin cậy và tính ổn định của mạng.

Trong mạng máy tính, việc truyền dữ liệu giữa các máy chủ được thực hiện thông qua các phân đoạn. Vậy phân đoạn gói tin là gì?

TCP tạo ra một phân đoạn TCP, hay phân đoạn gói tin, bằng cách chia luồng dữ liệu đến thành các khối và thêm tiêu đề TCP vào mỗi khối. Mỗi phân đoạn chỉ có thể được truyền trong một khoảng thời gian giới hạn và không thể vượt quá Kích thước Phân đoạn Tối đa (MSS). Trên đường xuống, một phân đoạn gói tin sẽ đi qua lớp liên kết. Lớp liên kết có một Đơn vị Truyền Tối đa (MTU), là kích thước gói tin tối đa có thể đi qua lớp liên kết dữ liệu. Đơn vị truyền tối đa thường liên quan đến giao diện truyền thông.

Vậy sự khác biệt giữa MSS và MTU là gì?

Trong mạng máy tính, kiến ​​trúc phân cấp rất quan trọng vì nó tính đến sự khác biệt giữa các cấp độ khác nhau. Mỗi lớp có một tên gọi khác nhau; ở lớp vận chuyển, dữ liệu được gọi là một phân đoạn (segment), và ở lớp mạng, dữ liệu được gọi là một gói IP. Do đó, Đơn vị Truyền Tối đa (MTU) có thể được coi là Kích thước gói IP Tối đa mà lớp mạng có thể truyền, trong khi Kích thước Phân đoạn Tối đa (MSS) là khái niệm của lớp vận chuyển, đề cập đến lượng dữ liệu tối đa mà một gói TCP có thể truyền tại một thời điểm.

Lưu ý rằng khi Kích thước Phân đoạn Tối đa (MSS) lớn hơn Đơn vị Truyền Tối đa (MTU), quá trình phân mảnh IP sẽ được thực hiện ở lớp mạng và TCP sẽ không chia dữ liệu lớn hơn thành các phân đoạn phù hợp với kích thước MTU. Sẽ có một phần trên lớp mạng dành riêng cho lớp IP.

Cấu trúc phân đoạn gói tin TCP
Chúng ta hãy cùng khám phá định dạng và nội dung của tiêu đề TCP.

Phân đoạn TCP

Số thứ tự: Một số ngẫu nhiên được máy tính tạo ra khi kết nối được thiết lập, làm giá trị ban đầu khi kết nối TCP được thiết lập, và số thứ tự được gửi đến máy thu thông qua gói SYN. ​​Trong quá trình truyền dữ liệu, máy gửi sẽ tăng số thứ tự theo lượng dữ liệu được gửi. Máy thu sẽ đánh giá thứ tự dữ liệu dựa trên số thứ tự nhận được. Nếu phát hiện dữ liệu không đúng thứ tự, máy thu sẽ sắp xếp lại dữ liệu để đảm bảo thứ tự dữ liệu.

Số xác nhận: Đây là số thứ tự được sử dụng trong TCP để xác nhận việc nhận dữ liệu. Nó biểu thị số thứ tự của dữ liệu tiếp theo mà bên gửi mong đợi nhận được. Trong kết nối TCP, bên nhận xác định dữ liệu nào đã được nhận thành công dựa trên số thứ tự của phân đoạn gói dữ liệu đã nhận. Khi bên nhận nhận được dữ liệu thành công, nó sẽ gửi một gói ACK đến bên gửi, trong đó chứa số xác nhận. Sau khi nhận được gói ACK, bên gửi có thể xác nhận rằng dữ liệu trước khi xác nhận số phản hồi đã được nhận thành công.

Các bit điều khiển của một phân đoạn TCP bao gồm:

Bit ACK: Khi bit này bằng 1, điều đó có nghĩa là trường phản hồi xác nhận hợp lệ. TCP quy định rằng bit này phải được đặt thành 1, ngoại trừ các gói SYN khi kết nối được thiết lập ban đầu.
Bit RST: Khi bit này là 1, điều đó chỉ ra rằng có ngoại lệ trong kết nối TCP và kết nối phải bị ngắt kết nối.
Bit SYN: Khi bit này được đặt thành 1, điều đó có nghĩa là kết nối sẽ được thiết lập và giá trị ban đầu của số thứ tự được đặt trong trường số thứ tự.
Bit FIN: Khi bit này là 1, điều đó có nghĩa là sẽ không có dữ liệu nào được gửi trong tương lai và kết nối là mong muốn.
Các chức năng và đặc điểm khác nhau của TCP được thể hiện bằng cấu trúc của các phân đoạn gói tin TCP.

UDP là gì? (Mylinking'sMạng TapMôi giới gói tin mạngcó thể xử lý cả gói TCP hoặc UDP)
Giao thức gói dữ liệu người dùng (UDP) là một giao thức truyền thông phi kết nối. So với TCP, UDP không cung cấp các cơ chế điều khiển phức tạp. Giao thức UDP cho phép các ứng dụng gửi trực tiếp các gói IP được đóng gói mà không cần thiết lập kết nối. Khi nhà phát triển chọn sử dụng UDP thay vì TCP, ứng dụng sẽ giao tiếp trực tiếp với IP.

Tên đầy đủ của Giao thức UDP là Giao thức Gói Dữ liệu Người dùng (User Datagram Protocol), và phần tiêu đề của nó chỉ dài tám byte (64 bit), rất ngắn gọn. Định dạng của phần tiêu đề UDP như sau:

Phân đoạn UDP

Cổng đích và cổng nguồn: Mục đích chính của chúng là chỉ ra tiến trình nào UDP sẽ gửi gói tin.
Kích thước gói: Trường kích thước gói tin chứa kích thước của tiêu đề UDP cộng với kích thước của dữ liệu
Tổng kiểm tra: Được thiết kế để đảm bảo việc truyền dữ liệu và tiêu đề UDP một cách đáng tin cậy. Vai trò của tổng kiểm tra là phát hiện xem có lỗi hoặc hỏng hóc nào xảy ra trong quá trình truyền gói UDP hay không để đảm bảo tính toàn vẹn của dữ liệu.

Sự khác biệt giữa TCP và UDP trong MylinkingMạng TapMôi giới gói tin mạngcó thể xử lý cả gói TCP hoặc UDP
TCP và UDP khác nhau ở những khía cạnh sau:

TCP so với UDP

Sự liên quan: TCP là giao thức truyền tải hướng kết nối, yêu cầu phải thiết lập kết nối trước khi dữ liệu có thể được truyền. Ngược lại, UDP không yêu cầu kết nối và có thể truyền dữ liệu ngay lập tức.

Đối tượng dịch vụ: TCP là dịch vụ một-một-hai-điểm, nghĩa là một kết nối chỉ có hai điểm cuối giao tiếp với nhau. Tuy nhiên, UDP hỗ trợ giao tiếp tương tác một-một, một-nhiều và nhiều-nhiều, có thể giao tiếp với nhiều máy chủ cùng một lúc.

Độ tin cậy: TCP cung cấp dịch vụ truyền dữ liệu đáng tin cậy, đảm bảo dữ liệu không lỗi, không mất mát, không trùng lặp và đến đúng lúc. Ngược lại, UDP nỗ lực hết sức nhưng không đảm bảo truyền dữ liệu đáng tin cậy. UDP có thể bị mất dữ liệu và các tình huống khác trong quá trình truyền tải.

Kiểm soát tắc nghẽn, kiểm soát lưu lượng: TCP có cơ chế kiểm soát tắc nghẽn và kiểm soát lưu lượng, có thể điều chỉnh tốc độ truyền dữ liệu theo điều kiện mạng để đảm bảo tính bảo mật và ổn định của việc truyền dữ liệu. UDP không có cơ chế kiểm soát tắc nghẽn và kiểm soát lưu lượng, ngay cả khi mạng rất tắc nghẽn, nó cũng sẽ không điều chỉnh tốc độ gửi UDP.

Tiêu đề trên cao: TCP có độ dài tiêu đề dài, thường là 20 byte, và sẽ tăng lên khi sử dụng các trường tùy chọn. Ngược lại, UDP có tiêu đề cố định chỉ 8 byte, do đó UDP có chi phí tiêu đề thấp hơn.

TCP so với UDP

Các tình huống ứng dụng TCP và UDP:
TCP và UDP là hai giao thức tầng vận chuyển khác nhau và chúng có một số điểm khác biệt trong các tình huống ứng dụng.

Vì TCP là giao thức hướng kết nối, nó chủ yếu được sử dụng trong các tình huống cần truyền dữ liệu đáng tin cậy. Một số trường hợp sử dụng phổ biến bao gồm:

Chuyển tập tin FTP:TCP có thể đảm bảo rằng các tập tin không bị mất hoặc bị hỏng trong quá trình truyền tải.
HTTP/HTTPS:TCP đảm bảo tính toàn vẹn và chính xác của nội dung web.
Vì UDP là giao thức không kết nối, nó không đảm bảo độ tin cậy, nhưng có các đặc điểm về hiệu suất và thời gian thực. UDP phù hợp cho các tình huống sau:

Lưu lượng gói thấp, chẳng hạn như DNS (Hệ thống tên miền):Các truy vấn DNS thường là các gói tin ngắn và UDP có thể hoàn thành chúng nhanh hơn.
Truyền thông đa phương tiện như video và âm thanh:Đối với truyền tải đa phương tiện có yêu cầu thời gian thực cao, UDP có thể cung cấp độ trễ thấp hơn để đảm bảo dữ liệu có thể được truyền tải kịp thời.
Truyền thông phát sóng:UDP hỗ trợ giao tiếp một-nhiều và nhiều-nhiều và có thể được sử dụng để truyền tin nhắn phát sóng.

Bản tóm tắt
Hôm nay chúng ta đã tìm hiểu về TCP. TCP là một giao thức truyền thông lớp vận chuyển hướng kết nối, đáng tin cậy, dựa trên luồng byte. Nó đảm bảo việc truyền dữ liệu đáng tin cậy và nhận dữ liệu có trật tự bằng cách thiết lập kết nối, bắt tay và xác nhận. Giao thức TCP sử dụng các cổng để thực hiện giao tiếp giữa các tiến trình và cung cấp dịch vụ truyền thông trực tiếp cho các tiến trình ứng dụng chạy trên các máy chủ khác nhau. Kết nối TCP là song công hoàn toàn, cho phép truyền dữ liệu hai chiều đồng thời. Ngược lại, UDP là giao thức truyền thông hướng kết nối, không cung cấp đảm bảo độ tin cậy và phù hợp với một số tình huống có yêu cầu thời gian thực cao. TCP và UDP khác nhau về chế độ kết nối, đối tượng dịch vụ, độ tin cậy, kiểm soát tắc nghẽn, kiểm soát luồng và các khía cạnh khác, và các tình huống ứng dụng của chúng cũng khác nhau.


Thời gian đăng: 03-12-2024