DHCP使用UDP作为其传输协议。客户端发送给服务器的DHCP消息被发送到众所周知的端口67 (UDP-Bootstrap Protocol和DHCP ),服务器发送给客户端的. DHCP消息被发送到端口68,那么DHCP可以使用TCP吗?
发布于 2020-01-07 14:04:55
DHCP不能使用TCP作为传输协议,因为TCP需要两个端点都有唯一的IP地址。当需要主机使用DHCP时,它没有一个IP地址,它可以从DHCP服务器中获取数据包,也没有DHCP服务器的IP地址。因此,它使用0.0.0.0
作为源IP地址,使用255.255.255.255
(广播)作为目标IP地址(这是用于DHCP的--DHCPv6存在类似的行为)。这些IP地址不是有效的主机IP地址,可以随时由多个客户端使用。因此,由于缺少更好的术语,TCP连接不会是“唯一的”。
发布于 2020-01-07 14:09:15
由于源没有IP地址(0.0.0.0),目标是每个人(255.255.255.255),所以很难看出如何识别特定的会话。但即使你可以,有什么好处呢?DHCP消息中的数据非常小(约300字节),因此可以很容易地容纳到单个段中。建立TCP会话的开销是不值得的。
UDP的重点在于简单的应用数据,不需要TCP的可靠性和流量控制。DHCP就是一个很好的例子。
发布于 2020-01-07 22:55:13
TCP不适用于DHCP(V4)有多种原因。
首先,TCP是面向连接的.TCP连接在两个特定主机之间定义。然而,当DHCP客户端第一次启动时,它不知道它想要与哪个主机(S)交谈。它的唯一选择是向本地网络上的所有主机广播DHCP发现消息。广播本质上不符合TCP的面向连接的特性,因为它不是1:1的关系。由于DHCP本质上是无连接的,所以UDP更有意义。
其次,在DHCP进程完成之前,DHCP客户端没有分配IP地址。即使DHCP客户端已经知道它想从哪个特定的DHCP服务器请求地址(通常它不知道),并且知道它的IP地址,它也无法打开与它的TCP连接,因为客户机还没有一个IP地址供服务器响应。当客户端有指定的IP地址时,DHCP的工作已经完成。
第三,虽然基本不像上述问题那么重要,但避免TCP也减少了一次所需的往返次数。典型的DHCP交换需要两次往返:发现(客户机->服务器)、提供(服务器->客户端)、请求(客户机->服务器)和ACK (服务器->客户端)。在TCP SYN和SYN连接设置消息开始时,设置TCP连接需要额外的往返。直到三路TCP握手的最终ACK消息才能在TCP连接上发送数据。
https://networkengineering.stackexchange.com/questions/64401
复制相似问题