Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Сетевой стек TCP/IP

Сетевой стек TCP/IP

Краткий ликбез по основам сетевого взаимодействия и базовым понятиям стека TCP/IP

Vladimir Plizga

November 01, 2019
Tweet

More Decks by Vladimir Plizga

Other Decks in Technology

Transcript

  1. This is your spooky
    presentation title

    View Slide

  2. TCP/IP:
    what the hell is this?

    View Slide

  3. INTRODUCTION
    Основы основ

    View Slide

  4. В чем, собственно, сложность?

    View Slide

  5. Сложности сетевого взаимодействия
     Разнообразие устройств
     Многозадачность каждого устройства
     Непредсказуемость среды передачи
     Угрозы безопасности
     (впиши своё)

    View Slide

  6. ДЕЛЕНИЕ НА УРОВНИ -
    ОСНОВА УСПЕХА ДЕКОМПОЗИЦИИ

    View Slide

  7. OSI
    Open System Interconnection
    Справочная модель сетевого взаимодействия

    View Slide

  8. OSI model
     Создавалась 7 лет: с 1977 по 1984 годы
     Описывает 7 уровней взаимодействия
     Не содержит описаний реализации протоколов
     Каждый уровень добавляет заголовки

    View Slide

  9. 7 LEVELS OF OSI MODEL
    1. Прикладной
    2. Представления
    3. Сеансовый
    4. Транспортный
    5. Сетевой
    6. Канальный
    7. Физический

    View Slide

  10. OSI terminology
     Уровень – единица декомпозиции сетевого стека
     Протокол – язык общения между одинаковыми уровнями
    на одном этаже
     Интерфейс – язык общения между разными уровнями на
    соседних этажах

    View Slide

  11. Разница между интерфейсом и протоколом

    View Slide

  12. Инкапсуляция
    заголовков и
    передача
    данных в OSI

    View Slide

  13. TCP/IP
    Популярнейшая имплементация модели OSI

    View Slide

  14. REALITY IS DIFFERENT
    Даже самая продуманная теоретическая
    модель может оказаться бессильной
    перед реальной практикой

    View Slide

  15.  Самый распространенный сетевой стек на Земле
     Включает только 4 уровня:
     Прикладной
     Транспортный
     Сетевой
     Сетевых интерфейсов (физический)
    TCP/IP: 45+ YEARS OF SCALABILITY
    Не регламентирует
    конкретные
    протоколы

    View Slide

  16. Разница
    между
    уровнями:
    TCP/IP vs OSI

    View Slide

  17. TCP/IP: ADDRESSES
     В TCP/IP используется 3 вида адресов:
     Локальные (аппаратные, MAC)
     Сетевые (IP)
     Доменные (символьные, DNS)
    ARP
    DNS

    View Slide

  18. TCP/IP
    ADDRESS
    RESOLUTION

    View Slide

  19. TCP/IP
    TERMINOLOGY

    View Slide

  20. IP protocol
    Основной житель сетевого уровня TCP/IP

    View Slide

  21. “Система адресации,
    не зависящая от способов
    адресации узлов
    в отдельных сетях”

    View Slide

  22.  В каждом IP-пакете 2 IP-адреса: получателя и отправителя
     IP-адрес – адрес сетевого интерфейса, а не всего узла
     В каждом IP-адресе 32 бита (если это не IPv6)
     Разбиение на 4 байта условно и делается для удобства
     Реально в адресе всего 2 части: номер сети и номер узла
     Между частями нет универсальной границы
    IP ADDRESS (192.168.0.1)

    View Slide

  23.  Фиксированная граница
     Маска подсети (применяется к адресу через AND):
    1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
     Классы подсетей (по первым битам адреса):
     Индивидуальные: A, B, C
     Групповые: D
     Зарезервированные: E
    Способы разбиения адреса на номер сети и узла

    View Slide

  24. Особые адреса IP
    0.0.0.0
    Алиас для всех
    сетевых адресов узла,
    но только при
    прослушивании.
    255.255.255.255
    Широковещательный
    адрес. Соответствует
    отправке всем узлам
    сети.
    127.x.x.x
    Группа петлевых
    адресов.
    Соответствует
    отправке самому себе.

    View Slide

  25. Вручную
    Администратор в настройках
    каждого сетевого интерфейса
    прописывает его IP и другие
    параметры.
    Способы назначения сетевых адресов
    Автоматически
    Сетевой интерфейс сам
    получает IP и другие
    параметры из сети по
    протоколу DHCP.

    View Slide

  26. DOMAIN NAME SERVICE
    Преобразует доменные адреса (DNS)
    в сетевые адреса (IP)

    View Slide

  27. DNS серверы составляют иерархию
     На каждом узле есть файл hosts:
     %SYSTEM32%/drivers/etc/hosts
     /etc/hosts
     Пример содержимого файла hosts:
    # 127.0.0.1 localhost
    127.0.0.1 megacorp

    View Slide

  28. DNS клиенты встроены в каждую ОС
     Называются «резольверами»
     Имеют собственный кэш
     Не требуют явного вызова из прикладного кода

    View Slide

  29. DNS протокол
     В качестве транспорта обычно использует UDP
     За службой DNS зарезервирован порт 53
     Может заполняться как по запросу, так и в фоне
     Основная утилита: nslookup

    View Slide

  30. ICMP is your friend
    Протокол сетевого уровня стека TCP/IP

    View Slide

  31. ping
    Проверяет сетевую
    доступность узла путем
    отправки специального эхо-
    запроса. Не проверяет
    доступность TCP-портов.
    ICMP призван сообщать о проблемах на пути IP-пакета
    tracert/traceroute
    Прокладывает маршрут к
    целевому узлу путем
    последовательного
    увеличения TTL сетевых
    пакетов.

    View Slide

  32. Системные утилиты
    ping & tracert
    в действии

    View Slide

  33. ICMP протокол зачастую запрещён
     Некоторые известные атаки посредством ICMP:
     Перенаправление трафика
     Smurf
     Ping Flood
     Поэтому проверять нужно через ещё и через telnet

    View Slide

  34. НЕ СПИ - ЗАМЁРЗНЕШЬ

    View Slide

  35. IP version 6
    От создателей IPv4

    View Slide

  36. fe80::250:56ff:fe83:5bde
    Пример адреса в IPv6.
    Жуть, не правда ли?
    127.0.0.1 <=> ::1

    View Slide

  37. Системные утилиты
    ipconfig & ifconfig
    в действии

    View Slide

  38. TCP protocol
    Основной житель транспортного уровня TCP/IP

    View Slide

  39. Порт – способ мультиплексирования процессов на узле
     Позволяет разруливать трафик разных процессов
    на одном хосте
     Может быть либо входящим, либо исходящим
     У TCP и UDP раздельные множества портов
     Нумеруется от 0 до 65 535:
     От 0 до 1023 – фиксированные
     От 1024 до 65 535 – динамические

    View Slide

  40. Некоторые фиксированные порты
     80 – HTTP
     443 – HTTPS
     53 – DNS
     20-21 – FTP
     35 – Delta Force

    View Slide

  41. Сокет – связка порта и IP-адреса
     Socket (Connect) Timeout Exception
    Это когда ответный сетевой пакет не получен.
    Чаще всего значит, что к узлу нет доступа.
     Connection Refused
    Это когда узел сознательно отвергает сетевой пакет.
    Чаще всего значит, что доступ есть, но
    запрашиваемый порт никем не слушается.

    View Slide

  42. Transport Control Protocol
    Он же TCP.
    Основной транспортный протокол WWW
    (по мнению моей бабушки)

    View Slide

  43. Transport Control Protocol (TCP)
     Поддерживает логическое соединение (SYN/ACK)
     Обеспечивает гарантированную доставку данных
     Оперирует сегментами, нарезанными из потока байтов

    View Slide

  44. Transport Control Protocol (TCP)
     Соединения обходятся дорого по ресурсам узла:
     буферы/таймеры/счетчики
     В каждом соединении участвуют только 2 узла (дуплекс)
     На одном порту может быть много соединений
     Мультиплексирование работает на основе пар сокетов

    View Slide

  45. Системная утилита
    telnet
    в действии

    View Slide

  46. Above TCP/IP
    Адресация на прикладном уровне

    View Slide

  47. URI
    Идентификатор ресурса.
    Указывает, как называется
    ресурс. Но не обязан сообщать,
    где ресурс находится.
    Пример: myfile.txt
    Ресурсы в сети обозначаются с помощью URI & URL
    URL
    Локатор ресурса.
    Указывает не только имя
    ресурса, но и где ресурс
    находится.
    Является подмножеством URI.

    View Slide

  48. Схема составления URI

    View Slide

  49. Примеры URI
     https://ru.wikipedia.org:443/wiki/URI
     ftp://ftp.is.co.za/rfc/rfc1808.txt
     file://C:\UserName.HostName\Projects\URI.xml
     ldap://[2001:db8::7]/c=GB?objectClass?one
     mailto:[email protected]
     tel:+1-816-555-1212

    View Slide

  50. Как правильно читать URL?
    http://angara.ftc.ru:8081/artifactory/home.html?id=1&v=2
    1. Адрес хоста – angara.ftc.ru
    2. Порт – 8081
    3. Протокол – http
    4. Путь к ресурсу – artifactory/home.html
    5. Параметры – id=1&v=2

    View Slide

  51. CONCLUSION
    Краткая суть предыдущих 50 слайдов

    View Slide

  52. Резюме
     Сетевое взаимодействие имеет несколько уровней
     На каждом уровне работают свои протоколы
     Понять, на каком уровне сетевая проблема –
    залог успеха в её решении

    View Slide

  53. Happy Halloween!
    Есть вопросы?
    Задавайте
    Слайды: https://www.slidescarnival.com/halloween-2017-free-presentation-template/2072
    Картинки: https://unsplash.com/

    View Slide