Почему два адреса HTTP и TCP могут использовать один и тот же порт, а два IPC-адреса не могут использовать один и тот же именованный канал? - PullRequest
0 голосов
/ 12 апреля 2011

Что я думаю о порте: всякий раз, когда сообщение поступает на компьютер, оно копируется в область памяти, которая сопоставлена ​​с указанным портом, и соответствующее приложение или служба уведомляется о том, что для него пришло сообщение.

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

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

Ответы [ 2 ]

1 голос
/ 20 апреля 2011

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

HTTP использует TCP для своей передачи.Таким образом, HTTP-порт является TCP-портом.

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

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

1 голос
/ 12 апреля 2011

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

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

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

...