/ / Bắt tay ba chiều là gì và nó hoạt động như thế nào?

Bắt tay ba chiều là gì và nó hoạt động như thế nào?

Trong những năm đầu của Internet, Giao thức Internet (IP) là giao thức duy nhất mọi người sử dụng để kết nối với internet. Vấn đề với IP là bạn có thể gửi một tin nhắn và không chắc liệu người nhận có nhận được tin nhắn đó hay không. Vì lý do này, TCP / IP đã được thành lập.

TCP / IP đảm bảo rằng tất cả dữ liệu bạn gửi đến được người nhận. Nó thực hiện điều này bằng cách cung cấp cho máy khách và máy chủ một kết nối an toàn trước khi gửi dữ liệu. Kết nối an toàn này được thiết lập thông qua một quá trình được gọi là bắt tay ba bước, còn được gọi là bắt tay TCP / IP.


Bắt tay ba chiều là gì?

Bắt tay ba bước (TCP / IP handshake) là ba tương tác đầu tiên giữa máy khách và máy chủ cố gắng thiết lập kết nối TCP. Những tương tác ban đầu này rất cần thiết trong việc tạo kết nối an toàn. Ở giai đoạn này, cả máy khách và máy chủ sẽ đồng ý về các tham số mà chúng sẽ sử dụng để kiểm tra và xác minh các gói dữ liệu đến và đi. Các tham số này sẽ ở dạng phân đoạn TCP.

Phân đoạn TCP là gì?

Trong kết nối TCP / IP, tất cả dữ liệu được gửi phải được cắt và cấu trúc trên những gì được gọi là phân đoạn TCP. Các phân đoạn này chứa thông tin như địa chỉ IP, cổng, bit cờ, số thứ tự, số xác nhận và dữ liệu tùy chọn hoặc tải trọng.


Ba tương tác đầu tiên (bắt tay ba bước) sẽ chỉ chứa tiêu đề phân đoạn TCP không có trọng tải hoặc dữ liệu đính kèm. Đây là một ví dụ về một phân đoạn TCP

Lưu ý rằng hình minh họa trên chỉ dành cho TCP. Một phân đoạn TCP / IP đầy đủ yêu cầu cả hai địa chỉ IP từ người gửi và người nhận ở trên cùng của phân đoạn TCP ở trên.

Bất cứ khi nào bạn gửi một gói hàng cho một người, bạn sẽ được dịch vụ chuyển phát yêu cầu điền vào mẫu thông tin và sau đó đính kèm vào bưu kiện trước khi vận chuyển. Tương tự, TCP yêu cầu người gửi đính kèm đầu phân đoạn (dạng thông tin) vào dữ liệu (gói) trước khi nó bắt đầu gửi phân đoạn (bưu kiện) đến người nhận.

Bất cứ khi nào một máy khách giao tiếp với một máy chủ, cả hai bên sẽ cần phải định dạng các tương tác của họ dưới dạng một phân đoạn TCP. Phân đoạn TCP bao gồm đầu phân đoạn TCP được gắn với dữ liệu bạn đang cố gắng gửi. Người gửi sẽ phải điền thông tin mà người đứng đầu phân đoạn yêu cầu.

Đối với một cái bắt tay ba bước, người gửi sẽ cần phải điền những thông tin sau:

  • Cổng nguồn: Xác định cổng của người gửi
  • Cảng đích: Xác định cổng của người nhận
  • Số thứ tự: Cho biết trình tự phân đoạn
  • Số xác nhận: Biểu thị một phân đoạn đã được xác nhận bằng cách thêm một phân đoạn vào số thứ tự nhất định

Ngoài việc điền vào các trường đầu phân đoạn, người gửi cũng phải chọn một bit cờ. Tổng cộng có sáu bit cờ, nhưng để bắt tay ba bước, bạn sẽ chỉ cần hai điều sau:

  1. SYN: Cung cấp một số thứ tự. Số thứ tự này sẽ được sử dụng để đếm trình tự của tất cả các phân đoạn đến cho phần còn lại của tương tác.
  2. ACK: Cho biết người nhận số SYN chấp nhận yêu cầu kết nối bằng cách thêm một (1) vào số SYN đã cho.

Bây giờ bạn đã biết phân đoạn TCP là gì, hãy xem nó được sử dụng như thế nào trong quá trình bắt tay ba chiều.

Cách thức hoạt động của một cái bắt tay ba chiều

Bắt tay ba bước được thiết lập khi cả máy khách và máy chủ đã trao đổi thông tin và thừa nhận số thứ tự của nhau. Như tên của nó, bắt tay ba bước được thực hiện trong ba bước.

Đầu tiên, máy khách gửi một đoạn SYN thuần túy cho biết nó muốn kết nối. Thứ hai, máy chủ phản hồi bằng phân đoạn SYN-ACK có nghĩa là nó đã xác nhận yêu cầu và đang gửi số SYN của chính nó để máy khách xác nhận. Thứ ba, máy khách gửi một phân đoạn ACK đến máy chủ để thông báo rằng số SYN của máy chủ đã được xác nhận và sẽ được sử dụng để kết nối thêm.

Một cái bắt tay ba chiều sẽ giống như thế này:

Hãy chia nhỏ nó và xem xét các phân đoạn để bạn biết chính xác điều gì sẽ xảy ra khi máy khách và máy chủ trao đổi và xác nhận số thứ tự.

Bước 1: Khách hàng gửi một phân đoạn SYN

Máy khách gửi một kết nối yêu cầu bằng cách gửi một phân đoạn SYN đến máy chủ. Máy khách sử dụng địa chỉ IP của máy khách để định vị máy chủ và gửi phân đoạn TCP.

