Следующая таблица IANA определяет список стандартных TCP-портов, присваиваемых известным сетевым приложениям. Это гарантирует, что любой host, выполняющий указанное приложение, получит соединение по указанному порту. Таблица показывает лишь часть допустимых вариантов приписки портов.
Port |
Description |
7 |
Echo |
13 |
Daytime |
17 |
Quote of the day |
20 |
FTP (data channel) |
21 |
FTP (control channel) |
22 |
SSH |
23 |
Telnet |
25 |
SMTP |
37 |
Time |
80 |
HTTP |
110 |
POP3 |
119 |
NNTP |
123 |
Network Time Protocol (NTP) |
137 |
NETBIOS name service |
138 |
NETBIOS datagram service |
143 |
Internet Message Access Protocol (IMAP) |
389 |
Lightweight Directory Access Protocol (LDAP) |
443 |
Secure HTTP (HTTPS) |
993 |
Secure IMAP |
995 |
Secure POP3 |
Номера портов в диапазоне (0, 1023) считаются известными (well-known ports), потому что они приписаны известным, широко используемым приложениям. При создании нового приложения избегайте присвоения этих значений. На деле, если порт уже занят другим приложением, то система не позволит его использовать, но к чему лишние ветви обработки исключений и алгоритмы выбора других значений?
Номера портов в диапазоне (1024, 65535) можно использовать в любом приложении, но даже в таком широком диапазоне существует возможность того, что выбранный порт уже занят каким-то приложением. Поэтому многие приложения предоставляют выбор номера порта пользователю. При этом важно, чтобы клиентское приложение как-то учитывало факт изменения порта серверным приложением, иначе оно не сможет с ним соединиться.
После полей, описывающих порты, следует последовательность чисел, определяющих порядок следования пакетов и поле, подтверждающее факт их доставки. Эти поля TCP-заголовка позволяют отследить процесс прохождения пакетов и подтвердить получение всего блока. Если каких-то пакетов не хватает, то система может запросить повторить их передачу и заново собрать блок данных перед тем, как передать его приложению.
Каждый пакет имеет уникальный порядковый номер в рамках TCP-сессии. Номер первого пакета сессии выбирается случайным. Каждый последующий пакет увеличивает его на количество байт в слое данных, что обеспечивает уникальную идентификацию пакета в общем потоке. Принимающее устройство использует поле подтверждения (acknowledgement field) для того, чтобы подтвердить получение последнего пакета последовательности.
Возвращаемое приемником значение, называемое подтверждающим числом (acknowledgement number) должно быть самым большим в рассмотренной последовательности чисел. Эта техника называется скользящим окном (sliding window). Пакеты, нарушающие порядок последовательности, хранятся в специальном буфере, а затем вставляются в поток, чтобы восстановить порядок. Если какой-либо пакет утерян, то это обнаруживается приемником и он посылает подтверждающее число (acknowledgement number), меньшее, чем ожидается. Этот факт трактуется как запрос на повторение передачи. Техника скользящего окна позволяет избежать процедуры подтверждения получения каждого пакета, что увеличило бы объем передаваемых данных (network traffic).
В процессе оттладки сетевых приложений анализ последовательности рассмотренных чисел является самым трудным. Часто бывает легче просто создать список чисел для каждого пакета (каждого устройства) и просмотреть его. Повторяющиеся, или перекрывающиеся подпоследовательности в течение сессии свидетельствуют о проблемах на линии (повторных передачах, или ретрансмиссии пакетов).
В TCP-заголовке (вслед за полем, указывающим его длину) идет поле флагов (Flags) состояния сессии.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.