Реферат Курсовая Конспект
РОЗДІЛ 1 Інтернет пейджер типу ICQ - раздел Высокие технологии, КУРСОВА РОБОТА з дисципліни Операційні системи ЗАВДАННЯ НА ВИКОНАННЯ КУРСОВОЇ РОБОТИ Розробка додатків з використанням різних бібліотек та технологій 1.1. Можливості Icq Icq– Це Комунікаційна Програма Для Передачі Пові...
|
1.1. Можливості ICQ
ICQ– це комунікаційна програма для передачі повідомлень в мережі. В основі її роботи лежить метод збереження всіх повідомлень, що надсилаються користувачами, на сервері до тих пір, поки адресат не підключиться до мережі. ICQ може:
· передавати повідомлення напряму між двома програмами ICQ;
· передавати такі повідомлення через сервер компанії Mirabilis, якщо по якійсь причині неможливо передати напряму;
· підтримувати chat по протоколу TCP;
· передавати файли по протоколу UDP.
ICQ часто називають аналогом пейджера в інтернеті. Для забезпечення мобільності користувачів, їм присвоюють номери, що не залежать від їх положення в мережі на даний момент, і називаються UIN (UniversalInternetNumber). Але при передачі даних програмі доводиться отримувати ІР-адресу користувача з другої сторони, тому що без нього передача по ТСР/ІР неможлива. Для перетворення номерів користувачів в ІР-адреси використовуються спеціальні сервери.
В момент отримання доступу до InternetICQ з’єднується з одним із таких серверів і реєструється на ньому, передаючи ім’я і пароль. Сервер запам’ятовує поточну ІР-адресу цього користувача. Поки користувач на на лінії, сервер може обробляти запити інших ICQ на перетворення номера користувача в його поточну ІР-адресу. Ці запити і відповіді передаються по протоколу UDP.
Отримавши ІР-адресу другої сторони, ICQможе з’єднатися з клієнтом ICQ на другій стороні і передавати дані напряму. Короткі повідомлення ICQ може передавати по UDP. Це протокол швидший ніж TCP, так як не орієнтований на з’єднання, а посилає дані окремими пакетами. Але UDPне надійний, тому використовуються підтвердження доставки. ICQ робить до 6 спроб відправити повідомлення по UDP. І якщо ні на одну із них підтвердження не прийшло, ICQ виводить повідомлення, що не може передати повідомлення напряму, пропонуючи передати через сервер Mirabilis. Коли отримувач повідомлення наступний раз підключиться для реєстрації, це повідомлення буде йому перенаправлене.
Якщо можливо, ICQ намагається встановити пряме ТСР з’єднання між сторонами, які обмінюються повідомленнями. В результаті, наступні повідомлення можуть пересилатися по вже встановленому ТСР-з’єднанню, що надійніше чим UDP, і достатньо швидко.
Користувач може створити «список контактів» - список інших користувачів ICQ. Коли будь-який користувач із цього списку завантажує додаток клієнта і реєструється на сервері –то повідомлення про це можуть отримувати всі користувачі, в чиїх «списках контактів» знаходиться власник даного UIN. Кожен користувач може вказати свій статус, яких свідчить про бажання користувача отримувати які-небудь повідомлення.
1.2. Специфікація протоколу ICQ
З’єднання з другим клієнтом, що на даний момент знаходяться в Internet (online) здійснюється за допомогою протоколу ТСР зі встановленням прямого з’єднання між сторонами, що обмінюються повідомленнями. Всі інші з’єднання здійснюються з використанням пакетів протоколу UDP, що пересилаються через ICQ сервер. Отримання кожного UDPпакету має бути підтверджене сервером. У випадку неотримання клієнтом підтвердження від сервера протягом 10 секунд, клієнт повторно відсилає пакет. Після 6 невдалих посилок клієнт посилає на сервер повідомлення B_MESSAGE_ASK, отримавши яке сервер повинен негайно отримати. Процедура повторюється два рази. Якщо ні на один із пакетів, що посилався не було отримано підтвердження, ICQ клієнт припускає, що користувач відключився від Internet (off-line).
Перед тим, як почати встановлювати будь-яке з’єднання, клієнт повинен зареєструватися на одному із ICQ серверів. Під час процедури реєстрації клієнт посилає серверу інформацію про себе таку як ІР адресу, ТСР порт, зарезервований для ICQ, пароль користувача і список інших користувачів, які знаходяться в «списку контактів» клієнта. Клієнт повинен періодично посилати на сервер повідомлення «KEEP_ALIVE», що свідчить про те, що клієнт все ще підключений до мережі. За замовчуванням клієнт посилає UDP пакети на сервер, використовуючи порт 4000.
Функції «послати повідомлення користувачу непідключеному до мережі», отримання інформації про користувача», пошук користувача», зміна інформації поточного користувача» реалізуються через пакети протоколу UDP, які посилаються на сервер. В полі «DATA» UDP пакету розміщується інформація про UIN відправника, код, що ідентифікує запитану функцію і необов’язкові параметри.
Коли користувач надсилає повідомлення іншому користувачу, що зареєстрований на сервері, ICQ клієнт намагається встановити ТСР з’єднанняз цим користувачем, використовуючи аналогічну структуру поля DATATCP пакету. Після відсилання повідомлення, з’єднання не розривається і може бути використано для відсилання наступних повідомлень. З’єднання закривається, коли один з користувачів від’єднується або втрачає зв’язок з сервером.
1.3. Комунікація між сервером та клієнтом
Для здійснення комунікації між сервером та клієнтом ICQ використовує протокол UDP. В таблиці 1 вказується як заповнюється поле даних пакету UDP при передачі від клієнта до сервера.
Довжина | Значення | Назва | Опис |
2 байти | 02 00 | VERSION | Версія протоколу ІР |
2 байти | хх хх | COMMAND | Код функції |
2 байти | хх хх | SEQ_NUM | Порядковий номер |
2 байти | хх хх хх хх | UIN | UIN відправника |
Змінна | 0 або більше параметрів |
В таблиці 2 вказано, як заповнюється поле даних пакету UDP при передачі від сервера до клієнта.
Довжина | Значення | Назва | Опис |
2 байти | 02 00 | VERSION | Версія протоколу ІР |
2 байти | хх хх | COMMAND | Код функції |
2 байти | хх хх | SEQ_NUM | Порядковий номер |
Змінна | 0 або більше параметрів |
Поле VERSION присутнє у всіх пакетах і являється ідентифікатором того, що це пакет ICQ.
Поле SEQ_NUM містить порядковий номер пакету. Всі пакети повинні мати унікальний порядковий номер за винятком випадку перенадсилання пакету . Це поле використовується для відслідкування втрати чи дублювання пакетів. Зазвичай з кожним пакетом SEQ_NUM збільшується на 1. Сервер та клієнт ведуть нумерацію пакетів, що не пересікається. Тобто порядковий номер пакету від сервера ніяк не зв’язаний з порядковими номерами пакетів від клієнта. Сервер починає відлік з 00 00. Клієнт починає відлік з 01 00.
Поле COMMAND при пересиланні повідомлення від клієнта серверу може приймати значення, наведені в таблиці 3.
Значення | Найменування | Опис |
0А 00 | ACK | Підтвердження |
0Е 01 | SEND_MESSAGE | Відіслати повідомлення через сервер |
E8 03 | LOGIN | Зареєструватися на сервері |
06 04 | CONTACT_LIST | Передати серверу «список контактів» |
1A 04 | SEARCH_UIN | Шукати користувача за UIN |
24 04 | SEARCH_USER | Шукати користувача за іменем |
60 04 | INFO_REQ | Запит основної інформації про користувача |
6A 04 | EXT_INFO_REQ | Запит розширеної інформації про користувача |
9C 04 | STATUS_CHANGE | Користувач змінив свій статус |
28 05 | LOGIN_2 | Відсилається під час реєстрації на сервері |
0A 05 | UPDATE_INFO | Оновити основну інформацію про користувача |
3C 05 | ADD_TO_LIST | Користувач додається в «список контактів» |
FC 03 | NEW_USER_REG | Зареєструвати нового користувача |
A6 04 | NEW_USER_INFO | Відсилається основна інформація про нового користувача |
Поле COMMAND при пересиланні повідомлення від сервера клієнту може приймати значення, наведені в таблиці 4.
Значення | Найменування | Опис |
0А 00 | ACK | Підтвердження |
5A 00 | LOGIN_REPLY | Відіслати повідомлення через сервер |
6E 00 | USER_ONLINE | Зареєструватися на сервері |
78 00 | USER_OFFLINE | Передати серверу «список контактів» |
8C 00 | RECEIVE_MESSAGE | Шукати користувача за UIN |
DC 00 | END_OF_SEARCH | Шукати користувача за іменем |
18 01 | INFO_REPLY | Запит основної інформації про користувача |
22 01 | EXT_INFO_REPLY | Запит розширеної інформації про користувача |
A4 01 | STATUS_UPDATE | Користувач змінив свій статус |
E0 01 | UPDATE_REPLY | Відсилається під час реєстрації на сервері |
C8 00 | UPDATE_EXT_REPLY | Оновити основну інформацію про користувача |
46 00 | NEW_USER_UIN | Користувач додається в «список контактів» |
B4 00 | NEW_USER_REPLY | Зареєструвати нового користувача |
1.4. Повідомлення від клієнта серверу
ACK(0А 00) – підтвердження.
Параметрів немає.
На відміну від інших команд, поле SEQNUM містить порядковий номер повідомлення, прийом якого підтверджується. Прийом цого пакету не повинен підтверджуватися.
LOGIN_REPLY(5А 00) – відповідь при реєстрації на ICQ сервері.
Параметри:
Довжина | Значення | Ім’я | Опис |
4 байти | хх хх хх хх | UUSER_UIN | UIN користувача |
4 байти | хх хх хх хх | USER_IP | ІР користувача |
2 байти | хх хх | LOGIN_SEQ_NUM | Порядковий номер запиту на реєстрацію |
4 байти | 01 00 01 00 | X1 | Невідомо |
4 байти | хх 00 16 00 | X2 | Невідомо |
4 байти | 8С 00 00 00 | X3 | Невідомо |
4 байти | 78 00 05 00 | X4 | Невідомо |
6 байт | 0А 00 05 00 01 00 | X5 | Невідомо |
RECEIVEMESSAGE (DC 00) – повідомлення користувачу, передане через сервер.
Параметри:
Довжина | Значення | Ім’я | Опис |
4 байти | хх хх хх хх | REMOTE_UIN | UIN відправника |
2 байти | хх хх | YEAR | Рік посилання повідомлення |
1 байт | хх | MONTH | Місяць посилання повідомлення |
1 байт | хх | DAY | День посилання повідомлення |
1 байт | хх | HOUR | Година посилання повідомлення |
1 байт | хх | MINUTE | Хвилина посилання повідомлення |
2 байти | хх хх | TYPE | Тип повідомлення |
2 байти | хх хх | LENGTH | Довжина тексту повідомлення |
змінна | MESSAGE | Текст повідомлення. ASCIIZ рядок |
Поле TYPEможе приймати наступні значення:
01 00 – нормальне повідомлення;
04 00 – повідомлення є Інтернет-адресою;
0С 00 – повідомлення про те, що користувач був доданий в список контактів.
INFO_REPLY (18 01) – основна інформація про користувача.
Довжина | Значення | Ім’я | Опис |
2 байти | хх хх | INFO_SEQ_NUM | Порядковий номер запиту |
4 байти | хх хх хх хх | REMOTE_UIN | UIN користувача |
2 байти | хх хх | LENGTH | Довжина «нікнейму» |
Змінна | NICK_NAME | «Нікнейм». ASCIIZ рядок | |
2 байти | хх хх | LENGTH | Довжина імені |
Змінна | FIRST_NAME | Ім’я. ASCIIZ рядок | |
2 байти | хх хх | LENGTH | Довжина прізвища |
Змінна | LAST_NAME | Прізвище. ASCIIZ рядок | |
2 байти | хх хх | LENGTH | Довжина електронної адреси |
Змінна | E_MAIL | Електронна адреса. ASCIIZ рядок | |
1 байт | хх | AUTHORIZE | Необхідність авторизації |
1.5. Комунікація між двома клієнтами
Коли користувач намагається відіслати повідомлення іншому користувачу, клієнтська програма перевіряє, чи встановлено ТСР з’єднання з віддаленим користувачем. У випадку наявності такого з’єднання, воно буде використане для передачі повідомлень. В іншому випадку з серверу запитується ІР адреса і порт іншого користувача і робиться спроба встановити ТСР з’єднання. Зазвичай порт береться в діапазоні 1200-1300. Після встановлення з’єднання відсилається повідомлення CHANNEL_INIT. Після цього кожен раз для посилання текстового повідомлення створюється пакет з повідомленням CHANNEL_MESSAGE. Отримання кожного пакету має бути підтверджено повідомленням CHANNEL_ACK.
Взаємодія з використанням протоколу ТСР так як і з використанням протоколу UDP базується на посиланні незалежних пакетів.
– Конец работы –
Эта тема принадлежит разделу:
Інститут інформаційно діагностичних систем... Кафедра безпеки інформаційних технологій... КУРСОВА РОБОТА ПОЯСНЮВАЛЬНА ЗАПИСКА...
Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: РОЗДІЛ 1 Інтернет пейджер типу ICQ
Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:
Твитнуть |
Новости и инфо для студентов