2011-04-29 42 views
20

Làm thế nào để hiểu giao thức không trạng thái và giao thức trạng thái? HTTP là giao thức không trạng thái và FTP là giao thức trạng thái. Đối với các ứng dụng web yêu cầu nhiều tương tác, giao thức cơ bản phải là các giao thức trạng thái. Sự hiểu biết của tôi có đúng không?giao thức không quốc tịch và giao thức trạng thái

Trả lời

11

Vì bạn đang hỏi về một ứng dụng Web, giao thức sẽ luôn luôn được quốc tịch - giao thức cho Web là http (hoặc https), và đó là tất cả những gì đã viết.

Tôi nghĩ điều bạn đang nghĩ đến là cung cấp một cơ chế nhà nước trong chính ứng dụng web của bạn. Cách tiếp cận điển hình cho điều này là bạn tạo một mã định danh duy nhất cho phiên của người dùng trong ứng dụng Web của bạn (sessionID của một dạng này hay dạng khác là thông lệ phổ biến) được chuyển qua lại giữa trình duyệt và máy chủ. Điều đó thường được thực hiện trong một cookie, mặc dù nó có thể được thực hiện, với một chút rắc rối hơn cho bạn tùy thuộc vào nền tảng/khuôn khổ của bạn, trên URL là tốt.

server-side của bạn cửa hàng đang thông tin trạng thái (một lần nữa, thường được gọi là phiên của người dùng) tuy nhiên nó muốn sử dụng sessionid nhìn nó lên. Lưu lượng truy cập http chỉ cần trả lại sessionID. Miễn là mã định danh đó có ở đó, mỗi giao dịch http hoàn toàn độc lập với tất cả các giao dịch khác, do đó lưu lượng giao thức chính nó là không trạng thái.

0

Về cơ bản có, nhưng bạn không có lựa chọn nào khác sử dụng HTTP đó là nơi các trang web được phục vụ trong. Vì vậy, bạn phải đối phó với sự thỏa hiệp để làm cho HTTP stateful, aka quản lý phiên làm việc. Khả năng về cơ bản là chuyển qua id phiên thông qua mỗi cuộc gọi trong URL để bạn biết khi nào bạn đang nói chuyện với ai đó mà bạn đã nói trước đây hoặc thông qua cookie, đạt được mục tiêu tương tự mà không làm lộn xộn url. Tuy nhiên, hầu hết các ngôn ngữ phát triển web hiện đại đều quan tâm đến điều đó cho bạn; nếu bạn google cho ngôn ngữ bạn chọn + "quản lý phiên", bạn sẽ nhận được một số ý tưởng về cách thực hiện.

32

HTTP là giao thức không trạng thái, nói cách khác máy chủ sẽ quên mọi thứ liên quan đến trạng thái trình duyệt/ứng dụng khách. Mặc dù các ứng dụng web đã làm cho nó hầu như trông giống như nhà nước.

Giao thức không quốc tịch có thể bị buộc phải hoạt động như thể nó là trạng thái. Điều này có thể được thực hiện nếu máy chủ gửi trạng thái cho máy khách và nếu máy khách gửi nó trở lại máy chủ, mỗi lần.

Có ba cách này có thể được thực hiện trong HTTP:

a) Một là cookie, trong trường hợp này nhà nước sẽ được gửi và trả lại trong tiêu đề HTTP.

b) Thứ hai là tiện ích mở rộng URL, trong trường hợp này, trạng thái được gửi như một phần của URL dưới dạng phản hồi.

c) Thứ ba là "lĩnh vực biểu mẫu ẩn", trong đó nhà nước sẽ được gửi đến khách hàng như một phần của câu trả lời, và trả lại cho máy chủ như là một phần của dữ liệu ẩn của một hình thức

Khả năng mở rộng và sẵn sàng cao

Một trong những lý do chính khiến quy mô HTTP rất tốt là trạng thái không quốc tịch của nó. Giao thức không quốc tịch giúp giảm bớt các mối quan tâm nhân rộng, vì bản thân trạng thái không cần phải được lưu trữ trên máy chủ.

Giao thức có trạng thái nghiêm túc về mặt logic thực hiện trên Internet một cách đáng tin cậy. Các máy chủ không trạng thái cũng dễ dàng mở rộng, trong khi các máy chủ stateful scalablity có vấn đề. Yêu cầu không quốc tịch có thể được gửi đến bất kỳ nút nào, bất kỳ lúc nào, trong khi với trạng thái Stateful thì đây không phải là một trường hợp.

HTTP làm giao thức không quốc tịch làm tăng tính khả dụng cho các ứng dụng web không trạng thái, nếu không sẽ khó hoặc không thể triển khai. Nếu có kết nối bị mất, không có trạng thái bị mất, yêu cầu gửi lại đơn giản sẽ giải quyết được sự cố. Yêu cầu không quốc tịch cũng có thể lưu vào bộ nhớ cache.

see more here

1

http là một protocol.all stateless các ứng dụng dựa trên web là quốc tịch. khi một yêu cầu được gửi đến máy chủ, một kết nối được thiết lập giữa máy khách và máy chủ, máy chủ sẽ nhận yêu cầu, xử lý yêu cầu và gửi trả lời, và kết nối được đóng lại. nếu một yêu cầu khác được gửi thì nó sẽ được coi là một yêu cầu mới và kết nối mới được thiết lập. để làm cho http stateful. chúng tôi sử dụng kỹ thuật quản lý phiên. để nó sử dụng dữ liệu đến từ yêu cầu trước đó trong khi xử lý request.i.e hiện tại, nó sử dụng cùng một kết nối cho một loạt các tương tác máy khách. các kỹ thuật quản lý phiên là: 1. trường mẫu được ẩn 2.cookie 3.session 4.url-rewriting;

1

Câu hỏi của bạn được phát hiện và có, sẽ thật tuyệt nếu các giao dịch web của bạn với ngân hàng của bạn được thực hiện qua kết nối trạng thái. Than ôi, HTTP là không trạng thái do một lỗi kỳ quặc trong FTP và giới hạn 12 socket trong bảng socket một phần trong BSD năm 1989. Marcus Ranum giải thích tất cả here.

Vì vậy, HTTP sẽ loại bỏ trạng thái mà nó thừa hưởng từ TCP và phải tạo lại trạng thái ở lớp ứng dụng dưới dạng cookie. Bảo mật internet crappy là kết quả.

Seif project đề xuất sửa tất cả những gì sử dụng "JSON an toàn qua TCP". Không yêu cầu cơ quan cấp chứng chỉ DNS và chứng chỉ. Giao thức và seifnode.js được hoàn thành và trên github với một giấy phép MIT.

0

HTTP không 'kế thừa' từ TCP, nhưng sử dụng nó để vận chuyển. HTTP sử dụng TCP cho một kết nối stateful, nhưng sau đó ngắt kết nối. Sau đó nó sẽ kết nối lại, nếu cần thiết. Vì vậy, trong khi bạn duyệt qua một trang web, bạn tạo ra nhiều kết nối khác nhau. Mỗi một trong những kết nối này đều có trạng thái bình thường, nhưng cuộc trò chuyện như một tổng thể thì không, vì bạn đang bỏ kết nối với mọi cuộc trò chuyện.

From this link

Các vấn đề liên quan