TCP/IP

Протокол контроля передачи данных и Интернет протокол (The Transmission Control Protocol and Internet Protoco - TCP/IP) - это стандартный набор протоколов, разработанных в конце 70-х годов управлением перспективного планирования оборонных научно-исследовательских работ (DARPA) в качестве средства коммуникации между различными типами компьютеров и компьютерных сетей. Так как сеть Интернет построена на стеке протоколов TCP/IP, они представляют самый популярный набор сетевых протоколов на Земле.

Введение в TCP/IP

Две компоненты протокола TCP/IP имеют дело с различными аспектами компьютерных сетей. Интернет протокол (Internet Protocol), "IP" в TCP/IP - это протокол без организации соединения, который обеспечивает лишь пересылку сетевых пакетов, используя IP датаграммы в качестве единицы представления сетевой информации. IP датаграмма состоит из заголовка, за которым следует тело сообщения. Протокол управления передачей(Transmission Control Protocol), TCP в TCP/IP, обеспечивает хостам сети возможности устанавливать соединения, которые могут быть использованы для обмена потоками данных. TCP обеспечивает гарантированную доставку данных между соединенными системами, а также то, что эти данные доставляются на принимающий хост в том же самом порядке, в котором они были отправлены с другого хоста.

Настройка TCP/IP

Настройка протокола TCP/IP состоит из нескольких элементов, которые должны быть указаны в соответствующих файлах конфигураций, или получены с помощью дополнительных служб таких как сервер протокола динамической настройки хостов (Dynamic Host Configuration Protocol, DHCP), который, в свою очередь, может быть настроен для автоматического предоставления правильных настроек TCP/IP клиентам сети. Следующим параметрам настройки должны быть указаны правильные значения, чтобы обеспечить нормальную работу вашей системы Ubuntu в сети.

Обычные элементы настроек TCP/IP и их назначение таковы:

  • IP адрес. IP адрес - это уникальная идентификационная строка, представленная в виде четырёх десятичных чисел в диапазоне от нуля (0) до двухсот пятидесяти пяти (255), разделённых точками, каждое из четырёх чисел представляет восемь (8) бит адреса, полная длина которого тридцать два (32) бита. Этот формат называют dotted quad notation (четырехкомпонентная система обозначений адресов с точками).

  • Маска сети (Netmask) Маска подсети (или просто, netmask) - это локальная битовая маска, или наборы флагов, отделяющая часть IP-адреса, значимую для сети, от битов, значимых для подсети (subnetwork). Например, в сети класса C, стандартная маска сети определена как 255.255.255.0, она маскирует первые три байта IP адреса и позволяет последнему байту IP адреса оставаться доступным для обозначения хостов в подсети.

  • Сетевой адрес (Номер сети) Сетевой адрес (номер сети) представляет собой набор байт, заключающий в себе сетевую часть IP адреса. Напремер, хост 12.128.1.2 в сети класса A будет использовать 12.0.0.0 в качестве сетевого адреса, здесь число 12 представляет первый байт IP адреса (сетевая часть), а нули (0) во всех оставшихся трех байтах представляют потенциальные значения для хоста. Хост в сети, использующий частный IP адрес 192.168.1.100 будет, в свою очередь, использовать номер сети 192.168.1.0, который определяет первые три байта сети 192.168.1 класса C и ноль (0) для всех возможных хостов в сети.

  • Широковещательный адрес Широковещательный адрес - это IP адрес, который позволяет отправлять данные одновременно всем хостам в данной подсети вместо конкретного хоста. Стандартный основной широковещательный адрес для всех IP сетей - 255.255.255.255, но этот адрес не может использоваться для отправки широковещательного сообщения каждому хосту в Интернете, потому что его заблокируют маршрутизаторы. Более подходящий широковещательный адрес - это тот, который устанавливается для конкретной подсети. Например, в частной сети 192.168.1.0 класса C, широковещательным адресом является 192.168.1.255. Широковещательные сообщения обычно производятся сетевыми протоколами, такими как ARP (Address Resolution Protocol - протокол разрешения адресов) и RIP (Routing Information Protocol - протокол маршрутизационной информации).

  • Адрес шлюза (Gateway Address) Адрес шлюза - это IP адрес, через который некоторая сеть, или хост в сети, могут быть доступны. Пусть один сетевой хост желает организовать соединение с другим сетевым хостом, но они расположены в разных сетях, в таких случаях должен использоваться шлюз (gateway). Во многих случаях адрес шлюза будет совпадать с адресом маршрутизатора той же сети, который, в свою очередь, будет перенаправлять трафик в другие сети или на другие хосты, такие как хосты Интернет. Адресу шлюза должно быть присвоено правильное значение, в противном случае ваша система не сможет связаться ни с одним хостом, находящимся за пределами вашей сети.

  • Адрес сервера имен (Nameserver Address) Адреса серверов имен представляют IP адреса систем службы именования доменов (Domain Name Service, DNS), которые разрешают имена хостов сети в IP адреса. Есть три уровня адресов серверов имен, которые могут быть определены в порядке приоритета: основной (Primary) сервер имен, вспомогательный (Secondary) сервер имен, и третичный (Tertiary) сервер имен. Для того, чтобы ваша система могла разрешать сетевые имена хостов в соответствующие IP адреса, вы должны определить допустимые адреса серверов имен, которые вам разрешено использовать в настройках TCP/IP вашей системы. Во многих случаях эти адреса будут предоставлены вашим провайдером сетевых услуг, но также существуют свободные и открыто доступные сервера имен, которые можно использовать, такие как серверы Level3 (Verizon) с IP адресами от 4.2.2.1 до 4.2.2.6.

    [Подсказка]

    IP адрес, маска сети, адрес сети, широковещательный адрес и адрес шлюза обычно определяются с помощью подходящих инструкций в файле /etc/network/interfaces. Адреса серверов имен обычно задаются с помощью директивы nameserver в файле /etc/resolv.conf. Для получения более полной информации, смотрите страницы системного руководства для interfaces или resolv.conf, соответственно, введя следующие команды в терминале:

    Обратитесь к соответствующей странице системного руководства о interfaces с помощью комманды:

    man interfaces
    

    Обратитесь к соответствующей странице системного руководства о resolv.conf с помощью комманды:

                    
                      man resolv.conf
                    
                  

