Образовательный комплекс Компьютерные сети
Содержание
Уровень Хост-Хост
Уровень Хост-Хост
Уровень Хост-Хост Стандартные сервисы
Уровень Хост-Хост Протокол UDP
Уровень Хост-Хост Формат UDP-датаграммы
Уровень Хост-Хост Формат UDP-датаграммы
Уровень Хост-Хост Использование UDP
Уровень Хост-Хост Протокол TCP
Уровень Хост-Хост Протокол TCP
Уровень Хост-Хост Протокол TCP
Уровень Хост-Хост Протокол TCP – Механизм окон…
Уровень Хост-Хост Протокол TCP – Механизм окон…
Уровень Хост-Хост Протокол TCP – Механизм окон…
Уровень Хост-Хост Протокол TCP – Механизм окон…
Уровень Хост-Хост Протокол TCP – Механизм окон
Уровень Хост-Хост Формат TCP-сегмента…
Уровень Хост-Хост Формат TCP-сегмента…
Уровень Хост-Хост Формат TCP-сегмента…
Уровень Хост-Хост Формат TCP-сегмента
Программный интерфейс сокетов
Программный интерфейс сокетов
Программный интерфейс сокетов
Программный интерфейс сокетов Датаграммное взаимодействие
Программный интерфейс сокетов Датаграммное взаимодействие
Программный интерфейс сокетов Датаграммное взаимодействие
Программный интерфейс сокетов Датаграммное взаимодействие
Программный интерфейс сокетов Взаимодействие с установлением соединения
Программный интерфейс сокетов Взаимодействие с установлением соединения
Программный интерфейс сокетов Взаимодействие с установлением соединения
Программный интерфейс сокетов Взаимодействие с установлением соединения
Программный интерфейс сокетов Взаимодействие с установлением соединения
Заключение
Тема следующей лекции
Вопросы для обсуждения
Литература
417.00K
Category: internetinternet

Уровень ХостХост TCPIP

1. Образовательный комплекс Компьютерные сети

Лекция 14
Уровень Хост-Хост TCP/IP

2. Содержание

Уровень Хост-Хост модели TCP/IP
Протокол UDP
Протокол TCP
Программный интерфейс сокетов
Компьютерные сети
Уровень Хост-Хост TCP/IP
2 из 37

3. Уровень Хост-Хост

Межсетевой уровень (IP) позволяет
передавать данные между узлами через
интерсеть
Уровень Хост-Хост обеспечивает
сервисы, которые могут использоваться
приложениями для доставки данных
User Datagram Protocol (UDP)
Transmission Control Protocol (TCP)
Протоколы TCP и UDP выполняют
подмножество функций более сложного
транспортного уровня модели ISO/OSI
Компьютерные сети
Уровень Хост-Хост TCP/IP
3 из 37

4. Уровень Хост-Хост

Процесс Процесс
1
2
Порт А Порт B …
UDP
Процесс Процесс
3
4
интерсеть
IP
Порт C Порт D …
UDP
IP
Процесс, который хочет взаимодействовать с другим процессом,
должен зарегистрироваться на каком-либо порту
Порт – это 32-битное число, которое используется протоколами уровня
Хост-Хост для определения протокола (сервиса или приложения)
прикладного уровня, которому предназначается сообщение
Механизм портов используют протоколы TCP, UDP. Также механизм
портов реализован в протоколе ISO-4.
Пространства портов протоколов TCP и UDP различны
то есть, один процесс может использовать 10-й порт TCP, а другой в то же
самое время – 10-й порт UDP
Компьютерные сети
Уровень Хост-Хост TCP/IP
4 из 37

5. Уровень Хост-Хост Стандартные сервисы

