Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции / Малов / Лекции / Лекция 18.doc
Скачиваний:
68
Добавлен:
17.04.2013
Размер:
332.29 Кб
Скачать

Порты и сокеты

После того, как мы разобрались с основными протоколами и IP-адресами, не плохо было бы понять, как все это вместе стыкуется и работает.

В заголовках протоколов нет наименований протоколов, а есть только номера. Кроме того, данные каждому приложению также доставляются с использованием номеров, которые называются портами.

Пара - протокол и порт - позволяет стеку протоколов TCP/IP доставить данные нуждающемуся в них приложению.

Увидеть номера протоколов можно в файле /etc/protocolsили прочитать в RFC Assigned Numbers.

Содержание файла /etc/protocols:

Ix: {3} more protocols

#

# Internet (IP) protocols

#

# $Id: protocols,v 1.2.8.1 1995/08/30 06:19:30 davidg Exp $

# from: @(#)protocols 5.1 (Berkeley) 4/17/89

#

# Updated for FreeBSD based on RFC 1340, Assigned Numbers (July 1992).

#

ip 0 IP # internet protocol, pseudo protocol number

icmp 1 ICMP # internet control message protocol

igmp 2 IGMP # Internet Group Management

ggp 3 GGP # gateway-gateway protocol

ipencap 4 IP-ENCAP # IP encapsulated in IP (officially ``IP'')

st 5 ST # ST datagram mode

tcp 6 TCP # transmission control protocol

egp 8 EGP # exterior gateway protocol

pup 12 PUP # PARC universal packet protocol

udp 17 UDP # user datagram protocol

hmp 20 HMP # host monitoring protocol

xns-idp 22 XNS-IDP # Xerox NS IDP

rdp 27 RDP # "reliable datagram" protocol

iso-tp4 29 ISO-TP4 # ISO Transport Protocol class 4

xtp 36 XTP # Xpress Tranfer Protocol

idpr-cmtp 39 IDPR-CMTP # IDPR Control Message Transport

rsvp 46 RSVP # Resource ReSerVation Protocol

vmtp 81 VMTP # Versatile Message Transport

ospf 89 OSPFIGP # Open Shortest Path First IGP

ipip 94 IPIP # Yet Another IP encapsulation

encap 98 ENCAP # Yet Another IP encapsulation

Как видно из содержания файла protocols, практически всем основным протоколам присвоены номера. Другой группой магических цифр являются номера портов, которые закреплены за информационными сервисами Internet.

Информационный сервис - это прикладная программа, которая осуществляет обслуживание на определенном порте TCP или UDP. Собственно WKS (рабочая станция) - это и есть совокупность этих сервисов Internet.

К сервисам относятся: доступ в режиме удаленного терминала, доступ к файловым архивам FTP, доступ к серверам World Wide Web и т. п.

Распределение сервисов по портам можно найти в файле /etc/services. Фрагмент содержания файла/etc/services:

quest:/etc:\[2\]>cat services

tcpmux 1/tcp # TCP port service multiplexer

echo 7/tcp

echo 7/udp

...

ftp 21/tcp

# 22 - unassigned

telnet 23/tcp

# 24 - private

smtp 25/tcp mail

# 26 - unassigned

time 37/tcp timserver

time 37/udp timserver

rlp 39/udp resource # resource location

whois 43/tcp nicname

domain 53/tcp nameserver # name-domain server

domain 53/udp nameserver

bootps 67/tcp # BOOTP server

bootps 67/udp

bootpc 68/tcp # BOOTP client

bootpc 68/udp

tftp 69/udp

gopher 70/tcp # Internet Gopher

gopher 70/udp

finger 79/tcp

www 80/tcp http # WorldWideWeb HTTP

www 80/udp # HyperText Transfer Protocol

Среди сервисов, определенных в этом фрагменте, есть не только информационные сервисы типа World Wide Web или Gopher, но и протокол маршрутизации RIP, и протокол удаленной загрузки bootp, и сервис доменных имен BIND, и другие протоколы, которые нацелены на повышение работы сети и чрезвычайно полезны при администрировании сети.

При работе через стек протоколов TCP/IP сообщения, которыми обмениваются приложения, сначала инкапсулируются в сегменты TCP или дейтаграммы UDP, при этом указывается соответствующий порт транспортного протокола.

Потом транспортные протоколы мультиплексируются в IP, который запоминает номер протокола.

Все IP-пакеты передаются по сети получателю, где происходит обратная операция изъятия информации из оболочки TCP/IP.

Сначала по номеру протокола в модуле IP выделенные данные пересылаются соответствующему протоколу транспортного уровня.

На транспортном уровне по номеру порта получателя определяется какому сервису данные посланы.

Однако этим механизм взаимодействия приложений в рамках TCP/IP не исчерпывается. Дело в том, что кроме статически назначенных WKS существуют еще динамически назначаемые сервисы.

Динамически назначаемые номера портов TCP и UDP используются для того, чтобы можно было организовать обслуживание множества запросов по сети к одному WKS. В том же примере стрелочки только в одном направлении указаны не случайно. К серверу протокола HTTP могут обращаться сразу несколько клиентов, следовательно, должен быть механизм, который бы позволил распараллелить их обслуживание.

Таким механизмом служит динамическое назначение портов.

Происходит это назначение в момент установки соединения.Клиент, запрашивая обслуживание, обращается к сервису по номеру порта WKS, но при этом сообщает, что принимать ответы он будет по номеру порта, отличному от WKS. Таким образом, сервер может обслуживать запросы к одному и тому же порту WKS, используя разные порты при ответе.

Образующаяся при этом пара (IP-адрес, номер порта) называется сокетом (буквально "розетка").

Таким образом, можно сказать, что http-сервер для обслуживания использует сокет, например, 144.206.130.137;80, а клиент, который к нему обращается, сокет 144.206.130.138;8080. Графически определение сокета можно продемонстрировать на примере протокола TCP.

Рис.18. 4 Динамическое назначение портов. Образование сокетов

Описывая взаимодействие в рамках TCP/IP обмена, мы до сих пор обходили стороной вопросы, связанные с тем, как пакет реально транспортируется по сети. Все наши примеры ограничивались работой в рамках локальной сети. Теперь пора поговорить о том, как осуществляется передача пакетов по сети, или в терминах сетевого обмена – маршрутизация.

Соседние файлы в папке Лекции