Прокси сервер


Жұмыс түрі:  Курстық жұмыс
Тегін:  Антиплагиат
Көлемі: 18 бет
Таңдаулыға:   

Курстық жұмыс

Прокси-сервер

Мазмұны

Кіріспе . . .

Прокси сервер . . .

TCP . . .

Сокеты . . .

SOCKS . . .

Жүзеге асыру . . .

Функциялары . . .

Негізгі алгоритмі . . .

Шектеу . . .

Қосымша 1. Блок-схемасы . . .

2-қосымша. Листинг . . .

Әдебиеттер тізімі . . .

Кіріспе

Прокси-сервер

Прокси-сервер (ағылш. proxy - "өкілі, уәкілетті") - қызметі компьютерлік желілерде мүмкіндік беретін, клиенттерге орындауға жанама сұраулар басқа желілік қызметтерге төлейді. Алдымен клиент қосылады прокси-серверге сұратады қандай да бір ресурс (мысалы, e-mail), орналасқан басқа серверде. Содан кейін прокси-сервер не қосылады көрсетілген серверге алады ресурсы өзінде, не қайтарады ресурсы жеке кэш (егер прокси жоқ, кэш) . Кейбір жағдайларда сұрау салу клиенттің немесе бар сервер өзгертілуі мүмкін прокси-сервер анықталған. Сондай-ақ, прокси-сервер қорғауға мүмкіндік береді клиенттік компьютер кейбір желілік шабуылдар және сақтауға көмектеседі жасырын клиенттің.

Шаруаше

Жиі прокси-серверлер үшін қолданылады және мынадай мақсаттарға:

  • Қол жеткізуді қамтамасыз ету компьютерлер жергілікті желі, Интернет.
  • Деректерді кэштеу: егер жиі орын алуда, өтініш-бір және сол сыртқы ресурстарға, онда оларды ұстап көшірмесін ұсынады прокси серверде беруге және сұрау салу бойынша төмендете отырып, сол арқылы жүктемені арна сыртқы желі және жеделдете алу клиент сұратқан ақпаратты.
  • Деректерді қысу: прокси-сервер жүктейді ақпаратты Интернеттен береді ақпаратты түпкілікті пайдаланушыға сығылған түрінде. Мұндай прокси-серверлер пайдаланылады негізінен үнемдеу мақсатында сыртқы трафик.
  • Локалдық желіні сыртқы доступа: мысалы, орнатуға болады прокси-сервер-бұл локальды компьютерлер өтініш сыртқы ресурстарға тек ол арқылы, ал сыртқы компьютерлер алмайды жүгінуге жергілікті мүлдем (олар "көреді" тек прокси-сервер) .
  • Шектеу локалдық желіні сыртқы: мысалы, тыйым салуға қол жеткізу белгілі бір веб-сайттарғашектеу қою, интернет желісін пайдалану, онда жергілікті пайдаланушыларға орнатуға арналған квота трафик немесе өткізу жолағының, сүзуге және жарнамаға вирустар.
  • Анонимизация әртүрлі ресурстарға қол жеткізу. Прокси-сервер болуы мүмкін жасыру туралы мәліметтер көзінде сұрауды немесе пайдаланушы. Мұндай жағдайда мақсатты сервер көреді тек туралы ақпаратты прокси-сервер, мысалы, IP-мекен-жайы, бірақ мүмкіндігі жоқ анықтау шынайы көзі сұрау. Бар сондай-ақ, искажающие прокси-серверлер, олар береді мақсатты серверге жалған ақпаратты об истинном қолданушы.
  • Айналып шектеулер қол жеткізу. Прокси-серверлер арасында танымал пайдаланушылардың несвободных елдердің қол жеткізу кейбір ресурстарына шектелген заңнамалық және сүзіледі.

Прокси-сервер-оған қол жеткізу мүмкін кез-келген пайдаланушы, интернет желісі деп аталады ашық .

TCP

Transmission Control Protocol (TCP) ( хаттама басқармасының беруге ) - негізгі желілік хаттамалар Интернеттің, арналған басқару үшін деректерді беру желісінде және подсетях TCP/IP.

Функцияларды орындайды хаттаманың көліктік деңгейі моделі OSI.

