Tham dự Tech Lounge

Tham dự Tech Lounge


Cùng là giao thức gửi dữ liệu qua mạng Internet, nhưng TCP và UDP khác nhau ra sao?

Lư Thế Nghĩa
16/5/2022 11:29Phản hồi: 49
Cùng là giao thức gửi dữ liệu qua mạng Internet, nhưng TCP và UDP khác nhau ra sao?
Khi anh em gửi dữ liệu hay các gói tin qua mạng Internet, quá trình đằng sau nó thường liên quan đến giao thức TCP hoặc UDP. Cả 2 giao thức này đều được xây dựng dựa trên nền IP (Internet Protocol), cũng có nghĩa là khi gửi gói tin thông qua TCP hay UDP, chúng được gửi đến 1 địa chỉ IP nào đó. Dù rằng TCP và UDP không phải là 2 giao thức duy nhất hoạt động trên nền IP, nhưng chúng được ứng dụng rộng rãi nhất. Vậy sự khác biệt giữa TCP và UDP là gì?

Trước khi đi vào tìm hiểu kỹ hơn, anh em cần nắm được ý nghĩa của cổng – port. Trong thế giới máy tính và mạng Internet, port được sử dụng để giao tiếp và hình thành nên các kết nối giữa các máy tính trong mạng. Anh em đừng nhầm lẫn giữa port này và port kia – cổng vật lý RJ45 trên router chẳng hạn – mà đây là “cổng ảo”, thể hiện điểm cuối giữa 2 hoặc nhiều máy tính với nhau. Các port được đánh số và có 1 loạt số thứ tự được gán cụ thể cho những chức năng hay giao thức khác nhau.

TCP là gì?


TCP viết tắt của cụm từ Transmission Control Protocol, là giao thức hướng kết nối (connection-oriented) do nó thiết lập 1 kết nối (connection) giữa thiết bị gửi và thiết bị nhận trước khi truyền dữ liệu. Trong thế giới mạng, giao thức là “nhà cầm quyền”, đưa ra các luật lệ cũng như tiêu chuẩn chi phối cách dữ liệu được truyền dẫn giữa những thiết bị. TCP port là các port tuân thủ theo giao thức điều khiển đường truyền, trong đó có 1 số port mà chắc anh em ít nhiều cũng quen mặt như FTP (File Transfer Protocol) port 20 và 21; SMTP (Simple Mail Transfer Protocol) port 25 và IMAP (Internet Message Access Protocol) port 143 dành cho email; Secure Shell port 22...

TCP port tạo ra kết nối trước khi chia sẻ dữ liệu. Để dễ hình dung, anh em có thể liên tưởng đến cuộc gọi điện thoại. Khi anh em muốn gọi cho ba mẹ để hỏi thăm sức khỏe, anh em bấm số, nhấn gọi, điện thoại thực hiện kết nối đến số cần gọi và phía đầu dây bên kia đổ chuông, ba mẹ nhìn thấy số của anh em gọi đến và nhấn bắt máy, lúc này connection đã thành lập xong và anh em có thể hỏi thăm (truyền dữ liệu) rồi. Cách TCP port hoạt động cũng tương tự như thế, 1 kết nối bảo mật giữa bên gửi và bên nhận được đảm bảo trước khi dữ liệu gửi đi, nhưng kết nối này được tạo ra theo cách khác hơn 1 chút: three-way handshake.

tcp_udp_so_sanh_tinhte-1.jpg

