Программирование сокетов Python и модель ISO-OSI - PullRequest
1 голос
/ 22 сентября 2009

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

Ответы [ 2 ]

4 голосов
/ 22 сентября 2009

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

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

3 голосов
/ 22 сентября 2009

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

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

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...