2016-02-26 3 views
-5

У меня вопрос о сетевых протоколах. Когда я получаю пакеты для его декодирования, как я могу определить, есть ли его TCP или UDP или ICMP?Различия между сетевым протоколом TCP/UDP/ICMP

Есть ли какой-либо знак байтового номера, я могу его использовать?

+0

Я думаю, что это сильно зависит от того, какие протоколы используются в разных слоях. Например, на уровне 4 UDP будет иметь меньше накладных расходов, чем TCP, а также будет зависеть от ОС и сетевого стека. –

+0

Я использую TCP protcol – Hani

+0

@Hani Если вы используете протокол TCP, почему вы задаете вопрос? Вы получаете TCP, период. Вы даже не получаете пакеты, а только поток байтов. Ваш вопрос не имеет смысла. – EJP

ответ

0

Заголовок пакета IPv4 имеет поле протокола, которое сообщает вам, какой протокол находится в полезной нагрузке пакета.

С IPv6 это немного сложнее. Поле Next Header пакета IPv6 сообщит вам то же самое, если нет заголовков расширений IPv6. Если есть заголовки расширения IPv6, вам нужно будет следить за цепочкой заголовков, чтобы получить последний заголовок, чтобы определить тип полезной нагрузки.

+0

Я использую IPv4, но у меня есть несколько пакетов, чтобы выяснить, если они TCP или UDP – Hani

+0

Как я могу узнать разницу? есть ли стабильное число для MAC-адреса, source .etc? thank u – Hani

+0

Вы, кажется, очень смущены. MAC-адреса являются адресами уровня 2, и они существуют только в кадрах уровня 2, где есть поле EtherType, чтобы сообщить вам, какой протокол уровня 3 находится в пакете-3. Протокол IP (один из протоколов уровня 3) будет полезной нагрузкой кадра layer-2, и у него есть поле Protocol, которое сообщает вам, какой протокол уровня 4 находится в сегменте уровня 4. Сегмент TCP, UDP, ICMP и т. Д. (Протокол уровня 4) является полезной нагрузкой пакета уровня 3. Вам нужно узнать о слоях OSI, заголовках для каждого типа и о том, как один слой инкапсулирует следующий слой. –

Смежные вопросы