Порты с номерами 0-1023 предназначены для регистрации
серверных компонент стандартных сервисов (протоколов
прикладного уровня) TCP/IP
Порты с номерами 1024-65535 используются любыми
программами, в том числе клиентскими частями стандартных
протоколов
Ниже перечислены некоторые стандартные сервисы,
используемые ими протоколы и номера портов
21/TCP – FTP (20/TCP – FTP-DATA)
22/TCP – SSH (Secure SHell)
23/TCP – TELNET
25/TCP – SMTP
53/UDP – NAMESERVER (DNS)
80/TCP – HTTP
110/TCP – POP3

В Linux в файле /etc/services для большого числа сервисов
указаны используемый протокол и номер порта
Компьютерные сети
Уровень Хост-Хост TCP/IP
5 из 37

6. Уровень Хост-Хост Протокол UDP

UDP – ненадежный датаграммный
протокол
Обеспечивает прикладным программам
возможность посылать данные другим
программам с минимальными накладными
расходами
Не добавляет надежности нижележащим
уровням
Не выполняет контроль трафика
Приложения, требующие надежной доставки
потоков данных, должны использовать TCP
Нижний Новгород
2007
Компьютерные сети
Уровень Хост-Хост TCP/IP
6 из 37

7. Уровень Хост-Хост Формат UDP-датаграммы

Source Port (SP) – номер
порта источника
Destination Port (DP) – номер
порта получателя
Length – длина датаграммы
в байтах
Checksum – контрольная
сумма датаграммы
Data – передаваемые
данные
Нижний Новгород
2007
Компьютерные сети
Уровень Хост-Хост TCP/IP
Source Port
(16 бит)
Destination Port
(16 бит)
Length
(16 бит)
Checksum
(16 бит)
Data
7 из 37

8. Уровень Хост-Хост Формат UDP-датаграммы

Для внутреннего использования перед UDPзаголовком размещается псевдозаголовок,
который не входит в UDP-датаграмму и
содержит информацию из IP-заголовка
IP-адрес отправителя
IP-адрес получателя
Протокол
Длина UDP-датаграммы
Длина псевдозаголовка UDP не учитывается в
общей длине датаграммы, но его содержимое
используется при вычислении контрольной
суммы
Нижний Новгород
2007
Компьютерные сети
Уровень Хост-Хост TCP/IP
8 из 37

9. Уровень Хост-Хост Использование UDP

Некоторые стандартные приложения,
использующие UDP
Trivial File Transfer Protocol (TFTP) –
тривиальный протокол передачи файлов
(используется при удаленной загрузке)
Domain Name Server (DNS) – служба
доменных имён
Remote Procedure Call (RPC) – механизм
удаленного вызова процедур (используется
многими программами, например, сервисом
Network File System, NFS)
Simple Network Message Protocol (SNMP) –
простой протокол управления сетью
Нижний Новгород
2007
Компьютерные сети
Уровень Хост-Хост TCP/IP
9 из 37

10. Уровень Хост-Хост Протокол TCP

Процесс Процесс
1
2
интерсеть
Процесс Процесс
3
4
Порт А Порт B …
Порт C Порт D …
TCP
TCP
Соединение TCP
IP
IP
IP-пакеты
TCP – протокол, обеспечивающий сервис,
ориентированный на соединение, для пары
взаимодействующих процессов, и включающий
надежность, контроль трафика и исправление
ошибок
Нижний Новгород
2007
Компьютерные сети
Уровень Хост-Хост TCP/IP
10 из 37

11. Уровень Хост-Хост Протокол TCP

TCP устанавливает логическое соединение
между парой процессов. Логическое
соединение идентифицируется парой адресов
сокетов.
Сокет – объект межпроцессного взаимодействия,
который может быть использован для передачи
данных между процессами через сеть
Адрес сокета – комбинация IP-адреса и номера порта,
используемых для коммуникации
TCP хранит всю информацию о логическом
соединении в специальной структуре,
называемой блоком управления передачей
Нижний Новгород
2007
Компьютерные сети
Уровень Хост-Хост TCP/IP
11 из 37

