TCP three-way handshake
Tcp three-way handshake :
server : máy chủ
client : máy con =============================================1 gói dữ liệu TCP ( TCP packet ) chứa flag bits ( cờ ) để mô tả nội dung và mục đích của gói dữ liệu . Vd: gói dữ liệu với cờ SYN ( synchoronize ) dùng để bắt đầu 1 connection. ACK ( acknowledgement ) . FIN (finish ) dùng để cắt 1 connection…
Bây giờ chúng ta đi sâu hơn 1 phiên làm việc được bắt đầu như thế nào :
Click vào hình để xem
1> SYN: Các chương trình máy con ( như web browser, ftp, …) bắt đầu connection với máy chủ bằng cách gửi 1 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 cho 1 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ụ Web Server sẽ luôn chờ tín hiệu ở cổng 80 và IE sẽ connect vào cổng 80 của máy chủ .
Ngoài ra trong gói dữ liệu còn có thêm địa chỉ IP của máy con và máy chủ ( cả 2 )
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 SYN và ACK :
SYN/ACK packet được gửi ngược lại bằng cách đổi 2 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 . Hoặc ICMP cổng khÔng chấp nhận để thông báo cho client rằng yêu cầu đã bị từ chối .
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 nhất 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 giữa connection.
=======================================
Như vậy, chúng ta đã biết làm cách nào để mở 1 connection. Tiến trình phải thực hiện trước khi bắt đầu truyền dữ liệu .
Have fun
Bình luận mới