TCP - бұл көлік тетігін ұсынатын деректердің ағыны, алдын ала орнату арқылы қосылыстар, осының есебінен еңбек сенімділік алынатын деректердің дұрыстығын жүзеге асырады, қайталап сұрау салу деректерін жоғалтқан жағдайда, деректерді жояды қайталануын алған кезде екі көшірмелерін бір пакеті. Қарағанда UDP кепілдік береді, бұл қосымша алады деректер дәл осындай ретпен, қандай олар жіберілді, және шығынсыз.

Іске асыру TCP, әдетте, кіріктірілген осы жүйенің өзегі, дегенмен бар, және іске асыру TCP контекстінде қосымшалар.

Кезде беру жүзеге асырылады, компьютерден компьютерге Интернет арқылы TCP жұмыс істейді, жоғарғы деңгейде екі ел арасындағы соңғы жүйелермен, мысалы, веб сілтеме және веб-сервер. Сондай-ақ TCP жүзеге асырады сенімді беруді ағынының байт бір бағдарламасын бірнеше компьютерде басқа бағдарлама болса. Бағдарламасы үшін электрондық пошта және файлдармен алмасу TCP пайдаланады. TCP бақылайды ұзындығы қатынасы, жылдамдығы алмасу, желілік трафик.

Әсер ету механизмі хаттама

Айырмашылығы дәстүрлі баламасы - UDP, ол мүмкін бірден бастай беруге пакеттері TCP белгілейді қосылыстар құрылуы тиіс алдында деректерді беру. TCP қосылу бөлуге болады 3 кезеңдері:

  • Орнату қосылыстар
  • Деректерді беру
  • Аяқтау қосылыстар

Орнату қосылыстар

Процесі басталғанға TCP сеансы деп аталады "адамды атып рукопожатием".

1. Клиент, ол ниет байланыс орнату, серверге жібереді сегмент нөмірі реттілігі мен туы SYN.

  • Сервер алады сегменті, есте сақтайды нөмірі реттілігі мен құруға тырысады сокет (буферлер және басқарушы құрылымдар еске алу) қызмет көрсету үшін жаңа клиент.
  • Жетістікке жеткен жағдайда сервер клиентке жібереді сегмент нөмірі реттілігі мен туларымен SYN және ACK және жағдайына SYN-RECEIVED.
  • Жағдайда сәтсіздік сервер клиентке жібереді сегменті туы RST.

2. Егер клиент сегменті туы SYN болса, онда ол есте сақтайды нөмірі реттілігі жібереді сегменті туы ACK.

  • Егер ол бір мезгілде алады және ту ACK (бұл, әдетте, жүргізіледі), онда ол жағдайына ESTABLISHED.
  • Егер клиент сегменті туы RST, онда ол тоқтатады талпыныстары байланысу.
  • Егер клиент жауап алмаса 10 секунд ішінде болса, онда ол қайталайды процесі қосылыстар қайтадан.

3. Егер сервер жағдайы SYN-RECEIVED алады сегменті туы ACK, онда ол жағдайына ESTABLISHED.

  • Әйтпесе, кейін тайм-аут ол жабады сокет және жағдайына CLOSED.

Процесі деп аталады "адамды атып рукопожатием", сол сияқты, бұл мүмкін орнату процесі қосылыстар пайдалана отырып, 4 сегменттерінің (SYN жағына сервер, ACK жағына клиенттің SYN жағына клиенттің ACK жағына сервер), іс жүзінде уақытты үнемдеу үшін пайдаланылады 3 сегмент.

Деректерді беру

Деректер алмасу кезінде қабылдағыш пайдаланады нөмірі реттілігі мазмұндалатын алынатын сегменттерінде, қалпына келтіру үшін, олардың бастапқы тәртібін. Қабылдағыш хабарлайды берген тарапты нөмірі туралы реттілігі дейін, ол сәтті алды мәліметтерді қоса алғанда, оның жолында нөмірі "растау". Алынатын барлық қатысты деректер аралығына расталған тізбектер еленбейді. Егер алынған сегменті құрамында нөмірі реттілігі көбірек қарағанда, күтілетін болса, онда деректер сегментінің буферизируются, бірақ нөмірі расталған реттілігі өзгермейді. Егер кейінірек қабылданатын болады сегментіне жататын күтілетін нөмірі реттілігі, яғни деректерді автоматты түрде қалпына келтірілді сүйене отырып нөмірлерінің тізбектер сегменттерінде.

