Я бы предположил, что ProtocolType.IP
открывает сокет " raw IP ", другими словами, он просто выбрасывает необработанные байты в сеть в виде IP-пакетов, а не проходит через уровни протокола TCP или UDP.
В отличие от TCP, вы не получите гарантированную доставку пакетов, пакеты могут поступать не по порядку и / или пакеты могут дублироваться. TCP обрабатывает все это как часть своего протокола.
Почти во всех целях я ожидаю, что вы должны использовать ProtocolType.Tcp
или ProtocolType.Udp
, если только вы не делаете какие-то низкоуровневые сетевые вещи, пишущие свой собственный транспортный протокол.