- •Информационные сети
- •1.2 Стек tcp/ip
- •1.3 Соединение «клиент-сервер»
- •1.4 Протокол авр (протокол с нумерацией по модулю 2)
- •1. Функции локального управления
- •1.1 Создание socket'а
- •1.2. Связывание socket'а
- •2. Функции установления связи
- •2.1. Ожидание установления связи
- •2.2. Запрос на установление соединения
- •2.3. Прием запроса на установление связи
- •2.4. Формирование адреса узла сети
- •3. Функции обмена данными
- •3.1. Посылка данных
- •3.2. Получение данных
- •4. Функции закрытия связи
- •4.1. Системный вызов close
- •4.2. Сброс буферизованных данных
- •5.1. Программа-сервер
- •5.2. Программа-клиент
1.2 Стек tcp/ip
В основе работы глобальной сети Интернет лежит набор (стек) протоколов TCP/IP. Cтек протоколов TCP/IP — это набор правил обмена информацией. TCP/IP - это аббревиатура термина Transmission Control Protocol/Internet Protocol (протокол управления передачей/протокол Internet). Фактически TCP/IP –это не один протокол, а несколько, поэтому его называют стеком протоколов, среди которых TCP и IP - два основных (рисунок 2).
На рисунке 2 показано, как TCP/IP согласуется с моделью ISO/OSI. Этот рисунок также иллюстрирует уровневое строение TCP/IP и показывает взаимосвязи между основными протоколами. При переносе блока данных из сетевой прикладной программы в плату сетевого адаптера он последовательно проходит через ряд модулей TCP/IP. При этом на каждом шаге он доукомплектовывается информацией, необходимой для эквивалентного модуля TCP/IP на другом конце цепочки. К тому моменту, когда данные попадают в сетевую плату, они представляют собой стандартный кадр Ethernet, если предположить, что сеть основана именно на этом интерфейсе. Программное обеспечение TCP/IP на приемном конце воссоздает исходные данные для принимающей программы путем захвата кадра Ethernet и прохождения его в обратном порядке по набору модулей TCP/IP.
ISO/OSI TCP/IP
_____________________________ __________________________
| Уровень прикладных программ | | |
|_____________________________| | _________ _________ |
_____________________________ | |Сетевая | |Сетевая | | Уровень
| Уровень представления | | |программа| |программа| | прикладных
|_____________________________| | |_________| |_________| | программ
_____________________________ | |
| Уровень сеанса | | |
|_____________________________| |__________________________|
| |
_____________________________ _____|_____________|______
| Транспортный уровень | | TCP UDP | Транспортный
|_____________________________| |_____|_____________|______| уровень
| |
_____________________________ _____|_____________|______
| Сетевой уровень | | | | | Сетевой
|_____________________________| | ----> IP <--- | уровень
|__________________________|
_________
_____________________________ _______| Сетевая |________
| Канальный уровень | | ARP<->| плата |<->RARP | Уровень
|_____________________________| |_______|_________|________| звена
| данных
_____________________________ |
| Физический уровень | _____________|______________ Физический
|_____________________________| Кабельные соединения сети уровень
Рисунок 2 – Стек ISO/OSI (слева) и стек TCP/IP (справа)
TCP/IP позволяет самостоятельным сетям подключаться к Internet или объединяться для создания частных интрасетей. Вычислительные сети, составляющие интрасеть, физически подключаются через устройства, называемые маршрутизаторами, или IP-маршрутизаторами. Маршрутизатор - это компьютер, который передает пакеты данных из одной сети в другую. В интрасети, работающей на основе TCP/IP, информация передается в виде дискретных блоков, называемых IP-пакетами (IP packets) или IP-дейтаграммами (IP datagrams). Программное обеспечение TCP/IP скрывает маршрутизаторы и базовую архитектуру сетей и делает так, что она кажется всем участникам обмена одной большой сетью. Подключения идентифицируются 32-разрядными IP-адресами, которые записываются в форме десятичных чисел, разделенных точками (например, 128.10.2.3). Взяв IP-адрес удаленного компьютера, компьютер в интрасети или в Internet может отправить данные на него, как будто они составляют часть одной и той же физической сети.
IP - самый фундаментальный протокол из комплекта TCP/IP - передает IP-дейтаграммы по интрасети и выполняет важную функцию, называемую маршрутизацией, т.е. выбора маршрута, по которому дейтаграмма будет следовать из пункта А в пункт B, и использование маршрутизаторов для "прыжков" между сетями.
TCP - это протокол более высокого уровня, который позволяет прикладным программам, запущенным на различных главных компьютерах сети, обмениваться потоками данных. TCP делит потоки данных на цепочки, которые называются TCP-сегментами, и передает их с помощью IP. В большинстве случаев каждый TCP-сегмент пересылается в одной IP-дейтаграмме. Однако при необходимости TCP будет расщеплять сегменты на несколько IP-дейтаграмм, вмещающихся в физические кадры данных, которые используют для передачи информации между компьютерами в сети. Поскольку IP не гарантирует, что дейтаграммы будут получены в той же самой последовательности, в которой они были посланы, TCP осуществляет повторную "сборку" TCP-сегментов на другом конце маршрута, чтобы образовать непрерывный поток данных. FTP и telnet - это два примера популярных протокола более высокого уровня стека TCP/IP, которые опираются на использование TCP.
Другой важный член комплекта TCP/IP - User Datagram Protocol (UDP, протокол пользовательских дейтаграмм), который похож на TCP, но более примитивен. TCP - "надежный" протокол, потому что он обеспечивает проверку на наличие ошибок и обмен подтверждающими сообщениями, чтобы данные достигали своего места назначения заведомо без искажений. UDP - "ненадежный" протокол, ибо не гарантирует, что дейтаграммы будут приходить в том порядке, в котором были посланы, и даже того, что они придут вообще. Тем не менее, используется во многих программах, например, в протоколе SNMP (Simple Network Management Protocol, или простой протокол управления сетями), используемом во многих реализациях TCP/IP - это один из примеров программ UDP. Соответствие других протоколов TCP/IP уровням ISO/OSI показано на рисунке 3.
Краткое описание протоколов семейства TCP/IP с расшифровкой аббревиатур (подробнее см. в http://www.codenet.ru/webmast/tcpip)
ARP (Address Resolution Protocol, протокол определения адресов): конвертирует 32-разрядные IP-адреса в физические адреса вычислительной сети, например, в 48-разрядные адреса Ethernet.
FTP (File Transfer Protocol, протокол передачи файлов): позволяет передавать файлы с одного компьютера на другой с использованием TCP-соединений. В родственном ему, но менее распространенном протоколе передачи файлов - Trivial File Transfer Protocol (TFTP) - для пересылки файлов применяется UDP, а не TCP.
ICMP (Internet Control Message Protocol, протокол управляющих сообщений Internet): позволяет IP-маршрутизаторам посылать сообщения об ошибках и управляющую информацию другим IP-маршрутизаторам и главным компьютерам сети. ICMP-сообщения "путешествуют" в виде полей данных IP-дейтаграмм и обязательно должны реализовываться во всех вариантах IP.
IGMP (Internet Group Management Protocol, протокол управления группами Internet): позволяет IP-дейтаграммам распространяться в циркулярном режиме (multicast) среди компьютеров, которые принадлежат к соответствующим группам.
IP (Internet Protocol, протокол Internet): низкоуровневый протокол, который направляет пакеты данных по отдельным сетям, связанным вместе с помощью маршрутизаторов для формирования Internet или интрасети. Данные "путешествуют" в форме пакетов, называемых IP-дейтаграммами.
RARP (Reverse Address Resolution Protocol, протокол обратного преобразования адресов): преобразует физические сетевые адреса в IP-адреса.
SMTP (Simple Mail Transfer Protocol, простой протокол обмена электронной почтой): определяет формат сообщений, которые SMTP-клиент, работающий на одном компьютере, может использовать для пересылки электронной почты на SMTP-сервер, запущенный на другом компьютере.
TCP (Transmission Control Protocol, протокол управления передачей): протокол ориентирован на работу с подключениями и передает данные в виде потоков байтов. Данные пересылаются пакетами - TCP-сегментами, - которые состоят из заголовков TCP и данных. TCP - "надежный" протокол, потому что в нем используются контрольные суммы для проверки целостности данных и отправка подтверждений, чтобы гарантировать, что переданные данные приняты без искажений.
UDP (User Datagram Protocol, протокол пользовательских дейтаграмм): протокол, не зависящий от подключений, который передает данные пакетами, называемыми UDP-дейтаграммами. UDP - "ненадежный" протокол, поскольку отправитель не получает информацию, показывающую, была ли в действительности принята дейтаграмма.
7 |
Прикладной |
напр. HTTP, SMTP, SNMP, FTP, Telnet, SCP, SMB,NFS, RTSP, BGP |
6 |
Представительский |
напр. XDR, ASN.1, AFP |
5 |
Сеансовый |
напр. TLS, SSL, SSH, ISO 8327 / CCITT X.225, RPC, NetBIOS, ASP |
4 |
Транспортный |
напр. TCP, UDP, RTP, SCTP, SPX, ATP, DCCP, GRE |
3 |
Сетевой |
напр. IP, ICMP, IGMP, CLNP, OSPF, RIP, IPX, DDP |
2 |
Канальный |
напр. Ethernet, Token ring, PPP, HDLC, X.25, Frame relay, ISDN, ATM, MPLS, Wi-Fi, ARP, RARP |
1 |
Физический |
напр. электрические провода, радиоканал, волоконно-оптические линии связи |
Рисунок 3 – Распределение протоколов TCP/IP в соответствии с моделью ISO/OSI
Например, Web-браузер для формирования виртуального подключения к серверу использует абстракцию программного обеспечения высокого уровня, называемую гнездом (socket). Программное обеспечение гнезда, в свою очередь, применяет TCP для пересылки битов и байтов. TCP сегментирует данные и передает отдельные сегменты модулю IP, который пересылает сегменты в дейтаграммах на Web-сервер.
Если браузер и сервер работают на компьютерах, подключенных к различным физическим сетям (как это обычно бывает), дейтаграммы передаются от сети к сети до тех пор, пока не достигнут той, к которой физически подключен сервер. В конце концов дейтаграммы достигают пункта своего назначения и вновь собираются таким образом, чтобы Web-сервер, который считывает цепочки данных из своего гнезда, получал непрерывный поток данных. Для браузера и сервера данные, записанные в гнездо на одном конце, просто появляются на другом конце. Но между этими событиями происходят все виды сложных взаимодействий для создания иллюзии непрерывной передачи данных между вычислительными сетями. В данном случае браузер выступает в роли «клиента», т.к. запрашивает разрешение на установление соединения с сервером. В качестве клиента и сервера могут выступать пользовательские программы прикладного уровня.
И это практически все, чем занимается TCP/IP: превращением множества небольших сетей в одну большую и предоставлением услуг, которые нужны прикладным программам для обмена информацией друг с другом по сети Internet.
Поскольку на прикладном уровне многие программы, в т.ч. пользовательские, могут использовать стек TCP/IP (например, через обращение к сокету), необходимо идентифицировать их. IP-адрес идентифицирует весь стек, а для идентификации программ выделены порты. Можно сказать, что IP — это адрес компьютера (узла, хоста) в сети, а порт — номер конкретного приложения, работающего на этом компьютере (IP-адрес – аналог номера дома, порт – номера квартиры).
Как правило, взаимодействие осуществляется по схеме «клиент-сервер»: "клиент" запрашивает какую-либо информацию (например, страницу сайта), сервер принимает запрос, обрабатывает его и посылает результат. Номера портов серверных приложений общеизвестны, например: почтовый SMTP сервер «слушает» 25-й порт, POP3 сервер, обеспечивающий чтение почты из почтовых ящиков, «слушает» 110-порт, веб-сервер - 80-й порт и пр.