Сонымен қатар, үшін жіберуші тарап түсуіне деректер интенсивнее қарағанда, олардың мүмкін өңдеуге қабылдау, TCP құрамында басқару құралдары жүреді. Бұл үшін пайдаланылады өріс "терезе". Сегменттеріндегі жіберілетін жылғы қабылдағыштың беруші тарапқа жолында "терезесі көрсетіледі ағымдағы мөлшері қабылдау буферінің. Беруші тарап сақтайды мөлшері терезе жібереді деректер көп емес, ол көрсеткен қабылдағыш. Егер қабылдағыш көрсеткен нөлдік мөлшері терезе, онда деректер осы бағытта торабының болмайды, до тех пор әзірше қабылдау туралы хабарламаса, көп мөлшерде терезе.

Кейбір жағдайларда тапсырушы қосымша мүмкін анық талап етуге протолкнуть деректер дейін белгілі бір ретпен қабылдайтын қосымшаға емес буферизируя олардың. Бұл үшін пайдаланылады туы PSH. Егер алынған сегментінде анықталады туы PSH, онда іске асыру TCP береді барлық буферизированные қазіргі сәтте осы қатысушы-қосымшасына сәйкес. "Итермелеу" пайдаланылады, мысалы, интерактивті қосымшаларында көрсетілген. Желілік терминалдары жоқ күтуге енгізу пайдаланушының соң, ол бітірді командасын теру. Сондықтан соңғы сегменті бар команданы міндетті қамтуы туы PSH үшін қосымша қабылдаушы тарапқа алмады бастау оның орындалуы.

Аяқтау қосылыстар

Аяқтау қосылыстар қарастыруға болады үш кезеңнен тұрады:

  1. Жіберу-серверге клиенттен туларды FIN және ACK аяқтауға қосылыстар.
  2. Сервер клиентке жібереді жалаулар жауап ACK, FIN, бұл қосылыс жабылды.
  3. Алғаннан кейін осы туларды клиент жабады біріктіру және растау жібереді серверге ACK, бұл қосылыс жабылды.

Сокеты

Сокеты (ағыл. socket - тереңдету, ұя, тесік) - атауы бағдарламалық интерфейсті қамтамасыз ету үшін арасында деректер алмасу процестері. Процестер кезінде және мұндай алмасуға орындай алады ретінде бір ЭЕМ-де, әртүрлі ЭЕМ-мен өзара байланысты желісі. Сокет - абстракті объект білдіретін соңғы нүкте қосылыстар.

Ажырата білу қажет клиенттік және серверлік сокеты. Клиенттік сокеты дөрекі салыстыруға болады оконечными аппараттарымен телефон желісіне, ал серверлік - с коммутаторларымен. Клиенттік қосымша (мысалы, браузер) ғана пайдаланады клиенттік сокеты, ал серверлік (мысалы, веб-сервер, ол браузер сұрау салу жібереді) ретінде клиенттік және серверлік сокеты.

Принциптері сокетов

Әрбір процесс құра алады слушающий сокет (серверлік сокет) және привязать оның қандай да бір портында операциялық жүйесін (UNIX непривилегированные процестер пайдалана алмайды порттары аз 1024) . Слушающий процесі, әдетте, орналасқан циклінде күту, яғни оянады пайда болған кезде, жаңа қосылыстар. Кезінде бұл мүмкіндігі сақталады болуын, қосылыстардың осы белгіленсін тайм-аут үшін операциялар және т. б.

Әрбір сокет өзінің мекен-жайы. UNIX қолдауы мүмкін көптеген түрлері мекен-жайлары, бірақ міндетті болып табылады INET-мекен-жайы және UNIX-мекен-жайы. Егер привязать сокет к UNIX-мекен-жайы, онда ол құрылады файл (файл сокета) берілген жолды алады хабарлануы кез келген жергілікті процестер арқылы оқу/жазу, оған. Сокеты үлгідегі INET қол жетімді желісін талап етеді бөлу порт нөмірін.

