TCP (Transmission Control Protocol) và UDP (User Datagram Protocol) đều là giao thức truyền dẫn lớp 4 trong mô hình OSI. Tuy nhiên, hai giao thức này khá khác nhau. Từ một cái nhìn cấp cao, bạn có thể nói rằng TCP là đáng tin cậy và UDP là không đáng tin cậy. Tại sao chúng ta sử dụng UDP? Đặc điểm UDP Do UDP có thể chịu được mất gói, điều này cung cấp độ trễ thấp. Điều này cực kỳ hữu ích cho phát trực tuyến video, âm thanh trực tiếp và các ứng dụng khác yêu cầu dữ liệu trực tiếp. UDP thường được gọi là một giao thức không kết nối. Không giống như TCP, nó không yêu cầu một phiên phải được mở trước hoặc trong quá trình truyền dữ liệu. Điều này thường được gọi là truyền tải "nỗ lực tốt nhất". Hai điểm cuối mạng giao tiếp qua UDP bắt đầu gửi các gói giữa chúng mà không cần sắp xếp bất kỳ chi tiết kết nối nào trước. Đặc điểm TCP Đối với những việc như truyền tệp, tải xuống các trang web (duyệt internet), gửi / nhận email, kết nối từ xa với các máy khác, v.v., sử dụng TCP. Điều này là do TCP thiết lập một kết nối trước và trong quá trình truyền dữ liệu để ngăn chặn mất gói. Kết quả của việc này có thể chậm hơn một chút so với UDP, nhưng nó cũng có nghĩa là tất cả dữ liệu sẽ đến đích một cách đáng tin cậy. Vậy tại sao TCP không hoạt động với video? Có phải là một điều tốt nếu có video không mất dữ liệu? Câu trả lời cho điều này là có, về lý thuyết thì đó là một điều tốt, nhưng trên thực tế thì nó sẽ không hoạt động tốt lắm. TCP dựa vào quy trình bắt tay, cửa sổ và xác minh để gửi dữ liệu của nó một cách hiệu quả mà không bị mất. Sự chậm trễ nhỏ mà điều này gây ra cũng đủ khiến chất lượng video bị ảnh hưởng. Bảng so sánh nhanh Bắt tay 3 chiều TCP so với Giao tiếp không kết nối UDP TCP dựa vào bắt tay 3 chiều để thiết lập kết nối với đích trước khi gửi dữ liệu. Quá trình này bao gồm ba bước cơ bản: Đầu tiên, người gửi sẽ gửi một SYN (Số thứ tự đồng bộ hóa). Tiếp theo, người nhận trả lời SYN bằng SYNACK. Điều này bao gồm một ACK báo hiệu rằng SYN đã được nhận và SYN cho người gửi biết số thứ tự mà nó mong đợi để bắt đầu chuyển. Cuối cùng, một ACK cuối cùng được gửi đến người nhận để cho người nhận biết rằng SYNACK đã được nhận đúng cách. Tại thời điểm này, một kết nối đã được thiết lập và quá trình truyền dữ liệu có thể được tiến hành. So sánh quy trình bắt tay ba bước với quy trình của UDP. Không có kết nối nào được thiết lập với UDP. Nó có thể thực hiện các con đường khác nhau đi ra ngoài so với gửi đến. Nó có thể bị mất một lượng nhỏ và người gửi không quan tâm liệu người nhận có nhận được tất cả thông tin của mình hay không. Đây chính là lý do mà tiêu đề có ít thông tin hơn, dẫn đến chi phí băng thông ít hơn và tốc độ nhanh hơn. Tiêu đề (Headers) TCP và UDP TCP Header UDP Header Bạn có thể tự hỏi làm thế nào một giao thức có thể có nhiều băng thông hơn giao thức kia. Nếu dữ liệu được truyền đi là cùng một lượng thì chắc chắn sẽ không có sự khác biệt? Bạn sẽ sai và lý do là vì các tiêu đề khác nhau với TCP có tiêu đề gói lớn hơn nhiều như được hiển thị từ các sơ đồ trên. TCP và UDP yêu cầu chúng đóng gói các gói dữ liệu mà chúng đang gửi bằng các tiêu đề riêng của chúng như một cách để cho biết thông tin được truyền như thế nào. Cả TCP và UDP đều có một số điểm chung trong tiêu đề gói của chúng. Cả hai đều có cổng nguồn và cổng đích cũng như tổng kiểm tra để xem liệu có bất kỳ dữ liệu nào bị mất trong quá trình truyền hay không. Điều thú vị hơn là sự khác biệt. Điều khác duy nhất UDP có là trường “Độ dài” cho người nhận biết có bao nhiêu dữ liệu trong gói để nó biết phải đợi thông tin trong bao lâu. Tuy nhiên, TCP có nhiều trường hơn. TCP có các trường cho SYN và ACK. Nó cũng có một phần của tiêu đề dành riêng cho cờ điều khiển, chẳng hạn như đặt lại kết nối TCP khi nó nhận ra nó đang truyền quá nhanh. Cũng bao gồm trường con trỏ khẩn cấp thường bị bỏ qua, nhưng kết hợp với một trong các cờ điều khiển, nó có thể được sử dụng để đánh dấu thông báo là yêu cầu xử lý ưu tiên. Có lẽ quan trọng nhất là trường cửa sổ. Trường này cho biết lượng dữ liệu có thể được chuyển trước khi yêu cầu ACK. Trường dữ liệu quá nhỏ dẫn đến sự chậm chạp không cần thiết. Trường quá lớn và có thể bị mất dữ liệu. Cửa sổ cho phép các gói tin phát triển về kích thước cho đến khi đạt đến giới hạn thất thoát. Có lẽ bạn đã nhận thấy rằng quá trình tải xuống luôn bắt đầu chậm và dường như sẽ tăng tốc sau một thời gian. Các giao thức sử dụng TCP HTTP / HTTPs (cổng 80, 443) SSH (cổng 22) FTP (cổng 21) Telnet (cổng 23) Email SMTP (cổng 25) Giao thức Máy tính Từ xa - RDP (cổng 3389) Các giao thức sử dụng UDP DNS (cổng 53) Giao thức truyền tệp tầm thường - TFTP (cổng 69) Giao thức thời gian mạng - NTP (cổng 123) Giao thức thời gian thực (cổng UDP ngẫu nhiên) Kết luận: Mặc dù TCP và UDP đều chạy qua IP, chúng truyền rất khác nhau. TCP chậm hơn, nhưng đáng tin cậy hơn, rất tốt cho giao tiếp không thể chịu mất gói. Trong khi UDP nhanh hơn nhiều, có ít chi phí băng thông hơn và có thể chịu được nhiều mất gói hơn. Do đó, nó không phải là một giải pháp tốt cho các tệp cần đến nguyên vẹn.