Опции MSS и Window Size заголовка TCP пакета, программа tcpdump
MSS. В начале разговора сторонами предлагается максимальный размер сегмента (maximum segment size) mss, который, как правило, берётся как максимальный размер для первого носителя информации. Например, если клиент посылает запрос серверу, и клиент посылает запрос через Ethernet интерфейс, то mss будет равен 1500-20-20=1460, где 1500 – это максимальный размер данных в Ethernet пакете, 20 – размер ip заголовка, 20 – tcp заголовка. Когда обе стороны сообщили друг другу желаемый mss, то выбирается меньший из них (в принципе, впоследствии mss может быть изменён, но эта возмодность нами не рассматривается)
Window Size. Это поле содержит информацию о размере буфера, в котором хранятся данные полученные по tcp. После получения пакета, если не установле бит PUSH данные не передаются сразу приложениям, а помещаются в буфер.
tcpdump. Программа tcpdump
служит для перехвата ip пакетов проходящих через интерфейс. Так как на сетевую плату в ethernet попадает весь трафик в сети, то она может быть использована для анализа всех ip пакетов. Естественно в ОС UNIX такую программу может запустить только пользватель root, ибо она работает на уровне ядра и переводит сетевой интерфес в режим, когда тот передает верхним уровням (TCP, UDP,
) все пакеты. Приведем пример перехвата tcp разговора (http-запрос):
# tcpdump
15:57:58.181078 207.219.33.101.http > 203.94.236.47.33003: P 1:1399(1398) ack 736 win 31856 <NOP,NOP,TIMESTAMP 2802054 547724602> (DF) [tos 0x10] (ttl 38, id 28827, len 1450)
Вот информация, которую можно получить из приведенной записи:
- Используется протокол http.
- Локальный IP адрес, назначенный мне моим провайдером после дозвона 203.94.236.47
- Адрес http-сервера: 207.219.33.101 (адрес изменен в целях безопасности).
- Время жизни равно 38 переходам.
- Установлен флаг "не фрагментировать", который запрещает фрагментацию дейтаграммы промежуточным маршрутизаторам.
- Установлен флаг ACK (номер подтверждения 736).
- Размер окна 31856.
- Порт получателя 33003.