Bắt tay 3 bước cần có 3 tương tác khác nhau với 3 thông điệp dạng SYN → SYN-ACK → ACK. Bước đầu tiên, thiết bị sẽ gửi 1 thông điệp SYN (sync, synchronize) kèm 1 số thứ tự đồng bộ hóa (synchronized sequence number) để giao tiếp với thiết bị nhận, kiểu “Alo, anh em nghe rõ không?”. Bước 2, nếu thiết bị nhận đang sẵn sàng kết nối, nó sẽ gửi lại 1 đoạn SYN-ACK, gồm xác nhận yêu cầu kết nối và 1 số thứ tự được đồng bộ hóa, kiểu “Nghe rõ rồi, có gì nói đi.”. Bước 3, thiết bị gửi sẽ gửi lại 1 đoạn ACK (acknowledge), cho biết rằng nó đã xác nhận nhận được thông điệp. Sau đó, kết nối được hình thành và bắt đầu quá trình truyền dữ liệu. Sau khi truyền xong, kết nối kết thúc.

Nhờ việc hình thành nên kết nối trước khi truyền nên các gói tin được đảm bảo nguyên vẹn và gửi đúng thứ tự. TCP đặt ưu tiên độ tin cậy lên hàng đầu bằng cách đánh số thứ tự gói tin, thiết bị nhận sẽ gửi lại thông báo rằng gói tin đã được nhận đúng và thiết bị gửi xác nhận lần nữa. Nếu có lỗi xảy ra, gói tin sẽ được gửi lại để đảm bảo phía nhận nhận được dữ liệu toàn vẹn. Các ứng dụng sử dụng giao thức TCP như HTTPS, DNS, SMTP, telnet, SNMP...

UDP là gì?


Cùng có chức năng truyền dữ liệu nhưng UDP – User Datagram Protocol – mang tính chất trái ngược với TCP. UDP là giao thức không kết nối (connectionless), thiết bị gửi tiến hành gửi dữ liệu đến thiết bị nhận mà không cần thiết lập kết nối trước đó. UDP loại bỏ tất cả những tính năng kiểm lỗi “cồng kềnh”, những thiết lập kết nối rắc rối và có độ trễ, tất cả chỉ để tập trung vào tốc độ truyền tải. Khi 1 ứng dụng sử dụng UDP, gói tin được gửi đến người nhận, và gửi liên tục, không cần biết người nhận có nhận được hay không hoặc nhận có đúng hay không. Nếu thiết bị nhận vô tình trễ hay để lạc mất gói tin, nó mất vĩnh viễn, bù lại, việc truyền dữ liệu sẽ có tốc độ nhanh hơn hẳn. Các UDP port thường gặp như DNS (Domain Name System) port 53, DHCP (Dynamic Host Configuration Protocol) port 68 và Kerberos port (88) được sử dụng cho dịch vụ gaming.

tcp_udp_so_sanh_tinhte-2.jpg

Do có tính tốc độ nên UDP thường được sử dụng cho việc streaming hoặc chơi game trực tuyến. Anh em sẽ thường gặp hiện tượng packet loss – mất gói tin khi xem livestream mà mạng lag, video phát trực tiếp sẽ bị đứng rồi sau khi có kết nối tiếp sẽ nhảy đến đúng vị trí hiện tại, những giây lag đã mất đi không thể xem được. Hay khi chơi game trực tuyến, đường truyền không tốt, gặp vấn đề cũng gây ra lag, anh em thấy nhân vật của mình hoặc người chơi khác đứng yên hoặc giật giật, nhảy lung tung trong bản đồ, đó là do các gói tin bị mất trong UDP.

Sự khác biệt giữa TCP và UDP?


tcp_udp_so_sanh_tinhte-3.png

Quảng cáo


Đọc đến đây thì anh em cũng đã biết được sự khác biệt giữa TCP và UDP rồi, mỗi giao thức đều có ưu điểm và khuyết điểm riêng, hướng đến các ứng dụng khác nhau. Độ tin cậy là điểm mạnh của TCP, đổi lại với tốc độ cũng như độ trễ cao, trong khi tốc độ là ưu tiên hàng đầu của UDP, nhưng gạt bỏ hết mọi tính năng đảm bảo cho tính toàn vẹn của dữ liệu. TCP được sử dụng cho các dịch vụ cần độ tin cậy và bảo mật cao, dữ liệu đảm bảo nguyên vẹn như email, hình ảnh, website... Ngược lại, livestream, live broadcast, game trực tuyến thường sử dụng UDP để tập trung vào tốc độ truyền tải cao nhất.
49 bình luận
Chia sẻ