12. Уровень Хост-Хост Протокол TCP

Поля блока управления передачей
Локальный IP-адрес
Локальный номер порта
Протокол
Удаленный IP-адрес
Удаленный номер порта
Размер буфера передачи
Размер буфера приема
Текущее состояние TCP
Текущее значение интервала тайм-аута
Количество осуществленных повторных передач
Текущий размер окна передачи
Максимальный размер передаваемого сегмента
Номер последнего из подтвержденных байтов
Максимальный размер принимаемого сегмента
Номер байта, который должен быть послан
Нижний Новгород
2007
Компьютерные сети
Уровень Хост-Хост TCP/IP
12 из 37

13. Уровень Хост-Хост Протокол TCP – Механизм окон…

Поток байт источника
0

Окно реконструкции входящего потока приемника
Протокол TCP обеспечивает передачу потоков данных, при
этом он использует механизм окон
Все байты исходящего потока последовательно нумеруются
Размер окна задается получателем в момент установления
соединения, но может изменяться им в процессе передачи
На стороне приемника окно – это фактически буфер приема, на
стороне источника – абстракция, определяющая порядок передачи
В исходный момент окно расположено в начале потока
Нижний Новгород
2007
Компьютерные сети
Уровень Хост-Хост TCP/IP
13 из 37

14. Уровень Хост-Хост Протокол TCP – Механизм окон…

Поток байт источника
0

Пакеты данных
Подтверждения
Буфер реконструкции входящего потока приемника
Источник разбивает исходящий поток на пакеты
(сегменты)
Источник может послать все пакеты в окне без
подтверждения, но должен запускать таймер для
каждого из них
Получатель подтверждает номер последнего
принятого байта
Нижний Новгород
2007
Компьютерные сети
Уровень Хост-Хост TCP/IP
14 из 37

15. Уровень Хост-Хост Протокол TCP – Механизм окон…

Поток байт источника
0

Окно реконструкции входящего потока приемника
Получатель в ходе реконструкции потока
данных передвигает начало окна на первый
еще не полученный байт
Источник продвигает окно после получения
очередного подтверждения
Нижний Новгород
2007
Компьютерные сети
Уровень Хост-Хост TCP/IP
15 из 37

16. Уровень Хост-Хост Протокол TCP – Механизм окон…

0
A
B
C
D
Поток байт источника

Окно реконструкции входящего потока приемника
С точки зрения источника, выходной поток байт делится
на 4 части
A – посланные и подтвержденные байты
B – посланные, но еще не подтвержденные байты
C – байты, которые могут быть посланы без подтверждения
D – байты, которые еще не могу быть посланы
Нижний Новгород
2007
Компьютерные сети
Уровень Хост-Хост TCP/IP
16 из 37

17. Уровень Хост-Хост Протокол TCP – Механизм окон

Если при передаче потерян какой-либо пакет, источник не
получит подтверждения и спустя время тайм-аута начнет
повторную передачу всех неполученных байт
даже если следующие пакеты были получены приемником, он
посылает номер последнего байта полностью
реконструированного потока
Каждое подтверждение полностью описывает текущую
ситуацию для источника
если получатель отправил подтверждение, но оно не дошло до
источника, следующее доставленное подтверждение отменит
необходимость повторной передачи данных источником
Таким образом, механизм окон обеспечивает
Надежную передачу
Контроль трафика
Эффективное использование пропускной способности сети
(источник может посылать данные, не дожидаясь
подтверждения всех уже отправленных данных)
Нижний Новгород
2007
Компьютерные сети
Уровень Хост-Хост TCP/IP
17 из 37

18. Уровень Хост-Хост Формат TCP-сегмента…

