Hôm nay, chúng ta sẽ bắt đầu bằng việc 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à các lớp dưới, nó chủ yếu liên quan đến các kết nối giữa các máy chủ, có nghĩa là máy tính của bạn cần biết vị trí của máy tính khác để 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 cổng. Một cổng chỉ có thể được chiếm dụng bởi một tiến trình, điều này cung cấp khả năng giao tiếp trực tiếp giữa các tiến trình ứng dụng đang 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 các 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 che giấu các chi tiết cốt lõi của mạng, cho phép tiến trình ứng dụng coi như có một kênh truyền thông đầu cuối logic giữa hai thực thể của lớp vận chuyển.
TCP là viết tắt của Transmission Control Protocol 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 cho ứng dụng khác, hai tiến trình phải thực hiện quá trình bắt tay. Bắt tay là một quá trình kết nối logic đảm bảo việc truyền tải đáng tin cậy và 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ố tham số và quy tắc để đảm bảo truyền dữ liệu thành công.
TCP là gì? (Liên kết của tôiĐiểm truy cập mạngVàBộ môi giới gói mạngcó thể xử lý cả gói TCP và UDP.)
TCP (Transmission Control Protocol) là một giao thức truyền thông lớp vận chuyển dựa trên luồng byte, hướng kết nối và đáng tin cậy.
Định hướng kết nốiGiao thức hướng kết nối có nghĩa là giao tiếp TCP là giao tiếp một-đến-một, tức là giao tiếp điểm-đến-điểm từ đầu đến 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ể thực hiện giao tiếp một-đến-nhiều.
Đáng tin cậyĐộ tin cậy của TCP đảm bảo các gói dữ liệu được gửi đến người nhận một cách đáng tin cậy bất kể sự thay đổi nào trong liên kết mạng, điều này làm cho định dạng gói dữ liệu của giao thức TCP phức tạp hơn so với UDP.
Dựa trên luồng byteBả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ó kích thước bất kỳ 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, đảm bảo việc truyền dữ liệu. Giao thức TCP chịu trách nhiệm điều khiển 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, đường truyền ảo chỉ có nghĩa là thiết lập kết nối, trong khi kết nối của giao thức TCP chỉ cho biết hai phía có thể bắt đầu truyền dữ liệu và đảm bảo tính tin cậy của dữ liệu. Việc định tuyến và vận chuyển dữ liệu được xử lý bởi các thiết bị mạng; bản thân giao thức TCP không quan tâm đến các chi tiết này.
Kết nối TCP là một dịch vụ song công toàn phần, có 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 hai chiều.
TCP tạm thời lưu trữ 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ộ nhớ đệ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ộ nhớ đệm gửi đến bộ nhớ đệ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 bên sẽ có một bộ nhớ đệm gửi và một bộ nhớ đệm nhận, như được minh họa ở đây:
Bộ đệm gửi là một vùng bộ nhớ do hệ thống TCP duy trì ở 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 quá trình bắt tay ba bước được thực hiện để thiết lập kết nối, bộ nhớ đệ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 tùy thuộc vào tình trạng tắc nghẽn mạng và phản hồi từ phía người nhận.
Bộ đệm nhận là một vùng bộ nhớ do triển khai TCP duy trì ở phía nhận, được sử dụng để lưu trữ tạm thời dữ liệu nhận được. TCP lưu trữ dữ liệu nhận được trong bộ nhớ đệm nhận và chờ ứng dụng phía trên đọc dữ liệu đó.
Lưu ý rằng kích thước của bộ nhớ đệm gửi và bộ nhớ đệm nhận có giới hạn; khi bộ nhớ đệ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à ổn định 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ì?
Giao thức 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 nhỏ 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 được vượt quá Kích thước Phân đoạn Tối đa (MSS). Trên đường đi, 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 gọi khác nhau; ở lớp vận chuyển, dữ liệu được gọi là phân đoạn (segment), và ở lớp mạng, dữ liệu được gọi là gói IP (IP packet). Do đó, Đơn vị truyền tải tối đa (MTU) có thể được hiểu là Kích thước gói IP tối đa mà lớp mạng có thể truyền tải, trong khi Kích thước phân đoạn tối đa (MSS) là một khái niệm ở 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 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), việc 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 ở lớp mạng dành riêng cho lớp IP.
cấu trúc phân đoạn gói TCP
Hãy cùng tìm hiểu định dạng và nội dung của các tiêu đề TCP.
Số thứ tựSố thứ tự (sequence number) là một số ngẫu nhiên được máy tính tạo ra làm giá trị ban đầu khi thiết lập kết nối TCP, và số thứ tự này đượ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 sẽ tăng số thứ tự theo lượng dữ liệu đã gửi. Người nhận 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 theo thứ tự, người nhận sẽ sắp xếp lại dữ liệu để đảm bảo tính đúng thứ tự.
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ó cho biết số thứ tự của dữ liệu tiếp theo mà người gửi mong đợi nhận được. Trong một 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 được. Khi người nhận nhận được dữ liệu thành công, nó sẽ gửi một gói ACK cho người gửi, gói này chứa số 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 phản hồi số xác nhận đã đượ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 những điều sau:
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 RSTKhi bit này bằng 1, điều đó cho biết có lỗi xảy ra trong kết nối TCP và cần phải buộc ngắt kết nối.
Bit SYNKhi 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ự.
Phần cuốiKhi bit này bằng 1, điều đó có nghĩa là sẽ không có thêm dữ liệu nào được gửi đi trong tương lai và kết nối được duy trì.
Các chức năng và đặc điểm khác nhau của TCP được thể hiện qua cấu trúc của các phân đoạn gói TCP.
UDP là gì? (Của Mylinking)Điểm truy cập mạngVàBộ môi giới gói mạng(có 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 cần thiết lập 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 địa chỉ IP.
Tên đầy đủ của giao thức UDP là User Datagram Protocol, và phần 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:
Cảng đích và cảng xuất phátMục đích chính của chúng là để chỉ ra UDP nên gửi gói tin đến tiến trình nào.
Kích thước góiTrườ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 traMã kiểm tra (checksum) được thiết kế để đảm bảo việc truyền tải đáng tin cậy các tiêu đề và dữ liệu UDP. Vai trò của mã kiểm tra là phát hiện xem có lỗi hoặc sự hư hỏng nào xảy ra trong quá trình truyền gói UDP hay không, nhằm đả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 MylinkingĐiểm truy cập mạngVàBộ môi giới gói mạngcó thể xử lý cả gói TCP và UDP.
TCP và UDP khác nhau ở những khía cạnh sau:
Sự liên quanTCP là một giao thức vận chuyển 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 tải. 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-đến-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-đến-một, một-đến-nhiều và nhiều-đến-nhiều, có thể giao tiếp với nhiều máy chủ cùng một lúc.
Độ tin cậyTCP cung cấp dịch vụ truyền dữ liệu một cách đáng tin cậy, đảm bảo dữ liệu không có lỗi, không bị mất mát, không trùng lặp và được gửi đến đúng lúc yêu cầu. Mặt khác, UDP chỉ cố gắng hết sức nhưng không đảm bảo việc truyền tải hoàn toàn đáng tin cậy. UDP có thể bị mất dữ liệu và gặp các sự cố khác trong quá trình truyền tải.
Kiểm soát tắc nghẽn, kiểm soát dòng chảyTCP có cơ chế kiểm soát tắc nghẽn và kiểm soát luồng, có thể điều chỉnh tốc độ truyền dữ liệu theo điều kiện mạng để đảm bảo an ninh 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 luồng, ngay cả khi mạng bị tắc nghẽn nghiêm trọng, nó cũng sẽ không tự điều chỉnh tốc độ gửi dữ liệu.
Đầu trangTCP có độ dài phần tiêu đề khá dài, thường là 20 byte, và độ dài này sẽ tăng lên khi sử dụng các trường tùy chọn. Mặt khác, UDP có phần tiêu đề cố định chỉ 8 byte, do đó UDP có chi phí tiêu đề thấp hơn.

Các kịch bản ứng dụng TCP và UDP:
TCP và UDP là hai giao thức lớp vận chuyển khác nhau, và chúng có một số điểm khác biệt trong các kịch bản ứ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 trường hợp yêu cầu truyền tải dữ liệu đáng tin cậy. Một số trường hợp sử dụng phổ biến bao gồm:
Truyền tệp FTPTCP có thể đảm bảo rằng các tập tin không bị mất hoặc hư hỏng trong quá trình truyền tải.
HTTP/HTTPSTCP đả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 bù lại nó có đặc điểm hiệu quả và hoạt động theo thời gian thực. UDP phù hợp với các trường hợp sau:
Lưu lượng truy cập ít gói tin, 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 dữ liệu ngắn và giao thức 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 việc truyền tải đa phương tiện với 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 truyền tải kịp thời.
Truyền thông phát thanhUDP hỗ trợ giao tiếp một-nhiều và nhiều-nhiều, có thể được sử dụng để truyền các thông điệp 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 dựa trên luồng byte, hướng kết nối và đáng tin cậy. Nó đảm bảo việc truyền tải đá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 các 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 toàn phầ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 phi kết nối, không cung cấp đảm bảo độ tin cậy và phù hợp với một số trường hợp 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 kịch bản ứng dụng của chúng cũng khác nhau.
Thời gian đăng bài: 03/12/2024



