TCP so với UDP: Làm sáng tỏ cuộc tranh luận về độ tin cậy so với hiệu quả

Hôm nay, chúng ta sẽ bắt đầu bằng cách tập trung vào TCP. Trước đó trong 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à bên dưới, nó liên quan nhiều hơn đến các 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 với nó. 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 giao tiếp giữa các máy. Do đó, giao thức TCP giới thiệu khái niệm về cổng. Một cổng chỉ có thể được chiếm 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à làm thế nào để cung cấp các dịch vụ truyền thông trực tiếp giữa các quy trình ứng dụng chạy trên các máy chủ khác nhau, vì vậy nó cũng đượ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 quy trình ứng dụng thấy như thể có một kênh truyền thông đầu cuối hợp lý giữa hai thực thể lớp vận chuyển.

TCP là viết tắt của Transmission Control Protocol và được biết đến là 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 quy trình phải thực hiện bắt tay. Bắt tay là một quy trình được kết nối hợp lý đảm bảo truyền dữ liệu đáng tin cậy và 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 điều khiển và thống nhất một số thông số và quy tắc để đảm bảo truyền dữ liệu thành công.

TCP là gì? (Mylinking củaMạng lưới vòiMô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 tin 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 thông ảo để gửi và nhận dữ liệu, do đó đảm bảo 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 kết nối, ngắt kết nối và giữ 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, 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 kết nối TCP. Nghĩa là dữ liệu có thể được truyền giữa máy chủ A và máy chủ B theo luồng song hướ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 chiều. 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. Trong thực tế, mỗi đối tác sẽ có một bộ đệm gửi và một bộ đệm nhận, như được hiển thị ở đây:

TCP-UDP

Bộ đệm gửi là một vùng bộ nhớ được duy trì bởi triển khai TCP ở phía người 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 chiều được thực hiện để thiết lập kết nối, bộ đệm gửi đượ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ừ người nhận.

Bộ đệm nhận là một vùng bộ nhớ được duy trì 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 bằng 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 hoặc phân đoạn gói tin bằng cách chia luồng đế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 đ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 khác nhau; trong lớp vận chuyển, dữ liệu được gọi là một phân đoạn, và trong 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 có thể được truyền bởi lớp mạng, 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 có thể được truyền bởi một gói TCP 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), 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
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 do 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 người nhận thông qua gói SYN. ​​Trong quá trình truyền dữ liệu, người gửi tăng số thứ tự theo lượng dữ liệu được gửi. Người nhận đánh giá thứ tự của dữ liệu theo số thứ tự đã nhận. Nếu dữ liệu được phát hiện không theo thứ tự, người nhận sẽ sắp xếp lại dữ liệu để đảm bảo thứ tự của 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ó chỉ ra số thứ tự của dữ liệu tiếp theo mà người gửi mong đợi nhận được. Trong kết nối TCP, người 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 người nhận nhận được dữ liệu thành công, nó sẽ gửi một gói ACK đến người gửi, trong đó có chứa số xác nhận xác nhận. Sau khi nhận được gói ACK, người gửi có thể xác nhận rằng dữ liệu trước khi xác nhận số trả lời đã được nhận thành công.

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

Bit ACK: Khi bit này là 1, điều đó có nghĩa là trường trả lời xác nhận là hợp lệ. TCP chỉ đị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.
RST chút: 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 được thiết lập và giá trị ban đầu của số thứ tự được đặt trong trường số thứ tự.
Phần 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 được 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 lưới vòiMôi giới gói tin mạngcó thể xử lý cả gói TCP hoặc UDP)
Giao thức Datagram Người dùng (UDP) là một giao thức truyền thông không 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 dữ liệu người dùng và tiêu đề của nó chỉ có tám byte (64 bit), rất ngắn gọn. Định dạng của 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 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 tin 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 lưới vòiMô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 có thể truyền dữ liệu. 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, tức 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 có 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 và 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.

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 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ó 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, 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ên 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ên không đảm bảo độ tin cậy nhưng có đặc điểm là hiệu quả và thời gian thực. UDP phù hợp với 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 dữ liệu đ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 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 đã học 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à tiếp 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 quy trình và cung cấp các dịch vụ truyền thông trực tiếp cho các quy trình ứng dụng chạy trên các máy chủ khác nhau. Các 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à một giao thức truyền thông hướng khô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