Search     or:     and:
 LINUX 
 Language 
 Kernel 
 Package 
 Book 
 Test 
 OS 
 Forum 
 iakovlev.org 
 Books
  Краткое описание
 Linux
 W. R. Стивенс TCP 
 W. R. Стивенс IPC 
 A.Rubini-J.Corbet 
 K. Bauer 
 Gary V. Vaughan 
 Д Вилер 
 В. Сталлинг 
 Pramode C.E. 
 Steve Pate 
 William Gropp 
 K.A.Robbins 
 С Бекман 
 Р Стивенс 
 Ethereal 
 Cluster 
 Languages
 C
 Perl
 M.Pilgrim 
 А.Фролов 
 Mendel Cooper 
 М Перри 
 Kernel
 C.S. Rodriguez 
 Robert Love 
 Daniel Bovet 
 Д Джеф 
 Максвелл 
 G. Kroah-Hartman 
 B. Hansen 
NEWS
Последние статьи :
  Rust 07.11   
  Go 25.12   
  EXT4 10.11   
  FS benchmark 15.09   
  Сетунь 23.07   
  Trees 25.06   
  Apache 03.02   
  SQL 30.07   
  JFS 10.06   
  B-trees 01.06   
 
TOP 20
 Go Web ...756 
 Httpd-> История Ap...491 
 2.0-> Linux IP Networking...366 
 MySQL & PosgreSQL...334 
 Trees...334 
 Secure Programming for Li...331 
 Assembler...266 
 Secure Programming for Li...237 
 TCP 2...236 
 Mod_perl 1...229 
 Steve Pate 3...218 
 Advanced Bash Scripting G...208 
 Linux Inline Assembly...201 
 Максвелл 3...199 
 Steve Pate 1...196 
 Python...195 
 Cluster 3...194 
 Rodriguez 8...193 
 Rubni-Corbet -> Глав...192 
 Mod_perl 2...185 
 
  01.06.2017 : 2215600 посещений 

iakovlev.org

 W. R. Stevens UNIX : Network Programming Networking APIs   Глава 2

 
 Глава 2
 Собственно протокол IP делится на 2 разновидности :
   1. IPv4 - использует 32-разрядную адресацию ,
      является сервисом доставки пакетов для TCP,UDP,ICMP,IGMP .
   2. ipV6 - 128-битная адресация ,
      является сервисом доставки для пакетов TCP,UDP,ICMPv6 .
 
  TCP - протокол для надежного 2-стороннего транспортного потока .
        Сокеты являются потоковыми сокетами - STREAM SOCKET .
  UDP - протокол для ненадежной связи . 
        Сокеты являются датаграммными сокетами - datagram sockets .
  ICMP - протокол передачи управляющей информации об ошибках маршрутизаторов
         и узлов . Как правило , используется для сетевого программного обеспечения ,
         а не для пользовательских программ .
  IGMP - протокол широковещательной передачи .
  ARP  - протокол , который ставит в соответствие аппаратному адресу адрес IP .
  RARP - протокол , который ставит в соответствие адресу IP аппаратный адрес .     
 
 UDP : каждый сокет упаковывается в датаграмму . Каждая датаграмма имеет 
       конкретную длину и называется record .
 TCP : отличается прежде всего тем , что устанавливается коннект между
       клиентом и сервером . 
       ТСР обеспечивает управление потоком - flow control - когда невозможно
       переполнение буфера .
       ТСР - 2-сторонний протокол(full-duplex) : в любой момент времени приложение
       может как отправлять , так и принимать данные .
 
 3-этапное рукопожатие :
 