Xu hướng

nnnn1234
ĐẠI BÀNG
2 năm
phức tạp quá ạ
vsphere
TÍCH CỰC
2 năm
@nnnn1234 Đơn giản nhất là TCP có phản hồi còn UDP thì ko. Giống như gửi thư cho bạn, sau khi nhận đc thư thì ng bạn gửi lại 1 tin nhắn đã nhận được rồi. Điều đó khiến TCP đáng tin cậy còn UDP thì nhanh hơn vì ko mất thêm 1 bước. Tùy vào tác vụ mà dùng giao thức phù hợp.
vunt
TÍCH CỰC
2 năm
@nnnn1234 Dễ hiểu mà 😁, có minh hoạ nữa, bạn còn đòi hỏi gì nữa!
nnnn1234
ĐẠI BÀNG
2 năm
@vunt tại mình dốt 😃
@nnnn1234 người nào nghề đó thoi bạn, ko cần hiểu. cũng như ta cứ đau đầu tìm lý do vì sao con chó là tên là chó mà không phải mèo. Lĩnh vực này cho lập trình viên và quản trị hệ thống thôi
Hồi xưa học ccna cả lớp dịch connectionless là "không kết nối" và ai cũng bị ăn chửi. Không kết nối thì gửi dữ liệu kiểu gì? bác chủ thớt dịch y như rằng...
@dao.tran “A connectionless protocol refers to the communication between two network endpoints without a PRIOR ARRANGEMENT in which one network endpoint simply sends a message to the other.” chả biết dùng từ nào cho đúng nữa 😂
BlueRevenger
ĐẠI BÀNG
2 năm
@mannavod Mình chỉ có thể dịch: "Là một chuẩn kết nối mà giao thức kết nối giữa hai mạng mà không cần phải XÁC LẬP TRƯỚC mà điểm kết nối, mạng này chỉ cần đơn giản là gởi một tín hiệu (message) đến mạng kia". Chữ "endpoint" có thể hiểu là "điểm kết nối" giữa hai mạng tức nơi kết nối hai cổng theo chuẩn chung nào đó. Mình nghĩ không cần dịch chữ này vì người đọc có thể hiểu được rồi và khiến câu dịch mất hay
laiviet
TÍCH CỰC
2 năm
@dao.tran :v hình như lớp nào mà học mạng IP đều có câu này.
@laiviet đúng rồi
rất hữu ích e cảm ơn bác nhá
Cái này ai học chuyên ngành thì biết chứ viết ra đại trà cũng không để làm gì… giống học toán tích phân ra đường cũng chỉ +-x/
PigZie
ĐẠI BÀNG
2 năm
@nightwish47 ngta thích biết thì sao ạ
Ngắn gọn súc tích 😆
Cười vô mặt
tcp.png
@-Lãng Khách- good meme 🤣
ainhan2008
ĐẠI BÀNG
2 năm
@-Lãng Khách- Em phải đăng nhập để like cái cmt này =)))
Patent God
ĐẠI BÀNG
2 năm
Tóm tắt cho dễ hiểu: gửi 100 gói tin từ 1 đến 100
TCP: Server phải xác thực Client nhận được gói tin 1 thì mới gửi tiếp gói tin 2, cứ liên tục như thế cho đến 100. Ưu điểm đảm bảo không mất gói tin nào, nhược điểm không đảm bảo được tính realtime. TCP ứng dụng trong các giao thức truyền file, xem video đã được lưu trữ trên internet.
UDP: Gói tin được gửi đi liên tục, server éo cần biết client có nhận được hay không -> client có thể không nhận được toàn bộ gói tin nhưng đảm bảo được tính realtime => ứng dụng trong livestream, họp trực truyến hay chơi game online, gọi thoại vvv
@Patent God Tóm lại là TCP có cơ chế gửi lại và sắp xếp lại còn UDP thì không. Vì thế TCP được gọi là truyền tin tin cậy còn UDP là truyền tin không tin cậy.
Còn bạn nói phải xác nhận nhận được gói 1 mới gửi tiếp gói 2 là sai. TCP chỉ phản hồi lại là gói nào bị thiếu thôi.
Patent God
ĐẠI BÀNG
2 năm
@thienvuong192 khổ quá ok bạn đúng nó là bản tin ACK =))
@Patent God sai kiến thức căn bản, 5 điểm về chỗ =))
laiviet
TÍCH CỰC
2 năm
@Patent God Tóm tắt mà vẫn sai, bác tóm chỗ nào đúng thôi.
Hanhsisken
ĐẠI BÀNG
2 năm
😁 nen co mot forum ve networking neu muon chia se kien thuc va chuyen sau. Viet bai kieu nay thay co ve long bong qua.
bài này thấy hơi thừa, vì những người liên quan thì khả năng cao là đã biết rồi, còn người k liên quan thì có đọc cả bài cũng thấy k hiểu, mà cũng k cần hiểu 😆
@vqt907 Tui k liên quan nhưng cũng cần hiểu vậy
PigZie
ĐẠI BÀNG
2 năm
@vqt907 bớt hạn hẹp đi bạn, ko phải ai cũng nghĩ như bạn
Vẫn cứ là tinhte, mặc dù chủ đề này chẳng mới lạ tự viết cũng được nếu có kiến thức, nhưng phải vẫn luôn là cắp vặt. https://www.makeuseof.com/what-are-tcp-and-udp-ports/
HamDzui
CAO CẤP
2 năm
@bibinguyen Tin nhiều mà… bỏ qua vụ vặt vãnh đi