Әдетте, клиент анық қосылады қарай тыңдаушыға, содан кейін кез келген оқу немесе жазу арқылы, оның файлдық дескриптор болады деректерді оларға арнайы сервер.

SOCKS

SOCKS - желілік хаттама, ол мүмкіндік береді клиент-серверлік қосымшаларға ашық пайдалануға сервистер үшін межсетевыми экрандармен (фаерволами) . SOCKS - бұл сокращение от "SOCKetS" (сокеты, ұялар) .

Хаттама SOCKS 4

SOCKS 4 арналған жұмыс арқылы фаервол аутентификациясыз қосымшалар үшін типті клиент-сервер жұмыс істейтін хаттама TCP, мысалы, TELNET, FTP және осындай танымал хаттамалар алмасу ретінде, HTTP, WAIS және GOPHER. Мәні бойынша, SOCKS-сервер ретінде қарастыруға болады желіаралық экран қолдайтын хаттама SOCKS.

Типтік сұрау SOCKS 4 келесі түрде көрінеді (әрбір жолды бір байт) :

Сұрау Клиенттің SOCKS-Серверге :

өріс 1: нұсқасының нөмірі SOCKS, 1 байт (тиіс 0x04 үшін осы нұсқасы)

2 жолда: код командалары, 1 байт:

0x01 = орнату TCP/IP қосылыстар

0x02 = тағайындау-TCP/IP порты (binding)

3-өріс: порт нөмірін, 2 байт

4-өріс: IP-адрес 4 байт

алаңында 5: ID-жолдың айнымалы ұзындығы аяқталады null-байтпен аяқтайды делік (0x00)

Бар Сервер SOCKS-Клиентке:

өріс 1: null-байт

2 жолда: коды бар, 1 байт:

0x5a = сұрау салу берілген

0x5b = сұрау салудан немесе ошибочен

0x5c = запрос не удался, өйткені іске қосылды identd (немесе жоқ қол жетімді сервер)

0x5d = запрос не удался, өйткені клиенттік identd қажет пайдаланушының идентификаторы сұрауда

3-өріс: 2 произвольных байт болуы тиіс алуға құқылы

4-өріс: 4 произвольных байт болуы тиіс алуға құқылы

Жүзеге асыру

Задача курстық проектінің іске асыру TCP прокси-сервера хаттамасының негізінде SOCKS4, пайдалана отырып, тіл ANSI C жинағы сын API/POSIX.

Бұл үшін қолданылған мынадай функцияларды :

  1. select- синхронды формаларының көріністері енгізу-шығару.

Функциялары select күтеді мәртебесін өзгерту бірнеше файлдық дескрипторларды.

int select(int n, fd_set *readfds, fd_set *writefds, fd_set *exceptfds,

struct timeval *timeout) ;

Бағаланып, үш тәуелсізх теру дескрипторларды. Сол, бұл аударылды, бұл өлшемде readfds, қадағаланатын болады тұрғысында пайда болған жаңа қаріпке оқу үшін (дәлірек айтқанда, операция оқуға болады тежелген болса - атап айтқанда, файлдық дескриптор орналасқан соңында файл) ; сол, - деп атап көрсетілген өлшемде writefds, қадағаланатын болады-на тұрғысында бұл операция жазбалар құлыпталады; сол, көрсетілген өлшемде exceptfds, қадағаланатын болады мәніне ерекше жағдайларды. Кезде қайтару функцияларын жиынтығы дескрипторларды өзгертіледі, көрсету үшін, олардың қайсысы өз мәртебесін өзгертті.

Кезінде табысты аяқталғаны select қайтарады саны дескрипторларды орналасқан жиынтықтағы дескрипторларды, бұл саны болуы мүмкін нөлге тең, егер тайм-аут аяқталады, ал бізді қызықтыратын оқиғалар да болды. Қате болған кезде қайтарылады -1, ал errno белгіленеді тиісті түрде; жиынтықтар дескрипторларды және мәні timeout айналады неопределенны, сондықтан қате болмайды сүйенеді, олардың мәні.

2) socket жасау оконечную нүктесін коммуникация.

int socket(int domain, int type, int protocol)

