Page N.

http + ssl + tools

Немного про всякое http

План

  • Кратко о сетевых протоколах
  • О структуре сети
  • Об ip и доменных именах (DNS, DHCP)
  • traceroute, ping
  • nc, telnet, ssh, curl
  • http (+ GET POST PUT + json)
  • http in web-browser (firefox)
  • nginx (как настроить ssl с выводом запросов)
  • ssl (+ openssl)
  • https
  • Пишем на c-прокси запросов для middle-in-the-point

Кратко о сетевых протоколах

tcp/udp

Весь известный нам интернет работает в основном на стеке протоколов: tcp/ip (ти-си-пи-ай-пи) и udp (у-ди-пи) и разных других например ICMP (ping)

Оба протокола это обмен (данными) по протоколу между двумя компьютерами подключенных к сети.

Для нас важно знать.

  • tcp - с подтверждением доставки пакетов
  • udp - без фактического подтверждения доставки пакетов

ip - это адрес машины в сети (бывает IPv4 -32 бита и IPv6 - 128 бит).

Кратко о сетевых протоколах

ports

В протоколах tcp/ip и udp есть абстракция "порт" бывает от 1-65535.

Используется на уровне ОС для понимания в какую программу надо передать данные, то есть некий идентификатор.

Как это работает:

1. Приложение говорит системе (сервер):

  • хочу слушать на порту 1234 по протоколу TCP/IP - если все ок то система разрешает

2. На другом компьютере приложение говорит системе (клиент):

  • Хочу подключиться к 192.168.0.11 на порт 1234 по протоколу TCP/IP - если все ок то происходит попытка подключения

Если все прошло успешно то они могут обмениваться данными уже по своему протоколу.

О структуре сети

Локальная сеть (простая домашняя сеть)

Корпоративная сеть

ssl как работает

Картинка

О принципе работы ассиметричного шифрования. И понимания доверенности к pub ключу (crt)

ssl как работает

Картинка

О принципе работы ассиметричного шифрования. И понимания доверенности к pub ключу (crt)

Инструменты

nc / telnet

nginx (docker)

openssl

firefox

curl

python (requests)

ssl (c-туннел)

nc / telnet

nc -l 3333 - запускаем сервер на порту 3333

netstat

sudo netstat -tulpan | grep LISTEN

nginx как инструмент дебага

nginx как прокси сервер

openssl клиент - можно подключаться к ssl каналам (+ сервер)

Можно попробовать подключиться вот так вот на ssl сокет

openssl s_client -connect %hostname%:%port%