ICMP如何不使用端口,而TCP / IP呢?

问题描述 投票:-1回答:1

对于诸如ICMP的协议,它不需要端口。那么,为什么各种TCP和UDP应用程序都需要为其分配端口?仅具有一个端口,然后将诸如应用程序名称之类的内容路由到正确位置的缺点是什么?例如,代替“ 3306”,它将进入一个端口并具有application="mysql"标签?

networking port icmp
1个回答
1
投票

端口是某些传输层协议的地址,特别是TCP和UDP使用端口号。 TCP和UDP使用相同范围的端口号(0到65535),因为它们各自使用16位无符号整数作为端口号,但是它们是相同的端口。 TCP端口12345与UDP端口12345是同一端口。其他传输协议使用其他寻址,或者根本不使用任何寻址。例如,这是[RFC 793, Transmission Control Protocol定义端口的方式:

允许单个主机中的许多进程使用TCP同时,TCP提供了一组每个主机中的地址或端口。

ICMP不是传输协议,它是IP的组成部分。这是

[RFC 792, Internet Message Control Protocol

声明的方式:

ICMP,使用IP的基本支持,就好像它是更高级别的协议,但是,ICMP实际上是IP的组成部分,并且必须由每个IP模块实施。

它回到网络层,以及每个层如何选择将层数据报的有效负载发送到哪里。例如,以太网头具有“以太网类型”字段,该字段告诉以太网将以太网帧的有效负载发送到哪里。不同的协议将在以太网模块中注册。 IPv4使用以太类型0x800,而IPv6使用以太类型0x86DD。 Here is the list of registered Ether Types

IPv4具有协议字段(IPv6使用Next Header字段表示相同的内容),它告诉它将数据包有效负载发送到哪里。 ICMP是协议号1,UDP是协议号17,TCP是协议号6。一个协议将在IP模块中注册,以告知该协议将数据包的有效负载发送到何处。 Here is the list of registered protocol numbers

以相同的方式,某些传输协议允许应用程序向传输协议注册,以便传输协议知道将传输数据报的有效负载发送到哪里。例如,默认情况下,HTTP服务器将为其端口80向TCP注册,但是可以对其进行修改。

© www.soinside.com 2019 - 2024. All rights reserved.