Xpoint
   [напомнить пароль]

Протоколы и порты при общении браузера и web-сервера

Метки: [без меток]
2006-05-22 13:47:05 [обр] Антон+[досье]

Уважаемые коллеги.
БОльшую часть свой сознательной профессиональной жизни я считал, что
web-браузер и web-сервер общаются друг с другом ИСКЛЮЧИТЕЛЬНО через ЕДИНСТВЕННЫЙ порт (как правило - TCP 80) по протоколам HTTP(s).

Однако один человек утверждает, цитирую:

...поэтому для скачивания каждой картинки открывается отдельное tcpip соединение, через свой порт. Для каждой новой страницы -новое соединение.
...
посмотрите какие пакеты идуи между браузером и http сервером. http протокол работает поверх tcpip stream который в свою очередь определяется src(tcpip address,port) dst(tcpip address,port). Я это знаю потому, что сам писал в свое время http сервер.

<Конец цитаты>

Неужели, между браузером и http-сервером идут пакеты по многим портам??

P.S.
К сожалению на работе у меня нет возможности установить снифер.

спустя 2 минуты [обр] arto(3/494)[досье]
разница между src-port и dst-port
спустя 1 минуту [обр] arto(3/494)[досье]
btw, воспользуйтесь netstat
спустя 5 минут [обр] Антон+[досье]
К сожалению, не понял, что означает
"разница между src-port и dst-port"
спустя 11 минут [обр] arto(3/494)[досье]
RFC793(ietf), "2.7. Connection Establishment and Clearing"
спустя 4 минуты [обр] Давид Мзареулян(31/1003)[досье]
У каждого TCP-соединения есть два конца. Оба конца характеризуется а) IP-адресом и б) портом. Порт на том конце, где http-сервер — всегда 80 (ну, с точностью до настройки сервера). Порт на клиентском конце может быть любым.
спустя 9 дней [обр] Владимир Палант(80/4445)[досье]

Давид уже ответил, но в дополнение:

для скачивания каждой картинки открывается отдельное tcpip соединение

Вообще-то это не так. Протокол HTTP предусматривает постоянные соединения, чтобы снизить нагрузку на сервер и уменьшить задержки. Как правило, эта возможность используется (зависит от заголовка Keep-Alive в HTTP) и скачивание происходит по всего лишь двум соединениям.

спустя 8 часов [обр] GRAy(2/259)[досье]
Давид Мзареулян[досье], Владимир Палант[досье] А что определяет порт на "клиентском конце"?
спустя 6 минут [обр] arto(3/494)[досье]
теализация tcp/udp/ip стека
спустя 11 минут [обр] GRAy(2/259)[досье]
arto[досье] Э... а попроще? ;)
спустя 8 минут [обр] Дмитрий Кучкин(0/236)[досье]
GRAy[досье]
Если порт "клиентского конца" явно не задается в клиентской программе, то порт назначает операционная система, а точнее, как сказал arto[досье], реализация стека TCP/IP в операционной системе клиента.
спустя 14 минут [обр] GRAy(2/259)[досье]
А я то гадаю, что за "теализация" - может термин какой ;) Понятно, т.е. в случае с браузером - как ОС на душу положит.
спустя 1 час 53 минуты [обр] Владимир Палант(80/4445)[досье]
Да, Windows к примеру просто выдает порты последовательно — у каждого следующего соединения номер порта выше на единицу. Это если этот порт свободен, конечно. В других OS может использоваться другая система. Но у всех "случайных" портов номер должен быть 1024 и выше, нижние порты считаются зарезервированными для стандартных сервисов (на Unix-системах эти порты вообще может открывать только администратор).
спустя 49 минут [обр] arto(3/494)[досье]
# sysctl net.ipv4.ip_local_port_range
net.ipv4.ip_local_port_range = 32768 61000
# netstat | grep -E "^(tc|ud)p" | cut -d: -f2 | cut -d\ -f1 | awk '{ if ($1 < 32768 || $1 > 61000) print $0 }'
# uname
Linux
#
Powered by POEM™ Engine Copyright © 2002-2005