Последнее изменение файла: 2007.02.08
Скопировано с www.bog.pp.ru: 2024.11.23
Bog BOS: TCP/IP
ISO OSI (Open System Interconnect) Reference Model
- Physical Layer - определяет физические характеристики носителя
- Data Link Layer - обеспечивает надежную передачу данных по
физическому каналу
- Network Layer - управляет соединениями через сеть для верхних уровней
- Transport Layer - обеспечивает обнаружение и
исправление ошибок из конца в конец
- Session Layer - управляет сессиями между приложениями
- Presentation Layer - стандартизует представление данных для приложений
- Application Layer - прикладные программы, использующие сеть
уровни стека протоколов TCP/IP (в скобках приводятся используемые термины)
- Network Access Layer - программы доступа к физической сети (драйвера
устройств) (фрейм) - инкапсуляция датаграмм во фреймы
(например, RFC 894 - Ethernet) и отображение IP-адресов в
физические адреса (например, ARP).
- Internet Layer - определяет датаграммы и
маршрутизацию данных (IP - RFC 791, RFC 1349 (ToS), RFC 2474 (Diffserv),
RFC 3168 (ECN), RFC 3260 (Diffserv); ICMP - RFC 792) (датаграмма), протокол
ненадежный и без установления соединения.
- IP (заголовок: версия; ToS/DS/ECN; длина (до 64KB),
флаги (запрет фрагментации, признак последнего фрагмента),
смещение и идентификатор фрагмента;
TTL (при каждом шаге по маршруту уменьшается на 1; при достижении 0 пакет уничтожается);
транспортный протокол; контрольная сумма заголовка;
адреса отправителя и получателя; опции):
- определение датаграмы
- определение схемы адресации в Интернет (адрес - 32 бита)
- движение данных между Network Access Layer и Host-to-Host Transport
Layer
- маршрутизация датаграмм на удаленные хосты
- фрагментирование и сборка датаграм
- опции IP:
- EOOL - End of Options List
- NOP - No Operation
- SEC - Security
- LSR - Loose Source Route
- TS - Time Stamp
- E-SEC - Extended Security
- CIPSO - Commercial Security
- RR - Record Route
- SID - Stream ID
- SSR - Strict Source Route
- ZSU - Experimental Measurement
- MTUP - MTU Probe
- MTUR - MTU Reply
- FINN - Experimental Flow Control
- EIP - Extended Internet Protocol
- TR - Traceroute
- ADDEXT - Address Extension
- RTRALT - Router Alert
- ICMP (Internet Control Message Protocol;
RFC 792, RFC 950, RFC 1108, RFC 1256, RFC 1393, RFC 1475, RFC 1812, RFC 2002),
заголовок (подробнее см. описание IP: версия; 0 в качестве ToS/DS/ECN;
флаги (запрет фрагментации, последний),
смещение и идентификатор фрагмента; TTL; транспортный протокол (всегда 1);
адреса отправителя (не всегда) и получателя; контрольная сумма заголовка;
контрольная сумма пакета; тип и подтип (code)):
- Echo Reply (ответ на Echo request)
- сообщение о невозможности доставить пакет
(содержит IP заголовок и первые 64 бита исходного пакета)
- Network Unreachable
- Host Unreachable
- Protocol Unreachable (протокол udp, tcp и т.п.)
- Port Unreachable
- Fragmentation Needed and Don't Fragment was Set
- Source Route Failed
- Destination Network Unknown (нет маршрута)
- Destination Host Unknown (нет маршрута)
- Source Host Isolated (устарело)
- Communication with Destination Network is Administratively Prohibited
- Communication with Destination Host is Administratively Prohibited
- Destination Network Unreachable for Type of Service
- Destination Host Unreachable for Type of Service
- Communication Administratively Prohibited
- Host Precedence Violation
- Precedence cutoff in effect
- Source Quench (просьба замедлить передачу;
содержит IP заголовок и первые 64 бита исходного пакета)
- Redirect (содержит адрес более подходящего шлюза и
IP заголовок и первые 64 бита исходного пакета)
- Redirect Datagram for the Network
- Redirect Datagram for the Host
- Redirect Datagram for the Type of Service and Network
- Redirect Datagram for the Type of Service and Host
- Alternate Host Address
- Echo request (проверка, а жив ли хост, ICMP Echo, ping;
пакет содержит уникальный код (Identifier) для различения нескольких
прикладных программ
и последовательный номер (Sequence number) для проверки дублирования ответа;
может содержать дополнительные данные, например, разведданные ;)
- Router Advertisement
- Normal router advertisement
- Does not route common traffic
- Router Selection
- Time Exceeded (содержит IP заголовок и первые 64 бита исходного пакета)
- Time to Live exceeded in Transit
- Fragment Reassembly Time Exceeded
- Parameter Problem (содержит IP заголовок и первые 64 бита исходного пакета)
- IP header bad (содержит указатель на неправильную часть)
- Missing a Required Option
- IP Header Bad Length
- Timestamp (устарело; пакет содержит уникальный код и последовательный номерж
милисекунды после полуночи на момент отправки)
- Timestamp Reply (устарело; милисекунды после полуночи на момент отправки,
получения и отправки ответа)
- Information Request (устарело)
- Information Reply (устарело)
- Address Mask Request
- Address Mask Reply
- Traceroute
- Datagram Conversion Error
- Host-to-Host Transport Layer - сервис доставки данных из конца в конец (TCP, UDP)
(сегмент, пакет)
- TCP (RFC 793, RFC 1072, RFC 1146, RFC 1323, RFC 1644, RFC 1693, RFC 2018, RFC 2385):
установление соединения (инициатор посылает пакет с флагом SYN,
получатель отвечает пакетом с флагами SYN/ACK или SYN/RST; инициатор отвечает пакетом
с флагом ACK; при этом согласуются параметры моединения: SACK, ECN и пр.),
обеспечение надежности и правильного порядка, поток байт,
закрытие соединения (любая сторона посылает пакет с флагом FIN,
другая сторона отвечает пакетом
с флагами FIN/ACK, но может передавать остаток данных, затем она
посылает FIN и ждёт FIN/ACK), заголовок (номера портов отправителя и получателя - 16 бит;
соединение определяется по IP адресам отправителя и получателя и TCP портам;
номер пакета (Sequence Number, начальное значение выбирается случайным образом);
номер подтверждения (Acknowledgment Number, соответствует номеру полученного пакета);
размер окна (сколько отправитель может послать не ожидая подтверждения);
контрольная сумма заголовка; указатель на срочные данные;
опции:
- End of Option List
- No-Operation
- Maximum Segment Size
- WSOPT - Window Scale
- SACK (Selective ACK) Permitted
- SACK
- Echo
- Echo Reply
- TSOPT - Time Stamp Option
- Partial Order Connection Permitted
- CC
- CC.NEW
- CC.ECHO
- TCP Alternate Checksum Request
- TCP Alternate Checksum Data
- MD5 Signature Option
и флаги:
- CWR - отправитель информирует получателя о замедлении пересылки
- ECE - ECN Echo
- URG - пакет содержит указатель на срочные данные
- ACK - пакет является подтверждением на получение данных
- PSH - требование доставить накопленные в промежуточных буферах данные
конечному получателю, не дожидаясь заполнения окна
- RST - отказ устанавливать соединение или требование разорвать соединение или
выражение недоумения по поводу пакета вне соединения
- SYN - требование начать соединение
- FIN - требование или подтверждение завершения соединения
- UDP (RFC 768): минимальная нагрузка, протокол передачи датаграмм без установления
соединения и обеспечения надежности передачи (контрольная сумма пакета всё же есть,
нет извещения об ошибке), номера портов отправителя и получателя - 16 бит
- Application Layer - приложения и процессы,
использующие сеть (FTP, SMTP, telnet, ...) (сообщение, поток)
Каждый сетевой интерфейс должен иметь уникальный адрес (несколько сетевых
интерфейсов одного хоста могут иметь один адрес; один сетевой интерфейс может иметь
несколько адресов). IP адрес представляет собой натуральное число размером 4 байта. Обычно
записывается в виде десятичных чисел, представляющих значение каждого байта от
старшего к младшему, разделенных точками. Адрес делится на две части:
адрес сети и адрес внутри сети. Адрес сети является чисто логическим
(административным) понятием и не обязан иметь никакого отношения к
физической структуре сети (хотя для того, чтобы обеспечить
маршрутизацию и не сойти с ума, лучше, чтобы такое соответствие было).
В доисторические имена адрес делился на три части: сеть,
подсеть и адрес в подсети (с тех времен до нас дошли понятия сети класса A, B и C,
которые приходилось разбивать на подсети для лучшего использования адресного
пространства), но с времен принятия CIDRа (1992), поля сеть и подсеть слились.
Граница между сетевой частью адреса и локальной частью адреса
определяется сетевой маской (netmask). Маска записывается также как IP адрес
(4 десятичных числа, разделенных точкой) и имеет двоичные единицы в той части адреса,
которая относится к адресу сети. Модификации: старые системы иногда
требуют задания числа бит в адресе подсети, число бит в адресе сети
определяется классом сети (A, B, C); новые системы требуют задать число бит в адресе сети,
остальные биты представляют локальный адрес (все равно биты,
хранящие адрес сети должны идти подряд, так зачем хранить лишнюю информацию?).
Встречаются реализации, которые считают, что все маски в одной сети
имеют одинаковое значение (что неверно - у меня хосты на одном
интерфейсе иногда имеют разные маски ;).
Рекомендация по назначению сетевой маски с тем, чтобы в дальнейшем избежать
перенумерации сети, дается в RFC-1219 (суть в том, что биты под сетевую маску при
создании новой подсети захватываются слева, а биты под новые хосты -
справа; между ними находятся биты (равные нулю), которые можно отнести либо туда, либо сюда).
Специальные адреса (записывается в виде пары: адрес сети, адрес интерфейса в сети):
- (0, 0) - данный узел данной сети;
- (-1, -1) - broadcast на все узлы текущей физической сети;
- (номер сети, -1) - broadcast на все узлы логической сети (в некоторых
реализациях задается отдельная битовая маска для broadcast);
- (номер сети, 0) - адрес сети как единого целого;
- (0, адрес интерфейса) - представляет интерфейс в текущей сети;
- (127, любой адрес) - loopback
- адреса вида "1110..." (224.0.0.0 - 239.255.255.255) - multicast (RFC 1112)
- адреса вида "1111..." (240.0.0.0 - 255.255.255.254 ) - experimental
- класс A
- класс B
- класс C
- 192.0.0 - 193.255.255 для межрегиональных организаций
- 194 - 195 для Европы (RIPE NCC)
- 196 - 197
- 198 - 199 для Северной Америки
- 200 - 201 для Центральной и Южной Америки
- 202 - 203 для Тихоокеанского региона
- 204 - 205
- 206 - 207
- 208.0.0.0 - 223.255.255.255 зарезервированы за IANA и IR
- адреса, зарезервированные под локальное использование
- 10.0.0.0 - 10.255.255.255
- 172.16.0.0 - 172.31.255.255
- 192.168.0.0 - 192.168.255.255
Проблема оставшаяся с времен разделения сетевого адреса на
собственно номер сети и адрес подсети: не все могут обрабатывать адрес подсети равный нулю.
Например, в IOS (CISCO) необходимо использовать специальную команду: "ip subnet-zero".
- номер протокола: /etc/protocols: 1 байт
- (Internet-documents/iana/assignments/port-numbers.gz) номер
порта : /etc/services: 2 бaйта
Ссылки:
Copyright © 1996-2024 Sergey E. Bogomolov; www.bog.pp.ru