Я отправляю пакеты с одного компьютера на другой. Я использую python socket socket.socket(socket.AF_INET, socket.SOCK_DGRAM )
. Нужно ли нам заботиться о порядке приема пакетов? В слоях модели ISO-OSI ниже транспортного уровня обрабатываются все пакеты связи. Все слои ISO-OSI присутствуют в программе? Или некоторые из них присутствуют в операционной системе? На локальном хосте я получаю все пакеты в порядке. Будет ли это иметь какое-то значение через Интернет?Программирование сокетов Python и модель ISO-OSI
ответ
Чтобы ответить на ваш вопрос, сразу же, если вы используете SOCK_STREAM, то вы на самом деле с помощью TCP, который является реализация транспортного уровня, который делает заботиться упорядоченности и целостности пакетов для вас. Похоже, это то, что вы хотите использовать. SOCK_DGRAM - это фактически UDP, который не заботится о какой-либо целостности для вас.
Нужно ли соблюдать порядок, в котором получены пакеты? В слоях модели ISO-OSI ниже транспортного уровня обрабатываются все коммуникации пакетов. Все слои ISO-OSI присутствуют в программе?
Просто, чтобы очистить это вверх, в модели ISO-OSI, все слои ниже ручки транспортного уровня отправки пакета в одного от одного компьютера к другому, и не «понимают» понятие (это не относится к ним).
В этой модели есть еще один слой (уровень сеанса над транспортным уровнем), который отвечает за определение поведения сеанса. Именно этот слой решает, нужно ли создавать вещи для предотвращения переупорядочения, обеспечения целостности и т. Д.
В современном мире модель ISO-OSI является скорее идеалистическим шаблоном, чем реальной моделью. TCP/IP - это фактическая реализация, которая используется почти везде.
В TCP/IP транспортный уровень - это тот, который определяет роль какого-либо сеанса или нет.
SOCK_DGRAM
означает, что вы хотите отправлять пакеты по UDP - без гарантии заказа, без гарантии приема, без гарантии отсутствия повторения. SOCK_STREAM
будет подразумевать TCP - без гарантии границ пакета, но (если только соединение не было отключено ;-) гарантией порядка, приема и отсутствия дублирования. TCP/IP, сетевая модель, которая выиграла сердце и душу каждого живого практиковавшегося и сделавшего Интернет, не соответствует стандарту ISO/OSI - стандарту, разработанному в редакторе и никогда не выигрывающему в реальном Мир.
Интернет, поскольку она живет и дышит, является TCP/IP полностью. Не полагайтесь на тесты, выполненные в локальной сети с малой задержкой, как в ЛЮБОМ случае, представляя, что произойдет там в реальном мире. Добро пожаловать в настоящий мир, BTW, и, удачи (вам понадобится ! -).
- 1. Программирование сокетов Python
- 2. Программирование сокетов с помощью python
- 3. Программирование сокетов Python с потоками
- 4. Программирование сокетов Mininet в python
- 5. Программирование оконных сокетов с Python
- 6. Программирование сокетов Python - обработка исключений
- 7. Программирование сокетов Python и интерфейсы светодиодов
- 8. Программирование сокетов UDP в Python
- 9. Программирование многопоточных сокетов в python
- 10. Программирование сокетов Python для Webserver
- 11. программирование неблокирующих сокетов в python
- 12. Программирование сокетов и массивы
- 13. Программирование связывания и сокетов
- 14. Программирование веб-сервера и сокетов
- 15. программирование сокетов
- 16. Программирование сокетов
- 17. Программирование сокетов
- 18. Программирование сокетов
- 19. Программирование сокетов для avr
- 20. Программирование и петли сокетов Groovy
- 21. Программирование сокетов и динамический IP
- 22. javafx, программирование сокетов и потоки
- 23. Программирование и потоки Java-сокетов
- 24. Программирование асинхронных сокетов и F #
- 25. Программирование сокетов Tcp/IP в python
- 26. Программирование сокетов в счетчике python не работает
- 27. Программирование сокетов для мобильных телефонов в Python
- 28. Программирование сокетов в python - отметки времени
- 29. Программирование сокетов Python с несколькими потоками
- 30. программирование сокетов в клиенте
Почему AF_INET? Зачем ограничивать старый стандарт IPv4? Гораздо лучше разрешить имя в адресе и использовать AF_INET или AF_INET6, в зависимости от вашего адреса. – bortzmeyer