Желілік деңгей

Скачать


 МАЗМҰНЫ
КІРІСПЕ 3
1 ИДЕНТИФИКАЦИЯ ЖӘНЕ АУТЕНТИФИКАЦИЯ 5
1.1 Идентификациялау және аутентификациялаудың теориялық негіздері 5
1.1.1 Идентификациялау және аутентификациялау жүйесінің элементтері 5
1.1.2 Қорғалған клиент-сервер өзара әрекеттестігі 6
1.1.3 Желілік ортадағы шабуылдар 7
1.1.4 Қауіпсіздік сервисіне талап 7
1.1.5 Ашық желілердегі идентификациялау және аутентифика-циялау 10
1.1.6 Тікелей емес идентификация және аутентификация
1.2 Идентификациялау және аутентификациялаудың актуальді жүйесі 17
1.2.1 Кілттерді тарату орталығы 17
1.2.2 Керберос хаттамасы 18
1.2.3 Жұмыс станциялары мен қолданушыларды аутентифика-циялау 20
1.2.4 Мандат жіберу 22
1.2.5 Керберос хаттамасы бар жүйеге шабуыл 23
2 TCP/IP ХАТТАМАЛАРЫНЫҢ СТЕГІ 25
2.1 OSI өзара байланысының жалпы моделі 25
2.2 TCP/IP және OSI модельдері арасындағы сәйкестік
2.3 TCP хаттамасы 28
3 ЕСЕПТЕР ҚОЙЛЫМЫН ҚҰРУ 38
4.1 Кілтті құру алгоритмі 39
4.2 Бағдарламаның клиенттік бөлігінің алгоритмі 40
4.3 Бағдарламаның серверлік бөлігінің алгоритмі 41
4.4 Блок-схема алгоритма «Клиент-серверное взаимодействие» 43
5 Тәжірибелік бөлім 46
5.1 Тәжірибені жүргізудің кезеңдері 46
Қорытынды 49
Қолданылған әдебиеттер тізімі 50
А қосымшасы 51
В қосымшасы 59
С қосымшасы 67
КІРІСПЕ
Қазіргі кезде ашық байланыс каналдарымен жіберілетін деректер көлемінің
Осы проблемаларды шешудің бір жолы байланысқа қатысушыларды идентификациялау
Желілік идентификация және аутентификация көптеген қосымшаларда қолданылуда
Трафикті желі шекарасында басқарушылар;
Бір ретті қолданылатын парольдер;
Желілік операциялық жүйенің қолданатын қорлары.
Қазіргі кезде кең таралған жүйелер арнайы жасалған
Бұл бітіру жұмысында желілік өзара аутентификациялық хаттамасын қолдау
Респонденттерді аутентификациялау үшін, олардың шынайылығын басқа жаққа күәландыратын
- ашық байланысты каналдарда респонденттерді өзара аутентификациялау алгоритмі;
- алгоритмнің қорғаныштық деңгейін жоғарылататын бір рет қолданылатын
- тап осы алгоритмдік бағдарламаның хаттама түрінде орындалуы
- әрбір Client (C) және Server (S )
- хаттамаға « клиентік » және « Серверлік
Бітіру жұмысының бірінші бөлімінде идентификация және аутентификацияның теориялық
Екінші бөлімде OSI-дің әрекеттесуінің жалпы үлгісі, сонымен қатар
Үшінші бөлімде респонденттердің өзарааутентификациялау хаттамасын құрудың негізгі
Төртінші бөлімде өзарааутентификациялау хаттамасы жөнінде толық жазылған .Бұл
- кілт жасау алгоритмі
- клиентік бөлім алгоритмі
- серверлік бөлім алгоритмі
Бұл хаттама ашық байланысты каналдарда жұмыс жасауға есептелген,
1 ИДЕНТИФИКАЦИЯ ЖӘНЕ АУТЕНТИФИКАЦИЯ
1.1 Идентификациялау және аутентификациялаудың теориялық негіздері
1.1.1 Идентификациялау және аутентификациялау жүйесінің элементтері
Аутентификация жүйесі компьютерлік екеніне тәуелсіз, әдетте әрқашан
Компьютерді қорғаудың проблемаларын қарай отырып, әрқашан, не істегіміз
Аутентификация және рұқсатты басқарудың компьютерлік жүйелерінде әдетте
Біз аутентификациялау кезінде жүйені пайдалануға рұқсат беруді
Бірақ пайдаланушыларды аутентификациялау компьютерлік жүйелерге өз алдына проблема
1.1.2 Қорғалған клиент-сервер өзара әрекеттестігі
Қазіргі клиент/сервер сәулетінде құрылған ақпараттық жүйелерде үш
- ұсыну деңгейі (деректкрді көрсету және енгізу функцияларын
- қолданбалы деңгей ( универсалды сервистерге, сонымен қатар
- ақпараттық қорларға рұқсат деңгейі ( ақпараттық -
Деңгейлер аралық байланысты транзакция және коммуникация менеджері қамтамасыздандырады.
Клиентік жұмысшы орындар Web - сервермен және жергілікті
Көпшілік ұйымдардың серверлік жүйелері ережеге сай, жалпы пайдалану
Бұдан ары клиент/сервердің қорғаныс конфигурациясын, яғни бөлінген, әр
Олар үшін желілік шабуыл өте қауіпті, сондықтан
1.1.3 Желілік ортадағы шабуылдар
Желілі ортада шабуылды келесі түрлерге бөлуге болады :
- желіні тыңдау;
- деректердің бірлескен потоктарын өзгерту:
- инфраструктуралық желілік сервиске әсер ету:
- желілі пакеттердің жалғандығы:
- аномалды пакеттерді жіберу:
- аномалдік трафикті генерациялау:
- жетілген әрекеттен бас тарту.
Қаскүнемдер үшін желіні тыңдау келесі мақсаттарға жетуін іске
- қайта жіберілген мәлімдемелерді ұстап қалу;
- аутентификацияланған деректі ұстап қалу:
- трафикті талдау.
Деректердің бірлескен потоктарын өзгерту келесі қауіпсіздіктің бұзылуына
- ұрлық, қайта реттеу , деректердің қайталануы ;
- өзгерту және өз деректерін қою(заңсыз делдал ).
Инфраструктуралық желілік сервиске әсер ету:
- аттардың сервис жұмысына қол сұғу ;
- деректердің бірлескен поток маршрутын өзгерту.
Желілі пакеттердің жалғандығы келесі түрде болады:
- мекенжайлардың жалғаны;
- қосулардың ұстап қалу:
- басқа серверлердің жұмысын қайталау.
Аномалды пакеттерді жіберу және аномалдік трафикті генерациялау қол
1.1.4 Қауіпсіздік сервисіне талап
Клиент-сервер архитектурасында жасалған жүйені қорғау үшін клиенттер де,
Жиынтық қауіпсіздік сервисі жоғарыда айтылған қауіптерден қорғауға арналған.
Қауіпсіздік сервисі технологиялық болу керек, яғни қолданылып жүрген
Қауіпсіздік сервисінің бағдарламалық қамтамасыз етуді өндірушілердің қолдауымен
Сонымен қатар, олар міндетті түрде басқарылады. Бұл бөлінген
Қауіпсіздік сервисі мейілінше анық, осы қызметті қолданғаннан
клиент/сервер жүйесін қорғаудың ең басты сервисті
Идентификациялау мен аутентификациялаудың қазіргі кездегі құралы мынадай екі
- желілік қауіпке қарсы тұру;
- желіге бірыңғай кіру концепциясын қолдау.
Бірінші талапты криптографиялық әдістерді қолдана отырып орындауға болады
Жүйеге бірыңғай кіру пайдаланушылар үшін анықтылық пен ыңғайлылықты
Жүйеге бірыңғай кіру қолданушылар өкілеттілігін анықтау, яғни авторизациялау
Алдымен аутентификациялаудың теориялық аспектілерін қарастырамыз. Пайдаланушының жүйеге кіру
- идентификация;
- аутентификация ;
- рұқсат құқықтарын беру .
1.1.4.1 Идентификация
Пайдаланушыны аутентификациялау үшін, алдымен оның кім екенін анықтау
1.1.4.2 Aутентификация
Пайдаланушы идентификациялау кезінде ұсынған деректер растауды
1.1.4.3 Ену құқықтарын беру
Егер аутентификация табысты өтсе, жүйе пайдаланушыны тіркеуді аяқтайды,
Бұрын да айтылғандай компьютерлік жүйе субъектілердің (
Операциялар объектілерге тәуелді болады. Мысалы, процессор тек қана
Қорларға авторланған рұқсаты бар пайдаланушыларға ғана процеске рұқсат
Дискретті ( сайлау ) және өкілетті ( мандат
Өкілеттілік басқаруда барлық деректер құпиялық дәрежесіне
Операциялық жүйелердің көпшілігі осы дискретті енуді басқару
1.1.5 Ашық желілердегі идентификациялау және аутентифика-циялау
Ашық желілерде субъектілердің шынайылығын растауға және тексеруге
- субъект құпия кілтті білетіндігін жариялайды , мұнда
- субъект “сауал-жауап” тәртібінде жұмыс істейтін
- субъект өзі тұрған жерінің шынайылығын жариялайды ,
Ең белгілі Интернет ашық желісінің идентификация және аутентификациясын
Аутентификациялаудың үш түрі бар - статикалық , орнықты
Статикалық аутентификация
Статикалық аутентификация тек қана шабуылдардан қорғайды, яғни
Орнықты (Устойчивая)аутентификация
Аутентификацияның бұл класы аутентификацияның әрбір сеансы сайын
Әйткенмен, тұрақты аутентификация белсенді шабуылдардан қорғамайды,яғни аутентификациялаудан кейін
Тұрақты(Постоянная) аутентификация
Бұл аутентификация түрі шабуылдан қорғанышты қамтамасыз етеді,
1.1.5.1 Интернетте аутентификацилаудың жалпы саясаты
Бірақ парольдерді табу жеңіл болғанмен, ұйым қауіптің болуы
Төменгі тәуекел
Ұйым жүйелеріне рұқсат алу үшін интернеттен аутентификация
Орташа тәуекел .
ХХХ класты ақпаратқа рұқсат алу және
Интернеттегі корпоративті қорларға telnet тәртібінде рұқсат алу
Жоғарғы тәуекел .
Интернеттен барлық жүйелергебрандмауэрден рұқсат алу үшін тұрақты аутентификацияны
1.1.5.2 Орнықты аутентификацияға арналған саясат
Егер сіздер орнықты аутентификацияны қолдануды шешсеңіздер, онда сіздерге
Тұрақты аутентификацияны орындауға арналған технологиялар көп, динамикалық парольдердің
Тұрақты аутентификация қолданушылары бұл әдісті пайдаланбас бұрын курстарды
Қызметкерлер ұйымға жататын барлық аутентификация құрылғыларының қауіпсіз қолдануына
1.1.6 Тікелей емес идентификация және аутентификация
Мұндай жүйелерде аутентификациялау пайдланушылар туралы жалғыз базасы бар
Тікелей емес аутентификация желілік жүйелерде жиырма жылдан бері
Мұнымен күресте ТІР түйіндерін жаңарту өткізілді, яғни
Бұл проблеманы BBNкомпаниясы шығарған (IMP және TIP –ті
Сол уақыттан бері тікелей емес аутентификация көптеген
- желі шекарасындағы трафикті басқару;
- бір ретті парольдерді қолдану;
- Желілік операциялық жүйенің қорларын қолдану.
1.1.6.1 Желі шекарасындағы трафикті басқару
Қазіргі кездегі көпшілік желілердң шекарасында аутентификацияны талап ететін
- SLIP тізбектелген каналына арналған желіаралық хаттамасы ;
- РРР қоснүктелі байланыс хаттамасы ;
- РРТР туннельденген қоснүктелі байланыс хаттамасы;
- L2TP туннельденген 2 деңгей хаттамасы;
- IPSEC қорғалған IP хаттамалары;
Ережеге сәйкес, Internet-протоколдарын қолданатын желілік экрандар немесе
Брандмауэр физикалық тұлғаларға ережелер орнату керек болса,
Бүгінде NAS-серверлерде және аутентификациялау брандмауэрлерінде бір ғана жақсы
Бір ретті парольдерді қолданатын бұйым
Егер парольдерді верификациялау жеңіл болса, (символдардың екі тізбегі
Аутентификациялаудың орталықтандырылған сервері түйін ролінен басқа, жүйелерде бір
Серверлерде бір ретті парольдермен жұмыс жасау үшін бірінші
Желілік қорларды басқару
Локальдік желілер кішкентай болғанда, желілік қорларды басқару
Үлкен емес желілер үшін де жеке парольді файлдарды
Бірақ, бір ретті парольдерді қолданатын желілік құрылғылардан
1.2 Идентификациялау және аутентификациялаудың актуальді жүйесі
1.2.1 Кілттерді тарату орталығы
1980 жылдары банкілік сфераларда қорғаныс үшін ақшаны электронды
Уақытша шифрлеу кілттері бір ретті кілттер секілдіартықшылықтарды береді:
Бұл талқылаулар аутентификациялау тақырыбын алыстатуы мүмкін, бірақ коллективті
1.2.2 Керберос хаттамасы
1983 жылы МТИ-да (Массачусетстік технологиялық институт) Академиялық ұйымдар
1989 жылы Стив Миллер(Steve Miller) және Клиффорд Ньюмен
1.2.2.1 Аутентификациялау сервері
Керберос протоколының KDC кілттерді тарату орталығының(key distribution center)
Макс мандаттың дұрыстығына сервер жіберген KRB_AS_REP хабарындағы статустық
1.2.2.2 Серверге арналған аутентификация
Почталық серверге өзін аутентификациялау үшін Макс, Керберос хаттамасының
Мандат алуға рұқсат беру қызметі
Белгілі бір қызметтегі жұмыста мандатты генерациялау үшін Керберос
Шындығында, проблема былай шешіледі: Макс тіркеліп жатқан кезде
1.2.3 Жұмыс станциялары мен қолданушыларды аутентифика-циялау
KDC хаттамасы Керберос хаттамасы сияқты, желі қызметін қолданушыларды
1.2.3.1 Жұмысшы станцияларын аутентификациялау
KDC хаттамасының негізгі ерекшелігі, жұмыс станциялары әрекетінің қауіпсіздігін
Егер клиенттік жұмыс станциялары желіде жай және біртекті
1.2.3.2 Алдын-ала аутентификация
Керберос хаттамасының 5 версиясында предаутентификация енгізілді, содан серверлер
Дәстүрлі Керберос аутентификациялауда жұмыс станциясы кілттерді қолданушы кілт
Предаутентификация жағдайында жұмыс станциясы, әдетте пароль алу секілді,
Жұмыс станциясы KDC бастапқы сұрвнысын жібереді. Предаутентификациялау үшін
Жұмыс станциясы қолданушы тұлғасын растауда KDC –қа жауап
1.2.4 Мандат жіберу
Бұрынырақ айтылғандай, Макс мандаттары өзіне тиіс ресурстарға хабарласу
Керберос хаттамасының 5 версиясы шектелген жағдайларда жұмыс станциялары
1.2.5 Керберос хаттамасы бар жүйеге шабуыл
Керберос хаттамасы философиясының негізгі айырмашылығы жүйедегі компьютерлерге ерте
Керберос хаттамасын қолданатын сервердің жалпы қауіпсіздігі барлық компьютермен
1.2.5.1 Басып енуге тұрақтылық
Керберос хаттамасы желі компьютерлерінің аз мөлшерде қолданылуында да
Керберос хаттамасы басып кіруге тұрақтылығының арқасында мұндай жағдайға
Мұндай кілттерді жоғалту тек азмерзімді бұзылуларға әкеледі. Бірақ,
Бірақ KDC желінің жалпы қауіпсіздігін сақтау үшін шабуылға
1.2.5.2 Сағаттарды синхрондау
Сағаттарды синхрондау - Керберос ортасында жұмыс жасайтын
Бұзушы белгілі бір мандатқа сәйкес сеанстың кілтін алсын.
2 TCP/IP ХАТТАМАЛАРЫНЫҢ СТЕГІ
2.1 OSI өзара байланысының жалпы моделі
Желілік технологиялардың және олармен байланысты мәліметтермен айырбас хаттамаларының
Мұндай жалпы модель 1983 жылы стандарттау бойынша Халықаралық
TCP/IP моделі сияқты OSI моделінде жүйелердің жалпы функционалдығы
OSI желісінің моделі тік стек нысанында ыңғайлылық үшін
Енді стектегі әр деңгейді төменгісінен бастап қарастырайық.
2.1.1 Физикалық деңгей
Қарастырылып отырған бұл деңгей аппараттық қамтамасыз етуден, ал
2.1.2 Каналдық деңгей
Каналдық деңгей OSI стекіндегі бағдарламалық қамтамасыз етудің алты
Дегенмен каналдық деңгей мәліметтерді жіберудің сенімділігін талап етпейді,
2.1.3 Желілік деңгей
Есімін Internet желісі қойған желілік деңгей бір желі
Желілік деңгейде маршрутизация функциясы бар. Маршрутизация функциясы
2.1.4 Транспорттық деңгей
Транспорттық деңгей желідегі белгілі бір екі компьютер арасындағы
2.1.5 Сессия (сеанс) деңгейі
Сессия деңгейі транспорттық деңгейге қосылу арқылы берілетін мәліметтер
2.1.6 Ұсыну деңгейі
Мәліметтерді ұсыну деңгейінің хаттамалары қабылдаушыға түсінікті болатындай ақпараттарды
2.1.7 Қосымша деңгейі
Желіде жұмыс істеу үшін пайдаланушылар қолданатын әдіс байланысқан
2.2 TCP/IP және OSI модельдері арасындағы сәйкестік
TCP/IP моделі OSI моделінен ерекшеленетінін байқау қиын
1-суретте OSI моделіне TCP/IP архитектурасының бейнеленуі сызбасы көрсетілген.
TCP/IP және OSI модельдері арасындағы сәйкестік
TCP/IP
1-сурет
2.3 TCP хаттамасы
Мәліметтерді UDP жіберу жоспарланбаған, қажетті жағдайдың кезінде
TCP хаттамасы әр түрлі қосымшаларда пайдаланылады: Telnet
Бұл хаттама кейбір утилиттарда кең қолданысқа ие болды.
2.3.1 Қателерден сенімді сақтау
Қолданбалы бағдарламашылар TCP тиімді санайды, өйткені бұл хаттама
Қателерді бақылаудың алгоритмі неге аса атақты емес? Өйткені
Қосымшаны пайдалунышыларға TCP хаттамасы күрделі қосымшаларға
2.3.2 TCP ішкі жүйесі
TCP жүйелік қызмет болғандықтан онда стандартты жүйелік интерфейстер
Мұндай сызбаның жақсы қызмет атқарғандығы сонша, ол берілген
2.3.3 TCP хаттамасының құрылымы
TCP қосылуына байланысты келесі бес сатыға бөлінуі мүмкін:
1) Екі процесс (екі әр түрлі немесе бірдей
2) Процесстер TCP қосылуының ашылуына көмектеседі.
3) Прцесстер мәліметтермен алмасады.
4) Екі жақта мәліметтерді жіберуді аяқтағандары туралы хабарлайды,
5) Қосылудың барлық іздері жоғалады, бұл өз кезегінде
TCP қосылуын орнату барысында TCP SYN, TCP SYN-ACK
Келесі этап мәліметтерді жөнелту болып табылады. Алғашқы пайдаланған
Жоғарыдағы аталған кешеуілдеу тек физика заңдарына негізделмеген. Ethernet
Кабельдік қосылудың аз ғана бөлігі мәліметтерді алушылар мен
TCP хаттамасы арқылы мәліметтерді жіберуге оралайық. Жоғарыда сипатталған
TCP дамуының бастапқы сатысында терезенің көлемі 65535
Сонымен, мәліметтер жіберілді. Бірінші жақ мәліметтерді жіберуді аяқтағаннан
Екі жақ та FIN пакеттерін жіберіп болғаннан кейін
Ашу, жіберу, жабу оңай сияқты көрінді ме? Бұл
2.3.4 Қосылуды ашу
Енді біздің алдымызда қосылуды орнату немесе ашу мәселелері
Бұл оңай көрінген болатын: бірнеше сөздермен алмасу, кейбір
Қосылуды ашудың басты міндеттерін қарастырайық. Қосылуды орнату TCP
Бұл келісімділік мәліметтерді жіберуге болатындығын білдіреді. Енді мәліметтерді
Егер екінші немесе үшінші пакет түспесе не болады?
Бұл тәсілдің екі салдары бар. Қосылуды ашу процесінде
Шығындарға тәуелсіз ресурстарға деген мұндай қажеттілік қызмет көрсетуден
Windows жүйесінде осындай тәртіпсіздіктерден қорғаудың бірнеше деңгейі іске
2.3.5 Трафикті оптимизациялау
TCP каналы файлдарды жіберу үшін ашылған кезде, белсенділіктің
Пакеттер ағымы басқаруға бой бермейтін жылдамдыққа жеткен жағдайда
Мәліметтерді жолдау кезіндегі шектен асқан талпыныстар жіберудегі кешеуілдерге
Осыған қарамастан бұл проблеманың да шешімі бар. Баяу
Windows үшін TCP кодында іске асқан баяу бастау
В типтес (Туре-В) аталған тәртіпті іске асырудың нәтижесінде
2.3.6 Нагль алгоритмі
Баяу бастаудың жоғарыда сипатталған алгоритмі желідегі мәліметтерді жатығырақ
TCP Telnet сияқты интерактивті қосымшаларда қолданылған кезде іске
Бір символды жолдаумен (оның ішінде, пайдаланушы мәліметтерді клавиатурадан
Нагль алгоритмінде мәліметтерді терудің пакеттік сипаттамасы оператормен пакет
Осындай жүйені пайдалана отырып, Нагль алгоритмі пакеттер санын
Өкінішке орай, кейбір қосымшаларда жіберулердің әр түрлі кідірістеріне
Нагль алгоритмі қамтамасыз ететін үнемділік жіберуші жүйемен жолданған
АСК пакеттерінде трафикті (және шығынды) қосымша үнемдеу мүмкіндігі
АСК пакеттері санын қысқартуға ұмтылыс мәліметтер ағымын сақтау
2.3.7 Тиімсіз айырбас
TCP-ға бөлінетін назардың жеткіліксіздігі желінің қажетсіз асыра тиелуіне
АСК пакеттерін жіберуге уақытша келісуге бөлінген тиісті назардың
RFC 1122 құжатында келесіндей жақсы эмпириялық тәртіп ұсынылады:
Егер қабылдаушы жақ байттардың нөлдік санымен терезені хабарласа,
2.3.8 Қосылуды жабу
TCP-ң жіберуші коды қосымшадан жіберу үшін мәліметтердің енді
TCP-ң қабылдаушы коды алысталған жүйеден қабылданатын мәліметтердің жоқтығын
Екі жақта өздерінің мәліметтер көзі сарқылғандығын көрсеткеннен кейін
Қосылу туралы жазу өз өмірін, ереже бойынша, тағы
3 ЕСЕПТЕР ҚОЙЛЫМЫН ҚҰРУ
Ашық канал бойынша байланысты ұйымдастыру кезінде қаскүнеммен каналдағы
Респонденттердің аутентификациясы үшін шынайылықты күәландыратын бір заттың
байланыстың ашық каналдарындағы бір ретті кілттерге бейімделген, алгоритмнің
аталған алгоритмді хаттама түрінде бағдарламалық іске асыруды әзірлеу;
Windows операциялық жүйесі базасындағы TCP/IP хаттамалары стекіне берілген
Қойылған міндеттерді шешу үшін шарттар:
әзірленетін хаттамада респонденттердің әр қайсысының (C және S)
берілген бағдарламалар (C және S) орнатылған жұмыс
Қойылған міндеттің шешімі пайдаланушы үшін икемді динамикалық мәзірі
4 ӨЗАРА АУТЕНТИФИКАЦИЯҒА ҰСЫНЫЛАТЫН ХАТТАМА
4.1 Кілтті құру алгоритмі
Айырбастың барлық процесіндегі шифрлаудың негізі болып табылатын кілтті
«Кілтті» құру барысында клиент дата мен уақытты келесі
Уақыт пен датаны кез келген жүйелілікпен (қосылудың қатысушылары
Exclusive OR (XOR) – алгебрадағы операциялардың бірі. Бұл
Символ күн болып табылмайтындығы түсінікті, сондықтан оған XOR
Бірінші қатардың ұзындығын аламыз, бұл біз қанша символды
for i:=1 to length(Edit1.Text) do
Тұрақсыз j бүтін саны, келтірілген функциялардың көмегімен
j := Ord(Edit1.Text[i]) xor StrToInt(key);
j тұрақсыздан код бойынша символ аламыз. Енді ол
ch := Chr(j);
Кодты ашу осыған ұқсас.
ch:=Chr(Ord(Edit1.Text[i]) xor StrToInt(key));
Енді кілттің қалай орнатылатындығын анықтау ғана қалды.
Now:Tdate; уақытша тұрақсыз
Present:= Now;
Now функциясы уақыт пен датаны берілген мезетке қайтарады.
DecodeDate(Present, Year, Month, Day);
Декодер датаның форматталған қорытындысын алады.
DecodeTime(Present, Hour, Min, Sec, MSec);
Декодер уақыттың форматталған қорытындысын алады.
Key:=inttostr(Year)+inttostr(Month)+inttostr(Day)+inttostr(Hour);
Қорытындыларды қатарға қосып кілтті аламыз.
4.2 Бағдарламаның клиенттік бөлігінің алгоритмі
Бағдарламаның негізгі коды Delphi 6.0. бағдарламалық өнімдерін әзірлеудің
procedure TForm1.FormCreate(Sender: TObject) – Оқиға нысанды құрудың барысында
procedure TForm1.FormDestroy(Sender: TObject) – Оқиға нысанды жабудың барысында
procedure TForm1.ClientSocket1Connect(Sender: TObject; Socket: TCustomWinSocket) – Оқиға клиентті
procedure TForm1.ClientSocket1Disconnect(Sender: TObject; Socket: TCustomWinSocket) –
procedure TForm1.ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket); Оқиға ақпараттар
procedure TForm1.Timer1Timer(Sender: TObject); Белгілі бір уақыттың есебі уақытты
Қолданылатын командалар:
Copy(S:string,fist sing:integer, second sing:integer); символдарды қатардан көшіріп
Delete(S:string, fist sing:integer, second sing:integer); символдарды қатардан жояды.
Қосылуды бастау үшін қалыпты қосылудың параметрлерін көрсету қажет.
Socket.Adress:string; және Socket.port:integer; сәйкес.
Клиенттік бағдарлама сокетті ашады және бір уақытта адрес
Клиент қосылу барысында серверге өзінің пайдаланушы (“#L” бұл
4.3 Бағдарламаның серверлік бөлігінің алгоритмі
Бағдарламаның негізгі коды да Delphi 6.0. бағдарламалық
procedure TForm1.ServerSocket1ClientConnect(Sender: TObject; Socket: TCustomWinSocket);
procedure TForm1.ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket); Оқиға
procedure TForm1.ServerSocket1ClientDisconnect(Sender: TObject; Socket: TCustomWinSocket);
Оқиға клиент қосылудан ажырағаннан кейін пайда болады.
procedure TForm1.ServerSocket1ClientConnect(Sender: TObject;Socket: Tcustom WinSocket);
Оқиға клиент серверге қосылған кезде пайда болады.
Қосылуды бастау үшін қосылу жүзеге асатын портты көрсету
if (log=false) and (pas=false) then
v:=v+1;
if v=3 then
socket.Close;
Егер бұл команда болса, онда логин Logs.dat Логиндер
Жүйенің толық жұмысы «Клиент-сервер әрекеттестігі» блок-сызбасында көрсетілген.
4.4 «Клиент-сервер өзара әрекеттестік» алгоритмінің блок-схемасы
2 сурет
3 сурет
4 сурет
5 Тәжірибелік бөлім
5.1 Тәжірибені жүргізудің кезеңдері
«Клиент-Серверлік әрекеттестік» қатысушыларының өзара аутентификациясының әзірленген хаттамасын тәжірибелік
Тәжірибе үш этаптан тұрады:
Бірінші этапта «Клиент-Серверлік әрекеттестіктің» әзірленген бағдарламалық хаттамасы жергілікті
Екінші этапта «Клиент-Серверлік әрекеттестік» екі жұмыс атқарушы станциясында
Үшінші этапта «Клиент-Серверлік әрекеттестік» он жұмыс атқарушы станциясында
Тәжірибенің нәтижесі барлық мүмкін болатын қосылулар арқылы мәліметтерді
Дипломдық жұмысты әзірлеудің барысында келесі нәтижелер алынды:
Келесілерден тұратын өзара аутентификацияның хаттамасы әзірленді:
«Кілтті құрудың алгоритмі»;
«Бағдарламаның клиенттік бөлігінің алгоритмі»;
«Бағдарламаның Серверлік бөлігінің алгоритмі»;
«Уақыттар үйлесімінің алгоритмі».
Өзара аутентификация хаттамасының бағдарламалық орындалу құрылымы
5-сурет
Қорытынды
Байланыстың ашық каналы арқылы ақпараттарды жіберудің проблемасына арналған
Келесі басты нәтижелерге қол жеткізілді:
клиент-серверлік әрекеттестіктің блок-сызбасы әзірленді;
келесі алгоритмдерден тұратын желінің өзара аутентификациясының хаттамасы
кілтті құру;
әрекеттестіктің серверлік бөлігін қалыптастыру;
әрекеттестіктің клиенттік бөлігін қалыптастыру;
уақыттар үйлесімін жүргізу.
осы бағдарламаларды іске асыратын бағдарламалық өнімдер іске асырылды;
Ұсынылған алгоритмдердің негізінде тәжірибелік зерттеулер жүргізілді, олардың нәтижелері
Әзірленген хаттама кеңселік жүйелердегі 15-ке дейінгі компьютерлердің қолданысына
Бағдарламаның қосылудың порты мен адресін (IP адрес) өзгеру
Әзірленген бағдарламалық өнім бірнеше файлдардан (парольдар файлы, пайдаланушылар
Іске асырылған бағдарлама кілтінің ұзындығы 384 биттен жоғары,
Қолданылған әдебиеттер тізімі
Смит Ричард Э. Аутентификация: от паролей до открытых
Закер К. Компьютерные сети. Модернизация и поиск неисправностей.
Шенк Т. Red Hat Linux для системных администраторов.
Сэтчэлл Стефен Т., Клиффорд Х. Б. Дж. Linux
Снейдер Й. Эффективное программирование TCP/IP. Библиотека программиста. –
Морозов А. Защищенное взаимодействие клиент-сервер. http://kiev-security.org.ua/box/12/127.shtml .
Карпов В.Е., Коньков К.А., Иванников В.П. Введение в
Гутман Б., Бэтвилл Р. Политика безопасности при работе
Хавронская А. М. Оценка технико-экономической эффективности программных средств.
А қосымшасы
Клиенттік бөлім
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ScktComp, ComCtrls, Menus, ExtCtrls;
type
TForm1 = class(TForm)
ClientSocket1: TClientSocket;
Memo1: TMemo;
sb: TStatusBar;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
N8: TMenuItem;
N9: TMenuItem;
Label1: TLabel;
sd: TSaveDialog;
Timer1: TTimer;
Label2: TLabel;
Label3: TLabel;
Edit1: TEdit;
procedure ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure ClientSocket1Connect(Sender: TObject;
Socket: TCustomWinSocket);
procedure ClientSocket1Disconnect(Sender: TObject;
Socket: TCustomWinSocket);
procedure N6Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure N8Click(Sender: TObject);
procedure N9Click(Sender: TObject);
procedure N7Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
Function Krip(S:string; Key:String):string;
Function UnKrip(S:string; Key:String):string;
private
FStream: TFileStream;
log,pas,res:boolean;
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
Function Tform1.Krip(S:string; Key:String):string;
var
j,i:integer;
d:string;
ch:char;
Begin
Edit1.Text:=s;
for i:=1 to length(Edit1.Text) do
begin
j := Ord(Edit1.Text[i]) xor StrToInt(key);
ch := Chr(j);
d:=d+ch;
end;
Krip:=d;
end;
Function TForm1.UnKrip(S:string; Key:String):string;
var
i : Integer;
ch : Char;
d:string;
Begin
edit1.Text:=S;
for i:=1 to Length(Edit1.Text) do
Begin
ch:=Chr(Ord(edit1.text[i]) xor StrToInt(key));
d:=d+ch;
end;
UnKrip:=d;
end;
procedure TForm1.ClientSocket1Read(Sender: TObject;
Socket: TCustomWinSocket);
var
Bfr: Pointer;
S,d,g,Key,zx,z:string;
F,F2:TextFile;
R, R1 : TextFile;
j,v,iLen: Integer;
i, i2 : Char;
Year, Month, Day, Hour, Min, Sec, MSec: Word;
Present: TDateTime;
begin
if (log=True) and (pas=True) then
begin
Present:= Now;
iLen := Socket.ReceiveLength;
GetMem(Bfr, iLen);
if sd.Execute then
begin
FStream := TFileStream.Create('a1.tmp', fmCreate or fmShareDenyWrite);
end;
try
Socket.ReceiveBuf(Bfr^, iLen);
FStream.Write(Bfr^, iLen);
finally
FreeMem(Bfr);
Fstream.Free;
FStream := nil;
end;
if sd.Execute then
Begin
AssignFile (R, 'a1.tmp');
AssignFile (R1, sd.FileName);
try
{$I-}
Reset (R);
Rewrite (R1);
DecodeTime(Present, Hour, Min, Sec, MSec);
DecodeDate(Present, Year, Month, Day);
Key:=inttostr(Year)+inttostr(Month)+inttostr(Day)+inttostr(Hour);
{$I+}
finally
While not Eof(R) do
begin
Read (R, i);
i2 := Chr(Ord(i) xor strtoint(Key));
Write (R1, i2);
end;
CloseFile (R);
CloseFile (R1);
DeleteFile ('a1.tmp');
memo1.Lines.Add('Файл Получен '+timetostr(now));
end;
end;
end;
zx:=Socket.ReceiveText;
Present:= Now;
DecodeTime(Present, Hour, Min, Sec, MSec);
DecodeDate(Present, Year, Month, Day);
Key:=inttostr(Year)+inttostr(Month)+inttostr(Day)+inttostr(Hour);
d:=UnKrip(zx,key);
{Аутентификация сервера логина}
if copy(d,1,2)='#L' then
begin
Delete(d,1,2);
log:=false;
AssignFile(F,'Logs.dat');
Reset(F);
While not Eof(F) do
begin
Readln(F, S);
if d=S then
begin
log:=true;
Memo1.Lines.Add('Аутентификация успешна '+timetostr(now));
AssignFile(F2,'Pas.dat');
Reset(F2);
Readln(F2,g);
g:='#P'+g;
Present:= Now;
DecodeTime(Present, Hour, Min, Sec, MSec);
DecodeDate(Present, Year, Month, Day);
Key:=inttostr(Year)+inttostr(Month)+inttostr(Day)+inttostr(Hour);
z:=Krip(g,Key);
socket.SendText(z);
CloseFile(F2);
end;
end;
CloseFile(F);
{Сервер не Аутентифицирован на логин}
if log=false then
Begin
Memo1.Lines.Add('Аутентификация не успешна '+timetostr(now));
assignfile(F, 'list.dat');
append(F);
S:=Socket.RemoteAddress+' '+timetostr(date)+' '+timetostr(now);
Writeln(F, S);
CloseFile(F);
Socket.Close;
Memo1.Lines.Add('Доступ закрыт '+timetostr(now));
Memo1.Lines.Add('Отключен'+timetostr(now));
end;
end;
{Аутентификация сервера на пароль}
if copy(d,1,2)='#P' then
begin
Delete(d,1,2);
pas:=false;
AssignFile(F,'Pas.dat');
Reset(F);
While not Eof(F) do
begin
Readln(F, S);
if d=S then
begin
pas:=true;
Memo1.Lines.Add('Аутентификация успешна '+timetostr(now));
sb.SimpleText:='Доступ открыт';
end;
end;
CloseFile(F);
{Сервер не аутентифицирован на пароль}
if pas=false then
Begin
Memo1.Lines.Add('Аутентификация не успешна '+timetostr(now));
assignfile(F, 'list.dat');
append(F);
S:=Socket.RemoteAddress+' '+timetostr(date)+' '+timetostr(now);
Writeln(F, S);
CloseFile(F);
Socket.Close;
Memo1.Lines.Add('Доступ закрыт '+timetostr(now));
Memo1.Lines.Add('Отключен'+timetostr(now));
end;
end;
if (log=false) and (pas=false) then
v:=v+1;
if v=3 then
socket.Close;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
FStream := nil;
sb.SimpleText:='Отсоединен..';
log:=false;
pas:=false;
Label3.Caption:=timetostr(now);
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
if Assigned(FStream) then
begin
FStream.Free;
FStream := nil;
end;
end;
procedure TForm1.ClientSocket1Connect(Sender: TObject;
Socket: TCustomWinSocket);
var
F:TextFile;
S,g,Key:string;
Year, Month, Day, Hour, Min, Sec, MSec: Word;
Present: TDateTime;
begin
AssignFile(f,'Logs.dat');
Memo1.Lines.Add('соединился с '+Socket.RemoteAddress+' '+timetostr(now));
sb.SimpleText:='Соединен c '+Socket.RemoteAddress;
Reset(F);
Readln(F, S);
CloseFile(F);
S:='#L'+S;
Present:=now;
DecodeTime(Present, Hour, Min, Sec, MSec);
DecodeDate(Present, Year, Month, Day);
Key:=inttostr(Year)+inttostr(Month)+inttostr(Day)+inttostr(Hour);
g:=Krip(S,Key);
ClientSocket1.Socket.SendText(g);
Memo1.Lines.Add('Аутентификация ');
end;
procedure TForm1.ClientSocket1Disconnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
if Assigned(FStream) then
begin
FStream.Free;
FStream := nil;
end;
sb.SimpleText:='Отсоединен..';
memo1.Lines.Add('Соединение отклонено '+timetostr(now));
end;
procedure TForm1.N6Click(Sender: TObject);
begin
Close;
end;
procedure TForm1.N2Click(Sender: TObject);
begin
ClientSocket1.Active := True;
sb.SimpleText:='соединяюсь...';
end;
procedure TForm1.N3Click(Sender: TObject);
begin
ClientSocket1.Close;
Memo1.Lines.Add('Отсоединился '+timetostr(now));
end;
procedure TForm1.N8Click(Sender: TObject);
var
port:string;
begin
port:='7777';
InputQuery('Соединение по', 'Порту:', port);
ClientSocket1.Port:=strtoint(port);
Memo1.Lines.Add('Порт изменен на '+port);
end;
procedure TForm1.N9Click(Sender: TObject);
var
adress:string;
begin
adress:='127.0.0.1';
InputQuery('Введите адресс', 'IP:', Adress);
ClientSocket1.Address:=Adress;
Memo1.Lines.Add('адресс соединения изменен на '+Adress);
end;
procedure TForm1.N7Click(Sender: TObject);
begin
memo1.Clear;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
label3.Caption:=timetostr(now)
end;
end.
В қосымшасы
Серверлік бөлім
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ScktComp, Menus, ComCtrls, ExtCtrls;
type
TForm1 = class(TForm)
ServerSocket1: TServerSocket;
Memo1: TMemo;
Label1: TLabel;
sb: TStatusBar;
MainMenu1: TMainMenu;
Connection1: TMenuItem;
StartServer1: TMenuItem;
StopServer1: TMenuItem;
Edit1: TMenuItem;
SendFile1: TMenuItem;
Port1: TMenuItem;
View1: TMenuItem;
ClearEventsLog1: TMenuItem;
Close1: TMenuItem;
od: TOpenDialog;
Label2: TLabel;
Label3: TLabel;
Timer1: TTimer;
Edit2: TEdit;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure StartServer1Click(Sender: TObject);
procedure StopServer1Click(Sender: TObject);
procedure Port1Click(Sender: TObject);
procedure ClearEventsLog1Click(Sender: TObject);
procedure Close1Click(Sender: TObject);
procedure ServerSocket1ClientConnect(Sender: TObject;
Socket: TCustomWinSocket);
procedure ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
procedure ServerSocket1ClientDisconnect(Sender: TObject;
Socket: TCustomWinSocket);
procedure SendFile1Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
Function Krip(S:string; Key:String):string;
Function UnKrip(S:string; Key:String):string;
private
FStream: TFileStream;
log,pas:boolean;
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
FStream := nil;
log:=false;
pas:=false;
Label3.Caption:=timetostr(now);
end;
Function Tform1.Krip(S:string; Key:String):string;
var
j,i:integer;
d:string;
ch:char;
Begin
Edit2.Text:=s;
for i:=1 to length(Edit2.Text) do
begin
j := Ord(Edit2.Text[i]) xor StrToInt(key);
ch := Chr(j);
d:=d+ch;
end;
Krip:=d;
end;
Function TForm1.UnKrip(S:string; Key:String):string;
var
i : Integer;
ch : Char;
d:string;
Begin
edit2.Text:=S;
for i:=1 to Length(Edit2.Text) do
Begin
ch:=Chr(Ord(edit2.text[i]) xor StrToInt(key));
d:=d+ch;
end;
UnKrip:=d;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
if Assigned(FStream) then
begin
FStream.Free;
FStream := nil;
end;
end;
procedure TForm1.StartServer1Click(Sender: TObject);
begin
ServerSocket1.Active := True;
Memo1.Lines.Add('Сервер включен '+timetostr(now()));
sb.SimpleText:=' Жду соединения...';
end;
procedure TForm1.StopServer1Click(Sender: TObject);
begin
ServerSocket1.Close;
Memo1.Lines.Add('Сервер выключен '+timetostr(now()));
sb.SimpleText:=' Вне сети...';
end;
procedure TForm1.Port1Click(Sender: TObject);
var
port:string;
begin
port:='7777';
InputQuery('Соединения по', 'Порту:', port);
ServerSocket1.Port:=strtoint(port);
Memo1.Lines.Add('Порт изменен на '+port);
end;
procedure TForm1.ClearEventsLog1Click(Sender: TObject);
begin
Memo1.Clear;
end;
procedure TForm1.Close1Click(Sender: TObject);
begin
Close;
end;
procedure TForm1.ServerSocket1ClientConnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
Memo1.Lines.Add('IP '+Socket.RemoteAddress+' соединился '+timetostr(now));
sb.SimpleText:='Клиент соединился '+Socket.RemoteAddress;
end;
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var
R, R1 : TextFile;
j,v : Integer;
i, i2 : Char;
S,d,g,Key,zx,z:string;
F,F2:TextFile;
Present: TDateTime;
Year, Month, Day, Hour, Min, Sec, MSec: Word;
begin
zx:=Socket.ReceiveText;
Present:= Now;
DecodeDate(Present, Year, Month, Day);
DecodeTime(Present, Hour, Min, Sec, MSec);
Key:=inttostr(Year)+inttostr(Month)+inttostr(Day)+inttostr(Hour);
d:=UnKrip(zx,key);
{Аутентификация клиента по логину}
if copy(d,1,2)='#L' then
begin
Delete(d,1,2);
log:=false;
AssignFile(F,'Logs.dat');
Reset(F);
While not Eof(F) do
begin
Readln(F, S);
if d=S then
begin
log:=true;
Memo1.Lines.Add('Аутентификация успешна '+timetostr(now));
AssignFile(F2,'Log.dat');
Reset(F2);
Readln(F2,g);
g:='#L'+g;
z:=Krip(g,Key);
Socket.SendText(z);
CloseFile(F2);
end;
end;
CloseFile(F);
{клиент не аутентифицирован}
if log=false then
begin
Memo1.Lines.Add('Аутентификация не успешна '+timetostr(now));
assignfile(F, 'list.dat');
append(F);
S:=Socket.RemoteAddress+' '+timetostr(date)+' '+timetostr(now);
Writeln(F, S);
CloseFile(F);
Socket.Close;
Memo1.Lines.Add('Доступ закрыт '+timetostr(now));
Memo1.Lines.Add('Отключен'+timetostr(now));
end;
end;
{аутентификация клиента по паролю}
if copy(d,1,2)='#P' then
begin
Delete(d,1,2);
pas:=false;
AssignFile(F,'Pas.dat');
Reset(F);
While not Eof(F) do
begin
Readln(F, S);
if d=S then
begin
pas:=true;
Memo1.Lines.Add('Аутентификация успешна '+timetostr(now));
AssignFile(F2,'Pas1.dat');
Reset(F2);
Readln(F2,g);
g:='#P'+g;
z:=Krip(g,Key);
Socket.SendText(z);
CloseFile(F2);
if od.Execute then
begin
AssignFile (R, od.FileName);
AssignFile (R1, 'c:\a.tmp');
try
{$I-}
Reset (R);
Rewrite (R1);
Present:= Now;
DecodeDate(Present, Year, Month, Day);
DecodeTime(Present, Hour, Min, Sec, MSec);
Key:=inttostr(Year)+inttostr(Month)+inttostr(Day)+inttostr(Hour);
{$I+}
finally
While not Eof(R) do
begin
Read (R, i);
j := Ord(i) xor (strtoint(Key));
i2 := Chr(j);
Write (R1, i2);
end;
CloseFile (R);
CloseFile (R1);
end;
Socket.SendStream(TFileStream.Create('c:\a.tmp', fmOpenRead or fmShareDenyWrite));
DeleteFile('c:\a.tmp');
Memo1.Lines.Add('Файл отправлен '+Od.FileName+' '+timetostr(now));
end;
end;
end;
CloseFile(F);
{клиент не аутентифицирован по паролю}
if pas=false then
begin
Memo1.Lines.Add('Аутентификация не успешна '+timetostr(now));
assignfile(F, 'list.dat');
append(F);
S:=Socket.RemoteAddress+' '+datetostr(date)+' '+timetostr(now);
Writeln(F, S);
CloseFile(F);
Socket.Close;
Memo1.Lines.Add('Доступ закрыт '+timetostr(now));
Memo1.Lines.Add('Отключен '+timetostr(now));
end;
end;
if (log=false) and (pas=false) then
v:=v+1;
if v=3 then
socket.Close;
end;
procedure TForm1.ServerSocket1ClientDisconnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
sb.SimpleText:='Вне сети...';
Memo1.Lines.Add('Клиент отключен '+timetostr(now));
end;
procedure TForm1.SendFile1Click(Sender: TObject);
var
Socket: TCustomWinSocket;
R,R1:TextFile;
j : Integer;
i, i2 : Char;
Key:String;
Present: TDateTime;
Year, Month, Day, Hour, Min, Sec, MSec: Word;
begin
if od.Execute then
begin
AssignFile (R, od.FileName);
AssignFile (R1, 'c:\a.tmp');
try
Reset (R);
Rewrite (R1);
Present:= Now;
DecodeDate(Present, Year, Month, Day);
DecodeTime(Present, Hour, Min, Sec, MSec);
Key:=inttostr(Year)+inttostr(Month)+inttostr(Day)+inttostr(Hour);
finally
While not Eof(R) do
begin
Read (R, i);
j := Ord(i) xor (strtoint(Key));
i2 := Chr(j);
Write (R1, i2);
end;
CloseFile (R);
CloseFile (R1);
end;
Socket.SendStream(TFileStream.Create('c:\a.tmp', fmOpenRead or fmShareDenyWrite));
DeleteFile('c:\a.tmp');
Memo1.Lines.Add('Файл отправлен '+Od.FileName+' '+timetostr(now));
end;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Label3.Caption:=timetostr(now);
end;
end.
С қосымшасы
unit DTDem;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Psock, NMDayTim, ExtCtrls, ComCtrls;
type
TForm1 = class(TForm)
Panel1: TPanel;
Edit1: TEdit;
Edit2: TEdit;
Label1: TLabel;
Label2: TLabel;
NMDayTime1: TNMDayTime;
Button1: TButton;
Label3: TLabel;
StatusBar1: TStatusBar;
procedure Button1Click(Sender: TObject);
procedure NMDayTime1Connect(Sender: TObject);
procedure NMDayTime1Disconnect(Sender: TObject);
procedure NMDayTime1HostResolved(Sender: TComponent);
procedure NMDayTime1Status(Sender: TComponent; Status: String);
procedure NMDayTime1ConnectionFailed(Sender: TObject);
procedure NMDayTime1InvalidHost(var handled: Boolean);
private
{ Private declarations }
public
{ Public declarations }
end;
const
StdCap = 'The Current Date and Time is
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
begin
NMDayTime1.ReportLevel := Status_Basic;
NMDayTime1.TimeOut := 300;
NMDayTime1.Host := Edit1.Text;
NMDayTime1.Port := StrToInt(Edit2.Text);
Label3.Caption := StdCap+NMDayTime1.DayTimeStr;
end;
procedure TForm1.NMDayTime1Connect(Sender: TObject);
begin
StatusBar1.SimpleText := 'Connected';
end;
procedure TForm1.NMDayTime1Disconnect(Sender: TObject);
begin
If StatusBar1 nil then
StatusBar1.SimpleText := 'disconnected';
end;
procedure TForm1.NMDayTime1HostResolved(Sender: TComponent);
begin
StatusBar1.SimpleText := 'Host resolved';
end;
procedure TForm1.NMDayTime1Status(Sender: TComponent; Status: String);
begin
If StatusBar1 nil then
StatusBar1.SimpleText := status;
end;
procedure TForm1.NMDayTime1ConnectionFailed(Sender: TObject);
begin
ShowMessage('Connection Failed');
end;
procedure TForm1.NMDayTime1InvalidHost(var handled: Boolean);
var
TmpStr: String;
begin
If InputQuery('Invalid Host!', 'Specify a new host:', TmpStr)
Begin
NMDayTime1.Host := TmpStr;
Handled := TRUE;
end;
end; end.
2
Қосымшаның деңгейі
(Application layer)
Қосымшаның деңгейі
(Application layer)
Ұсыну деңгейі
(Presentation layer)
Сессия (сеанс) деңгейі
Транспортный уровень
(Transport layer)
Транспорттық деңгей
(Transport layer)
Желілік деңгей
(Network layer)
Желілік деңгей
(Internet layer)
Мәліметтер каналы деңгейі
(Data link layer)
Желілік интерфейстің деңгейі
(Network interface layer)
Физикалық деңгей
(Physical layer)
НЕГІЗГІ МЕНЮ
«Уақытты синхронизациялау алгоритмі»
«Кілтті құру алгоритмі»
«Клиенттік бөлім алгоритимі»
«Серверлік бөлім алгоритмі»






Скачать


zharar.kz