ข้อมูลเบื้องต้นเกี่ยวกับ Winsock รวมถึงความเป็นมาและเทคโนโลยี
Introduction Winsock Including Background Technology
โพสต์นี้พูดถึง Windows Sockets API เป็นหลัก ซึ่งสามารถย่อเป็น WSA และ Winsock ได้ หลังจากอ่านโพสต์นี้ คุณจะทราบถึงคำจำกัดความ ความเป็นมา เทคโนโลยี ตลอดจนการใช้งานของโพสต์นี้
ในหน้านี้:คำจำกัดความของ Winsock
Winsock คืออะไร? ในการคำนวณ Winsock เป็นข้อกำหนดทางเทคนิคที่ใช้ในการกำหนดวิธีที่ซอฟต์แวร์เครือข่าย Windows ควรเข้าถึงบริการเครือข่าย โดยเฉพาะ TCP /IP มันถูกเรียกว่า Winsock เนื่องจากเป็นการปรับอินเทอร์เฟซซ็อกเก็ต Berkeley UNIX ให้เข้ากับ Windows ซ็อกเก็ตเป็นข้อตกลงพิเศษที่ใช้ในการเชื่อมต่อและแลกเปลี่ยนข้อมูลระหว่างสองกระบวนการของโปรแกรมบนคอมพิวเตอร์หรือเครือข่ายเดียวกัน
เคล็ดลับ: หากคุณต้องการทราบข้อมูลเพิ่มเติมเกี่ยวกับโปรโตคอลอินเทอร์เน็ตอื่น ๆ ขอแนะนำให้ไปที่เว็บไซต์ MiniTool
Winsock เป็นตัวย่อของ Windows Sockets API (WSA) โดยกำหนดอินเทอร์เฟซมาตรฐานระหว่างแอปพลิเคชันไคลเอนต์ TCP/IP ของ Windows (เช่น ไคลเอนต์ FTP หรือเว็บเบราว์เซอร์) และสแต็กโปรโตคอล TCP/IP พื้นฐาน
โพสต์ที่เกี่ยวข้อง: ใช้คำสั่งรีเซ็ต Netsh Winsock เพื่อแก้ไขปัญหาเครือข่าย Windows 10
ความเป็นมาของ Winsock
Windows Sockets API ได้รับการเสนอโดย Martin Hall แห่ง JSB Software (ต่อมาคือ Stardust Technologies) ในการอภิปราย BoF (Bird of a Feather) บนเครือข่าย CompuServe BBS ในเดือนตุลาคม 1991
ข้อมูลจำเพาะเวอร์ชันแรกเขียนโดย Martin Hall, Mark Towfiq จาก Microdyne (ต่อมาคือ Sun Microsystems), Geoff Arnold จาก Sun Microsystems และ Henry Sanders และ J Allard จาก Microsoft โดยได้รับความช่วยเหลือจากผู้อื่นอีกมากมาย
มีการอภิปรายเกี่ยวกับวิธีการแก้ไขปัญหาลิขสิทธิ์ ทรัพย์สินทางปัญญา และปัญหาการต่อต้านการผูกขาดที่อาจเกิดขึ้นได้ดีที่สุด และการพิจารณางานผ่าน IETF หรือการจัดตั้งมูลนิธิที่ไม่แสวงหาผลกำไร ท้ายที่สุด มีการตัดสินใจว่าข้อกำหนดดังกล่าวควรมีลิขสิทธิ์โดยผู้เขียน (ที่ไม่ใช่บริษัทในเครือ) เพียงห้าคนเท่านั้น
นักพัฒนาที่เข้าร่วมทั้งหมดปฏิเสธที่จะย่อชื่อเป็น Winsock เป็นเวลานาน เนื่องจากมีความสับสนอย่างมากระหว่าง API และไฟล์ไลบรารี DLL (winsock.dll) ซึ่งเปิดเผยเฉพาะอินเทอร์เฟซ WSA ทั่วไปกับแอปพลิเคชันที่อยู่ด้านบนเท่านั้น เป็นที่เชื่อกันโดยทั่วไปว่าการตรวจสอบให้แน่ใจว่าไฟล์ DLL มีอยู่ในระบบเท่านั้นจึงจะสามารถให้การสนับสนุนโปรโตคอล TCP/IP ได้อย่างสมบูรณ์
เทคโนโลยีของ Winsock
ข้อกำหนด Windows Socket API กำหนดอินเทอร์เฟซสองแบบ: API ที่ใช้โดยนักพัฒนาแอปพลิเคชัน และ SPI ที่ให้วิธีการสำหรับนักพัฒนาซอฟต์แวร์เครือข่ายในการเพิ่มโมดูลโปรโตคอลใหม่เข้าสู่ระบบ แต่ละอินเทอร์เฟซแสดงถึงสัญญา
API รับประกันว่าแอปพลิเคชันที่สอดคล้องสามารถทำงานได้ตามปกติด้วยการใช้โปรโตคอลที่สอดคล้องของผู้จำหน่ายซอฟต์แวร์เครือข่าย สัญญา SPI รับประกันว่าสามารถเพิ่มโมดูลโปรโตคอลที่สอดคล้องลงใน Windows เพื่อให้แอปพลิเคชันที่สอดคล้องกับ API สามารถนำไปใช้ได้
แม้ว่าสัญญาเหล่านี้จะมีความสำคัญเมื่อ Windows Sockets เปิดตัวครั้งแรก แต่สัญญาเหล่านี้มีความสำคัญทางวิชาการเท่านั้นในขณะนี้ เนื่องจากสภาพแวดล้อมเครือข่ายต้องการการสนับสนุนหลายโปรโตคอล Windows Sockets API เวอร์ชัน 2.0 มีฟังก์ชันการใช้ IPX/SPX แม้ว่าโปรโตคอลนี้จะเกือบจะล้าสมัยเมื่อ WSA 2.0 ออกจากโรงงานก็ตาม
รหัสและการออกแบบ Windows Sockets ขึ้นอยู่กับซ็อกเก็ต BSD แต่มีคุณสมบัติเพิ่มเติมเพื่อให้ API สอดคล้องกับรูปแบบการเขียนโปรแกรม Windows ทั่วไป
Windows Sockets API เกือบจะครอบคลุมคุณสมบัติทั้งหมดของ BSD sockets API แต่มีอุปสรรคบางประการที่หลีกเลี่ยงไม่ได้ ซึ่งส่วนใหญ่เกิดจากความแตกต่างพื้นฐานระหว่าง Windows และ Unix (แม้ว่าความแตกต่างระหว่าง Windows Sockets และซ็อกเก็ต BSD จะน้อยกว่าความแตกต่างระหว่าง หลังและสตรีม)
อย่างไรก็ตาม เป้าหมายการออกแบบของซ็อกเก็ต Windows คือเพื่อให้นักพัฒนาสามารถพอร์ตแอปพลิเคชันที่ใช้ซ็อกเก็ตจาก Unix ไปยัง Windows ได้อย่างง่ายดาย การสร้าง API ที่เป็นประโยชน์สำหรับโปรแกรม Windows ที่เพิ่งเขียนใหม่นั้นไม่เพียงพอ
ดังนั้น Windows Sockets จึงมีองค์ประกอบมากมายที่ออกแบบมาเพื่ออำนวยความสะดวกในการย้ายพอร์ต ตัวอย่างเช่น แอปพลิเคชัน Unix สามารถใช้ตัวแปร errno เดียวกันเพื่อบันทึกข้อผิดพลาดของเครือข่ายและข้อผิดพลาดที่ตรวจพบในฟังก์ชันไลบรารี C มาตรฐาน
เนื่องจากไม่สามารถใช้งานได้ใน Windows Windows Sockets จึงแนะนำฟังก์ชันพิเศษ WSAGetLastError() เพื่อดึงข้อมูลข้อผิดพลาด กลไกดังกล่าวมีประโยชน์มาก แต่การย้ายแอปพลิเคชันยังคงซับซ้อนมาก
แอปพลิเคชัน TCP/IP ดั้งเดิมจำนวนมากได้ถูกนำไปใช้โดยใช้คุณลักษณะของระบบเฉพาะสำหรับ Unix (เช่น เทอร์มินัลหลอกและการเรียกระบบทางแยก) และเป็นปัญหาในการทำซ้ำฟังก์ชันนี้ใน Windows ในระยะเวลาอันสั้น การย้ายพอร์ตทำให้เกิดการพัฒนาแอปพลิเคชัน Windows โดยเฉพาะ
การใช้งาน Winsock
- Microsoft ไม่ได้จัดเตรียมการใช้งาน Winsock 1.0
- Winsock เวอร์ชัน 1.1 มีให้ในแพ็คเกจเสริม (เรียกว่า Wolverine) สำหรับ Windows สำหรับ Workgroups (รหัสชื่อ Snowball)
- Winsock เวอร์ชัน 2.1 มีให้ในแพ็คเกจเสริมสำหรับ Windows 95
- Winsock 2.x เวอร์ชันล่าสุดมาพร้อมกับ Windows เวอร์ชันใหม่หรือเป็นส่วนหนึ่งของ Service Pack
- Winsock 2 สามารถขยายผ่านกลไกที่เรียกว่า Layered Service Provider (LSP)