Как транспортният слой извлича IP адреса на източника от пакет с дейтаграма?

Как транспортният слой извлича IP адреса на източника от пакет с дейтаграма? Доколкото разбирам, IPaddress е в заглавката на мрежовия слой, а заглавката на транспортния слой съдържа само порта на източника и порта на местоназначението. Моля, уведомете ме, ако пропускам нещо


person user1082802    schedule 06.12.2011    source източник
comment
Предполагам, че се чудите как обажданията като recvfrom попълват адреса на източника? Предлагам да прочетете източника на Linux, BSD или всяка друга операционна система с отворен мрежов стек, тъй като това е силно зависимо от ОС.   -  person Some programmer dude    schedule 06.12.2011


Отговори (1)


Простият отговор е, че транспортният слой не извлича IP адреса от дейтаграмния пакет.

Когато дейтаграма се изпраща от източника до местоназначението, ето прости стъпки за това как работи IP, когато дейтаграмата пътува:

  • Приложението от горния слой изпраща пакет към мрежовия слой.
  • Изчисляване на данни заедно с контролната сума.
  • Конструирани IP хедър и дейтаграма.
  • Маршрутизира се през шлюзове.
  • IP слой на всеки шлюз изпълнява контролна сума. Ако контролната сума не съвпада, дейтаграмата ще бъде премахната и съобщение за грешка ще бъде изпратено обратно към изпращащата машина. По пътя, ако TTL намалее до 0, ще се получи същият резултат. И пътят на маршрутизиране на адреса на местоназначението ще се определя при всяко спиране, докато дейтаграмата преминава по мрежата.
  • Дейтаграмата достига до мрежовия слой на местоназначението.
  • Изчислението на контролната сума е извършено.
  • IP хедърът е изваден.
  • Съобщението преминава към приложението на горния слой.

РЕДАКТИРАНЕ

Едно приложение свързва сокет към своята крайна точка за предаване на данни, която е комбинация от IP адрес и сервизен порт. След това това свързване се използва, за да се определи към кое приложение на приложния слой трябва да отиде.

Например Приложение A предоставя UDP услуга на определен порт X. След това, когато Приложение A стартира, то ще се опита да се свърже с порт X. Ако не може да се свърже с него, защото портът се използва, операционната система ще повдигне грешка, която след това приложението трябва да обработи. Освен това в OSI архитектурата всеки слой разчита на слоя под него за действителното предаване на данни, добавяйки или предоставяйки специфична функционалност за собственото си предназначение.

Според RFC

Псевдо заглавката, концептуално префиксирана към UDP заглавката, съдържа адреса на източника, адреса на дестинацията, протокола и дължината на UDP. Тази информация осигурява защита срещу неправилно насочени дейтаграми. Тази процедура за контролна сума е същата като използваната в TCP.

За повече подробности относно спецификата, моля, вижте RFC протокола за потребителска дейтаграма

person One-One    schedule 06.12.2011
comment
Това не отговори на въпроса. Той пита как горните слоеве, като транспортния слой (или дори слоя на приложението), определят IP адреса, тъй като те очевидно нямат достъп до IP хедъра. - person Jonathan M; 06.12.2011
comment
Въпросът му е, тъй като горните слоеве очевидно знаят IP адреса, ясно е, че го получават отнякъде. Как го получават? - person Jonathan M; 06.12.2011
comment
@JonathanM Добавих още разяснения и връзка към RFC. - person One-One; 06.12.2011