2011-04-12 2 views
0

То, что я думаю о порте: когда сообщение приходит на машину, оно копируется в область памяти, которая сопоставляется с указанным портом, и соответствующее приложение или служба уведомляются о том, что для него получено сообщение.Почему два адреса HTTP и TCP могут использовать один и тот же порт, а два IPC-адреса не могут использовать один и тот же канал?

Если это так, то что произойдет, если два сообщения поступят для двух разных служб, прослушивающих один и тот же порт? (либо http, либо tcp)

И почему два именованных канала не могут использовать один и тот же именованный канал?

+0

Что вы подразумеваете под названием «named pipe addresses»? –

+0

В общем, ваш анализ вводит в заблуждение: только одна услуга за раз может прослушивать соединения tcp/ip на определенном порту независимо от протокола приложения. –

+0

Именованные адреса труб означают IPC-адреса. – teenup

ответ

1

TCP идентифицирует «соединения» через кортеж {local ip, local port, remote ip, remote port}. Поэтому, поскольку каждое входящее соединение имеет другую удаленную пару ip/port, ваша локальная машина может различать их.

HTTP использует TCP для его транспорта. Таким образом, HTTP-порт - это TCP-порт.

Если у вас когда-либо был ваш компьютер, получивший новый IP-адрес при открытии соединений, вы заметите, что они прерывают первый раз, когда отправляют данные, поскольку удаленный хост не распознает (новый) адрес и отправляет ответ RST.

Труба имеет только свое название, чтобы отличить ее, поэтому существует только одно «соединение», независимо от того, сколько у него писателей.

+0

Незначительная коррекция: соединение идентифицируется 5-кортежем; Я оставил «протокол» (т. Е. Tcp/udp являются отдельными). –

+0

'есть только одно« соединение », независимо от того, сколько у него писателей.' - на ОС Windows это совершенно неверно *. Существует одно имя, потенциально много экземпляров каналов (например, соединения клиент-сервер). Точно так же, как TCP. –

+0

Я человек ООН * X ... Я даже не знал, что Windows назвала каналы. :-) –

1

Ваше описание - это один из способов обработки входящих сообщений.

В случае двух веб-сайтов, прослушивающих один и тот же порт, есть один веб-сервер, прослушивающий этот порт, который затем смотрит заголовок http-хоста, чтобы найти правильный веб-сайт для пересылки запроса.

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

+0

Это означает, что именованный канал также использует порт для приема сообщений? – teenup

+0

Да, именованные каналы - это протокол высокого уровня, который реализуется с использованием вызовов RPC, которые реализуются либо непосредственно по TCP, либо часто на NetBIOS, которые могут выполняться поверх TCP или NetBEUI. –

Смежные вопросы