networking - 客户端如何知道使用哪种传输协议?
问题描述
假设我在我的专用网络 (192.168.10.10:9900) 中的一台计算机上启动了一个服务器。
现在,当从同一网络中的其他计算机发出请求时,客户端计算机(OS?)如何知道要使用哪个协议/服务器遵循哪个协议?[TCP 或 UDP]
编辑:正如答案中提到的,我基本上是在寻找一个默认协议,在没有任何传输协议信息的情况下客户端将使用该协议。
解决方案
TCP / UDP协议工作在传输层级别(TCP / IP MODEL),其主要区别在于TCP具有确保消息到达的方法,而UDP更轻,因为它的优点是信息传递更快。一种或另一种协议的使用始终由将使用它的应用程序定义。
因此,您在 ip: 端口 192.168.10.10:9900 的私有服务器上的引用非常模糊,更准确地说,我们可以说我们有一个 Apache Web 服务器在 ip: 端口 192.168.10.10:9900 上运行(端口为安装服务器时默认为 80,但可以在配置中更改)。
现在 Web 服务器(apache、IIS 等)使用 TCP 协议工作,因为当客户端(计算机、手机等)通过浏览器(Chrome、Firefox 等)访问页面时,理想的情况是所有网站,而不仅仅是一些片段。这就是为什么这类服务器首先选择并使用该协议的原因,因为他们寻求最终的结果是用户获得完整的页面,而不管是否在使用 TPC 所涉及的验证中牺牲了几毫秒。
现在去客户端。用户从任何浏览器(Chrome、Firefox 等)访问网页时都将使用 TCP,因为该协议已在浏览器中配置以发送查询消息并随后接收具有相同表单网站信息的消息。
现在,任何客户端/服务器应用程序都将重复此行为。例如,要更改 UDP 端的应用程序类型,我们可以观察 DHCP 服务的运行情况,这些服务用于在将任何设备连接到 Wi-Fi 网络时接收 IP。在这种情况下,此服务寻求尽可能快(而不是最可靠的),因为您希望设备尽快连接到网络,因此使用 UDP 协议,在这种情况下,连接到WIFI 网络,您将使用此协议发送消息。
最后,如果您想及时了解特定应用程序使用的 TCP/UDP 协议类型,您可以搜索Wireshark应用程序,该应用程序允许您扫描离开设备的消息或显示不同层使用的协议应用程序。
推荐阅读
- javascript - 如何将数据从子组件传递到父组件
- sql-server - 选择列表中的“ProjectShipping.id”列无效,因为它既不包含在聚合函数中,也不包含在 GROUP BY 子句中
- angularjs - Webpack - 如何捆绑 CommonJS 模块 (module.export)
- laravel - Laravel - 5.8 一对多关系返回 null
- python - 这个 Python 技巧有什么不明显的问题吗?
- scala - HList 上的类型级约束,提取函数域
- android - 出于数据绑定的目的,在 LiveDatas 中构建分层数据的好方法是什么?
- r - 对具有某些要求的行进行分组
- python - 循环遍历车号列表以计算每辆车的转向角平均值
- python - 如何创建一个函数等待表达式为真,然后返回其中的一部分