Source Port (SP) – номер порта
источника
Destination Port (DP) – номер
порта получателя
Sequence Number – порядковый
номер первого байта в сегменте
Acknowledgment Number – если
установлен флаг ACK, номер
следующего байта в потоке,
который узел рассчитывает
принять как получатель
Data Offset – размер заголовка
TCP в 32-битных словах
Source Port
(16 бит)
Destination Port
(16 бит)
Sequence Number
(16 бит)
Acknowledgment Number
(16 бит)
Data
C EUAPRSF
Offset 0 W C R C S S Y I
(4 бит) R E G K H T N N
Window
(16 бит)
Checksum
(16 бит)
Urgent Pointer
(16 бит)
Options + Padding
(N* 32 бит)
Data
Нижний Новгород
2007
Компьютерные сети
Уровень Хост-Хост TCP/IP
18 из 37

19. Уровень Хост-Хост Формат TCP-сегмента…

Флаги
CWR (Congestion Window Reduced) –
подтверждение принятия сегмента с
установленным флагом ECE
ECE (ECN-Echo) – данный узел
способен на явное уведомление о
перегрузке
URG – если равен 1, то поле Urgent
Pointer сегмента значимо
ACK – если равен 1, то поле
Acknowledgment Number сегмента
значимо
PSH – указание получателю
"протолкнуть" данные в приложение
RST – сброс соединения
SYN – синхронизация номеров байт в
потоке
FIN – конец данных источника
Нижний Новгород
2007
Компьютерные сети
Уровень Хост-Хост TCP/IP
Source Port
(16 бит)
Destination Port
(16 бит)
Sequence Number
(16 бит)
Acknowledgment Number
(16 бит)
Data
C EUAPRSF
Offset 0 W C R C S S Y I
(4 бит) R E G K H T N N
Window
(16 бит)
Checksum
(16 бит)
Urgent Pointer
(16 бит)
Options + Padding
(N* 32 бит)
Data
19 из 37

20. Уровень Хост-Хост Формат TCP-сегмента…

Window – количество байт, начиная с
номера из поля Acknowledgment
Number, которое узел может принять
как получатель
Checksum – контрольная сумма TCPсегмента
Urgent Pointer – номер первого байта
срочных данных (в поле данных
сегмента)
Options – опции доставки TCPсегмента, может содержать несколько
опций и имеет переменную длину
Padding – дополнения поля Options
до размера, кратного 32 битам
Data – данные
Source Port
(16 бит)
Destination Port
(16 бит)
Sequence Number
(16 бит)
Acknowledgment Number
(16 бит)
Data
C EUAPRSF
Offset 0 W C R C S S Y I
(4 бит) R E G K H T N N
Window
(16 бит)
Checksum
(16 бит)
Urgent Pointer
(16 бит)
Options + Padding
(N* 32 бит)
Data
Нижний Новгород
2007
Компьютерные сети
Уровень Хост-Хост TCP/IP
20 из 37

21. Уровень Хост-Хост Формат TCP-сегмента

Для внутреннего использования перед TCPзаголовком размещается псевдозаголовок,
который не входит в TCP-сегмент и содержит
информацию из IP-заголовка
IP-адрес отправителя
IP-адрес получателя
Протокол
Длина TCP-сегмента
Длина псевдозаголовка TCP не учитывается в
общей длине сегмента, но его содержимое
используется при вычислении контрольной
суммы
Нижний Новгород
2007
Компьютерные сети
Уровень Хост-Хост TCP/IP
21 из 37

22. Программный интерфейс сокетов

23. Программный интерфейс сокетов

Сокет – объект межпроцессного
взаимодействия, обеспечивающий прием и
передачу данных для процесса
Существуют следующие типы сокетов
Stream – обеспечивает надежную доставку потоков
данных (SOCK_STREAM)
Datagram – обеспечивает ненадежную доставку
сообщений (SOCK_DGRAM)
Sequential packet – обеспечивает надежную доставку
пакетов длины не больше заданной
(SOCK_SEQPACKET)
на настоящий момент отсутствует реализация данного
типа сокетов
Raw – доступ к нижележащему протоколу
(SOCK_RAW)
Нижний Новгород
2007
Компьютерные сети
Уровень Хост-Хост TCP/IP
23 из 37