socket жасайды оконечную нүктесін салу үшін қайтарады және оның дескриптор.

Параметр domain салықтар "домен" коммуникмемлекеттік тіркеу тізілімінде; таңдайды жинағы хаттамалар үшін пайдаланылатын коммуникация. Мұндай жиынтығы сипатталған <sys/socket. h>.

Сокет бар көрсетілген түрі, type, задающий семантику коммуникация. Осы уақытта анықталды мынадай түрлері:

  • SOCK_STREAM

Қамтамасыз етеді сенімді, двунаправленные дәйекті ағыны байт, қолдайтын қосылыстар. Сондай-ақ, оларға қолдау тетігі тыс тасқынды деректер.

  • SOCK_DGRAM

Қамтамасыз етеді датаграммы (сенімсіз хабарлар шектеулі максималды ұзындығы, қолдау қосылыстар) .

  • SOCK_SEQPACKET

Қамтамасыз етеді дәйекті екі бағытты беру арнасы датаграмм қолдайтын қосылыстар; датаграммы бар шектелген максималды ұзындығы; алушыдан талап етіледі бір рет оқып тұтас пакеті.

  • SOCK_RAW

Қол жеткізуін қамтамасыз етеді низкоуровневому желілік хаттама.

  • SOCK_RDM

Қамтамасыз етеді сенімді жеткізуді датаграмм кепілдігі жоқ, олардың реттілігі.

  • SOCK_PACKET

Ескірген және пайдаланылмауы тиіс жаңа бағдарламалары;

Параметр protocol салықтар нақты хаттамасы пайдаланылады сокете. Әдетте, тек бір хаттама, қамтамасыз ететін нақты түрі сокета берілген хаттамалар жиынтығы. Алайда, мүмкін болуы бірнеше осындай хаттамалар -- сонда пайдаланылады, осы параметрді таңдаңыз. Хаттаманың нөмірі тәуелді пайдаланылатын "домен коммуникация"

Жағдайда, қате қайтарылады -1; олай болмаған жағдайда қайтарылады дескриптор, ссылающийся арналған сокет.

3) bind - привязать аты к сокету

int bind(int sockfd, struct sockaddr *my_addr, socklen_t addrlen) ;

bind координаттармен к сокету sockfd лобірегей мекен-жайы my_addr ұзындығы addrlen. Дәстүр бойынша, бұл операция деп аталады "біліктіліг сокету атындағы. " Қашан сокет ғана құрылды көмегімен socket, ол бар кеңістікте аттар (отбасы мекен-жай), бірақ бар тағайындалған атындағы.

Әдетте сокету үлгідегі SOCK_STREAM қажет болып тағайындалсын жергілікті мекен-жайы арқылы bind, алдында ол қабылдай алады қосылыстар.

Барлығы сәтті болған жағдайда, нөл қайтарылады. Қате болған кезде қайтарылады -1, ал errno белгіленеді, тиісінше.

4) listen - әнді қосылыстары арналған сокете

int listen(int s, int backlog) ;

Сонымен қатар, қабылдауға қосылыстар жасау керек сокет с арқылы socket, содан кейін білдіруге дайын қабылдауға кіретін қосылыстар және қою мөлшері кезек көмегімен listen, содан кейін тудыруы accept пайда болуына қарай жаңа қосылыстар. Жүйелік шақыру listen ғана қолданылатынын сокетам үлгідегі SOCK_STREAM немесе SOCK_SEQPACKET.

Параметр backlog салықтар барынша ұзындыққа дейін өсе алады, кезек күтетін қосылыстар. Егер келеді сұрау қосылыс, ал кезекте толы болса, онда клиент қате ECONNREFUSED немесе, егер тиісті хаттама қолдайды қайта беруді, сұрау салу мүмкін игнорирован көріңіз жауап беру, қайта сұрау.

Барлығы сәтті болған жағдайда, нөл қайтарылады. Қате болған кезде қайтарылады -1, ал errno белгіленеді, тиісінше.

5) accept - қабылдау біріктіруге арналған сокете

int accept(int s, struct sockaddr *addr, socklen_t *addrlen) ;

