Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МОМИ_Lab_socket1.doc
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
225 Кб
Скачать
☆

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-й порт и пр.