IP маршрутизация

Маршрутизация IP - это способ задания и определения маршрутов в сети TCP/IP, через которые могут передаваться данные. Маршрутизация использует набор таблиц маршрутизации для управления переадресацией сетевых пакетов с данными от их источника к месту назначения, часто через множество промежуточных сетевых узлов, называемых маршрутизаторами. Есть две основных разновидности IP маршрутизации: Статическая маршрутизация и Динамическая маршрутизация.

Статическая маршрутизация настраивается путем добавления вручную IP маршрутов в системную таблицу маршрутизации. Обычно это делается с помощью команды route. Статическая маршрутизация имеет много преимуществ по сравнению с динамической маршрутизацией, таких как простота реализации на небольших сетях, предсказуемость (таблица маршрутизации всегда просчитана заранее и, таким образом, маршруты строго постоянны при каждом использовании), меньшие накладные расходы по сравнению с протоколом динамической маршрутизации. Тем не менее, у статической маршрутизации также есть свои недостатки. Например, статическая маршрутизация ограничена малыми сетями и плохо масштабируема. Статическая маршрутизация также неустойчива к сбоям в работе сети или сбоям по пути маршрута, что связано с фиксированной природой ее маршрутов.

Динамическая маршрутизация меняется в зависимости от состояния больших сетей с множеством возможных IP маршрутов от источника к приемнику. Она использует специальные протоколы маршрутизации, такие как RIP (Router Information Protocol - протокол маршрутизационной информации), которые осуществляют автоматическую корректировку маршрутизационных таблиц, делающюю динамическую маршрутизацию возможной. Динамическая маршрутизация имеет ряд преимуществ перед статической. Например, лучшую масштабируемость и возможность адаптироваться к сбоям в маршрутах и выходам их из строя. Помимо этого, требуется меньше ручной настройки таблиц маршрутизации, так как маршрутизаторы узнают друг у друга про свое существование и доступные маршруты. Эта черта также сводит на нет возможность внесения некорректных записей в таблицы маршрутизации посредством простой человеческой ошибки. Динамическая маршрутизация тем не менее не идеальна, и имеет неудобства, такие как повышенная сложность и дополнительная нагрузка на сеть за счет взаимодействия маршрутизаторов, которая не приносит мгновенной выгоды конечным пользователям, но при этом занимает сетевой трафик.

TCP и UDP

TCP - протокол с установлением соединения, предоставляющий коррекцию ошибок и гарантированную доставку данных через так называемое управление передачей (flow control). Управление передачей определяет когда поток данных необходимо остановить и заново отправить предыдущие пакеты данных вследствие таких проблем как коллизии (collisions). TCP обычно используется при обмене важной информацией, такой как транзакции баз данных.

Протокол пользовательских датаграмм (UDP - User Datagram Protocol), с другой стороны, является протоколом без установления соединения, который редко используется для передачи важных данных, поскольку в нем отсутствует управление передачей или другие способы гарантированной доставкой данных. UDP обычно используется в приложениях для передачи потокового аудио или видео, в которых он является быстрее TCP из-за отсутствия коррекции ошибок и управления передачей, и где потеря нескольких пакетов не является катастрофичной.

ICMP

Протокол управляющих сообщений сети Интернет (Internet Control Messaging Protocol, ICMP) - это расширение Интернет протокола (IP), определенное в документе RFC#792 (Request For Comments), поддерживающее сетевые пакеты, содержащие управляющие и информационные сообщения, а также сообщения об ошибках. ICMP используется сетевыми приложениями, например, утилитой ping, с помощью которой можно определить доступность сетевого хоста или устройства. Например, сообщения об ошибках, возвращаемых ICMP, которые полезны как хостам в сети, так и устройствам типа маршрутизаторов, включают в себя адресат недоступен (Destination Unreachable) и превышено время ожидания (Time Exceeded).

Демоны

Демоны - это специальные системные программы, которые, как правило, выполняются постоянно в фоновом режиме и ожидают запросов на функции, которые они предоставляют для других программ. Многие демоны направлены на работу с сетью; то есть, большое число демонов, выполняющихся в фоновом режиме в системе Ubuntu могут предоставлять сетевую финкциональность. В качестве примера таких сетевых демонов можно привести Hyper Text Transport Protocol Daemon (httpd), который предоставляет функции веб-сервера, Secure SHell Daemon (sshd), который предоставляет безопасный удаленный доступ к консоли и возможность передачи файлов и Internet Message Access Protocol Daemon (imapd), который предоставляет службы электронной почты.