Функция accept қолданылады сокетами, бағдарлы арналған устанавление қосылыстар (SOCK_STREAM, SOCK_SEQPACKET және SOCK_RDM) . Бұл функция алады бірінші сұрау қосылыс-бірі кезек күтетін қосылыстар жасайды жаңа қосылған сокет дерлік осындай параметрлермен және s, және бөледі үшін сокета жаңа файлдық дескриптор, ол қайтарылады. Жаңа сокет артық емес орналасқан слушающем жай-күйі. Бастапқы сокет s өзгермейді бұл ретте шақыру.

Ескереміз, бұл тулар файлдық дескрипторларды (сол болады деп белгіленсін арқылы параметрдің F_SETFL функциялары fcntlтипті неблокированного жай-күйі немесе асинхронды енгізу-шығару) мұраға қалдырылмайды жаңа файловым дескриптором кейін accept.

Аргумент s - бұл сокетқұрылды көмегімен socket, байланған, жергілікті мекен-жай көмегімен bind, тыңдап қосылыстар кейін listen.

Аргумент addr -- бұл көрсеткіші құрылымын sockaddr. Осы құрылымға орналасады, мекен-жайы, басқа тараптың түрінде қандай ол белгілі на коммуникациялық деңгейде. Нақты форматы мекен-жайы, берілетін өлшемде "семейством" сокета. Аргумент addrlen болып табылады параметрі берілетін, мына сілтеме бойынша: алдында шақырылуына оның құрамында мөлшері, құрылымы, оған ссылаесоң addr, ал шақырғаннан кейін - нақты ұзындығын мекен-байтпен. Егер addr тең NULL, ол толтырылады.

Егер кезек жоқ сұраныстарды біріктіру және сокет белгіленбесе, туы, ол болып табылады неблокирующим, accept блоктар берілгенін бағдарламаға дейін пайда болған қосылыстар. Егер сокет болып табылады неблокирующим, ал кезек жоқ сұраныстарды біріктіру, онда accept қайтарады EAGAIN.

Бұл жүйелік шақыру қайтарады -1 жағдайда қателіктер. Табысты аяқталғаннан кейін қайтарылады неотрицательное бүтін болып табылатын дескриптором сокета.

6) shutdown - жабуға бөлігі көрсетілгеннен өзгеше дуплексті қосылыстар

int shutdown(int s, int how) ;

Жүйелік шақыру shutdown жабылуына әкеледі бөлігінің немесе бүкіл ставкаларында көрсетілгеннен өзге дуплексті қосылыстар сокете, байланысты с дескриптором s. Егер параметр how нөлге тең, тыйым салынған қабылдау. Егер how тең бірлікте, тыйым салынған беру. Егер how тең екілікте, онда тыйым салынған ретінде қабылдау да, және беру.

Барлығы сәтті болған жағдайда, нөл қайтарылады. Қате болған кезде қайтарылады -1, ал errno белгіленеді, тиісінше.

Негізгі алгоритмі:

  1. Қабылдаймыз біріктіру.
  2. Парсим тақырып.
  3. Орнатамыз біріктіру мақсатында.
  4. Жауап береміз клиентке, бәрі ОК.
  5. Проксируем.
  6. Жабамыз біріктіру
... жалғасы

Сіз бұл жұмысты біздің қосымшамыз арқылы толығымен тегін көре аласыз.
Ұқсас жұмыстар
HTTP хаттама
Кері прокси
Модемдер, оның параметрлері, функциялары
NGN желісінде IPTV құрылымын талдау
Мектептің тарихы
Интернетке қатынас құру
OpenBSD
Интернетке ақпаратты берудың қаупсіздік шаралары
Кәсіпорын клиенттер мәлімдемелерін есепке алу үшін веб серверлер
IP-телефониясы және стримингтік технологиялар
Пәндер



Реферат Курстық жұмыс Диплом Материал Диссертация Практика Презентация Сабақ жоспары Мақал-мәтелдер 1‑10 бет 11‑20 бет 21‑30 бет 31‑60 бет 61+ бет Негізгі Бет саны Қосымша Іздеу Ештеңе табылмады :( Соңғы қаралған жұмыстар Қаралған жұмыстар табылмады Тапсырыс Антиплагиат Қаралған жұмыстар kz