3.5.6 TCP kết nối quản lýTrong tiểu mục này, chúng ta có một địa điểm gần nhất nhìn như thế nào một kết nối TCP được thành lập và xé. Mặc dù chủ đề này có thể không có vẻ đặc biệt đáng sợ, nó là quan trọng bởi vì thiết lập kết nối TCP có thể đáng kể thêm vào sự chậm trễ nhận thức (ví dụ, khi lướt Web). Hơn nữa, nhiều người trong số các cuộc tấn công mạng-công việc phổ biến nhất-bao gồm cả cực kỳ phổ biến SYN lũ tấn công-khai thác vulnera-bilities trong quản lý kết nối TCP. Hãy đầu tiên hãy xem làm thế nào thiết lập một kết nối TCP. Giả sử một tiến trình đang chạy trong một máy chủ (khách hàng) muốn để bắt đầu kết nối với một quá trình trong một máy chủ (server). Quá trình öùng-cation khách hàng đầu tiên thông báo cho khách hàng TCP rằng nó muốn thiết lập một kết nối đến một quá trình trong máy chủ. TCP trong khách hàng sau đó tiến hành để thiết lập một côn TCP-nection với TCP trong máy chủ theo cách sau đây:Bước 1. TCP phía khách hàng đầu tiên gửi một phân đoạn đặc biệt TCP TCP phía máy chủ. Phân khúc này đặc biệt có chứa không có dữ liệu lớp ứng dụng. Nhưng một trong những lá cờ bit trong các phân đoạn tiêu đề (xem hình 3,29), SYN bit, được thiết lập để 1. Vì lý do này, phân khúc này đặc biệt được gọi là một phân đoạn SYN. Ngoài ra, khách hàng ngẫu nhiên chọn một số thứ tự ban đầu (client_isn) và đặt số này trong trường số thứ tự của các phân đoạn TCP SYN ban đầu. Phân khúc này được đóng gói trong một datagram IP và được gửi đến máy chủ. Đã có sự quan tâm đáng kể trong đúng randomizing sự lựa chọn của client_isn để tránh một số cuộc tấn công bảo mật [CERT 2001-09].Bước 2. Một khi datagram IP có chứa đoạn TCP SYN đến các máy chủ máy chủ (giả sử nó đến!), Hệ phục vụ chất chiết xuất từ các phân đoạn TCP SYN từ datagram, phân bổ các bộ đệm TCP và biến để kết nối, và gửi một phân đoạn kết nối cấp cho khách hàng TCP. (Chúng tôi sẽ nhìn thấy trong chương 8 mà phân bổ các bộ đệm và biến trước khi hoàn tất bước bắt tay ba chiều, thứ ba làm cho TCP dễ bị tổn thương một cuộc tấn công từ chối dịch vụ được biết đến như SYN lũ lụt.) Điều này kết nối-cấp phân đoạn cũng chứa không có dữ liệu lớp ứng dụng. Tuy nhiên, nó có chứa ba phần quan trọng của thông tin trong tiêu đề phân đoạn. Trước tiên, SYN bit được thiết lập để 1. Thứ hai, lĩnh vực thừa nhận tiêu đề phân đoạn TCP được thiết lập để client_isn + 1. Cuối cùng, Hệ phục vụ chọn số thứ tự ban đầu của riêng của nó (server_isn) và đặt giá trị này trong lĩnh vực số thứ tự tiêu đề phân đoạn TCP. Điều này kết nối-cấp phân đoạn nói, trong thực tế, "tôi nhận được của bạn gói SYN để bắt đầu kết nối với số thứ tự ban đầu của bạn, client_isn. Tôi đồng ý với thiết lập này con-nection. Số thứ tự ban đầu của riêng của tôi là server_isn." Các kết nối cấp phân đoạn được gọi là một phân đoạn SYNACK.Bước 3. Sau khi nhận được các phân đoạn SYNACK, khách hàng cũng phân bổ các bộ đệm và biến để kết nối. Các máy chủ khách hàng sau đó gửi máy chủ nào được nêu ra một phân đoạn; phân khúc cuối này thừa nhận của máy chủ cấp kết nối seg-ment (khách hàng như vậy bằng cách đặt các giá trị server_isn + 1 trong lĩnh vực acknowl-edgment tiêu đề phân đoạn TCP). SYN bit được thiết lập số không, kể từ khi kết nối được thiết lập. Giai đoạn thứ ba này của bắt tay ba chiều có thể mang dữ liệu khách hàng trên máy chủ trong tải trọng phân đoạn.Một khi các bước sau ba đã được hoàn thành, các khách hàng và máy chủ máy chủ có thể gửi phân đoạn có chứa dữ liệu với nhau. Trong mỗi của các phân đoạn trong tương lai, SYN bit sẽ được thiết lập bằng không. Lưu ý rằng để thiết lập kết nối, ba gói dữ liệu được gửi giữa hai máy chủ, như minh hoạ trong hình 3,39. Vì lý do này, thủ tục thành lập kết nối này thường được gọi là một bắt tay ba chiều. Một số khía cạnh của bắt tay ba chiều TCP được khám phá trong những vấn đề bài tập ở nhà (tại sao là số thứ tự ban đầu cần thiết? Tại sao là một bắt tay ba chiều, như trái ngược với một cái bắt tay hai chiều, cần thiết?). Nó là thú vị để lưu ý rằng một nhà leo núi đá và một belayer (người đồn trú dưới đây các nhà leo núi đá và công việc mà nó là để xử lý các nhà leo núi an toàn dây) sử dụng một giao thức truyền thông ba cách bắt tay là giống hệt nhau để TCP của để đảm bảo rằng cả hai bên sẵn sàng trước khi các nhà leo núi bắt đầu đi lên.Tất cả những điều tốt đẹp phải đến một kết thúc, và như vậy là đúng với một TCP connec-tion. Một trong hai quá trình tham gia vào một kết nối TCP có thể kết thúc con-nection. Khi kết nối kết thúc, các "nguyên" (có nghĩa là, các bộ đệm và biến) trong các máy chủ được deallocated. Ví dụ, giả sử khách hàng quyết định để ngắt kết nối, như minh hoạ trong hình 3,40. Quá trình ứng dụng khách hàng các vấn đề một lệnh chặt chẽ. Điều này làm khách hàng TCP gửi một phân đoạn TCP đặc biệt cho quá trình máy chủ. Phân khúc này đặc biệt có một lá cờ bit trong tiêu đề của các phân đoạn, vây bit (xem hình 3,29), thiết lập để 1. Khi máy chủ nhận được phân khúc này, nó sẽ gửi khách hàng một phân đoạn thừa nhận trong trở lại. Hệ phục vụ sau đó gửi riêng của mình phân đoạn tắt máy, có vây chút các thiết lập để 1. Cuối cùng, khách hàng thừa nhận các máy chủ tắt máy phân đoạn. Tại thời điểm này, tất cả các nguồn lực trong hai máy chủ được bây giờ deallocated.Trong cuộc đời của một kết nối TCP, giao thức TCP chạy trong mỗi máy chủ làm cho quá trình chuyển đổi thông qua các TCP tiểu bang. 3,41 hình minh hoạ một trình tự điển hình của kỳ TCP được truy cập bởi các khách hàng TCP. Khách hàng TCP bắt đầu thuộc bang đóng cửa. Các ứng dụng trên phía khách hàng đưa ra một mới TCP connec-tion (bằng cách tạo ra một đối tượng ổ cắm trong ví dụ của chúng tôi Java như trong ví dụ Python từ chương 2). Điều này gây ra TCP trong khách hàng để gửi một phân đoạn SYN để TCP trong máy chủ. Sau khi có gửi đoạn SYN, khách hàng TCP vào nhà nước SYN_SENT. Trong khi ở trạng thái SYN_SENT, khách hàng TCP chờ đợi cho một phân đoạn từ các máy chủ TCP bao gồm một sự thừa nhận đối với phân khúc trước của khách hàng và có SYN bit thiết lập để 1. Có đã nhận được một phân đoạn, khách hàng TCP vào nhà nước được thành lập. Trong khi ở trạng thái được thành lập, khách hàng TCP có thể gửi và nhận được phân đoạn TCP có tải trọng chiến đấu (có nghĩa là, ứng dụng tạo ra) dữ liệu.Giả sử rằng các ứng dụng khách hàng quyết định nó muốn ngắt kết nối. (Lưu ý rằng các máy chủ cũng có thể chọn để ngắt kết nối.) Điều này làm khách hàng TCP gửi một phân đoạn TCP với cánh bit thiết lập để 1 và nhập bang FIN_WAIT_1. Trong khi ở trạng thái FIN_WAIT_1, khách hàng TCP chờ đợi cho một phân đoạn TCP từ các máy chủ với một sự thừa nhận. Khi nó nhận được phân khúc này, khách hàng TCP vào nhà nước FIN_WAIT_2. Trong khi ở trạng thái FIN_WAIT_2, các khách hàng chờ đợi cho một phân đoạn từ các máy chủ với chút vây thiết lập để 1; sau khi nhận được phân khúc này, khách hàng TCP thừa nhận phân đoạn của máy chủ và đi vào tiểu bang TIME_WAIT. TIME_WAIT trạng thái cho phép khách hàng TCP gửi lại sự thừa nhận cuối cùng trong trường hợp ACK là bị mất. Thời gian thuộc bang TIME_WAIT là phụ thuộc vào thực hiện, nhưng giá trị điển hình là 30 giây, phút 1, và 2 phút. Sau khi chờ đợi, kết nối chính thức đóng cửa và tất cả tài nguyên về phía khách hàng (bao gồm cả cổng số) được phát hành.3,42 hình minh họa các loạt các kỳ thường được truy cập bởi các giao thức TCP phía máy chủ, giả sử khách hàng bắt đầu kết nối teardown. Các quá trình chuyển đổi được tự giải thích. Trong những sơ đồ hai quá trình chuyển đổi nhà nước, chúng tôi chỉ có hiển thị như thế nào một kết nối TCP thường được thành lập và đóng cửa. Chúng tôi không có mô tả những gì xảy ra trong một số trường hợp bệnh lý, ví dụ, khi cả hai mặt của một con-nection muốn để bắt đầu hoặc tắt cùng một lúc. Nếu bạn đang quan tâm đến việc tìm hiểu-ing về điều này và các vấn đề nâng cao liên quan đến TCP, bạn được khuyến khích để xem cuốn sách toàn diện Stevens' [Stevens 1994].Chúng tôi thảo luận ở trên đã thừa nhận rằng cả khách hàng và máy chủ đang chuẩn bị để giao tiếp, ví dụ, rằng các máy chủ lắng nghe trên cổng mà khách hàng sẽ gửi phân đoạn SYN. Chúng ta hãy xem xét những gì sẽ xảy ra khi nhận được một máy chủ một phân đoạn TCP có cổng số hoặc nguồn IP địa chỉ không khớp với bất kỳ các ổ cắm đang diễn ra trong các máy chủ. Ví dụ, giả sử một loạt sẽ nhận được một gói TCP SYN với điểm đến cổng 80, nhưng các máy chủ không chấp nhận các kết nối trên cổng 80 (có nghĩa là, nó không chạy một máy chủ Web trên cổng 80). Sau đó các máy chủ sẽ gửi một đặc biệt đặt lại seg-ment nguồn. Phân khúc TCP này có lá cờ RST bit (xem phần 3.5.2) thiết lập để 1. Vì vậy, khi một máy chủ gửi một phân đoạn thiết lập lại, nó là nói cho nguồn "tôi không có một ổ cắm cho phân đoạn đó. Xin vui lòng không gửi lại đoạn." Khi một máy chủ nhận được một gói UDP có số hiệu cổng đích không phù hợp với một ổ cắm UDP liên tục, các máy chủ gửi một datagram ICMP đặc biệt, như được thảo luận trong chương 4.
đang được dịch, vui lòng đợi..