24. Программный интерфейс сокетов

Сокет – достаточно общий интерфейс и может
обеспечивать взаимодействие посредством
использования различных механизмов (локальных и
сетевых)
Различные механизмы требуют использования
специальных типы адресов, принадлежащие различным
коммуникационным доменам
AF_INET – взаимодействие удаленных систем с
использованием TCP/IP (адрес – пара IP-адрес + номер
порта)
AF_INET6 – взаимодействие удаленных систем с
использованием TCP/IP (IP версии 6)
AF_UNIX – локальное межпроцессное взаимодействие
(адресом является имя на файловой системе)
AF_NS
IUCV
...
Нижний Новгород
2007
Компьютерные сети
Уровень Хост-Хост TCP/IP
24 из 37

25. Программный интерфейс сокетов Датаграммное взаимодействие

Процесс A
Процесс B
socket()
socket()
При датаграммной передаче взаимодействующие
процессы выполняют один и тот же набор вызовов
(далее приводится множество вызовов для сокетов в
реализации Berkley)
Создание сокета
int socket(int domain, int type, int protocol);
domain – коммуникационный домен
type – тип сокета
protocol – протокол транспортного уровня, если значение
параметра равно 0, используется протокол по умолчанию
для данного типа сокета и коммуникационного домена
Возвращаемое значение – дескриптор сокета
Нижний Новгород
2007
Компьютерные сети
Уровень Хост-Хост TCP/IP
25 из 37

26. Программный интерфейс сокетов Датаграммное взаимодействие

Процесс A
Процесс B
socket()
socket()
bind()
bind()
Назначение адреса сокету
int bind(int s, const struct sockaddr *name, int namelen);
s – дескриптор сокета
name – адрес буфера, содержащего адрес сокета. Адрес
представляет собой структуру struct sockaddr_in; ее поля
sa_family_t sin_family; - коммуникационный домен
in_port_t sin_port; - номер порта (используется сетевой порядок
следования байт в целочисленных значениях)
struct in_addr sin_addr; - структура, содержащая сетевой адрес
in_addr_t
s_addr; - IP-адрес (используется сетевой порядок
следования байт в целочисленных значениях)
unsigned char sin_zero[8]; - нули
namelen – длина структуры, содержащей адрес
Нижний Новгород
2007
Компьютерные сети
Уровень Хост-Хост TCP/IP
26 из 37

27. Программный интерфейс сокетов Датаграммное взаимодействие

Процесс A
Процесс B
socket()
socket()
bind()
bind()
recvfrom()
sendto()
Передача/прием
ssize_t recvfrom(int s, void *buffer, size_t length, int flags, struct
sockaddr *address, socklen_t *address_len);
ssize_t sendto(int s, const void *message, size_t length, int flags,
const struct sockaddr *address, socklen_t address_len);
s – дескриптор сокета
buffer – адрес буфера приема/передачи
length – размер буфера в байтах
flags – флаги операции
address – адрес буфера адреса источника/получателя
address_len – размер адреса получателя в sendto(), адрес объекта
целого типа, содержащего размер буфера address в recvfrom()
Нижний Новгород
2007
Компьютерные сети
Уровень Хост-Хост TCP/IP
27 из 37

28. Программный интерфейс сокетов Датаграммное взаимодействие

Процесс A
Процесс B
socket()
socket()
bind()
bind()
recvfrom()
sendto()
recvfrom()
sendto()
close()
close()
Закрытие сокета
int close(int s);
s – дескриптор сокета
Нижний Новгород
2007
Компьютерные сети
Уровень Хост-Хост TCP/IP
28 из 37

29. Программный интерфейс сокетов Взаимодействие с установлением соединения

