Тақырыбы: TCP/IP хаттамалар комплекстерімен жұмыс
Жұмыстың мақсаты: транспортты Интернет хаттамаларымен жұмыс жасау принциптерін, қосалқы бағдарламаларды құруды үйрену. Теориялық бөлім. Интернет желісінің ТСР транспорттық хаттамалары
TCP (Transmission Control Protocol) – бұл транспорттық деңгейдің ең
кеңінен таратылған түрі. ТСР ең маңызды функциясына бұрыннан қолданылып
келе жатқан IP (Internet Protocol) хаттамасымен салыстырғанда,
мәліметтерді жоғалтпай жеткізуі болып саналады. Хабарламаны жеткізу үшін
процесс – жіберуші мен процесс – алушының арасын алдын – ала жалғайды.
Бұл құрылған жалғау дейтаграмманың нақты түрде жетуін қамтамасыз етеді.
ТСР хаттамасының бүлінген немесе жоғалған пакеттерді қайталап жіберу
мүмкіндігі бар.
Хабарламаның нақты түрде жеткізілуіне белгіленген функциялар
өңдеушілерді қосалқы бағдарламалардан және дейтаграмманы басқару
амалдарынан босатады. Хаттама жіберуші мен алушы арасында мәліметтер
жіберілуін қамтамасыз етеді. ТСР жалғауды қондыруға бағытталған
болғандықтан, дейтаграмманы алған адресат жіберушіге алғаедығы туралы
хабар беруі керек. Жалпы жіберуші мен алушы арасында виртуальды канал
қондырылады, ол жерде олар хабарламамен алмасады және алғандығы туралы
хабар жіберіледі.
Мәліметтерді алмасу процесі машина – жіберуші және машина – алушы
арасында жалғауды қондыру сұранысынан басталады. Бұл сұраныста арнайы
бүтін саны болады, оны біз сокет номері деп атаймыз. Ал жауабына алушы
өз сокетінің номерін жібереді. Жіберуші мен алушының сокеттерінің номері
жалғауды анықтайды (былай айтқанда, жалғау жіберуші мен алушының
IP-адресісіз орындалмайды, бірақ та бұл тек төменгі деңгейлі
хаттамаларға қатысты).
ТСР жалғауын қондырғаннан кейін хабарламаның сегменттері жіберіліп
бастайды. Жіберушінің төменгі деңгейлі IP-адресінде сегменттер бір
немесе бірнеше дейтаграммаларға бөліне бастайды. Желіні өте келе,
дейтаграммалар алушыға келіп түседі, содан IP деңгейі олардан қайтадан
сегмент жинақтап ТСР береді. ТСР барлық сегменттерді бір хабарламаға
жинақтап отырады. ТСР – дан процесс – алушыға хаттамалардың қада
жиналатыны туралы хабарлдама жіберіліп отырады.
ТСР машина – алушыда номері бойынша бүкіл сегменттерді бір хабарламаға
жинақтайды. Егер қандайда бір хабарлама сегменті жоғалған немесе
бүлінген болса, жіберушіге қате кеткен сегменттің номері жіберіледі.
Бұндай жағдайда жіберуші сегментті қайта жіберуіне тура келеді. Егер де
сегмент дұрыс қабылданған болса, онда алушы анықтаушы – квитанциясын
жібереді (ACK - acknowledgement).
Таймер ТСР хаттамасында ең маңызды рольді атқарады. Егер де белгіленген
уақыт ішінде анықтаушы – квитанциясы келіп түспеген болса, онда сегмент
жоғалтылған болып саналады. Бұндай жағдайда сегментті қайта жіберу
процесі орындалады. Порттар номерлері мен сокеттер
ТСР қолоданылатын қосымшасы (процесс) номер порты – санымен анықталады.
Бұрыннан әйгілі желі қызметтерінің порттар номерлері 4 кестеде
көрсетілген. 1 – кесте. Internet желісінің кеңінен қолданылатын порттар номерлері. Порт номері Желі қызметі Сипаттау
0 Резервтелген
7 echo Келген хабарламаға жауап - эхо
9 discard Бүкіл келген хабарламалар лақтыру (жою)
11 users Белсенді қолданушылар
13 daytime Күннің уақытын туралы мәліметтерОтклик
19 chargen Символдар генераторы
20 ftp data FTP хаттамалары арқылы мәліметтерді жіберу
21 ftp FTP хаттамасы арқылы басқарушы командаларын жіберу
23 telnet TELNET хаттамасы арқылы портты қосу
25 smtp SMTP почталық хабарламалаырн жіберу хаттамалары
37 time Уақытты қамтитын отклик
42 name Аттар сервері
43 whois Бұл кім
53 domain Домендер аттары серверлері
67 boots Жоғалған серверді енгізу хаттамасы
68 bootc Жоғалған клиентті енгізу хаттамасы
69 tftp TFTP файлдарын жіберудің жеңілдетілген хаттамасы
79 finger FINGER қолданушылары туралы мәліметтер алу хаттамасы
80 http HTTP гипертекстін жіберу хаттамасы
109 pop2 POP2 почталық жәшігінің хаттамасы
110 pop3 POP3 почталық жәшігінің хаттамасы
111 rpc RPC жоғалған процедуралар хаттамасы
156 sqlserv SQL қызметі
161 snmp SNMP басқарушы хаттамасы
TCP хаттамасының хабарландыру форматындағы порт номері астына 16 бит
апарылады, сондықтан порттың максималды мүмкіндікті номері 65535 болып
табылады. 0 – ден 255 – ке дейінгі порттардың номерлері жүйелік
қажеттіліктерге қатаң резервтеген, оларды қолданбалы бағдарламаларда
пайдалануға рұқсат етілмейді. 256 – дан 1023 – ке дейінгі аралықта
көптеген порттарда желілік қызметтермен пайдаланылады, сондықтан оларды
да қолданбалы қажеттіліктерге пайдалануға рұқсат етілмейді. Ереже
бойынша TCP/IP негізіндегі бөтен көптеген қолданбалы қосалқы
анықтауыштар порт номерлерін 1024 - тен 5000 – ға дейінгі диапазонында
пайдаланады. 3000 – нан 5000 – ға дейінгі номерлерді пайдалану
ұсынылады, 5000 – нан жоғары номерлері көбінесе қысқа мерзімдік
қолданулар үшін пайдаланылады.
TCP – дегі кез – келген байланыс
каналдары екі санмен анықталынады – бұл косбинация сокет деп аталады.
Осылайша сокет ЭЕМ – де IP-адресімен және TCP – дегі бағдарламалық
қамсыздандыру арқылы порт номерімен анықталады. Қосылу кезінде кез –
келген машина бір мағынады IP-адресімен анықталады, ал әрбір процесс –
портпен анықталады, сондықтан екі процестер арасындағы қосылыстар бір
мағынада сокетпен анықталынады. Желідегі үш ЭЕМ арасындағы TCP хаттамасы
бойынша қосылыстардың орналасу схемасы 6 – суретте бейнеленген.
Өзара әрекеттесуші ЭЕМ барлық активті порттардың жіберушілерінің және
алушыларының кестелерін жүргізеді. Егер екі машиналар аракестелерін
жүргізеді. Егер екі машиналар арасында мәліметтер алмасуы жүрсе, онда
олардың бірінің порты жіберуші, екіншісі алушы немесе керісінше болып
келеді. Егер жіберуші машина бірнеше қосылуларды сұраса, онда олардың
әрбірінің өздерінің жіберуші порты болады, ал алушының порты жалпы болуы
мүмкін. Бірнеше машина бір уақытта бір алу – порты пайдалануы мүмкін,
бұл мультипликсерлеу деп аталады. 6 – суретте екі қосылулардың
мультипликсерленуі ЭЕМ3 – те 23 номер порты бойынша орындалады.
Қашанда бірнеше қосылулар орнатылса, онда бірдей порт көздері және
алушылары көрсетілген қосылуларға бірнеше машиналар сұраныс жібереді.
UDP хабарларын беру хаттамасы.
UDP (User Datagram Protocol) хаттамасы TCP хаттамасына қарағанда өте
қарапайым транспорттық хаттама болып келеді. UDP хаттамасы дейтаграмманы
жеткізіп беруді қамтамасыз етеді, бірақ оларды дәлелдер алуды талап
етпейді.
UDP хаттамасы мәліметтерді қосылуларды орнатусыз – ақ
жеткізіп беру талап етілген жағдайларда пайдаланады. Мұндай байланыс
негізінде сенімсіз, өйткені оның хабарлары дұрыс қабылданды ма және ол
ол тіпті алындыма, сол туралы жіберушіге хабарланбайды. Қателердің
туындауын тексеру үшін пакеттің бақылау сомасы пайдаланылады, бірақ
қателіктер ешқандай өңделінбейді – олар немесе жойылады немесе олардың
өңделінуі өте жоғары қолданбалы деңгейде орындалады.
UDP арқылы
қолданбалы процеспен жіберілетін мәліметтер бөлшектерге бөлінбей,
белгіленген орынға бір бүтін секілді жетеді. Мысалы, егер жіберуші –
процесс порт арқылы бес хабарлама берсе, онда алушы – процесс порттан
бес хабарды есептеуі қажет. Әрбір жазылған хабарлар көлемі әрбір
оқылғандардың көлемімен сәйкес келуі қажет.
UDP хаттамасы
мәліметтерді берудің қарапайым механизмі қажет болған жағдайда ғана
пайдаланылады. Сонда қате бақылауы немесе орындалмайды (мысалы, TFTP -
Trivial File Transfer Protocol – қолданбалы хаттамасы – файлдарды
берудің қарапайым хаттамасы) немесе қолданбалы деңгейде орындалады
(мысалы, SNMP - Simple Network Management Protocol басқарушы
хаттамасында немесе NFS - Network File System файлдық жүйеде
пайдаланады).
Транспорттық хаттама негізінде мәліметтермен алмасу бағдарламасы.
TCP тек төменде жатқан деңгейдің хаттамаларымен ғана емес, сонымен
қатар қолданбалы деңгейдің хаттамаларымен және қосалқы анықтауышымен де
өзара әрекеттесуі қажет. Қолданбалы деңгеймен байланыс сервистік
қарапайымдар жинағы көмегімен жүзеге асырылады. Сервистік қарапайымдар
хаттама стандартында анықталынады, ал қолданбалы бағдарлама үшін олар
сокеттермен жұмыс кітапханасы формасында жеткілікті.
Қосылуларды орнықтыру кезінде жақтардың немесе тараптардың әрбірі ашық
қосылулар деп аталатын кейбір операцияларды орындайды. Ашықтар пассивті
немесе активті болуы мүмкін. Ереже юойынша жақтардың бірі қосылулардың
активтік ашылуын, ал екіншісі – пассивтік ашылуын жүргізеді, сонда
қосылулар орындалады. Екі режимдер де нақты ережеге бағынады. Пассивтік
қосылуларды кейде серверлік деп, ал активтікті – клиенттік деп атайды.
Активтік қосылулар кезінде қолданбалы деңгейдегі процесс ТСР – дің
бағдарламалық қамсыздандырылуын сол ЭЕМ – ге сұраныстың сервистік
қарапайымдылығына сокет номерімен қосылуды орнатуға береді. Содан кейін
ТСР алушыға қосылуды орнатуға сұраныс жібереді және жауабын күтеді.
Қосылулар орындалғаннан кейін активтік пройесс (клиент) мәліметтердің
берілуін және қабылдануын ынталандырады.
Пассивтік қосылулар
кезінде қолданбалы бағдарлама ТСР – дің бағдарламалық қамсыздандыруын
жойылған жүйеден қосылуға сұранысты күту режиміне ауыстырады. Сұраныс
қашан келіп түссе, ТСР – дің бағдарламалық қамсыздандырылуы қосылуды
орнатуды жүзеге асырады, содан кейін пассивтік процесс (сервер)
мәліметтерді қабылдауға және беруге дайын болады.
Сокеттердің
бағдарламалық интерфейсі ОЖ UNIX үшін жасақталынды. Бұл интерфейсті
сақтап тұрушы функция кітапханасы UNIX және LINUX типті барлық ОЖ
ядроларына кіреді. Дегенмен бұл бағдарламалық интерфейстермен жұмыс
принциптері TCP/IP сақтап тұрушы жұмыс принциптері TCP/IP сақтап тұрушы.
ОЖ – тің көпшіліктеріәнде қолданылады. ТСР хаттамасы үшін
пассивтік (сервер жағында) қосылулар сокетпен бірге келесі функцияларды
орындалуға әкеледі:
- Сокет жасау және оны (ОЖ – те UNIX типінде socket функциясында) типінде орнату;
- Нақты бір қосылуға сокетті ретке келтіру (порттың адресін және номерін көрсетеді – ОЖ – те UNIX типті функция bind);
- Коиенттердің кезегін жасау (ОЖ – те UNIX типті функция listen);
- Сокетпен қосуға келетін сұранысты күту (ОЖ – те UNIX типті функция accept);
- Клиентпен мәліметті қабылдау және беру (ОЖ – те UNIX типті –
функциялары read, write, send, recv және олардың модификациялары);
- Коиентпен жабық қосылулар (ОЖ – те UNIX типті – функция close);
Қосылуға ендіруші сұраныс алып сервер бір уақытта екі есептерді шешуі
қажет: қолданбалы хаттамамен сәйкес қосылуды коиентпен орнатуды
қамтамасыз ету (мәліметтерді клиентке беру және қабылдау) және басқа
клиенттерден қосылуға жаңа сұраныстардың келіп түсуін күту. Әдетте
дамыған ОЖ – те бұл проблема бірнеше процестердің параллельдік орындалу
мүмкіндігінің арқасында шешіледі. ОЖ – те UNIX типінде жаңа процесті
жасау fork фуекциясының көмегімен шешіледі, бұл кезде жаңадан құрылған
процеспен негізгі процесте жасалынған барлық қосымшалар сақталынады.
ТСР хаттамасы үшін сокетпен активтік (клиенттер жағында) қосылулар келесі функциялардың орындалуына әкеледі:
- сокет жасау және оның типін анықтау (ОЖ – те UNIX типте функция socket);
- сервермен қосылуды орнату (порттың адресімен номерін көрсетеді – ОЖ – те UNIX типті функция connect);
- мәліметтерді қабылдау және беру (ОЖ – та UNIX типті – функциялар
read, write, send, recv және олардың модификациялары); сервермен
қосылудың жабылуы (ОЖ – де UNIX типті – функция close);
Жұмыстың жүргізу тәртібі:
1) Мұғаліммен тапсырма вариантын алы;
2) Тапсырмаға сәйкес қолданбалы бағдарламаны жасақтау;
3) Есепті дайындау және қорғау;
4) ЭЕМ – ге бағдарламаны жазу және реттеу;
5) Оқытушыға жұмыс жасап тұрған бағдарламаны тапсыру;
Жұмыс бойынша есепті рәсімдеу:
1. Берілген хаттама негізінде сыртқы дүниемен қолданбалы бағдарламаның өзара әрекеттесу алгоритмін жазу;
2. Пайдаланатын кластардың тізімі, олардың қасиеттері және ОЖ функциясы
немесе өзара әрекеттесу хаттамасын ұйымдастыру үшін жасақтау ортасы;
Өзіндік тексеру үшін сұрақтар:
1) Интернет делісінде ТСР – дің транспорттық хаттамасы қандай роль
атқарады? Транспорттық деңгейдегі хаттамалардың белгіленуі туралы айтып
ьерің.
2) ТСР хаттамасы бойынша Интернет желісінде хабарларды беру қалай жүретінін айтып берің.
3) Жылжымалы терезе дегеніміз не? Хабарлар сегменттерінің жылжымалы
терезесінен ТСР хаттамасының жұмыс принциптері туралы айтып берің.
4) Сокет дегеніміз не? ТСР хаттамасының қандай параметрлері әрбір қосылысты бір мағынада теңестіруге мүмкіндік береді.
5) Интернет желісінде қолданбалы бағдарламасы үшін қандай принципте
порт номерлері таңдалынады. Желінің ең көп тұтынылатын қолданбалы
қызметінің порттарының номерлерін атаңдар.
6) ТСР хаттамасы бойынша
екі ЭЕМ арасындағы қосылу кезінде жіберушінің және алушының порттарының
номерлерінің бір – біріне сәйкес келтіндігін түсіндірің. Порттарды
мультипликсерлеу дегеніміз не?
7) UDP хабарларын берудің хаттамасының жұмыс принциптері туралы айтып берің. Оның ТСР хаттамасынан айырмашылығы неде?
8) Рing и traceroute утилиттері қандай мақсаттар үшін қызмет етеді? Олардың жұмыс принциптер туралы айтып берің.
9) Активтік және пассивтік қосылыстар дегеніміз не? Олардың айырмашылығы неде?
10) Пассивтік қосылуларды орнату үшін әрекеттің қандай типтік тізбектелуін орындауды айтып ьерің.
11) ОЖ астында UNIX типінде КІТАПХАНАДА СОКЕТПЕН ЖҰМЫС ФУНКЦИЯСЫ ҚАЛАЙ ТАРАЛҒАН?
12) Borland және Microsoft жасау ортасында сокетпен жұмыс функциясын таратады?