首页 > 编程知识 正文

打开端口上服务器的套接字出错,串口和io口的区别

时间:2023-05-04 10:00:35 阅读:156234 作者:1512

摘要

tcp套接字是一个端点。 实例是在特定TCP连接或等待状态的上下文中通过IP地址和端口定义的。

端口是虚拟化标识符。 定义与服务不同的服务端点,即会话标识符。

TCP套接字是非连接的,并且是特定连接的端点。

可以同时连接到服务端点。 中选择所需的族。 由于连接是通过本地和远程端点进行的,因此可以将流量路由到特定的服务实例。

对于给定的地址/端口组合,只有一个侦听器套接字。 水平。

论述

这是个有趣的问题,迫使我重新审视我认为我知道的东西。 你可能觉得“套接字”这样的名字不言自明。 它明显是为了唤起插入网线端点的图像,有很强的功能相似之处。 但是,在网络用语中,“插座”这个词承受了这么大的负担,需要慎重地重新检查。

从最广泛的意义上说,港口是入口或出口。 虽然没有在网络环境中使用,但他进一步强调法语单词jzdgs字面意思是门或网关,港口无论是运输数据还是大型钢铁集装箱都是运输的终点。

为了这个讨论的目的,我们只考虑TCP-IP网络的上下文。 OSI模型非常好,但从未完全实施,在高交通高压力条件下没有被广泛引入。

IP地址和端口的组合严格称为端点,有时也称为套接字。 这个使用方法是从最初的TCP标准RFC 793开始的。

TCP连接由两个端点AKA定义。 插座。

注意到,端点(套接字)的网络地址和端口标识符使地址/端口不能完全识别套接字(后面将详细描述)。

的目的是区分特定网络地址上的多个端点。 端口可以说是虚拟化的端点。 此虚拟化允许在单个网络接口上同时连接多个连接。 套接字对(由客户端IP地址、客户端端口号、服务器IP地址和服务器端口号组成的四对套接字)指定两个唯一标识internet上每个TCP连接的端点。 (TCP-IP插图第1卷,模糊的长筒袜(W.Richard Stevens ) )。

在大多数c派生语言中,TCP连接是使用套接字类实例上的方法建立和操作的。 更高级的抽象,通常在NetworkStream类的实例中操作,但通常公开对套接字对象的引用。 对编码器来说,此套接字对象似乎表示连接。 因为连接是使用套接字对象的方法创建和操作的。

在C#中,要建立与现有侦听器的TCP连接,请首先创建TCP客户机。 如果不是TCP客户机的构造函数,请使用缺省值。 本地端点以一种或另一种方式定义。 然后调用连接方法来处理创建的实例。 此方法需要一个描述另一个端点的参数。

所有这些都让人有点困惑,让我相信插座是一个连接,这是胡说八道。 我在这个误会下为冥想发愁,直到失眠毛巾提出这个问题。

在进行了大量的阅读和思考之后,我确信上节课TcpConnection构造函数将采用两个参数。 本地端点和remote endpoint .也许可以支持一个论点。 remoteendpoint对于本地端点来说默认值是可以接受的。 这在多宿主计算机上是未知的,但是可以通过选择到远程端点的最短路径的接口并使用路由表来解决歧义。

其他方面也将加强透明度。 IP地址和端口组合无法识别套接字。 [.]TCP使用所有四个值(包括本地地址和外部地址)分解传入的段。 目标IP地址、目标端口号、源IP地址和源端口号。 TCP无法仅通过查看目标端口来确定获取传入段的进程。 此外,在“指定端口号”上接收传入连接请求的“各种”端点中,只有监听的端点。 (第255页) TCP-IP插图第1卷,模糊的长筒袜(W.Richard Stevens ) ) ) )。

正如您所看到的,网络服务不仅可能,而且很可能具有多个具有相同地址/端口的套接字,但是特定的地址/端口组合只有一个侦听器套接字。 典型的库实现表示用于创建和管理连接的套接字类。 这是非常不幸的事情。 因为会引起混乱,这两个概念被广泛混淆。

因为Hagrawal不相信我(见评论),所以这是一个真正的例子。 连接到web浏览器http://dilbert.com,netstat -an -p tcp .输出的最后六行包含两个示例,说明地址和端口不足以唯一标识套接字。 192.168.1.3 (我的工作站)和54.252.94.236:80 (远程HTTP服务器)之间有两个不同的连接TCP 192.168.1.6324054.334

TCP 192.168.1.6324154.252.94.236336080 syn _ sent

TCP 192.168.1.63242207.38.110.62336080 syn _ sent

TCP 192.168.1.63243207.38.110.62336080 syn _ sent

TCP 192.168.1.6416165.54.225.1683360443 established

因为套接字是连接端点,所以有两个套接字具有地址/端口组合。 207.38.110.62:80具有两个地址/端口组合54.252.94.236:80。

>我认为Hagrawal的误解是因为我非常谨慎地使用了“识别”一词。我的意思是“完全、明确和独特地识别”。在上面的示例中,有两个端点具有地址/端口组合。54.252.94.236:80..如果您只有地址和端口,那么您就没有足够的信息来区分这些套接字。没有足够的信息鉴定插座。

增编

RFC 793第2.7节第2段说连接完全由两端的一对套接字指定。本地套接字可以参与到不同外部套接字的许多连接。

从编程的角度看,这个套接字定义是没有帮助的,因为它与套接字不一样。对象,它是特定连接的端点。对于程序员来说,这个问题的受众大多是程序员,这是一个重要的功能差异。

参考文献TCP-IP演示了第一卷协议,W.Richard Stevens,1994 Adison Wesley

,南加州大学信息科学研究所

,插座的定义,Joel M.Winett,林肯实验室

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。