Сервер
Клиент
socket()
bind()
При использовании взаимодействия, ориентированного
на соединение, клиент и сервер выполняют разные
последовательности вызовов
Сервер
Создание сокета
int socket(int domain, int type, int protocol);
Назначение адреса сокету
int bind(int s, const struct sockaddr *name, int namelen);
Нижний Новгород
2007
Компьютерные сети
Уровень Хост-Хост TCP/IP
29 из 37

30. Программный интерфейс сокетов Взаимодействие с установлением соединения

Сервер
Клиент
socket()
bind()
listen()
accept()
Сервер
Регистрация входящих запросов на соединение
int listen(int s, int backlog);
s – дескриптор сокета
backlog – максимальное число ожидающих запросов
Прием запроса на соединение
int accept(int s, struct sockaddr *addr, socklen_t *len);
s – дескриптор сокета
addr – адрес буфера для размещения адреса клиента
len – размер буфера, предназначенного для адреса клиента
Нижний Новгород
2007
Компьютерные сети
Уровень Хост-Хост TCP/IP
30 из 37

31. Программный интерфейс сокетов Взаимодействие с установлением соединения

Сервер
Клиент
socket()
bind()
socket()
listen()
connect()
accept()
Клиент
Создание сокета
int socket(int domain, int type, int protocol);
Запрос на установление соединения с сервером
int connect(int s, struct sockaddr *addr, socklen_t *len);
s – дескриптор сокета
addr – адрес буфера, в котором размещен адрес сервера
len – размер буфера addr
Нижний Новгород
2007
Компьютерные сети
Уровень Хост-Хост TCP/IP
31 из 37

32. Программный интерфейс сокетов Взаимодействие с установлением соединения

Сервер
Клиент
socket()
bind()
socket()
listen()
connect()
accept()
sendto()
recv()
Передача/прием
size_t recv(int s, void *buffer, size_t length, int flags);
size_t send(int s, const void *message, size_t length, int flags);
s – дескриптор сокета
buffer – адрес буфера приема/передачи
length – размер буфера в байтах
flags – флаги операции
Нижний Новгород
2007
Компьютерные сети
Уровень Хост-Хост TCP/IP
32 из 37

33. Программный интерфейс сокетов Взаимодействие с установлением соединения

Сервер
Клиент
socket()
bind()
socket()
listen()
connect()
accept()
sendto()
shutdown()
recv()
close()
close()
Клиент и сервер
Отключение сокета
int shutdown(int socket, int how);
s – дескриптор сокета
how – тип отключения (SHUT_RD, SHUT_WR, SHUT_RDWR)
Закрытие сокета
int close(int s);
Нижний Новгород
2007
Компьютерные сети
Уровень Хост-Хост TCP/IP
33 из 37

34. Заключение

Протоколы уровня Хост-Хост
обеспечивают передачу данных
между процессами
UDP – ненадежную доставку
сообщений
TCP – надежную доставку потоков
данных
При создании приложений
используется программный
интерфейс сокетов
Нижний Новгород
2007
Компьютерные сети
Уровень Хост-Хост TCP/IP
34 из 37

35. Тема следующей лекции

Domain Name System (DNS) –
система доменных имен
Нижний Новгород
2007
Компьютерные сети
Уровень Хост-Хост TCP/IP
35 из 37

36. Вопросы для обсуждения

Нижний Новгород
2007
Компьютерные сети
Уровень Хост-Хост TCP/IP
36 из 37

37. Литература

Сети TCP/IP. Ресурсы Microsoft
Windows 2000 Server. – М.: Русская
редакция, 2001.
В.Г. Олифер, Н.А. Олифер.
Компьютерные сети. Принципы,
технологии, протоколы.
СПб: Питер, 2001.
Нижний Новгород
2007
Компьютерные сети
Уровень Хост-Хост TCP/IP
37 из 37
English     Русский Rules