@DVoropaev
Ставлю + к карме на хабре за ответы на вопросы

Где реализуется логика протокола TCP?

Рассмотрим такую ситуацию:

1)хост A отправляет сегмент данных хосту B
2)хост B НЕ получает данные и НЕ отправляет хосту A подтверждение
3)хост A НЕ получает подтверждение
4)хост A ПОВТОРНО отправляет сегмент данных хосту B
5)хост B получает данные и отправляет хосту A подтверждение
6)хост A получает подтверждение

Какая "часть хоста A" принимает решение о повторной отправки данных? Сетевая карта? Драйвер сетевой карты? Операционная система(ядро операционной системы)?
  • Вопрос задан
  • 187 просмотров
Решения вопроса 2
dimonchik2013
@dimonchik2013
non progredi est regredi
ОС, конечно

там же контрольный код, в разных ОС вычисляется по-разному
который Кевин Митник подобрал якобы

+ классика антискана портов - с задержкой ответа тоже ОС
Ответ написан
@Karpion
Для лучшего понимания - Вам надо изучить семиуровневую модель OSI и знать, что кроме IP, есть ещё IPX (который скорее мёртв, чем жив), NetBEUI (который ещё более мёртв) и ряд других протоколов.
Также надо знать, что кроме Ethernet - есть ещё пакетные сети типа Arcnet и TokenRing. А ещё есть модемные соединения, поверх которых надо запускать SLIP или PPP.
Отсюда видно, что ни сетевая плата, ни её драйвер - отслеживать доставку пакетов в контексте протокола TCP не могут.

Конкретно на Ваш вопрос:

Как правило, решение о повторной передачи пакета - принимает программный код, работающий в составе ядра. В Windows он называется "протокол TCP/IP", хотя там реально восемь протоколов. Во FreeBSD - это компонент ядра "inet".

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

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

Ну и для общего развития:
В древние времена программы для DOS типа KA9Q или UUCP - и сами занимались IP-маршрутизацией, и сами отслеживали доставку пакетов в рамках работы TCP-сессии. У DOS вообще была архитектура, слабо совместимая с работой в сети, поэтому решения тогдашних программистов сильно отличались от нынешних.

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

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы