网络协议 TCP/UDP/ICMP 的区别

Posted

技术标签:

【中文标题】网络协议 TCP/UDP/ICMP 的区别【英文标题】:Differences between network protocol TCP/UDP/ICMP 【发布时间】:2016-06-10 03:35:19 【问题描述】:

我有一个关于网络协议的问题。当我接收到数据包进行解码时,我如何确定它是 TCP 还是 UDP 还是 ICMP?

有没有字节数的符号可以用它知道吗?

【问题讨论】:

我认为这在很大程度上取决于不同层使用的协议。例如,在第 4 层中,UDP 的开销将低于 TCP,它还取决于操作系统和网络堆栈。 @Hani 如果您使用的是 TCP 协议,为什么要问这个问题?您正在接收 TCP,期间。你甚至没有收到数据包,只是一个字节流。你的问题没有意义。 @EJP,原来的问题很不一样,但是被编辑了。 @RonMaupin 我不明白这与它有什么关系。我的评论指的是我发布它时的问题,并且它已经处于这种状态了几个小时。 @EJP,我的意思是 OP 关于使用 TCP 的评论是针对原始问题提出的,它更有意义。在新的、完全不同的问题中,这没有意义。我真的认为应该提出一个新问题,而不是将问题编辑为与原始问题不相似的内容。 【参考方案1】:

IPv4 数据包标头有一个协议字段,它告诉您数据包负载中的协议。

使用 IPv6 会稍微复杂一些。如果没有 IPv6 扩展标头,IPv6 数据包 Next Header 字段将告诉您同样的事情。如果有 IPv6 扩展标头,则需要按照标头链获取最后一个标头,以确定有效负载类型。

【讨论】:

我使用 IPv4 但我有多个数据包来确定它们是 TCP 还是 UDP 我怎么知道区别? mac地址,源.etc有稳定的数字吗?谢谢你 你似乎很困惑。 MAC 地址是二层地址,它们只存在于二层帧中,其中有一个 EtherType 字段告诉你三层数据包中是哪个三层协议。 IP(第 3 层协议之一)数据包将是第 2 层帧的有效负载,并且它具有告诉您第 4 层段中的第 4 层协议的协议字段。 TCP、UDP、ICMP 等(第 4 层协议)段是第 3 层数据包的有效负载。您需要了解 OSI 层、每种类型的标头以及一层如何封装下一层。 但是如果我有这样的数据包怎么办 4500 003A 45644000 4006 DF05 0A01 012B 0A01 0128 BFCF 3A98 E938 B9C8 E8A0 761F 8018 050A 0005 FF310005 2C31 6865 6C6C 6C6C 6F0A SPAN>

以上是关于网络协议 TCP/UDP/ICMP 的区别的主要内容,如果未能解决你的问题,请参考以下文章

TCP/IP, UDP, ICMP, ARP协议族简介--纯图慎点

tcp/ip (网络通讯协议)

网络层之IP协议详解

TCP/IP协议 网络层

网络协议IP协议ARP协议RARP协议

20TCP IP 网络协议基础入门--IP网际协议