Последнее изменение файла: 2007.02.08
Скопировано с www.bog.pp.ru: 2025.11.04
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-2025 Sergey E. Bogomolov; www.bog.pp.ru