Để giảm độ phức tạp của phân đoạn, chúng ta hãy bỏ qua một vài trường phân đoạn và tập trung vào các nhu cầu cơ bản cho kết nối bắt tay ba chiều. Điều này bao gồm cổng nguồn, cổng đích, số thứ tự, số xác nhận và loại bit cờ được sử dụng.

Và cùng với đó, một phân đoạn SYN / request sẽ trông như thế này:

Cổng máy khách là một số ngẫu nhiên trong khoảng từ 49152 đến 65536. Dải cổng này là phạm vi đã được thỏa thuận mà các thiết bị công cộng có thể sử dụng động để kết nối với internet. Dải cổng từ 1024 đến 49151 là riêng tư. Chúng sẽ phải được đăng ký bởi một thực thể để sử dụng một cổng trong phạm vi được chỉ định. Số cổng dưới 1024 là các cổng dành riêng cho các chức năng và giao thức internet khác nhau như FTP (cổng 20), SMTP (cổng 25), DNS (cổng 53) và HTTP (cổng 80).

Trong cuộc sống thực, một số thứ tự là một số ngẫu nhiên. Ví dụ, chúng tôi sử dụng 0000000000 để dễ hình dung hơn.

Ghi lại số thứ tự khi chúng ta tiến hành các bước. Hiện tại, đó là 000000000. Hiện không có số xác nhận vì không có thứ gì đó để xác nhận.

Bước 2: Máy chủ trả lời bằng phân đoạn SYN-ACK

Khi máy chủ nhận được một phân đoạn SYN, nó sẽ phản hồi bằng cách gửi một phân đoạn ACK có chứa số xác nhận. Số xác nhận sẽ là số thứ tự của khách hàng cộng với một (1).

Nhìn vào cổng nguồn. Nó cho thấy phân đoạn đó là từ cổng 20, cho biết nó đến từ máy chủ như một phản hồi.

Bây giờ, hãy nhìn vào số xác nhận. Đó là 0000000001, là số thứ tự của khách hàng (0000000000) cộng với một (1). Đây là cách một phân đoạn được theo dõi. Giả sử máy khách đã nhận được phản hồi phân đoạn ACK trong đó số xác nhận là 0000000002. Điều này sẽ cho khách hàng biết rằng phân đoạn 0000000001 bị thiếu và máy khách sẽ phải đợi cho đến khi nó đến để bạn không gặp phải tình trạng mất gói.

Như bạn có thể thấy, hai bit cờ được kích hoạt — SYN và ACK.

Bên cạnh việc xác nhận số thứ tự của máy khách, máy chủ cũng sẽ gửi số thứ tự của chính nó để máy khách xác nhận số thứ tự của máy chủ cộng với một (1). Trong ví dụ của chúng tôi, chúng tôi đã sử dụng 1111111111 làm số thứ tự của máy chủ. Một lần nữa, trong thế giới thực, con số này là ngẫu nhiên.

Lưu ý rằng số thứ tự của máy khách và máy chủ không cần phải khớp nhau. Miễn là cả hai bên thừa nhận số thứ tự duy nhất của nhau, kết nối sẽ đáng tin cậy.

Bước 3: Khách hàng trả lời bằng phân đoạn ACK

Cuối cùng, máy khách xác nhận số thứ tự của máy chủ.

Phân đoạn cuối cùng là phân đoạn ACK từ khách hàng.

Như bạn có thể, máy khách sẽ xác nhận số thứ tự của máy chủ bằng cách phản hồi với số thứ tự của máy chủ (1111111111) cộng với một (1), là 1111111112.

Máy khách và máy chủ sẽ không còn gửi một số thứ tự nữa vì số thứ tự bắt đầu đã được xác nhận. Tuy nhiên, cả hai bên sẽ mong đợi các phân đoạn xác nhận tiếp tục các số thứ tự cộng với một (1) và số byte trong suốt quá trình tương tác. Trong trường hợp này, máy khách đang mong đợi phản hồi tiếp theo của máy chủ có ACK là 0000000002 (nếu không có dữ liệu đính kèm).

Sau đó, bắt tay ba bên được thiết lập!

Hiểu cách kết nối mạng hoạt động

Bây giờ bạn đã học được cách thức hoạt động của bắt tay ba bước, bạn cũng sẽ có thời gian dễ dàng hơn trong việc hiểu cách thức hoạt động của TCP sau quá trình bắt tay. Máy khách và máy chủ sẽ bắt đầu gửi dữ liệu khi quá trình bắt tay được thiết lập. Lần này, định dạng phân đoạn đầy đủ sẽ được sử dụng, cùng với dữ liệu hoặc trọng tải tùy chọn.

Dữ liệu thường được phân đoạn / cắt thành các phần nhỏ hơn để truyền dễ dàng hơn. Mỗi phân đoạn dữ liệu có đầu phân đoạn riêng chứa số thứ tự và số xác nhận. Lý do cho một số thứ tự là để biết trình tự của các phân đoạn khi chúng cuối cùng sẽ được tập hợp lại. Các số xác nhận ở đó để xác minh với người gửi rằng phân đoạn của họ đã được nhận và nó khớp với chuỗi các phân đoạn đến.

Việc đếm một số thứ tự và xác minh chúng bằng một xác nhận là cách TCP có thể vận chuyển một cách đáng tin cậy các khối dữ liệu khổng lồ mà không bị thiếu bất kỳ gói dữ liệu nào.

Và với điều đó, bạn nên có một ý tưởng khá tốt về cách thức hoạt động của TCP.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *