- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在尝试使用 C++ 和 QT 作为 GUI 来实现 Telnet 客户端。我不知道如何处理 telnet 协商。每个 telnet 命令都以 IAC 开头,例如
IAC WILL SUPPRESS_GO_AHEAD
以下是我处理谈判的方式。
我的问题描述如下:
IAC WILL SUPPRESS_GO_AHEAD
IAC WILL ECHO
我应该如何处理这种情况?处理两个请求还是只处理最后一个?
最佳答案
是的,允许针对不同的选项发送多个协商,而无需在每个协商后同步等待响应。
实际上,即使没有收到回复,每一方都尝试继续(如果您决定等待响应,可能会在超时后),这很重要,因为根据 RFC 存在合法情况。当不应该或不应该回复时,另一方可能会出于任何原因忽略该请求,而您对此无能为力。
您需要考虑服务器发送的两个协商请求,因为它们都是有效请求(当然,您可以选择拒绝一个或两个)。
我建议您在注意到它们时立即处理它们(无论“处理”在您的情况下是什么意思),以免服务器在决定等待您的回复时卡住。
Daniel J. Bernstein 在 RFC 1143 中介绍了一种可能的解决方法.它使用有限状态机 (FSM),并且对协商循环非常稳健。
合规服务器(合规客户端也是如此)在连接开始,并且在 DO 或 WILL 请求被 WILL 或 DO< 确认之前,不认为它们已启用/strong>分别回复。
当然,并非所有服务器(或与此相关的客户端)都正常运行,但是您无法预料到对等方可能出现的所有行为不当的方式,因此只需假设所有选项都被禁用,直到请求启用它们和 回复是肯定的。
我在这里假设您实际要问的是服务器如何向您发送一个 255 字节作为数据,而您不会将其误解为 IAC 控制序列(反之亦然,您应该如何将 255 字节作为数据发送到服务器,而不会将其误解为 telnet 命令)。
答案很简单,服务器(和相反方向的客户端)发送 IAC 后跟另一个 255 字节,而不是单个字节 255,因此实际上将所有值加倍255 是数据流的一部分。
在通过网络接收到 IAC 后接 255 后,您的客户端(以及相反方向的服务器)必须在其返回的数据流中将其替换为单个数据字节 255。
这也包含在 RFC 854 中.
关于telnet - 处理 Telnet 协商,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40066726/
问题 调用 InitializeSecurityContext 时,我应将什么值传递给TargetName参数? 修改后的背景 我正在调用 InitializeSecurityContext 函数:
尝试让信号器启动并运行。我不断从服务器返回 2 个错误: GET negotiate url 返回 500 内部服务器错误 XMLHttpRequest 无法加载 http://localhost:1
我使用的是 Windows XP Pro SP3。我想在我的代码中使用 SSPI 函数。我编译了我的代码,没有错误。 我将安全包设置为用于协商,这是推荐的。 当我启动我的程序时,Negotiate 无
我正在尝试使用 C++ 和 QT 作为 GUI 来实现 Telnet 客户端。我不知道如何处理 telnet 协商。每个 telnet 命令都以 IAC 开头,例如 IAC WILL SUPPRESS
我正在使用 SignalR 2.0。在我的 VS 2012 上本地运行时一切正常。但是当我在 IIS 上发布站点时,它会中断。该站点已加载,但其中一个脚本返回 404 Not Found。脚本有点像。
我在 MS Azure 上配置了一个实例,并为域实现了 SSL 证书。当我测试性能(在 3G 上)时,我注意到 SSL 协商同时发生在两个请求上,这(不必要地)延长了过程并导致 0.6 秒的时间完成。
我有以下问题。 操作系统:CentOS 6.6 PHP:5.5 Curl: 7.43 编译 当我执行“curl -V”时,我得到以下信息: curl 7.43.0 (x86_64-unknown-li
有一个私有(private)网络服务器(支持 https),我需要经常在上面读取/设置一些信息。我做了一些java代码来自动完成。当我使用 Chrome 访问它时,第一次连接很慢(可能 5 秒),但持
我使用的是 IIS7,我们所有的文件都是通过 HTTPS 提供的。在查看瀑布 View (WebPageTest) 时,我注意到对每个文件进行 SSL 协商需要一些时间。有没有一种方法可以配置服务器或
我有一个简单的 SMTP 客户端,我正在尝试向其添加 TLS 支持。我不确定客户端发出“STARTTLS”命令后会发生什么。大多数来源(包括 RFC 本身)将其描述为 TLS session 的协商,
我一直在尝试在 IIS 托管的网站中使用 service worker 来缓存站点的一些静态内容。该站点是使用 Windows 身份验证的内部应用程序。我已经能够在没有太多麻烦的情况下注册和运行 se
我开始修补 Azure SignalR,并遇到了协商触发器问题。我关注了this微软官方指南: 这是我的代码: 本地.settings.json { "IsEncrypted": false,
Index.cshtml @{ ViewBag.Title = "Index"; } $(function () { var connection = $.connection('
Index.cshtml @{ ViewBag.Title = "Index"; } $(function () { var connection = $.connection('
我正在使用 openssl 正常连接到 SMTP 服务器(未加密),发送 STARTTLS 命令,协商 SSL 加密,然后与加密 session 交互。 这是我正在使用的命令(通过 telnet):
我正在为 iOS 进行 unix 服务器 ssh 模拟。在谈判过程中,我遇到了很多障碍,并且仍在与这些障碍作斗争。最新的一个是关于 SSH2_MSG_KEX_DH_GEX_REPLY 数据包数据,我在
我们有两个连接(作为 .NET/Windows 客户端)到 IBM MQ 端点(假设是非 Windows)。 我们使用 SSL,它由一对证书(客户端和服务器)支持并在 Windows 证书存储中正确标
我读到 ejabberd 建议使用 STARTTLS 协商来实现通信实体之间的安全连接。当我安装 ejabberd 时,默认情况下它带有 TLS 证书。 那为什么要买证书安装呢?既然我们有默认证书,从
您好,我正在尝试使用 JAVA 和 spring 设置 SSO。为此,我正在使用此文档:http://docs.spring.io/spring-security-kerberos/docs/1.0.
从阅读 Microsoft docs在使用 SignalR 进行身份验证时,使用不记名 token 进行身份验证的唯一方法似乎是将其发送到 WebSocket 连接上的查询字符串中。 在检查 Sign
我是一名优秀的程序员,十分优秀!