Прежде всего, можно написать совершенно новый протокол без реализации сетевого драйвера. Для этого у вас есть необработанные сокеты . В настольных Windows они очень ограничены (найдите «ограничения»).
Это возможно, но не рекомендуется. Не изобретайте колесо и выбирайте между UDP и TCP, пока не убедитесь, что вам нужно что-то более сложное (но не более простое).
Для отправки данных по сети (в отличие от прямой кабельной связи между двумя компьютерами) вам необходим протокол IP. Для отправки ваших данных нужному приложению вам необходим транспортный протокол (UDP, TCP и другие). UDP является почти самым простым из возможных, потому что это было его главной целью при разработке. UDP обеспечивает дополнительную адресацию (номер порта в дополнение к IP-адресу для доставки ваших данных в правый сокет), границы пакетов (поле «длина») и необязательную контрольную сумму. Вот и все, и это минимальный список возможностей. Возьми его и реализуй все, что тебе нужно, по UDP.
Далее, если вам нужно быть уверенным, что ваши пакеты доставлены, а не тихо отброшены куда-то по пути (надежность), доставлены в правильном порядке, если вы хотите знать, что кто-то все еще слушает вас на противоположном конце ( подключение) и другие вещи, реализованные лучшими специалистами, с оборудованием, адаптированным к этой реализации, проверенным миллионами в течение десятилетий, с большим количеством документации, доступной почти на всех возможных платформах - используйте TCP.