VN với nhau nên nhẹ lời
laiviet
TÍCH CỰC
2 năm
@HamDzui Nếu không phản đối, người viết sẽ coi thường người đọc, viết ra ba thứ lăng nhăng.
Là người đọc, bạn phải tự nâng cao giá trị bản thân bằng việc không cho phép những bài chất lượng kém được qua một cách dễ dàng.
Từ đó mới cùng nhau tiến bộ được.
lehman1
ĐẠI BÀNG
2 năm
@laiviet ô nội cu K rất qan ngại vs tình hình này
HamDzui
CAO CẤP
2 năm
@laiviet Cái này nhạy cảm, mình đứng giữa nên bỏ phiếu trắng
Tóm tắt lại cho dễ hiểu 😂
69148BD3-FE7D-427C-8166-2A9E69F243C4.jpg
Linhtinhvai
ĐẠI BÀNG
2 năm
hay, cám ơn bạn, mình lại có thêm kiến thức về vụ này, từ bữa giờ cũng thấy nó khác nhau mà lười k tìm hiểu hii. Cám ơn
toiyeulexus
ĐẠI BÀNG
2 năm
đọc hiểu sương sương =)))))) chắc do em dốt
Lâu lâu mới thấy tt có bài đọc dc 😆))
vunt
TÍCH CỰC
2 năm
@darkmaster1 😃) với mình cái lâu lâu chắc phải mấy năm rồi!
@darkmaster1 và là bài dịch
laiviet
TÍCH CỰC
2 năm
@darkmaster1 :v Để tôi rủ 1 đàn chim đến nhặt sạn ra. Đói thì vẫn ăn được, mà ấm ấm bụng rồi thì phải nhặn sạn xomg mới ăn.
Bài viết khá là vòng vo mình đang làm việc trong chuyên ngành đọc cũng khó hiểu. Mình tóm tắt nhanh cho các bác ít hiểu biết về IT đây:
Đầu tiên ta cần hiểu gói tin là gì. 1 file to như vậy ko thể nào truyền tải cái bộp qua mạng local, intranet hay internet đc. Nó cần phải băm nhỏ ra ở đầu gửi và ghép lại ở đầu nhận. Đúng rồi phần băm nhỏ đó chính là gói tin.
Về TCP trước nhé:
- Cần tạo ra cầu nối trước (giống như xây cầu ở ngoài đời vậy, phải có đường thì mới di chuyển đc, đại loại thế).
- Có 1 cơ chế soát lỗi do 2 bên thống nhất. Đầu nhận nhận đc cái gì đều báo cáo cho đầu gửi.
- Gói tin được chuyển theo thứ tự 1-2-3-4-5-6-....
- Lỡ 1 gói tin nào đó thất lạc đầu nhận sẽ ra lệnh đầu gửi gửi lại. đầu gửi sẽ gửi lại gói tin thất lạc đó cho đến khi đầu nhận báo rằng mình đã nhận được gói đó mới gửi tiếp gói tiếp theo.
- Tính chất toàn vẹn dữ liệu cao. Ứng dụng trong chuyển file dữ liệu.
- Do bao hàm nhiều thứ (cầu nối, soát lỗi,...) nên gói tin của TCP sẽ lớn. Kích thước tối thiểu cho 1 gói tin TCP là 32 bit.
Về UDP
- Không cần khởi tạo cầu nối (giống chơi trò tung hứng vậy á).
- Không có cơ chế soát lỗi. Người gửi liên tục xả gói tin. Người nhận nhận được gì mặc kệ.
- Gói tin có thể không cần truyền theo thứ tự. Tùy nhu cầu của chương trình và người nhận
- Lạc gói nào coi như mất luôn. Người gửi ko gửi lại đâu (packet loss đó). Người nhận chỉ có thể yêu cầu người gửi gửi lại cả file chứ ko phải là gói tin bất kỳ trong 1 file.
- Tính chất toàn vẹn dữ liệu kém. Đổi lại gói tin rất nhỏ, kích thước tối thiểu chỉ 8 bit. Do các đặc tính đặc biệt của nó nên thường được ứng dụng trong live stream, nền tảng xem video online, online gaming (vì gói tin rất nhỏ và cơ chế truyền cũng đặc biệt nên ping khi dùng UDP sẽ thấp, tuy nhiên sẽ có thêm 1 thông số nữa trong game chính là % packet loss) và các dịch vụ khác nơi mà toàn vẹn dữ liệu là không quan trọng.
- Do đặc tính không cần cầu nối để truyền tải đây là chuẩn mà các thành phần DDoS vô cùng thích. Họ có thể huy động 1 lúc 50-100-200Gbps chỉ trong 1 khắc và dồn nó vào 1 máy chủ. Nếu không có cơ chế bảo vệ thích hợp, máy chủ đó sẽ bị sốc và die.
122101363_3066526873451483_3235813986055848904_n.jpg
laiviet
TÍCH CỰC
2 năm
Có học về mạng thì sẽ thấy bài này đầy lỗi do người viết không chuẩn, hoặc dịch sai. Còn đọc thường thức thì tàm tạm.
sodeep_1411
ĐẠI BÀNG
2 năm
Giải thích đơn giản, dễ hiểu. Bài viết tuyệt quá bro.
UDP chuyên broadcast
ks mod
atula
ĐẠI BÀNG
2 năm
Chẳng biết nhận xét thế nào vì ngày nào cũng phải mở gói tin ra phân tích từng trường một khi debug, đếm từng sequence xem gửi đủ hay không.

Xu hướng

Bài mới









  • Chịu trách nhiệm nội dung: Trần Mạnh Hiệp
  • © 2024 Công ty Cổ phần MXH Tinh Tế
  • Địa chỉ: Số 70 Bà Huyện Thanh Quan, P. Võ Thị Sáu, Quận 3, TPHCM
  • Số điện thoại: 02822460095
  • MST: 0313255119
  • Giấy phép thiết lập MXH số 11/GP-BTTTT, Ký ngày: 08/01/2019