При установлении соединения ТСР события развиваются следующим образом : 1. Сервер запускает команды socket , bind , listen и готов к пассивному открытию - passive open . 2. Клиент вызывает активное открытие - active open - c помощью connect . На этом этапе отсылается сегмент SYN : в него входят заголовок IP , заголовок ТСР и никаких данных . 3. В ответ на это сервер отсылает свои SYN и ACK в виде единого сегмента . 4. Клиент должен отослать свой ACK . Схема для открытия соединения : 1. SYN 2. SYN+ACK 3. ACK Для разрыва требуется уже 4 сегмента :
1. Клиент(не обязательно) вызывает closesocket - активное закрытие (active close) и отправляет сегмент FIN . 2. Сервер вызывает пассивное закрытие - passive close - и отправляет ACK . 3. Сервер посылает FIN - выполняется команда close . 4. Клиент отсылает ACK . Схема для закрытия соединения : 1. FIN 2. ACK 3. FIN 4. ACK При этом клиент либо сервер может находиться в одном из следующих состояний : 1. LISTEN - ожидание (с) 2. SYN_SENT - послан SYN на коннект (к) 3. SYN_RCVD - получил SYN и послал назад (с) 4. ESTABLISHED - послал ACK , подтвердил коннект (с) (к) 5. FIN_WAIT_1 - послал FIN для разрыва коннекта (к) 6. CLOSE_WAIT - получил FIN и отослал ACK (с) 7. FIN_WAIT_2 - получил ACK (к) 8. LAST_ACK - отослал FIN (с) 9. FIN_WAIT - отослал ACK (к) 10. CLOSED - получил ACK (с) Диаграмма состояний TCP . Определено 11 различных состояний . Например , если приложение в состоянии CLOSED выполняет открытие , отправляется сегмент SYN , и новым состоянием становится SYN_SENT . затем , если получен ACK , то отправляется ACK и состояние переходит в ESTABLISHED , в котором происходит бОльшая часть обмена данных. 2 стрелки , идущие от состояния ESTABLISHED ,относятся к разрыву соединения . После вызова close() , происходит переход к состоянию FIN_WAIT. Нормальные переходы клиента помечены обычной линией , сервера - штриховой .
На следующем рисунке представлен реальный обмен пакетами , происходящий с момента соединения до его разрыва .
К этому рисунку надо сказать , что если запрос и ответ укладывались в один сегмент , то будет задействовано всего 8 сегментов . В случае UDP будет вообще всего 2 сегмента - запрос и ответ . Time_wait - время , по истечение которого сегмент пакета будет послан повторно в случае , если он не достиг адресата . В разных реализациях он равняется от нескольких секунд до нескольких минут. ТСР может использовать номера портов 1-1024 , только если имеет права администратора . Диаграмма распределения портов на диапазоны :
Socket pair - это комбинация : ( локальный ip + локальный порт ) плюс ( удаленный ip + удаленный порт ) ip + порт - такую комбинацию еще называют портом . Параллельный сервер : ситуация , когда на сервере реализована многопоточность . При подключении очередного клиента сервер порождает процесс , называемый дочерним сервером . При этом сам сервер продолжает оставаться прослушиваемым сокетом . А дочерний сервер становится присоединенным сокетом и обслуживает клиента . Размеры буфера и ограничения . 1. Максимальный размер датаграммы IPv4 - 64 кб . У IPv6 может быть больше - зависит от канала . 2. MTU - maximum transmition unit - максимальная единица передачи . Для Ethernet MTU=1500 байт . Минимальная MTU для IPv4 - 68 байт . Минимальная MTU для IPv6 - 576 байт . 3. Наименьшая MTU в пути называется транспортной MTU (path MTU). MTU может быть разной в обоих направлениях , т.к. маршрутизация бывает асимметричной . 4. Если размер датаграммы превышает MTU , то происходит ее фрагментация . 5. Если бит DF (Don't Fragment) установлен , то датаграмма не фрагментируется . Обнаружение транспортной MTU (path MTU discovery) может быть произведено с помощью DF . 6. Минимальный размер датаграммы (minimum reassembly buffer size) для IPv4 - 576 байт , для IPv6 - 1500 . 7. MSS - максимальный размер сегмента (maximum segment size) Для IPv4 - это 1460 байт, для IPv6 - это 1440 байт , но может быть и до 64 кб . Использование протоколов приложениями интернета . Приложение IP ICMP UDP TCP Ping + Traceroute + + DHCP + Telnet + FTP + HTTP + DNS + + NFS + + RPC + +
Оставьте свой комментарий !

Ваше имя:
Комментарий:
Оба поля являются обязательными

 Автор  Комментарий к данной статье