RSS3 được coi là một dự án đầy triển vọng trong lĩnh vực web3. Gần đây, tôi đã trải nghiệm các ứng dụng web3 và cố gắng tìm một số mô hình định nghĩa về các thành phần cốt lõi của web3. Khi tôi xem RSS3, tôi đã tìm thấy một giao thức mà tôi đang tìm kiếm. Nó có thể được định nghĩa là một giao thức đặc tả dữ liệu, giao thức này là Mã định danh tài nguyên đồng nhất RFC3986 và nó cũng có thể được hiểu là một ngữ pháp chung.
Văn bản gốc của tài liệu dài hơn 3w từ, không dễ đọc nên tôi đã xóa và thay đổi rất nhiều trong tài liệu, đồng thời làm ví dụ để hiểu định dạng dữ liệu của web3.
Điều bạn cần biết là thông số kỹ thuật này là một tiêu chuẩn thông tin Internet và nó đã được áp dụng từ lâu, RSS3 dựa trên một số thực tiễn phát triển được thực hiện trên cơ sở này để ứng dụng trong lĩnh vực web3.
RSS3
RSS3 là một giao thức cung cấp thông tin mở được thiết kế để hỗ trợ phân phối thông tin hiệu quả và phi tập trung trong Web3. Nó xác định một định dạng để trình bày và giao tiếp thông tin để những người tiêu dùng khác có thể dễ dàng truy cập các nguồn nội dung khác nhau ở một định dạng thống nhất mà không cần logic tương thích rộng rãi.
Trong giao thức RSS3, thông tin được chia thành bốn loại: tệp cấu hình, liên kết, nội dung, nhận xét
Các ứng dụng RSS3 sử dụng RSS3SDK để truy cập và xuất bản dữ liệu ở định dạng được xác định bởi giao thức RSS3. SDK RSS3 thu thập dữ liệu từ mạng RSS3 và xuất bản dữ liệu lên mạng được hỗ trợ bởi RSS3. Mạng RSS3 thu thập dữ liệu từ nhiều Mạng được hỗ trợ RSS3 khác nhau và lưu trữ dữ liệu vào bộ nhớ cache cho chính nó Trong cơ sở dữ liệu hiệu quả cao, hãy thực hiện một số quá trình tiền xử lý, chẳng hạn như áp dụng các thuật toán đề xuất trí tuệ nhân tạo để cung cấp các chức năng tìm kiếm.
Trong thiết kế sản phẩm như vậy, đặc điểm kỹ thuật dữ liệu gốc nhất được hoàn thành bằng cách xác định một số chi tiết của dữ liệu truyền mạng. Các ứng dụng lớp trên có thể được triển khai dễ dàng hơn.Hãy xem xét giao thức này: RFC3986 Mã định danh tài nguyên đồng nhất. Sau khi xóa và sửa nội dung, tác giả cố gắng đáp ứng một số yêu cầu liên quan để hiểu sơ lược về xử lý dữ liệu Internet.
RFC3986: Mã định danh tài nguyên thống nhất
Thông số kỹ thuật này bắt nguồn từ RFC2396 [RFC2396], RFC1808 [RFC1808] và RFC1738 [RFC1738], đồng thời bao gồm các bản cập nhật (và chỉnh sửa) cho các ký tự IPv6 trong cú pháp máy chủ.
Mã định danh tài nguyên thống nhất (URI) là một chuỗi nhỏ gọn các ký tự xác định tài nguyên trừu tượng hoặc đại diện cho tài nguyên vật lý, cung cấp một phương pháp đơn giản và có thể mở rộng để xác định tài nguyên. Thông số kỹ thuật xác định cú pháp URI chung và giải pháp theo thủ tục của các tham chiếu URI ở dạng tương đối, cũng như các nguyên tắc và cân nhắc bảo mật khi sử dụng URI.
Ngữ pháp URI xác định một bộ siêu cú pháp. Các URI hiệu quả cho phép phân tích cú pháp thành phần chung, cho phép sử dụng các URI để tham chiếu đến mọi mã định danh có thể khi không được yêu cầu bởi một lược đồ cụ thể. Thông số kỹ thuật không xác định ngữ pháp tạo URI.
Ngữ nghĩa của Mã định danh tài nguyên đồng nhất (URI) bắt nguồn từ khái niệm được giới thiệu bởi Sáng kiến thông tin toàn cầu World Wide Web và cú pháp được thiết kế để đáp ứng các yêu cầu của các chức năng Định vị tài nguyên [RFC1736] và Tên tài nguyên đồng nhất được liệt kê trong phần "Chức năng Internet Khuyến nghị" [RFC1737] .
Tài liệu này đã lỗi thời [RFC2396] và hợp nhất "Bộ định vị tài nguyên đồng nhất" [RFC1738] và "Bộ định vị tài nguyên đồng nhất tương đối" [RFC1808] để xác định một cú pháp chung duy nhất cho tất cả các URI. Lỗi thời [RFC2732], giới thiệu cú pháp cho địa chỉ IPv6.
Các tính năng của URI
tính đồng nhất
Nó cho phép các loại tài nguyên khác nhau sử dụng cùng một mã định danh tài nguyên trong cùng một ngữ cảnh, mặc dù các cơ chế được sử dụng để truy cập các tài nguyên đó có thể khác nhau.
Nó cho phép giải thích ngữ nghĩa thống nhất của các câu phổ biến để hoàn thành thỏa thuận giữa các loại định danh tài nguyên khác nhau.
Nó cho phép giới thiệu các loại định danh tài nguyên mới mà không can thiệp vào cách sử dụng các định danh hiện có.
Nó cho phép các mã định danh được sử dụng lại trong nhiều ngữ cảnh khác nhau, cho phép các ứng dụng hoặc giao thức mới tận dụng một bộ mã định danh tài nguyên hiện có, lớn và được sử dụng rộng rãi.
nguồn
Thuật ngữ "tài nguyên" theo nghĩa chung đề cập đến bất kỳ nội dung nào có thể được xác định bởi URI. Các ví dụ quen thuộc bao gồm tài liệu điện tử, hình ảnh, nguồn thông tin, dịch vụ và các bộ sưu tập tài nguyên khác. Tài nguyên không nhất thiết phải truy cập thông qua Internet. Tương tự như vậy, trừu tượng có thể là tài nguyên, chẳng hạn như toán tử và toán hạng của phương trình toán học, loại quan hệ (ví dụ: "cha mẹ" hoặc "nhân viên") hoặc giá trị số (ví dụ: không, một, vô cùng).
định danh
Định danh thể hiện quy trình xác thực nội dung phân biệt thông tin mong muốn với tất cả những thứ khác trong phạm vi của nó. Nhưng không nên nhầm lẫn các định nghĩa này với các định nghĩa về số nhận dạng hoặc thể hiện danh tính của nội dung được tham chiếu. Trong nhiều trường hợp, URI được sử dụng để chỉ ra các tài nguyên, nhưng không phải để chỉ ra rằng chúng có thể được truy cập. Tương tự như vậy, tài nguyên "a" được xác định có thể không phải là số ít về bản chất (ví dụ: tài nguyên có thể là một tập hợp được đặt tên hoặc ánh xạ theo thời gian).
URI có phạm vi toàn cầu và được sử dụng để diễn giải ngữ cảnh một cách nhất quán bất kể điều gì xảy ra, mặc dù kết quả của việc diễn giải này có thể liên quan đến ngữ cảnh của người dùng cuối. Ví dụ: "http://localhost/" có cùng cách diễn giải cho mọi người dùng được tham chiếu, mặc dù giao diện mạng tương ứng với "localhost" có thể là một người dùng khác, điều đó có nghĩa là: Việc diễn giải không phụ thuộc vào quyền truy cập.
ngữ pháp thông dụng
Cú pháp URI là một hệ thống đặt tên có liên kết và có thể mở rộng, trong đó đặc điểm kỹ thuật của từng lược đồ có thể hạn chế hơn nữa cú pháp và ngữ nghĩa của các mã định danh sử dụng lược đồ đó.
Các tham chiếu URI sử dụng một cơ chế phân giải độc lập theo đó các giao thức và dữ liệu sử dụng định dạng của các tham chiếu URI có thể xác định các URI có tham chiếu đến toàn bộ phạm vi cú pháp được thông số kỹ thuật này cho phép, bao gồm cả những lược đồ chưa được xác định.
Trình phân tích cú pháp cho ngữ pháp URI chung có thể phân tích bất kỳ tham chiếu URI nào thành các thành phần chính của nó. Sau khi kế hoạch được xác định, tiếp tục
Phân tích cú pháp theo kịch bản cụ thể có thể được thực hiện trên các thành phần. Nói cách khác, cú pháp chung của URI là một siêu tập hợp của tất cả các cú pháp URI
URI, URL và URN
URI có thể được phân loại thêm thành bộ định vị, tên hoặc cả hai.
"Bộ định vị tài nguyên thống nhất" (URL) đề cập đến một tập hợp con của URI. Ngoài việc xác định tài nguyên, nó còn cung cấp cách định vị tài nguyên bằng cách mô tả cơ chế truy cập của nó (ví dụ: "vị trí" mạng của nó).
"Tên tài nguyên thống nhất" (URN) đã được sử dụng để chỉ bất kỳ URI nào khác vẫn là duy nhất trên toàn cầu ngay cả sau khi tài nguyên không còn tồn tại hoặc không còn khả dụng.
URI được rút ra từ một tập hợp rất hạn chế: chữ cái Latinh, số và một số ký tự đặc biệt.
Một URI có thể được biểu diễn theo nhiều cách; ví dụ: mực trên giấy, pixel trên màn hình hoặc chuỗi octet mã hóa ký tự. Việc diễn giải một URI chỉ phụ thuộc vào các ký tự được sử dụng. Trong môi trường địa phương hoặc khu vực, khi công nghệ tiến bộ, người dùng có thể sử dụng nhiều loại ký tự hơn.
Tách nhận dạng và tương tác
Một quan niệm sai lầm phổ biến về URI là chúng chỉ được sử dụng để chỉ các tài nguyên có thể truy cập được. Bản thân URI chỉ cung cấp xác thực và không đảm bảo sự hiện diện của quyền truy cập URI vào các gợi ý tài nguyên. Thay vào đó, bất kỳ tham chiếu URI có liên quan nào được xác định bởi các thành phần giao thức, chẳng hạn như thuộc tính định dạng dữ liệu hoặc văn bản ngôn ngữ tự nhiên mà nó xuất hiện.
Với một URI, hệ thống có thể cố gắng thực hiện các thao tác khác nhau trên tài nguyên, có thể được đặc trưng bởi các từ như "truy cập", "cập nhật", "thay thế" hoặc "tìm thuộc tính". Các hoạt động như vậy được xác định bởi giao thức sử dụng URI.
định danh phân cấp
Cú pháp URI được tổ chức theo thứ bậc, với các thành phần theo thứ tự quan trọng giảm dần từ trái sang phải.
Cú pháp chung sử dụng các ký tự dấu gạch chéo ("/"), dấu hỏi ("?") và dấu số ("#") để phân tách các thành phần, điều quan trọng đối với diễn giải phân cấp của trình phân tích cú pháp chung, ngoại trừ các định danh có thể đọc được của lớp này nhất quán Sử dụng một cú pháp quen thuộc cú pháp, một biểu diễn thống nhất của hệ thống phân cấp qua các lược đồ đặt tên cho phép tạo các tham chiếu độc lập với lược đồ liên quan đến hệ thống phân cấp đó.
Thông thường, một tập hợp hoặc "cây" tài liệu đã được xây dựng để phục vụ mục đích chung và phần lớn các tham chiếu URI trong các tài liệu này trỏ đến các tài nguyên bên trong cây chứ không phải bên ngoài cây. Một trang tài liệu tại một địa điểm cụ thể có nhiều khả năng tham khảo các tài nguyên khác trên trang đó hơn là các tài nguyên tại một trang từ xa. Các tham chiếu đến URI cho phép các phần của cây tài liệu độc lập với vị trí và lược đồ truy cập của chúng.
ký hiệu ngữ pháp
Sử dụng ký hiệu ABNF [RFC2234], bao gồm các quy tắc cú pháp ABNF cốt lõi sau:
ALPHA (chữ cái), CR (dấu xuống dòng), DIGIT (số thập phân), DQUOTE (dấu ngoặc kép), HEXDIG (chữ số thập lục phân), LF (nguồn cấp dữ liệu xuống dòng) và SP (dấu cách), v.v.
Cú pháp URI cung cấp một cách để mã hóa dữ liệu, có lẽ là để xác định tài nguyên dưới dạng một chuỗi ký tự. Ngược lại, các ký tự URI thường được mã hóa thành các octet để truyền hoặc trình bày.
Ký hiệu ABNF xác định giá trị đầu cuối của nó là một số nguyên, không âm (điểm mã) dựa trên bộ ký tự được mã hóa US-ASCII [ASCII]. Vì URI là một chuỗi các ký tự nên chúng ta phải đảo ngược mối quan hệ đó để hiểu cú pháp URI. Do đó, các giá trị số nguyên được sử dụng bởi ABNF phải được ánh xạ trở lại các đối tác US-ASCII để hoàn thành các quy tắc cú pháp.
ký tự dành riêng
Một URI bao gồm các ký tự "dành riêng" ngăn cách các thành phần và thành phần con.
Mục đích của các ký tự dành riêng là cung cấp một bộ ký tự phân biệt các dấu phân cách với dữ liệu khác trong URI. Một tập hợp con (gen-delims) của các ký tự dành riêng được sử dụng làm dấu phân cách cho các thành phần URI chung. Các quy tắc ngữ pháp ABNF cho một thành phần không sử dụng dành riêng hoặc gen-delims được đặt tên trực tiếp, thay vào đó, mỗi quy tắc ngữ pháp liệt kê các ký tự được phép trong thành phần đó (nghĩa là không được phân tách) và các thành phần con khác có thể được chỉ định bởi định nghĩa lược đồ URI.
không có ký tự dành riêng
Các ký tự được phép nhưng không dành riêng trong URI, bao gồm chữ hoa và chữ thường, chữ số thập phân, dấu gạch nối, dấu chấm, dấu gạch dưới và dấu ngã.
Không đặt trước=ALPHA/DIGIT/"-"/".."/"_"/"~"
Thay thế các ký tự không dành riêng cho các URI khác nhau, nhưng các octet US-ASCII được mã hóa phần trăm tương ứng của chúng là tương đương nhau: chúng xác định cùng một tài nguyên. Để đảm bảo tính nhất quán, các octet được mã hóa theo phần trăm (%41-%5A và %61-%7A), DIGIT (%30-%39), dấu gạch nối (%2D), dấu chấm (%2E) trong phạm vi ALPHA, URI không được tạo các trình tạo dấu gạch dưới (%5F) hoặc dấu ngã (%7E), khi được tìm thấy trong URI, sẽ được giải mã thành các ký tự không được đặt trước tương ứng của trình chuẩn hóa URI.
Dữ liệu xác định
Ký tự URI cung cấp thành phần dữ liệu nhận dạng cho từng URI, dưới dạng giao diện bên ngoài hệ thống được xác định.
Sản xuất và truyền URI: mã hóa dữ liệu và tên cục bộ, mã hóa giao diện công khai, mã hóa ký tự URI, mã hóa định dạng dữ liệu và mã hóa giao thức.
Tên cục bộ (chẳng hạn như tên hệ thống tệp) được lưu trữ trong mã hóa ký tự cục bộ. Các ứng dụng tạo URI (ví dụ: máy chủ gốc) thường sử dụng mã hóa cục bộ làm cơ sở để tạo tên có ý nghĩa. Trình tạo URI sẽ chuyển đổi mã hóa cục bộ thành mã hóa phù hợp với giao diện công cộng, sau đó chuyển đổi mã hóa giao diện công cộng thành tập hợp các ký tự URI bị hạn chế (được đặt trước, không được đặt trước và được mã hóa theo phần trăm).
Đổi lại, các ký tự này được mã hóa thành các octet để sử dụng làm tham chiếu trong các định dạng dữ liệu, chẳng hạn như bộ ký tự tài liệu, sau đó thường được mã hóa để truyền qua các giao thức Internet.
Trong một số trường hợp, các thành phần URI và việc xác định dữ liệu mà nó đại diện ít đơn giản hơn nhiều so với các bản dịch mã hóa ký tự.
thành phần ngữ pháp
Cú pháp URI chung bao gồm một chuỗi phân cấp của sơ đồ, quyền hạn, đường dẫn, truy vấn và phân đoạn.
Các thành phần lược đồ và đường dẫn là bắt buộc, mặc dù đường dẫn có thể trống (không có ký tự). Khi có quyền, đường dẫn phải trống hoặc bắt đầu bằng ký tự gạch chéo ("/"). Khi không có quyền, đường dẫn không được bắt đầu bằng hai ký tự gạch chéo ("//"). Những hạn chế này dẫn đến năm quy tắc đường dẫn ABNF khác nhau, chỉ một trong số đó phù hợp với bất kỳ tham chiếu URI cụ thể nào.
kế hoạch
Mỗi URI bắt đầu bằng một tên lược đồ tham chiếu đến một đặc điểm kỹ thuật để gán các mã định danh trong lược đồ đó.
Tên lược đồ bao gồm một chuỗi ký tự bắt đầu bằng một chữ cái, theo sau là bất kỳ tổ hợp chữ cái, số nào và dấu cộng ("+"), dấu chấm ("..") hoặc dấu gạch nối ("-").
Scheme=ALPHA*(ALPHA/DIGIT/"+"/"-"/".")
quyền
Nhiều lược đồ URI bao gồm thẩm quyền phần tử phân cấp để đặt tên, do đó, việc quản lý được ủy quyền cho thẩm quyền đó bởi phần còn lại của URI. Cú pháp chung cung cấp tên hoặc địa chỉ máy chủ dựa trên sổ đăng ký chung cũng như thông tin người dùng và cổng tùy chọn.
Thành phần quyền hạn được đặt trước dấu gạch chéo kép ("//") và theo sau là dấu gạch chéo ("/"), dấu chấm hỏi ("?"), hoặc ký tự cuối số ("#") hoặc tại phần cuối của URI.
quyền = [userinfo "@"]host[":"port]
máy chủ
Thành phần con máy chủ của cơ quan được xác định bằng một chữ IP được đặt trong dấu ngoặc vuông. Trong nhiều trường hợp, cú pháp máy chủ được sử dụng đơn giản để tạo và triển khai các sổ đăng ký hiện có trong DNS, do đó có được một tên duy nhất trên toàn cầu mà không phải trả chi phí triển khai một sổ đăng ký khác.
máy chủ = trường IP/địa chỉ IPv4/tên đăng ký
Trường IP = "["(IPv6Address/IPvFuture)"]"
IPvFuture="v"1*HEXDIG".."1*(unreserve/sub-separator/":")
Hỏi thăm
Thành phần truy vấn chứa dữ liệu không phân cấp, cũng như dữ liệu trong thành phần đường dẫn xác định các tài nguyên trong phạm vi của lược đồ URI và quyền đặt tên.
Các thành phần truy vấn được biểu thị bằng ký tự dấu chấm hỏi ("?") và kết thúc bằng ký tự dấu số ("#").
truy vấn=*(pchar/"/"/"?")
cách sử dụng
Khi các ứng dụng tham chiếu đến một URI, không phải lúc nào chúng cũng sử dụng dạng tham chiếu đầy đủ được xác định bởi các quy tắc cú pháp "URI". Bảo tồn không gian và tận dụng lợi thế của vị trí phân cấp, nhiều định dạng loại phương tiện và phần tử giao thức Internet cho phép các URI viết tắt, trong khi các định dạng khác hạn chế cú pháp đối với các dạng URI cụ thể.
Xây dựng URI cơ sở
Ngoài các tham chiếu chỉ dành cho đoạn, các URI cơ sở được biết là bắt buộc. Trình phân giải phải thiết lập URI cơ sở. URI cơ sở phải tuân thủ các quy tắc cú pháp của <absolute-URI>.
Một URI cơ sở có thể được thiết lập theo một trong bốn cách
URI cơ sở được nhúng trong nội dung
Đóng gói URI cơ sở của thực thể
URI được sử dụng để truy xuất thực thể
URI cơ sở mặc định (tùy thuộc vào ứng dụng)
Chuẩn hóa và so sánh
Các hoạt động phổ biến nhất trên URI là so sánh đơn giản: xác định xem hai URI có truy cập tài nguyên tương ứng của chúng một cách tương đương mà không cần sử dụng URI hay không. Chuẩn hóa mở rộng thường được thực hiện trước khi so sánh các URI. So sánh URI được thực hiện cho một số mục đích cụ thể.
tương đương
Vì các URI tồn tại để xác định tài nguyên nên chúng được coi là tương đương khi chúng xác định cùng một tài nguyên. Tuy nhiên, định nghĩa về sự tương đương này không được sử dụng nhiều trong thực tế, vì không có cách nào để so sánh hai tài nguyên trừ khi một người có đầy đủ kiến thức hoặc kiểm soát chúng.
Ngay cả khi hai URI có thể được xác định là tương đương, thì việc so sánh URI vẫn không đủ để xác định rằng hai URI xác định các tài nguyên khác nhau.
Chuẩn hóa dựa trên cú pháp
Chuẩn hóa dựa trên cú pháp bao gồm các kỹ thuật sau: chuẩn hóa trường hợp, chuẩn hóa phần trăm được mã hóa và loại bỏ phân đoạn dấu chấm.
Biện pháp phòng ngừa an toàn
Bản thân các URI không gây ra mối đe dọa bảo mật. Nhưng các URI thường được sử dụng để cung cấp một bộ hướng dẫn nhỏ gọn để truy cập
Đối với tài nguyên web, cần phải cẩn thận để diễn giải chính xác dữ liệu trong URI để ngăn dữ liệu đó vô tình bị truy cập và tránh đưa vào văn bản dữ liệu không được công khai.
Thông tin nhạy cảm
Nhà sản xuất URI không nên cung cấp mật khẩu chứa tên người dùng hoặc nhằm mục đích giữ bí mật. URI thường được trình duyệt hiển thị, được lưu trữ trong dấu trang văn bản thuần túy và lịch sử tác nhân người dùng và ứng dụng trung gian (proxy).
tấn công ngữ nghĩa
Bởi vì thành phần con userinfo hiếm khi được sử dụng, các máy chủ xuất hiện trong thành phần quyền hạn có thể được sử dụng để xây dựng một URI khiến người dùng tin tưởng sai, ví dụ:
ftp://cnn.example.com&[email protected]/top_story.htm
Có thể khiến người dùng cho rằng máy chủ lưu trữ là 'cnn.example.com' trong khi thực tế là '10.0.0.1'. Một URI gây hiểu lầm có thể là một cuộc tấn công vào người dùng, tấn công vào các khái niệm định sẵn của người dùng. Đối với bản thân phần mềm, có thể tránh được các cuộc tấn công như vậy bằng cách phân biệt giữa các thành phần riêng lẻ của URI.