2011-02-11 34 views
7

Tôi vừa bắt đầu với lập trình mạng. Khi nhìn vào chức năng socket, một số sử dụng PF_INET và một số khác sử dụng AF_INET. Nhìn vào wikipedia, nó nói rằng thiết kế như vậy đã được sử dụng để cho phép sử dụng các gia đình địa chỉ khác nhau bởi các gia đình giao thức khác nhau. Có bất kỳ họ giao thức nào như vậy ngày nay hỗ trợ nhiều loại địa chỉ không?lập trình mạng: Chức năng socket: Địa chỉ family family Gia đình Vs Protocol

Ngoài ra tôi tình cờ gặp lỗi này khi tôi đang tìm kiếm cho gia đình Địa chỉ Vs Nghị định thư gia đình:

Address family not supported by protocol family 

Điều này có nghĩa là giao thức hỗ trợ nhiều gia đình địa chỉ?

Tôi đã xem qua này statement

you shouldn't necessarily expect to be able to use NS addresses with ARPA Internet protocols 

địa chỉ NS là gì?

Cảm ơn.

Trả lời

3

Tài liệu Windows cho socket cho biết rằng họ địa chỉ là đối số đầu tiên; trang người đàn ông trên hộp Linux của tôi nói rằng đó phải là gia đình giao thức. Phiên bản Linux có vẻ hơi chính xác hơn từ quan điểm nền tảng thuyết bất khả tri - theo lý thuyết, socket có một gia đình giao thức và các địa chỉ có các gia đình địa chỉ, và cả hai nên tương thích.

Thực tế, các macro PF_AF_ cho các giao thức tích hợp có cùng giá trị (trong cả Linux và Windows). Tôi tưởng tượng đó là một câu chuyện tương tự cho hầu hết các hệ điều hành, vì tất cả các gia đình giao thức chung đều có một gia đình địa chỉ. (Bạn nghĩ rằng IP sẽ có hai, nhưng không có. Có các gia đình giao thức riêng biệt cho IPv4 và IPv6.) Điều này (cùng với kiểu gõ tương đối yếu của C) cho phép chúng được sử dụng khá nhiều thay thế cho nhau. Lưu ý rằng không có sự đảm bảo nào về trường hợp này cho tất cả các hệ điều hành, hoặc đối với các giao thức được hỗ trợ bởi một số trình điều khiển của bên thứ ba, v.v. Trong những trường hợp đó, bạn nên tham khảo tài liệu cho nền tảng cụ thể của mình.

Đối với những gì "địa chỉ NS", như tôi có thể nói, chúng là một phần của tiền sử của Xerox Network Systems protocol (phân loại gia đình giao thức như TCP/IP, nhưng khác biệt và không tương thích và không được sử dụng bởi máy tính hiện đại). Bạn sẽ không thấy chúng được sử dụng trừ khi bạn đang làm việc với các hệ thống cổ xưa; tại sao nó được giữ như một ví dụ là ngoài tôi.

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