Quản lý kết nối

Một phần của tài liệu Bài giảng mạng máy tính ths nguyễn xuân anh (Trang 114 - 117)

Giao thức TCP thuộc loại kết nối có hướng, do đó một kết nối của nó phải được thực hiện qua ba giai đoạn: thiết lập liên kết, truyền dữ liệu và hủy bỏ liên kết. Để thực hiện thiết lập liên kết và hủy bỏ liên kết, các tiến trình TCP trên các thiết bị đầu cuối của người sử dụng phải trao đổi các đoạn tin đặc biệt (những đoạn tin này sử dụng các cờ trong trường Control Bits). Giả sử tiến trình chạy trên máy máy khách muốn khởi tạo một kết nối tới một tiến trình trên máy chủ. Đầu tiên tiến trình ứng dụng trên máy khách yêu cầu thực thể TCP của nó thiết lập một kết nối tới một tiến trình trên máy chủ, sau đó thực thể TCP máy khách khởi tạo kết nối TCP tới thực thể TCP trên máy chủ qua ba bước sau:

Bước 1: Máy khách tạo một đoạn tin đặc biệt (không chứa dữ liệu của tầng ứng dụng nhưng chứa các thông tin điều khiển): cờ SYN trong Control Bits được đặt giá trị bằng 1, số tuần tự ban đầu (client_isn)… và chuyển xuống lớp mạng để gửi tới máy chủ.

Bước 2: Khi nhận được đoạn tin SYN, tiến trình TCP của máy chủ sẽ cấp phát bộ đệm nhận và các biến TCP phục vụ kết nối đồng thời gửi đi một đoạn đặc biệt thông báo chấp nhận kết nối từ máy khách. Đoạn tin này cũng không chứa dữ liệu của tầng ứng dụng mà chỉ thiết lập bit SYN và bit ACK (do đó gọi là đoạn tin SYNACK) trong trường Control bits, thiết lập số tuần tự của mình (server_isn), số tuần tự xác nhận bằng client_isn+1, thiết lập giá trị trường cửa số và các tham số khác.

Bước 3: Nhận được đoạn tin SYNACK, tiến trình TCP của máy khách cũng khởi tạo bộ đệm và các biến phục vụ kết nối đồng thời gửi đoạn tin thứ ba biên nhận với các tham số: Bit ACK được đặt bằng 1, số tuần tự là client_isn+1, số xác nhận là server_isn + 1.

Hình 6.6 Ba bước bắt tay trong giai đoạn thiết lập kết nối của TCP

Sau khi đã thực hiện 3 bước trên, một kênh truyền logic đã được thiết lập, máy khách và máy chủ có thể trao đổi đoạn dữ liệu của lớp ứng dụng. Như vậy, để thiết lập được kết nối hai máy phải trao đổi 3 đoạn tị, vì vậy thủ tục kết nối được xem là quá trình bắt tay ba bước.

Sau khi truyền xong dữ liệu thì phải giải phóng tài nguyên mạng, do đó máy khách và máy chủ phải chuyển sang giai đoạn thứ ba là hủy bỏ kết nối, việc hủy bỏ kết nối không nhất thiết phải bắt đầu từ máy khách. Khi kết nối kết thúc thì các tài nguyên (bộ đệm và các biến TCP) trong máy được giải phóng. Ví dụ máy khách quyết định đóng kết nối. Tiến trình ứng dụng máy khách sẽ đưa ra lệnh đóng. Khi đó tiến trình TCP của máy khách gửi một đoạn tin đặc biệt đến tiến trình máy chủ: cờ FIN trong segment này được đặt giá trị 1. Nhận được đoạn tin FIN, máy chủ lần lượt gửi hai đoạn tin cho máy khách: một đoạn tin ACK biên nhận đoạn tin FIN của máy khách và một đoạn tin kết thúc FIN. Cuối cùng máy khách gửi đoạn tin ACK biên nhận đoạn tin FIN từ máy chủ. Sau bốn bước trên, tất cả nguyên của hai máy phục vụ cho kết nối đều được giải phóng.

Trong suốt thời gian kết nối TCP, giao thức TCP chạy trên mỗi máy chuyển qua các trạng thái TCP (TCP state, sử dụng lệnh netstat –a để kiểm chứng các trạng thái này). Hình 4.27 minh họa quá trình thay đổi trạng thái TCP xảy ra bên phía máy khách. TCP máy khách bắt đầu ở trạng thái đóng (CLOSED). Ứng dụng bên phía máy khách khởi tạo một kết nối TCP. Điều này đòi hỏi TCP máy khách gửi đoạn tin SYN tới máy chủ. Sau khi gửi đoạn tin SYN, TCP máy khách chuyển sang trạng thái SYN_SENT. Trong trạng thái SYN_SENT, TCP máy khách đợi đoạn tin SYNACK. Khi nhận được đoạn tin này, máy khách chuyển sang trạng thái ESTABLISHED. Ở trạng thái ESTABLISHED, máy khách có thể gửi và nhận những đoạn tin chứa dữ liệu của tầng ứng dụng.

Hình 6.7 Kết thúc kết nối TCP

Giả sử ứng dụng máy khách quyết định đóng kết nối (máy chủ tương tự). Khi đó TCP máy khách gửi đoạn tin FIN và chuyển sang trạng thái FIN- WAIT_1. Trong trạng thái này, TCP máy khách đợi đoạn tin biên nhận từ phía máy chủ. Sau khi nhận được đoạn tin này, TCP máy khách chuyển sang trạng thái FIN_WAIT_2. Trong trạng thái FIN_WAIT_2, TCP máy khách đợi FIN đoạn tin từ máy chủ. Sau khi nhận đoạn tin này, TCP máy khách gửi đoạn tin ACK biên nhận tới máy chủ và chuyển sang trạng thái TIME_WAIT. Trong trạng thái TIME_WAIT, TCP máy khách có thể gửi lại biên nhận ACK trong trường hợp ACK trước bị mất. Thời gian đợi ở trạng thái TIME_WAIT phụ thuộc vào phần mềm triển khai TCP, nhưng thường nhận các giá trị 30 giây, một phút, hai phút. Sau khi hết thời gian đợi, kết nối chính thức được đóng và tất cả tài nguyên phía máy khách (bao gồm cả số hiệu cổng) được giải phóng.

Hình 6.8 Quá trình biến đổi trạng thái của Client

Hình 6.9 Quá trình biến đổi trạng thái của Server

Một phần của tài liệu Bài giảng mạng máy tính ths nguyễn xuân anh (Trang 114 - 117)