Bạn Đã Biết Gì Về Giao Thức Mạng TCP và UDP?

Trong hệ thống mạng hiện nay, chúng ta có các mô hình kiến trúc phân tầng như OSI, TCP/IP,… Các mô hình này bao gồm nhiều tầng, mỗi tầng có một chức năng riêng giúp tổ chức dữ liệu và vận chuyển dữ liệu trong mạng lưới các máy tính. Một trong những tầng quan trọng của mô hình trên là tầng giao vận, nó bao gồm các giao thức hỗ trợ vận chuyển dữ liệu như TCP, UDP, DCCP, SCTP, IL,….

Trong đó có 2 giao thức được sử dụng phổ biến nhất hiện nay là TCP và UDP.

1. Một vài khái niệm cơ bản

Mô hình kiến trúc phân tầng OSI và TCP / IP :

Các bạn hoàn toàn có thể tìm hiểu thêm về 2 quy mô OSI và TCP / IP tại đường dẫn sau : Khai-niem-OSI-TCPIP .
Với quy mô như vậy, tài liệu chuyển đi sẽ được đóng gói qua những tầng và được chuyển qua mạng, tài liệu nhận sẽ được giải thuật từ tầng dưới lên đến tầng ứng dụng ( Application ). Về cơ bản tiến trình gửi và nhận tài liệu giống với cách gửi và nhận 1 hộp quà .

Như vậy khi hai ứng dụng ở 2 máy khác nhau hoàn toàn có thể tiếp xúc với nhau, tài liệu đều di qua tầng giao vận ( Transport ), ở đó có những giao thức tương hỗ chúng. Trong bài này tất cả chúng ta cùng nhau tìm hiểu và khám phá về 2 giao thức TCP và UDP tương tự với hai loại tiếp thị quảng cáo : hướng link và không liên kế .
Hướng link ( Connection-oriented ) : Dữ liệu được truyền qua một link đã được thiết lập với 3 tiến trình : thiết lập link, truyền tài liệu, đóng link. Chuyền dữ liệu một cách đáng tin cậy .
Không link ( Connectionless ) : Không cần 3 quá trình để thiết lập link, chỉ có quy trình tiến độ truyền tài liệu. Chuyền dữ liệu không an toàn và đáng tin cậy .

2. Transmission Control Protocol là gì?

TCP hay Transmission Control Protocol là một trong những giao thức cốt lõi của bộ giao thức TCP / IP, nó thiết lập những quy tắc và quy trình tiến độ tiêu chuẩn cho việc truyền thông tin qua internet. Giao thức này truyền tài liệu với 3 giai quá trình của hướng link, tài liệu sẽ được truyền đi theo dòng byte một cách an toàn và đáng tin cậy và theo thứ tự .
Những nguyên do giúp bảo vệ độ an toàn và đáng tin cậy chính là có thiết lập link, có trấn áp luồng, trấn áp ùn tắc và có chính sách báo nhận .

Cơ chế báo nhận:

Khi bên A và bên B gửi tài liệu, gói tin sẽ gửi kèm theo 2 số hiệu Seq và ACK. Với Seq là số hiệu của byte tiên phong trong đoạn tin dữ liệu, ACK là số hiệu byte tiên phong mong ước được nhận từ bên còn lại. Với cách này TCP bảo vệ việc kiểm tra nhận và gửi giữa 2 phía .

Thiết lập liên kết với 3 giai đoạn (3-way handshake):

Giai đoạn 1 : client A gửi cờ SYN ( synchronization ) với nhu yếu thiết lập link đến địa chỉ IP và số hiệu cổng phía server .
Giai đoạn 2 : server khi nhận được SYN, nếu gật đầu link thì sẽ gửi lại packet kèm theo 2 số hiệu ACK / SYN ( Acknowledgement / Synchronization ) tới địa chỉ IP và số hiệu cổng của Client. Trường hợp server không gật đầu link thì sẽ gửi lại packet với 2 số hiệu RST / ACK ( Reset / Acknowledgement ) .
Dù gật đầu hay không gật đầu link server bắt buộc phải gửi lại packet xác nhận cho client, vì TCP là chuẩn an toàn và đáng tin cậy có chính sách báo nhận, nếu không thông tin client sẽ nghĩ rằng gói tin bị mất hoặc nghẽn nên sẽ gửi lại .
Giai đoạn 3 : Khi client nhận được SYN / ACK, client sẽ gửi lại gói tin ACK để thông tin cho server. Lúc này link đã được thiết lập, tài liệu hoàn toàn có thể gửi luôn cùng gói tin ACK .

Đóng liên kết:

Khi muốn đóng link, bên client sẽ gửi gói tin FIN ( Finish ) cho server
Server nhận được gói FIN, gửi gói ACK vấn đáp lại, đồng thời vào trạng thái đóng link và gửi tiếp gói FIN
Client nhận được gói FIN, client gửi gói ACK để xác nhận
Cuối cùng Server nhận được gói ACK xác nhận và đóng link

