Pāriet uz saturu

SOCKS

Vikipēdijas lapa

SOCKSir viens no interneta protokoliem, kas nodrošina iespējuklientaprogrammām piekļūtserveriemaiz ugunsmūra. Aiz ugunsmūra esošie klienti, kas grib pieslēgties ārējam serverim, pieslēdzas SOCKS serverim un tas izveidosavienojumuuz ārējo serveri. SOCKS serveris var noteikt, kādāmadresēmun portiem lietotāji drīkst piekļūt. SOCKS darbojas kā klientu programmu vadāmsportu redirekts.Līdzīgiem mērķiem biežāk lietoNAT,jo to ir vienkāršāk nokonfigurēt, un tam ir mazāksoverhead.

Pirmā izplatītā protokola versija bija SOCKS4. Tā nodrošināja izejošos un ienākošosTCPsavienojumus, tomēr daudzi SOCKS4 serveri nenodrošināja ienākošo savienojumu izveidošanu. Te nebija paredzētas nekāda veidaUDPkomunikācijas un pieprasījumos varēja norādīt tikai IP adreses, tas ir, bija nepieciešams atsevišķs iekšējaisDNSserveris. Vēlāk tika izveidota versija SOCKS4a, kur bija iespēja pieprasījumos norādīt domēna vārdu (uz IP adresi pārveidoja pats SOCKS serveris, izmantojot uz tās mašīnas pieejamos DNS serverus).

Vēlāk tika izveidota 5. versija. Šeit ir iespējamas arī UDP komunikācijas unIPv6.Tā kā 4a versija nebija oficiāla, var uzskatīt, ka domēnu vārdu lietošanas iespēja pieprasījumos parādījās šeit.

Klienta programma atver savienojumu uz SOCKS serveri un nosūta identifikācijas datus. Iespējamas vairākas metodes: null - (nav identifikācijas, vai arī identificē pēc IP adreses);lietotājvārdsun parole - (pašsaprotami); ir arī citas metodes. Pēc veiksmīgas identifikācijas klients nosūta pieprasījumu, kur var norādīt vienu no iespējamajām darbībām:

  1. Atvērt izejošo savienojumu (DNS domēns vai IP adrese un ports) (CONNECT);
  2. Atvērtsoketuienākošajiem TCP savienojumiem (BIND);
  3. Asociēt UDP portu (UDP ASSOCIATE).

Daudzi SOCKS serveri nenodrošina 2. un 3. iespēju.

Tālāk:

  • 1. gadījumā serveris atver savienojumu uz norādīto ārējo serveri (vai atmet atpakaļ kļūdas paziņojumu, ja tas nav iespējams), un komunikācijas notiek tāpat, kā bez SOCKS servera.
  • 2. gadījumā serveris atver TCP portu uz ārējā interfeisa un atsūta atpakaļ tur lietoto ip adresi un portu, pēc tam, kad tur pienāk ienākošais savienojums, serveris atsūta datus par šo savienojumu un pēc tam var pārsūtīt datus. Šis gadījums ir iespējams tikai, ja jau eksistē kāds atvērts izejošs TCP savienojums, ienākošais savienojums ir iespējams tikai no adreses, uz kuru ir atvērts izejošs savienojums, piedevām, atvērtais ienākošais sokets aizveras pēc vienas ienākošās konnekcijas izveidošanas, kā arī, atvērtam soketam var būt īsstimeout,kurā vai nu jāsaņem ienākošo savienojumu, vai arī tas aizvērsies. Šī funkcionalitāte bija paredzētaaktīvajam FTP,jo tur serveris atver datu konnekciju uz klientu. Šī funkcionalitāte tādējādi nav piemērota normāliem TCP serveriem.
  • 3. gadījumā klients sākumā atver TCP konnekciju uz SOCKS serveri, kur asociē UDP portu un servera atbildē dabū vai nu kļūdu, ka neizdevās asociēt, vai arī portu un servera adresi. Pēc tam ir iespējams komunicēt caur UDP tikmēr, kamēr tur šo vadības TCP savienojumu vaļā. UDP paketēm starp klientu un SOCKS serveri pieliek papildu headeri, kas satur vajadzīgā UDP servera IP adresi un portu, UDP paketēm, kas SOCKS serverī pienāk no ārējā tīkla, pieliek tādu pašu headeri. Te tādējādi ir iespējams darbināt normālu UDP serveri.

Daudzas klienta programas nenodrošina darbību caur SOCKS. Šādos gadījumos var lietot citas programmas, kas pārtver (sockcificē) (angliski:socksify) attiecīgas programmas tīkla piekļuves pieprasījumus un izlaiž tos caur SOCKS serveri. SOCKS serveri parasti darbojas uz 1080. TCP porta. SOCKS serveri ir programmas, kas darbojaslietojuma slānī,programmas, kas ar SOCKS spēj darboties natīvi, arī atrodas tikai lietojuma slānī. Sockcifikatoriatrodas starptransporta slāniun lietojuma slāni.

SOCKS5 protokols ir standartizētsRFC 1928(1996. gada martā).