【问题标题】:Backend process while creating Webrequest in c# [closed]在c#中创建Webrequest时的后端进程[关闭]
【发布时间】:2014-11-14 05:43:47
【问题描述】:

我想知道从 C# 执行 webRequest 时将要执行的完整过程。我正在使用加密狗连接到互联网。实际上,为我准备标头的后端发生了什么?我的 .net 应用程序如何知道我的互联网提供商提供的公共 IP 地址(将在 whatismyip 中显示)?我的公共 IP 是否存储在系统中的任何位置?我只是不想知道完整的过程,例如数据包传输或与套接字相关的事物/DNS。它们是如何构建的以及它们如何通信?

我是网络编程的新手。也欢迎好的教程链接。请帮助我理解这一切。

【问题讨论】:

  • 这个问题归结为“网络是如何工作的?”这对于 IMO 的 Stack Overflow 来说太宽泛了。
  • 很抱歉..你能给我任何好的教程的链接吗?
  • 投-ve 票不是解决方案,但乐于助人的人可以像“lboshuizen”一样提供简短的描述和有用的链接。谢谢..
  • 我没有投反对票,但这既太宽泛了而且要求站外资源...

标签: c# networking httpwebrequest ip-address webrequest


【解决方案1】:

只是一个教程”在这里对你没有帮助。

您的问题的核心:网络和更具体的 TCP/IP。

确实,您的 IP 地址存储在您的系统中并绑定到您的网络接口。但这只是故事的一部分。

如果您通过 tcp 网络发送数据,您的数据会打包在一个具有

的数据包中
  1. 包含服务器(目标)IP 地址的标头
  2. 和您的地址(来源)。
  3. 其他几件事

所以服务器确实知道你的 IP 地址。它必须这样做,否则它将无法向您发送回复。

如果您在执行 NAT(地址转换)的路由器后面,则您的本地 IP(例如 192.168.1.1)将被它替换。使其成为一个 5 步过程

  1. 路由器收到对服务器的请求
  2. 路由器将您的 ip 替换为公共 ip。
  3. 请求被转发到服务器。
  4. 回复是从服务器发送到路由器 ip。
  5. 路由器转发回复给你的本地ip

在通用路由器上,转换是一个选项,应该显式配置。然而,在 ISP 提供的(消费者)路由器上,每个用户几乎总是只有 1 个公共地址,NAT 是标准的,因为不允许使用私有地址(192.168/16、10/8),因此不能通过 Internet 路由。

就您的情况而言,这就是 tcp。数据包如何通过网络从路由器到服务器并返回是它自己的故事;-)

Here is a primer on tcp/ip

你的电脑如何知道服务器的IP。在这里,DNS 发挥了巨大的分布式查找系统的作用,将主机名转换为 IP 地址。堪比电话簿。 标准讲座DNS and BIND

进行网络请求会增加一层复杂性。涉及的协议是 HTTP(S)。这里涉及很多,但起点可以是A HTTP beginner's guide

HTTP 与传输无关。您的计算机决定与服务器通信的传输方式。还有几个网络协议,但 tcp-ip (几乎)是默认的。

【讨论】:

  • 非常感谢您的回复。这真的很有帮助。特别是router replaces your ip with public ip.。我们可以应用一些机制使路由器无法替换它的ip吗?
猜你喜欢
  • 2018-10-27
  • 1970-01-01
  • 1970-01-01
  • 2011-01-15
  • 1970-01-01
  • 1970-01-01
  • 2015-11-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多