HTTP - đó là giao thức vận chuyển thực tế giữa máy chủ và máy khách - là "quốc tịch" bởi vì nó không nhớ gì giữa lời gọi. MỌI tài nguyên được truy cập qua HTTP là một yêu cầu duy nhất không có kết nối luồng giữa chúng.Nếu bạn tải một trang web có tệp HTML nằm trong đó có ba thẻ <img>
nhấn cùng một máy chủ, sẽ có bốn kết nối TCP được thương lượng và mở, bốn lần truyền dữ liệu, bốn kết nối đã đóng. Đơn giản là không một quốc gia lưu giữ tại máy chủ tại giao thức mức mà sẽ có máy chủ biết gì về bạn khi bạn đi vào.
(Vâng, đó là sự thật cho HTTP lên đến 1.0 ở mức nào. HTTP 1.1 sẽ bổ sung thêm các cơ chế kết nối liên tục của các loại khác nhau vì các vấn đề hiệu suất không thể tránh khỏi mà một giao thức thực sự không trạng thái sẽ sinh ra. không có quốc tịch.)
Để giúp bạn hiểu sự khác biệt, hãy tưởng tượng rằng một giao thức như Telnet hoặc SSH là không quốc tịch. Nếu bạn muốn có một danh sách thư mục của một tập tin từ xa, bạn sẽ phải, như là một hoạt động nguyên tử, kết nối, đăng nhập, thay đổi thư mục và đưa ra lệnh ls
. Khi lệnh ls
hiển thị xong nội dung thư mục, kết nối sẽ đóng lại. Nếu sau đó bạn muốn hiển thị nội dung của một tệp cụ thể, bạn sẽ phải kết nối lại, đăng nhập, thay đổi thư mục và hiện ra lệnh cat
. Khi lệnh hiển thị tệp kết thúc, kết nối sẽ lại đóng lại.
Khi bạn nhìn vào nó theo cách đó, mặc dù ống kính của Telnet/SSH, nghe có vẻ khá ngu ngốc, phải không? Vâng, trong một số cách nó là và trong một số cách nó không phải là. Khi một giao thức là không trạng thái, máy chủ có thể thực hiện một số tối ưu hóa khá tốt và dữ liệu có thể được lan truyền dễ dàng. Các máy chủ sử dụng các giao thức không trạng thái có thể mở rộng rất hiệu quả, vì vậy trong khi việc truyền dữ liệu cá nhân thực tế có thể rất chậm (việc mở và đóng các kết nối TCP là KHÔNG rẻ!) Một hệ thống tổng thể có thể rất, rất hiệu quả và có thể mở rộng đến bất kỳ số lượng người dùng nào.
Nhưng ...
Hầu hết mọi thứ bạn muốn làm ngoài việc xem các trang web tĩnh sẽ liên quan đến phiên và trạng thái. Khi HTTP được sử dụng cho mục đích ban đầu của nó (chia sẻ thông tin tĩnh như các bài báo khoa học) giao thức không trạng thái làm cho rất nhiều ý nghĩa. Khi bạn bắt đầu sử dụng nó cho những thứ như các ứng dụng web, các cửa hàng trực tuyến, vv thì tình trạng không quốc tịch bắt đầu trở nên phiền toái bởi vì đây là những hoạt động vốn có của nhà nước. Kết quả là mọi người rất nhanh chóng tìm ra cách để thu thập trạng thái trên đỉnh của giao thức không quốc tịch. Các cơ chế này bao gồm những thứ như cookie, như trạng thái mã hóa trong URL và máy chủ tự động kích hoạt dữ liệu dựa trên những dữ liệu đó, như yêu cầu trạng thái ẩn, như ... tốt, giống như toàn bộ các thứ và bao gồm cả hiện đại hơn những thứ như Web Sockets.
Dưới đây là một số liên kết bạn có thể làm theo để có được một sự hiểu biết sâu sắc hơn về các khái niệm:
Hãy cho chúng tôi một số tài liệu tham khảo để đặt/giấy bạn đang học. Tôi không hiểu tại sao bạn lại kết hợp trạng thái của một giao thức mạng với trạng thái của một đối tượng trong một câu hỏi? Chúng ta có thể tìm thấy thông tin về hạt đậu mùa xuân mà bạn đã đề cập ở đâu? – Ritesh