Введение
Давайте поговорим об этом действительно забавным протоколом, смешно – странное слово для сетевого протокола, но я постараюсь сделать мою точку зрения. Я попробую тот же подход, что и мой последний пост на TCP сделать простой сценарий Python и посмотрите на Wireshark Отказ Давайте начнем.
Предварительные условия
- Python 3.
- Wireshark
Удп рукопожатие, то что?
Да, на мой взгляд UDP (Протокол DataGram UserAmam) едва ли протокол, я знаю, что я не компьютерный парень, но все же это не так, кажется, не соответствует этой категории протокола. Позвольте мне уточнить, что UDP чрезвычайно полезен Я просто говорю, что запчасти, связанные с коммуникацией, не следят за слишком многими правилами, как в TCP Отказ Вместо того, чтобы просто сказать это, я постараюсь показать вам, почему я сказал это, давайте сделаем наш простой сценарий Python. Опять же, это может быть сделано с любым языком программирования, я выбираю Python для простоты.
Наше Server.py
будет содержать наши чрезвычайно упрощенные UDP Сервер:
# UDP server.py import socket def main(): # creating the socket sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # binding the socket to the address, in our case the localhost sock.bind(('localhost', 7456)) print("Just here on 7456...") # start reading data, # I'm just interested on a single message from the client and it will be # pretty short so don't need more than this data, address = sock.recvfrom(1024) print(f"FROM: {address} DATA: {data}") if __name__ == "__main__": main()
Обратите внимание на разницу здесь с TCP В этом случае он просто начнет слушать без необходимости звонить Socket.Listen ()
или Socket.Accept ()
Посмотрите на этот вопрос на Переполнение стека Да, я использую Stackoverflow в качестве ссылки.
Как насчет клиента, здесь мы идем:
# UDP client.py import socket def main(): # create the socket sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) print("Sending data...") # and ready to go sock.sendto(b"Hello Lola", ('localhost', 7456)) if __name__ == "__main__": main()
Мы создаем розетку и готовые к отправке сообщения, учитываете, что вам все равно, если сервер прослушивает, если есть сервер, вы просто отправляете и надеетесь на лучшее.
Как это похоже на Wireshark?
В последнем посте мы видели, что один TCP Соединение с одним сообщением генерирует несколько обратно и вперед между клиентом и сервером. Я рекомендую вам взглянуть на шаги, которые вы берете, чтобы понюхать движение в этом случае, в этом случае единственное отличие состоит в том, что фильтр в этом случае является udp.port.port.
.
Теперь давайте посмотрим это, но с UDP Это будет смешно, потому что хорошо … Посмотрим:
Чего ждать? Только одно сообщение, клиент просто буквально отправил сообщение, ему все равно, если сервер слушает, потому что снова не так, как слушать UDP Отказ
Да, эта картина очень хорошо объясняет ситуацию, также была сделана с ExalidRaw. Вы знаете, продвижение проектов с открытым исходным кодом 😃.
Итак, В УДП нет рукопожатия , глядя на отправленную пакет, мы видим, что не слишком много, чтобы увидеть:
Только порт назначения, поисковый порт, длина исходного порта, UDP и контрольная сумма, и хорошо, чтобы пойти, отправил это сообщение !!
Использует случаи UDP
Вы можете задаться вопросом: «Так зачем мне это нужно?». Хорошо учитывая, что UDP Имеет низкую задержку, у нее есть довольно интересные случаи использования. Я позволю вам эти две ссылки ниже, чтобы вы могли их исследовать:
Это все на сегодня 👋.
Библиография
Оригинал: “https://dev.to/gealber/udp-3pno”