客户端如何知道要使用哪种传输协议?

时间:2020-02-16 03:28:39

标签: networking tcp udp

让我们假设我在专用网络(192.168.10.10:9900)中的一台计算机上启动服务器。

现在,当从同一网络中的其他计算机发出请求时,客户端计算机(OS?)如何知道要使用哪个协议/服务器遵循哪个协议? [TCP或UDP]

编辑:如答案中所述,我基本上是在寻找一种默认协议,该协议将在没有任何传输协议信息的情况下由客户端使用。

4 个答案:

答案 0 :(得分:3)

TCP / UDP协议在传输层级别工作(TCP / IP MODEL),其主要区别在于TCP具有一种确保消息到达的方法,而UDP更轻便,因为它的优点是在信息传递中更快。 使用一种协议还是另一种协议总是由使用该协议的应用程序定义。

因此,您在IP地址为192.168.10.10:9900的专用服务器上放置的引用非常模糊,更确切地说,我们可以说我们在ip地址为192.168.10.10:9900的Apache Web服务器上运行(安装服务器时,默认端口为80,但可以在配置中更改。)

现在,Web服务器(Apache,IIS等)使用TCP协议工作,因为当客户端(计算机,手机等)通过浏览器(Chrome,Firefox等)查询页面时,理想的选择是问题是所有网站,而不仅仅是一些片段。这就是为什么这种类型的服务器首先选择并使用此协议的原因,因为它们最终希望结果是用户获得完整的页面,而与使用TPC所涉及的验证是否花费了几毫秒无关。

现在转到客户端。从任何浏览器(Chrome,Firefox等)访问网页时,用户都将使用TCP,因为该协议已在浏览器中配置为发送查询消息,并随后以相同的网站信息形式接收消息。

现在,将对任何客户端/服务器应用程序重复此行为。例如,要更改UDP端的应用程序类型,我们可以观察将任何设备连接到Wi-Fi网络时用于接收IP的DHCP服务的操作。在这种情况下,由于您希望设备尽可能快地连接到网络,因此该服务将寻求尽可能快的速度(而不是最可靠的服务),因此在连接到网络时使用UDP协议,在这种情况下使用任何设备WIFI网络,您将使用此协议发送消息。

最后,如果您想迅速了解特定应用程序使用的TCP / UDP协议的类型,则可以在Wireshark应用程序中进行搜索,该应用程序可以让您扫描离开设备的消息或显示在应用程序的不同层中使用的协议。

答案 1 :(得分:1)

没有任何理由会向您的服务器发出请求,那么为什么要关心它遵循的协议呢?客户端不只是随机连接事物,看看那里是否有服务器。因此,对任何客户端都没有任何影响。

答案 2 :(得分:0)

通常,客户端计算机将默认使用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,它将为您提供结果。

答案 3 :(得分:0)

此处的答案指向某些默认协议。并非如此,每当您启动一个应用程序时,例如说HTTP服务器,该服务器内部都有打开套接字的代码(可以是TCP或UDP),因为HTTP:80code创建的TCP协议一个TCP套接字。同样,对于其他网络应用程序,则取决于其要求使用哪种传输层协议(TCP Or UDP)。像DNS客户端一样,由于DNS:53主要通过UDP,因此会创建UDP套接字来连接到DNS服务器。 TCP和UDP都有不同的用例,优缺点。根据使用情况/优点/缺点,决定使用UDP / TCP来实现使用这两种服务器中的任何一个。