套接字安全(SOCKS,socket security)是一種基于傳輸層的網(wǎng)絡(luò)代理協(xié)議。該協(xié)議的作用是在TCP和UDP中為客戶機(jī)/服務(wù)器應(yīng)用程序提供一個框架,以方便而安全地使用網(wǎng)絡(luò)防火墻的服務(wù)。
目前常見的SOCKS版本為SOCKS 4和SOCKS 5。SOCKS 4為基于TCP的客戶機(jī)/服務(wù)器應(yīng)用程序(包括Telnet、FTP和http等)提供穿過防火墻的信息傳輸。SOCKS版本5在RFCl928中定義,它擴(kuò)展了SOCKS版本4,增加了對UDP的支持,提供了通用強(qiáng)壯的安全認(rèn)證方案,并擴(kuò)展了尋址方案,包括對域名和IPV6地址的支持。
由于網(wǎng)絡(luò)應(yīng)用的需求,需要創(chuàng)建一種機(jī)制,通過防火墻來管理IP多點(diǎn)傳送的入口和出口,可以通過對已有的SOCKS版本5協(xié)議定義擴(kuò)展來完成。這些擴(kuò)展分兩部分定義。分別為基本級別UDP擴(kuò)展和多點(diǎn)傳送UDP擴(kuò)展,它提供單點(diǎn)傳送TCP和UDP流量的用戶級認(rèn)證,為防火墻傳輸提供了一個框架。
SOCKS是通過在應(yīng)用程序中用特殊請求替代標(biāo)準(zhǔn)網(wǎng)絡(luò)系統(tǒng)調(diào)用來工作的,這些新的系統(tǒng)調(diào)用在己知端口上(通常為TCP 1080)打開到一個SOCKS代理服務(wù)器的連接。如果連接請求成功,則客戶機(jī)進(jìn)入一個使用認(rèn)證方法的協(xié)商,用選定的方法認(rèn)證。然后發(fā)送一個中繼請求,SOCKS服務(wù)器評價(jià)該請求,并建立適當(dāng)?shù)倪B接或拒絕它。當(dāng)建立了與SOCKS服務(wù)器的連接之后,客戶機(jī)應(yīng)用程序把用戶想要連接的機(jī)器名和端口號發(fā)送給服務(wù)器, SOCKS服務(wù)器實(shí)際連接遠(yuǎn)程主機(jī),然后透明地在客戶機(jī)和遠(yuǎn)程主機(jī)之間來回傳輸數(shù)據(jù),而在用戶端則感覺是在直接與遠(yuǎn)程主機(jī)通信。
目前,大多數(shù)常用的網(wǎng)絡(luò)應(yīng)用程序包括FTP和Telnet都已經(jīng)被SOCKS化。并且許多廠商的產(chǎn)品,例如IP Phone和QQ等,都已把SOCKS支持包括在商業(yè)應(yīng)用程序中。