HTTP có HTTP Cookies. Cookies cho phép máy chủ theo dõi trạng thái người dùng, số lượng kết nối, kết nối cuối cùng, v.v.
HTTP có các kết nối liên tục (Keep-Alive) trong đó một số yêu cầu có thể được gửi từ cùng một kết nối TCP.
HTTP có HTTP Cookies. Cookies cho phép máy chủ theo dõi trạng thái người dùng, số lượng kết nối, kết nối cuối cùng, v.v.
HTTP có các kết nối liên tục (Keep-Alive) trong đó một số yêu cầu có thể được gửi từ cùng một kết nối TCP.
Câu trả lời:
Mặc dù nhiều yêu cầu có thể được gửi qua cùng một kết nối HTTP, máy chủ không đính kèm bất kỳ ý nghĩa đặc biệt nào khi chúng đến trên cùng một ổ cắm. Đó chỉ là một thứ hiệu suất, nhằm giảm thiểu thời gian / băng thông mà nếu không được sử dụng để thiết lập lại kết nối cho mỗi yêu cầu.
Theo như HTTP có liên quan, tất cả chúng vẫn là các yêu cầu riêng biệt và phải chứa đủ thông tin riêng để thực hiện yêu cầu. Đó là bản chất của "trạng thái không quốc tịch". Các yêu cầu sẽ không được liên kết với nhau mà vắng mặt một số thông tin được chia sẻ mà máy chủ biết, trong hầu hết các trường hợp là ID phiên trong cookie.
Từ Wikipedia :
HTTP là một giao thức phi trạng thái. Giao thức không trạng thái không yêu cầu máy chủ lưu giữ thông tin hoặc trạng thái về mỗi người dùng trong suốt thời gian của nhiều yêu cầu.
Nhưng một số ứng dụng web có thể phải theo dõi tiến trình của người dùng từ trang này sang trang khác, ví dụ khi máy chủ web được yêu cầu để tùy chỉnh nội dung của trang web cho người dùng. Giải pháp cho những trường hợp này bao gồm:
- việc sử dụng cookie HTTP.
- phiên phía máy chủ,
- các biến ẩn (khi trang hiện tại chứa một biểu mẫu) và
- Viết lại URL bằng các tham số được mã hóa URI, ví dụ: /index.php?session_id=some_unique_session_code.
Điều làm cho giao thức không trạng thái là máy chủ không bắt buộc phải theo dõi trạng thái qua nhiều yêu cầu, không phải là nó không thể làm như vậy nếu muốn. Điều này giúp đơn giản hóa hợp đồng giữa máy khách và máy chủ và trong nhiều trường hợp (ví dụ: phục vụ dữ liệu tĩnh qua CDN) sẽ giảm thiểu lượng dữ liệu cần truyền. Nếu các máy chủ được yêu cầu duy trì trạng thái truy cập của khách hàng, cấu trúc phát hành và đáp ứng yêu cầu sẽ phức tạp hơn. Vì nó là, sự đơn giản của mô hình là một trong những tính năng tuyệt vời nhất của nó.
Bởi vì một giao thức không trạng thái không yêu cầu máy chủ lưu giữ thông tin phiên hoặc trạng thái về từng đối tác truyền thông trong suốt thời gian của nhiều yêu cầu.
HTTP là một giao thức không trạng thái, có nghĩa là kết nối giữa trình duyệt và máy chủ bị mất sau khi giao dịch kết thúc.
HTTP được gọi là stateless protocol
vì mỗi yêu cầu được thực thi độc lập, không có bất kỳ kiến thức nào về các yêu cầu được thực hiện trước nó, có nghĩa là một khi giao dịch kết thúc kết nối giữa trình duyệt và máy chủ cũng bị mất.
Điều tạo nên giao thức stateless
là trong thiết kế ban đầu của nó, HTTP tương đối đơn giản file transfer protocol
:
Không có mối quan hệ nào được duy trì giữa kết nối này và kết nối khác, ngay cả từ cùng một khách hàng. Điều này giúp đơn giản hóa hợp đồng giữa máy khách và máy chủ và trong nhiều trường hợp sẽ giảm thiểu lượng dữ liệu cần truyền.
Nếu giao thức HTTP được cung cấp dưới dạng giao thức toàn trạng thái, cửa sổ trình duyệt sử dụng kết nối duy nhất để liên lạc với máy chủ web cho nhiều yêu cầu được cung cấp cho ứng dụng web. Điều này tạo cơ hội cho cửa sổ trình duyệt tham gia kết nối giữa cửa sổ trình duyệt và máy chủ web trong thời gian dài và để giữ chúng ở trạng thái không hoạt động trong thời gian dài. Điều này có thể tạo ra tình huống tiếp cận tối đa các kết nối của máy chủ web mặc dù hầu hết các kết nối trong máy khách đều không hoạt động.
HTTP là một kết nối không có kết nối và đây là kết quả trực tiếp rằng HTTP là một giao thức không trạng thái. Máy chủ và máy khách chỉ biết nhau trong một yêu cầu hiện tại. Sau đó, cả hai quên mất nhau. Do tính chất này của giao thức, cả máy khách và trình duyệt đều không thể lưu giữ thông tin giữa các yêu cầu khác nhau trên các trang web.
Không quốc tịch là gì ??
Khi yêu cầu được thực hiện và phản hồi được trả lại cho máy khách, kết nối sẽ bị hủy hoặc chấm dứt. Máy chủ sẽ quên tất cả về người yêu cầu.
Tại sao không quốc tịch ??
Các trang web chọn để đi cho giao thức phi trạng thái. Đó là một sự lựa chọn thiên tài bởi vì mục tiêu ban đầu của web là cho phép các tài liệu (trang web) được phục vụ với số lượng cực lớn. của những người sử dụng phần cứng rất cơ bản cho máy chủ.
Duy trì kết nối lâu dài sẽ cực kỳ tốn tài nguyên.
Nếu web được chọn giao thức trạng thái thì tải trên máy chủ sẽ được tăng lên để duy trì kết nối của khách truy cập.
HTTP
là không quốc tịch TCP
là trạng thái. Không có cái gọi là HTTP connection
, nhưng chỉ HTTP request
và HTTP response
. Chúng tôi không cần bất cứ điều gì để duy trì để làm cho người khác HTTP request
. Một tiêu đề kết nối "duy trì sự sống" có nghĩa là TCP
sẽ được sử dụng lại bởi các HTTP
yêu cầu và phản hồi tiếp theo , thay vì ngắt kết nối và thiết lập lại TCP
kết nối mọi lúc.
Tôi nghĩ ai đó đã chọn cái tên rất đáng tiếc cho khái niệm TÌNH TRẠNG và đó là lý do tại sao toàn bộ sự hiểu lầm được gây ra. Đây không phải là về việc lưu trữ bất kỳ loại tài nguyên nào, mà là về mối quan hệ giữa máy khách và máy chủ.
Khách hàng: Tôi đang giữ tất cả các tài nguyên về phía tôi và gửi cho bạn "danh sách" tất cả các mục quan trọng cần xử lý. Làm việc của bạn đi.
Máy chủ: Được rồi .. hãy để tôi chịu trách nhiệm lọc những gì quan trọng để cung cấp cho bạn phản hồi thích hợp.
Điều đó có nghĩa là máy chủ là "nô lệ" của máy khách và phải quên đi "chủ nhân" của mình sau mỗi yêu cầu. Trên thực tế, STATELESS chỉ đề cập đến trạng thái của máy chủ.
https://www.ics.uci.edu/~fielding/pub/dissertation/rest_arch_style.htmlm#sec_5_1_3