2009-09-22 2 views
1

Я отправляю пакеты с одного компьютера на другой. Я использую python socket socket.socket(socket.AF_INET, socket.SOCK_DGRAM ). Нужно ли нам заботиться о порядке приема пакетов? В слоях модели ISO-OSI ниже транспортного уровня обрабатываются все пакеты связи. Все слои ISO-OSI присутствуют в программе? Или некоторые из них присутствуют в операционной системе? На локальном хосте я получаю все пакеты в порядке. Будет ли это иметь какое-то значение через Интернет?Программирование сокетов Python и модель ISO-OSI

+0

Почему AF_INET? Зачем ограничивать старый стандарт IPv4? Гораздо лучше разрешить имя в адресе и использовать AF_INET или AF_INET6, в зависимости от вашего адреса. – bortzmeyer

ответ

2

Чтобы ответить на ваш вопрос, сразу же, если вы используете SOCK_STREAM, то вы на самом деле с помощью TCP, который является реализация транспортного уровня, который делает заботиться упорядоченности и целостности пакетов для вас. Похоже, это то, что вы хотите использовать. SOCK_DGRAM - это фактически UDP, который не заботится о какой-либо целостности для вас.

Нужно ли соблюдать порядок, в котором получены пакеты? В слоях модели ISO-OSI ниже транспортного уровня обрабатываются все коммуникации пакетов. Все слои ISO-OSI присутствуют в программе?

Просто, чтобы очистить это вверх, в модели ISO-OSI, все слои ниже ручки транспортного уровня отправки пакета в одного от одного компьютера к другому, и не «понимают» понятие (это не относится к ним).

В этой модели есть еще один слой (уровень сеанса над транспортным уровнем), который отвечает за определение поведения сеанса. Именно этот слой решает, нужно ли создавать вещи для предотвращения переупорядочения, обеспечения целостности и т. Д.

В современном мире модель ISO-OSI является скорее идеалистическим шаблоном, чем реальной моделью. TCP/IP - это фактическая реализация, которая используется почти везде.

В TCP/IP транспортный уровень - это тот, который определяет роль какого-либо сеанса или нет.

4

SOCK_DGRAM означает, что вы хотите отправлять пакеты по UDP - без гарантии заказа, без гарантии приема, без гарантии отсутствия повторения. SOCK_STREAM будет подразумевать TCP - без гарантии границ пакета, но (если только соединение не было отключено ;-) гарантией порядка, приема и отсутствия дублирования. TCP/IP, сетевая модель, которая выиграла сердце и душу каждого живого практиковавшегося и сделавшего Интернет, не соответствует стандарту ISO/OSI - стандарту, разработанному в редакторе и никогда не выигрывающему в реальном Мир.

Интернет, поскольку она живет и дышит, является TCP/IP полностью. Не полагайтесь на тесты, выполненные в локальной сети с малой задержкой, как в ЛЮБОМ случае, представляя, что произойдет там в реальном мире. Добро пожаловать в настоящий мир, BTW, и, удачи (вам понадобится ! -).

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