Giới thiệu về Winsock Bao gồm Nền tảng & Công nghệ
Introduction Winsock Including Background Technology
Bài đăng này chủ yếu nói về API Windows Sockets, có thể rút ngắn thành WSA và Winsock. Sau khi đọc bài đăng này, bạn có thể biết định nghĩa, nền tảng, công nghệ cũng như cách triển khai của nó.
Trên trang này :Định nghĩa của Winsock
Winsock là gì? Trong điện toán, Winsock là một đặc tả kỹ thuật được sử dụng để xác định cách phần mềm mạng Windows truy cập các dịch vụ mạng, đặc biệt là TCP /IP. Nó được gọi là Winsock vì nó là phiên bản chuyển thể từ giao diện socket Berkeley UNIX cho Windows. Ổ cắm là một thỏa thuận đặc biệt được sử dụng để kết nối và trao đổi dữ liệu giữa hai quy trình chương trình trên cùng một máy tính hoặc mạng.
Mẹo: Nếu bạn muốn biết thêm thông tin về các giao thức Internet khác, bạn nên truy cập trang web MiniTool.
Winsock là tên viết tắt của Windows Sockets API (WSA). Nó xác định giao diện chuẩn giữa các ứng dụng máy khách Windows TCP/IP (chẳng hạn như máy khách FTP hoặc trình duyệt Web) và ngăn xếp giao thức TCP/IP cơ bản.
Bài liên quan: Sử dụng lệnh đặt lại Netsh Winsock để khắc phục sự cố mạng Windows 10
Bối cảnh của Winsock
API Windows Sockets được đề xuất bởi Martin Hall của JSB Software (sau này là Stardust Technologies) trong cuộc thảo luận BoF (Bird of a Feather) trên mạng CompuServe BBS vào tháng 10 năm 1991.
Phiên bản đầu tiên của đặc tả được viết bởi Martin Hall, Mark Towfiq của Microdyne (sau này là Sun Microsystems), Geoff Arnold của Sun Microsystems, Henry Sanders và J Allard của Microsoft với sự giúp đỡ của nhiều người khác.
Đã có một số cuộc thảo luận về cách giải quyết tốt nhất bản quyền, sở hữu trí tuệ và các vấn đề chống độc quyền tiềm ẩn cũng như xem xét công việc thông qua IETF hoặc thành lập các tổ chức phi lợi nhuận. Cuối cùng, người ta quyết định rằng đặc tả này chỉ được giữ bản quyền bởi năm tác giả (không liên kết).
Tất cả các nhà phát triển tham gia đã từ chối viết tắt tên thành Winsock trong một thời gian dài vì có nhiều nhầm lẫn giữa API và tệp thư viện DLL (winsock.dll), tệp này chỉ hiển thị giao diện WSA chung cho ứng dụng phía trên nó. Người ta thường tin rằng chỉ đảm bảo rằng tệp DLL tồn tại trên hệ thống mới có thể cung cấp hỗ trợ giao thức TCP/IP hoàn chỉnh.
Công nghệ của Winsock
Đặc tả API Windows Socket xác định hai giao diện: API được các nhà phát triển ứng dụng sử dụng và SPI cung cấp phương pháp để các nhà phát triển phần mềm mạng thêm các mô-đun giao thức mới vào hệ thống. Mỗi giao diện đại diện cho một hợp đồng.
API đảm bảo rằng các ứng dụng tuân thủ có thể chạy bình thường khi triển khai giao thức tuân thủ của bất kỳ nhà cung cấp phần mềm mạng nào. Hợp đồng SPI đảm bảo rằng các mô-đun giao thức phù hợp có thể được thêm vào Windows để các ứng dụng tuân thủ API có thể sử dụng chúng.
Mặc dù các hợp đồng này rất quan trọng khi Windows Sockets được phát hành lần đầu tiên nhưng hiện tại chúng chỉ có ý nghĩa về mặt học thuật vì môi trường mạng yêu cầu hỗ trợ đa giao thức. Windows Sockets API phiên bản 2.0 bao gồm chức năng sử dụng IPX/SPX, mặc dù giao thức này gần như đã lỗi thời khi WSA 2.0 rời khỏi nhà máy.
Mã và thiết kế Ổ cắm Windows dựa trên ổ cắm BSD, nhưng các tính năng bổ sung được cung cấp để cho phép API tuân thủ mô hình lập trình Windows thông thường.
API Windows Sockets gần như bao gồm tất cả các tính năng của API socket BSD, nhưng có một số trở ngại không thể tránh khỏi, nguyên nhân chủ yếu là do sự khác biệt cơ bản giữa Windows và Unix (mặc dù sự khác biệt giữa Windows Sockets và BSD sockets ít hơn sự khác biệt giữa cái sau và STREAMS).
Tuy nhiên, mục tiêu thiết kế của socket Windows là giúp các nhà phát triển chuyển các ứng dụng dựa trên socket từ Unix sang Windows tương đối dễ dàng. Việc tạo ra các API chỉ hữu ích cho các chương trình Windows mới được viết là chưa đủ.
Do đó, Windows Sockets chứa nhiều thành phần được thiết kế để tạo điều kiện thuận lợi cho việc chuyển. Ví dụ: các ứng dụng Unix có thể sử dụng cùng một biến errno để ghi lại các lỗi mạng và các lỗi được phát hiện trong các hàm thư viện C tiêu chuẩn.
Vì nó không thể được triển khai trong Windows nên Windows Sockets đã giới thiệu một chức năng đặc biệt, WSAGetLastError(), để truy xuất thông tin lỗi. Cơ chế như vậy rất hữu ích nhưng việc chuyển ứng dụng vẫn cực kỳ phức tạp.
Nhiều ứng dụng TCP/IP nguyên thủy đã được triển khai bằng cách sử dụng các tính năng hệ thống dành riêng cho Unix (chẳng hạn như thiết bị đầu cuối giả và các cuộc gọi hệ thống phân nhánh) và việc tái tạo chức năng này trong Windows là một vấn đề. Trong một thời gian tương đối ngắn, việc port đã nhường chỗ cho sự phát triển của các ứng dụng Windows chuyên dụng.
Triển khai Winsock
- Microsoft không cung cấp cách triển khai Winsock 1.0.
- Phiên bản 1.1 của Winsock được cung cấp dưới dạng gói tiện ích bổ sung (được gọi là Wolverine) dành cho Windows for Workgroups (mã có tên Snowball).
- Winsock phiên bản 2.1 được cung cấp dưới dạng gói bổ trợ cho Windows 95.
- Phiên bản mới nhất của Winsock 2.x đã được cung cấp cùng với phiên bản Windows mới hoặc là một phần của gói dịch vụ.
- Winsock 2 có thể được mở rộng thông qua cơ chế gọi là Nhà cung cấp dịch vụ theo lớp (LSP).