客户端如何知道要使用哪种传输协议?
How does the client knows which transport protocol to use?
假设我在我的专用网络 (192.168.10.10:9900) 中的一台计算机上启动服务器。
现在,当从同一网络中的其他计算机发出请求时,客户端计算机(OS?)如何知道要使用哪个协议/服务器遵循哪个协议? [TCP 或 UDP]
编辑:如答案中所述,我基本上是在寻找一个默认协议,在没有任何传输协议信息的情况下,客户端将使用该协议。
任何客户端都没有理由向您的服务器发出请求,那么它为什么要关心它遵循的协议呢?客户端不只是随机连接到事物以查看那里是否有服务器。所以它对任何客户都没有任何影响。
一般情况下,客户端计算机会默认使用TCP协议。如果您使用 UDP 协议模式启动服务器,那么当您使用 curl -XGET 192.168.10.10:9900/test-page
时,它会返回一个 curl: (7) Failed to connect to 192.168.10.10 port 9900: Connection refused
错误。你可以试一下,使用nc -lvp 9900 -u
,它会给你那个结果。
TCP/UDP 协议工作在传输层级别(TCP/IP 模型),其主要区别在于 TCP 具有确保消息到达的方法,而 UDP 更轻,因为它的优点是速度更快信息传递。 一种或另一种协议的使用始终由将使用它的应用程序定义。
因此,您在 ip: 端口 192.168.10.10:9900 上对私有服务器的引用非常模糊,更准确地说,我们可以说我们在 ip: 端口上有一个 Apache Web 服务器 运行 192.168.10.10:9900(安装服务器时默认端口为80,可在配置中更改)
现在 Web 服务器(apache、IIS 等)使用 TCP 协议工作,因为当客户端(计算机、单元 phone 等)通过浏览器查阅页面时 (Chrome, Firefox, etc), 理想的事情是所有的网站而不只是一些片段。这就是为什么这类服务器首先选择和使用该协议的原因,因为他们寻求最终的结果是用户获得完整的页面,而不管使用 TPC 所涉及的验证是否多牺牲了几毫秒。
现在转到客户端。用户从任何浏览器(Chrome、Firefox 等)访问网页时将使用 TCP,因为该协议已在浏览器中配置为发送查询消息并随后接收具有相同形式的消息 网站信息.
现在将对任何客户端/服务器应用程序重复此行为。例如,要更改 UDP 端的应用程序类型,我们可以观察在将任何设备连接到 Wi-Fi 网络时用于接收 IP 的 DHCP 服务的运行情况。在这种情况下,此服务寻求尽可能快(而不是最可靠),因为您希望设备尽快连接到网络,因此使用 UDP 协议,在这种情况下,任何设备连接到WIFI 网络,您将使用此协议发送消息。
最后,如果您想快速了解特定应用程序使用的 TCP/UDP 协议类型,您可以在 Wireshark 应用程序上搜索,该应用程序允许您扫描离开设备的消息或显示应用程序不同层中使用的协议。
这里的答案指向一些默认协议。不是这样的,无论何时启动一个应用程序,比如 HTTP 服务器,服务器的内部都有打开套接字的代码(可以是 TCP 或 UDP),因为 HTTP:80
是 code
创建的 TCP 协议一个 TCP 套接字。类似地,对于其他网络应用程序,它取决于他们的要求使用哪种传输层协议(TCP Or UDP)
。就像 DNS 客户端将创建一个 UDP 套接字来连接到 DNS 服务器,因为 DNS:53
主要是通过 UDP。 TCP 和 UDP 都有不同的用例、优点和缺点。根据 UDP/TCP 的用例/优点/缺点,决定使用它们中的任何一个来实现服务器。
假设我在我的专用网络 (192.168.10.10:9900) 中的一台计算机上启动服务器。
现在,当从同一网络中的其他计算机发出请求时,客户端计算机(OS?)如何知道要使用哪个协议/服务器遵循哪个协议? [TCP 或 UDP]
编辑:如答案中所述,我基本上是在寻找一个默认协议,在没有任何传输协议信息的情况下,客户端将使用该协议。
任何客户端都没有理由向您的服务器发出请求,那么它为什么要关心它遵循的协议呢?客户端不只是随机连接到事物以查看那里是否有服务器。所以它对任何客户都没有任何影响。
一般情况下,客户端计算机会默认使用TCP协议。如果您使用 UDP 协议模式启动服务器,那么当您使用 curl -XGET 192.168.10.10:9900/test-page
时,它会返回一个 curl: (7) Failed to connect to 192.168.10.10 port 9900: Connection refused
错误。你可以试一下,使用nc -lvp 9900 -u
,它会给你那个结果。
TCP/UDP 协议工作在传输层级别(TCP/IP 模型),其主要区别在于 TCP 具有确保消息到达的方法,而 UDP 更轻,因为它的优点是速度更快信息传递。 一种或另一种协议的使用始终由将使用它的应用程序定义。
因此,您在 ip: 端口 192.168.10.10:9900 上对私有服务器的引用非常模糊,更准确地说,我们可以说我们在 ip: 端口上有一个 Apache Web 服务器 运行 192.168.10.10:9900(安装服务器时默认端口为80,可在配置中更改)
现在 Web 服务器(apache、IIS 等)使用 TCP 协议工作,因为当客户端(计算机、单元 phone 等)通过浏览器查阅页面时 (Chrome, Firefox, etc), 理想的事情是所有的网站而不只是一些片段。这就是为什么这类服务器首先选择和使用该协议的原因,因为他们寻求最终的结果是用户获得完整的页面,而不管使用 TPC 所涉及的验证是否多牺牲了几毫秒。
现在转到客户端。用户从任何浏览器(Chrome、Firefox 等)访问网页时将使用 TCP,因为该协议已在浏览器中配置为发送查询消息并随后接收具有相同形式的消息 网站信息.
现在将对任何客户端/服务器应用程序重复此行为。例如,要更改 UDP 端的应用程序类型,我们可以观察在将任何设备连接到 Wi-Fi 网络时用于接收 IP 的 DHCP 服务的运行情况。在这种情况下,此服务寻求尽可能快(而不是最可靠),因为您希望设备尽快连接到网络,因此使用 UDP 协议,在这种情况下,任何设备连接到WIFI 网络,您将使用此协议发送消息。
最后,如果您想快速了解特定应用程序使用的 TCP/UDP 协议类型,您可以在 Wireshark 应用程序上搜索,该应用程序允许您扫描离开设备的消息或显示应用程序不同层中使用的协议。
这里的答案指向一些默认协议。不是这样的,无论何时启动一个应用程序,比如 HTTP 服务器,服务器的内部都有打开套接字的代码(可以是 TCP 或 UDP),因为 HTTP:80
是 code
创建的 TCP 协议一个 TCP 套接字。类似地,对于其他网络应用程序,它取决于他们的要求使用哪种传输层协议(TCP Or UDP)
。就像 DNS 客户端将创建一个 UDP 套接字来连接到 DNS 服务器,因为 DNS:53
主要是通过 UDP。 TCP 和 UDP 都有不同的用例、优点和缺点。根据 UDP/TCP 的用例/优点/缺点,决定使用它们中的任何一个来实现服务器。