Bài giảng Quá trình bắt tay 3 bước (three way - handshake) trong tầng Transport

dayto.kdh

Administrator
Quy trình bắt tay 3 bước (three way - handshake) trong tầng Transport






Ở lớp Transport có 2 giao thức quan trọng là UDP và TCP.

- TCP là giao thức thuộc dạng connection-oriented (hướng kết nối). Có nghĩa là nó thiết lập kênh kết nối trước khi truyển data đi.

- UDP là giao thức thuộc dạng connectionless (nghĩa là không hướng kết nối). Nó không cần thiết lập kênh truyền trước khi truyền dữ liệu đi.

TCP thiết lập kết nối bằng 3 bước bắt tay (3-way handshake)

sender ___________ receiver

SYN seq=X ----------> SYN received (step 1)

SYN received <--------send ACK X+1 and SYN Y (step 2)

Send ACK Y+1 --------> (step 3)



Tìm hiểu:


Có lẽ kiến thức về TCP/IP là những gì bạn cần phải tìm hiểu đầu tiên trên con đường trở thành Network Administrator hay Security Advisor. Kiến thức liên quan đến bộ giao thức này có rất nhiều, bạn nên dành thời gian để tìm hiểu thật kỹ về nó. Trong bài này chúng ta sẽ đề cập đến vấn đề 3 bước bắt tay tạo kết nối trong TCP.
Một gói dữ liệu TCP chứa các bit cờ (flag bits) để mô tả nội dung và mục đích của gói dữ liệu.
Ví dụ:

* Gói dữ liệu với cờ SYN (synchronization <=> Sự đồng bộ) dùng để bắt đầu một connection.
* ACK (acknowledgement <=> Xác nhận).
* FIN (finish <=> hoàn thành) dùng để ngắt một connection.
* ...

Bây giờ chúng ta sẽ tìm hiểu kỹ hơn một phiên (session) làm việc được bắt đầu như thế nào:



1. SYN: các chương trình máy con (ví dụ yêu cầu từ browser, ftp client) bắt đầu connection với máy chủ bằng cách gửi một packet với cờ "SYN" đến máy chủ.
SYN packet này thường được gửi từ các cổng cao (1024 - 65535) của máy con đến những cổng trong vùng thấp (1 - 1023) của máy chủ. Chương trình trên máy con sẽ hỏi hệ điều hành cung cấp cho một cổng để mở connection với máy chủ. Những cổng trong vùng này được gọi là "cổng máy con" (client port range). Tương tự như vậy, máy chủ sẽ hỏi HĐH để nhận được quyền chờ tín hiệu trong máy chủ, vùng cổng 1 - 1023. Vùng cổng này được gọi là "vùng cổng dịch vụ" (service port).
Ví dụ (mặc định):

- Web Server sẽ luôn chờ tín hiệu ở cổng 80 và Web browser sẽ connect vào cổng 80 của máy chủ.
- FTP Server sẽ lắng ở port 21.

Ngoài ra trong gói dữ liệu còn có thêm địa chỉ IP của cả máy con và máy chủ.

2. SYN/ACK: khi yêu cầu mở connection được máy chủ nhận được tại cổng đang mở, server sẽ gửi lại packet chấp nhận với 2 bit cờ là SYN và ACK.
SYN/ACK packet được gửi ngược lại bằng cách đổi hai IP của server và client, client IP sẽ thành IP đích và server IP sẽ thành IP bắt đầu. Tương tự như vậy, cổng cũng sẽ thay đổi, server nhận được packet ở cổng nào thì cũng sẽ dùng cổng đó để gửi lại packet vào cổng mà client đã gửi.
Server gửi lại packet này để thông báo là server đã nhận được tín hiệu và chấp nhận connection, trong trường hợp server không chấp nhận connection, thay vì SYN/ACK bits được bật, server sẽ bật bit RST/ACK (Reset Acknowledgement) và gởi ngược lại RST/ACK packet.
Server bắt buộc phải gửi thông báo lại bởi vì TCP là chuẩn tin cậy nên nếu client không nhận được thông báo thì sẽ nghĩ rằng packet đã bị lạc và gửi lại thông báo mới.

3. ACK: khi client nhận được SYN/ACK packet thì sẽ trả lời bằng ACK packet. Packet này được gởi với mục đích duy báo cho máy chủ biết rằng client đã nhận được SYN/ACK packet và lúc này connection đã được thiết lập và dữ liệu sẽ bắt đầu lưu thông tự do.
Đây là tiến trình bắt buộc phải thực hiện khi client muốn trao đổi dữ liệu với server thông qua giao thức TCP. Một số thủ thuật dựa vào đặc điểm này của TCP để tấn công máy chủ (ví dụ DOS).


 

dayto.kdh

Administrator
Viết theo những gì mình hiểu, có gì sai xót mong các bạn chỉ bảo nhé :D


Quá trình tạo kết nối ( 3 bước)

Step 1:
Đầu tiên máy A sẻ gửi đến cho máy B một gói tin trong đó có một cờ gọi là SYN, cờ SYN cho biết rằng máy A đang yêu cầu một kết nối từ máy B,trong SYN có chứa một chỉ số port của client đang mở và cần kết nối đến server

Step 2:
Sau khi máy B nhận được yêu cầu kết nối từ máy A thì máy B sẻ gửi một gói tin cho máy A, trong gói tin gửi lại cho máy A thì server sẻ gửi một SYN và ACK trong đó ACK cho biết răng Sever đang sẵn sàng kết nối với Client, trong ACK cũng cho biết rằng port trên server đang sẵn sàng hoạt động là port bao nhiêu.

Step 3:
Khi client nhận được gói tin gửi từ server qua thì client sẻ trả lời cho server bằng một gói ACK nữa, mục đích của việc gửi gói tin ACK này là cho biết client đã sẵn sàng hoạt động, lúc bấy giờ thì 2 máy đã kết nối thành công. => 2 máy có thể gửi dữ liệu cho nhau.



Kết thúc kết nối ( 4 bước)


Step 1:
Đầu tiên Client sẻ gửi một yêu cầu ngắt kết nối đến cho server

step 2:
Sau khi máy B đã nhận được yêu cầu rồi nó sẻ gửi lại một hồi đáp cho máy A nói rằng Server đã nhận hết các gói tin rồi và sẵn sàng ngắt kết nối.

Step 3:
Đồng thời Server sẻ gửi tiếp một gói tin FIN về cho client để biết rằng server đã sẵn sàng ngắt kết nối

Step 4:
Client gửi lại một gói ACK để xác nhận rằng client đã nhận được gói tin FIN và kết thúc quá trình làm việc

 
xây nhà trọn gói tại quảng ngãi xây nhà trọn gói quảng ngãi xây nhà trọn gói tại quảng ngãi nội thất quảng ngãi
Top