Как сетевой уровень находит маршрут для пакета - PullRequest
2 голосов
/ 07 января 2010

HTTP-запрос приложения для www.stackoverflow.com. Это сообщение передается на транспортный уровень. Транспортный уровень добавляет свой заголовок и отправляет пакет на Интернет-уровень. Интернет-уровень не может видеть www.stackoverflow.com, поскольку он может получить доступ только к заголовку, который был добавлен транспортным уровнем. Тогда как Интернет-уровень может определить маршрут для этого пакета запроса.

Как заполняется поле адреса назначения в заголовке IP, поскольку об этом поле знают только прикладной уровень и транспортный уровень. (Прикладной уровень не взаимодействует с Internet Layer и Transport Layer, указав номер порта в своем заголовке.)

Ответы [ 4 ]

2 голосов
/ 07 января 2010

Прикладной уровень уже получил бы IP-адрес хоста из URL через DNS. IP-адрес, а также другие данные из прикладного уровня отправляются на транспортный уровень, который упаковывает данные, а затем отправляет их на интернет-уровень, а затем отправляет.

1 голос
/ 07 января 2010

Приложение, в данном случае браузер, сделало что-то, что в итоге вызвало библиотечную функцию getaddrinfo или что-то подобное, что заставило системный распознаватель найти имя в DNS и вернуть набор IP-адресов.

Приложение каким-то образом выбрало один из них (есть стандартные способы сделать это, но прелесть состоит в том, сколько стандартных способов) и использовало системный вызов connect, чтобы установить соединение, которое запустило транспортный уровень в ядре. при подключении к этому IP-адресу.

Это завершает создание IP-пакетов с этим адресом назначения и локальным адресом в качестве источника, следующий протокол установлен на TCP и бит SYN в заголовке TCP. Каждый маршрутизатор на пути просматривает свои таблицы и пересылает пакет.

Происходит волшебство TCP, возвращается SYN + ACK, затем возникает соединение, по которому происходит волшебство HTTP, и страница загружается.

0 голосов
/ 07 января 2010

Если вы хотите знать, как фактический заголовок IP получает адрес. Это происходит в ядре, когда создается сокет. В этом случае сокет TCP, проверить

man 7 ip

Данные не наследуются от пакета TCP, хотя данные включены в контрольную сумму заголовка TCP.

0 голосов
/ 07 января 2010

rfc791 IP - адресация

Различают имена, адреса и маршруты [4]. Имя указывает на то, что мы ищем. Адрес указывает, где он находится. Маршрут указывает, как туда добраться. Интернет-протокол имеет дело главным образом с адресами. Задачей протоколов более высокого уровня (то есть, хост-хост или приложение) является сопоставление имен и адресов. Интернет-модуль отображает интернет-адреса на локальные сетевые адреса. Задачей низкоуровневых (то есть локальной сети или шлюзов) процедур является сопоставление адресов локальной сети с маршрутами. Адреса имеют фиксированную длину в четыре октета (32 бита).

Подробнее: http://www.faqs.org/rfcs/rfc791.html#ixzz0buBJkVEI

Задача протоколов более высокого уровня (т. Е. Хост-хост или приложение) сделать преобразование из имен в адреса ???

...