Kiểm soát luồng:

TCP bảo vệ rằng tài liệu truyền đi sẽ không làm quá tải bên nhận, do tại khi bên nhận không còn năng lực nhận thêm tài liệu những gói tin tiếp theo sẽ mất .

Để trấn áp được luồng tài liệu, bên nhận ( reveiver ) sẽ có một hành lang cửa số nhận Receiver Window ( rwnd ). Rwnd dùng để báo khoảng chừng trống còn lại mà bên nhận hoàn toàn có thể nhận. Mỗi khi nhận được một gói tin, bên nhận gửi một ACK đến bên gửi để xác nhận, trong gói tin ACK đó sẽ chứa giá trị của rwnd, từ đó bên gửi hoàn toàn có thể liên tục gửi những gói tin tiếp theo .

Kiểm soát tắc nghẽn: TCP có 3 giai đoạn kiểm soát tắc nghẽn sau.

  • Slow-start: tăng tốc độ truyền gói tin theo cấp số mũ đến một ngưỡng nào đó (Threshold).
  • Congestion Avoidance: giai đoạn tránh tắc nghẽn, tốc độ sẽ tăng dần theo hàm tuyến tính hay cấp số cộng, thường là sau khi qua ngưỡng threshold.
  • Congestion detection: giai đoạn phát hiện tắc nghẽn, tắc nghẽn xảy ra khi timeout hoặc bên gửi nhận được 3 ACK trùng lặp.

TCP giúp cho tài liệu được truyền đi đều đặn, an toàn và đáng tin cậy bỏ lỡ sự khác nhau về địa lý, phần cứng, ứng dụng, đặc biệt quan trọng nó linh động và dễ tăng cấp. Một số ứng dụng cần đến sự đáng tin cậy trong truyền tài liệu của TCP như : http, mail, File transfer protocol ( FTP ), … .

3. User datagram protocol là gì?

UDP hay User Datagram Protocol là loại giao thức tiếp xúc không link. UDP không lưu lại trạng thái link ở bên gửi và bên nhận, vì thế nó sẽ không chịu nghĩa vụ và trách nhiệm với gói tin đã được truyền đi, bên gửi chỉ tạo một gói tin ( datagram ) kèm với địa chỉ IP, số hiệu cổng của bên nhận rồi gửi đi. UDP cũng không có quản trị ùn tắc và trấn áp luồng như TCP, nhưng UDP cũng có khuôn dạng đoạn tin giống với TCP :

Với UDP, mỗi gói tin sẽ kèm theo độ dài của tài liệu mà gói đó hoàn toàn có thể truyền đi, sự số lượng giới hạn này cùng với việc UDP không cần thiết lập link đã giúp UDP truyền tài liệu nhanh hơn, nên tương thích với những ứng dụng cần vận tốc truyền tài liệu nhanh .
Đi kèm với ưu điểm về vận tốc, UDP lại không có trấn áp ùn tắc, trấn áp luồng nên dẫn đến hoàn toàn có thể làm ùn tắc Internet, gói tin đến không theo thứ tự gửi và đặc biệt quan trọng là độ an toàn và đáng tin cậy thấp. Phát triển ứng dụng với UDP sẽ phức tạp hơn khi người tăng trưởng phải thiết lập chính sách trấn áp độ đáng tin cậy .
Một số ứng dụng sử dụng UDP lúc bấy giờ như : network time protocol ( NTP ), domain name service ( DNS ), Routing information protocol ( RIP ), …

Vậy là mình và các bạn đã tìm hiểu qua về 2 loại giao thức TCP và UDP. Mỗi loại sẽ có ưu điểm và nhược điểm riêng, việc chọn TCP hay UDP sẽ phụ thuộc vào ứng dụng các bạn đang phát triển. Thực tế, lập trình viên không cần phải đối mặt với những vần đề tắc nghẽn gói tin hay mất gói tin, ta chỉ cần truyền dữ liệu vào socket và các giao thức TCP, UDP sẽ lo việc còn lại. Các bạn cũng có thể tham khảo bài viết lập trình socket sau:

Lập trình socket với TCP : lap-trinh-socket-voi-tcp
Lập trình socket với UDP : lap-trinh-socket-với-udp

Lời kết

Qua bài này mình và những bạn đã khám phá về hai loại giao thức phổ cập nhất hiên này là TCP và UDP. Trong bài viết mình có tìm hiểu thêm một số ít tài liệu của Đại học Bách Khoa Thành Phố Hà Nội. Nếu bài viết có ý nghĩa bạn đọc hãy để lại nhìn nhận cũng như comment những vướng mắc bên dưới để mọi người cùng giải đáp. Cảm ơn bạn đọc, chúc bạn đọc thành công xuất sắc trên con đường học tập !

Rate this post
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments