2011-11-28 36 views
10

Tôi đã thử tải xuống tệp từ các máy chủ khác nhau, KHÔNG phải tất cả chúng đều phản hồi với trường Content-MD5 trong tiêu đề của chúng.Trường Content-MD5 trong phản hồi HTTP phổ quát?

Tôi muốn biết nếu đó là tiêu chuẩn để phản hồi HTTP mà không có băm của tệp tài nguyên hay không?

nhờ

+0

+1 để chống lại cuộc bỏ phiếu xuống. – UnkwnTech

Trả lời

16

Các Content-MD5 header field THÁNG được tạo ra bởi một máy chủ gốc hoặc khách hàng với vai trò là kiểm tra tính toàn vẹn của các tổ chức cơ thể. Chỉ máy chủ hoặc máy khách gốc MAY tạo trường tiêu đề Content-MD5; proxy và cổng PHẢI KHÔNG tạo ra nó, vì điều này sẽ đánh bại giá trị của nó như là một kiểm tra tính toàn vẹn từ đầu đến cuối. Bất kỳ người nhận của cơ thể entity-, bao gồm các cổng và proxy, THÁNG kiểm tra rằng giá trị tiêu hóa trong lĩnh vực tiêu đề này phù hợp của các thực thể cơ thể như nhận

http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html

Tính đến tháng 6 năm 2014:

Trường tiêu đề Content-MD5 đã bị xóa vì không nhất quán được thực hiện đối với phản hồi một phần.

RFC 7231 - Hypertext Transfer Protocol (HTTP/1.1): Semantics và Nội dung - http://tools.ietf.org/html/rfc7231 (trang 92)

+2

CÓ THỂ là từ khóa. – BNL

0

MD5 nguyên chất không hỗ trợ xác minh từng phần và đã lỗi thời. Nếu bạn cố gắng sử dụng sử dụng hàm băm tinh khiết cho bất cứ điều gì tiên tiến, cuối cùng bạn sẽ gặp các following situation:

Tôi không nhận được nó ... Ngay sau khi một tập tin đã sẵn sàng để kết thúc, nó bắt đầu tất cả hơn một lần nữa. Tôi cũng nhận được thông báo "Đang xác minh nội dung tệp" ... Điều gì tôi có thể làm gì ???

Điều gì sẽ xảy ra nếu một người tải xuống hơn 20Gb tệp không có cơ hội phát hiện sự không khớp sớm? Người ta không thể giảm tải xuống p2p mà không cần xác minh một phần được hỗ trợ bởi hàm băm.

Vì vậy, hiện nay, người ta cần phải gắn bó với cây Merkle. Gnutella (cả G1 và G2) và DC++ (cả hai NMDC và ADC) đều sử dụng TTH (TIGER Tree Hash) trong khi eDonkey 2k sử dụng AICH, nhưng nó là một mình để sử dụng băm này, và nó ít thanh lịch hơn. Vì vậy, TTH là chuẩn thực tế, và nó sẽ là tốt đẹp nếu tất cả các tập tin băm ở khắp mọi nơi (ngay cả khi không được yêu cầu nghiêm ngặt) là TTH theo mặc định, nhưng chúng tôi chưa có.

DC++ không dựa trên HTTP, nhưng Gnutella (1 và 2) là, vì vậy bạn có thể nghiên cứu và/hoặc hỗ trợ các tiêu đề HTTP đó. Ví dụ, Shareaza có thể chặn tải xuống từ trình duyệt và tải chúng xuống p2p bằng cách sử dụng tiêu đề Alt-Location, Content-URN, X-Thex-URI.

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