在c#中创建Webrequest时的后端进程

时间:2014-09-19 15:13:30

标签: c# networking httpwebrequest ip-address webrequest

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

我是网络编程新手。也欢迎良好的教程链接。请帮助我理解所有这些事情。

1 个答案:

答案 0 :(得分:1)

" 只是一个教程"在这里不会帮到你。

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

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

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

的数据包中
  1. 包含服务器(目标)的IP地址的标头
  2. 和您的地址(来源)。
  3. 其他几件事
  4. 所以服务器确实知道你的IP地址。否则它无法向您发送回复。

    如果您位于执行NAT(地址转换)的路由器后面,则您的本地IP(例如192.168.1.1)将被替换。将其分为5个步骤

    1. 路由器收到服务器请求
    2. 路由器用public ip替换你的ip。
    3. 请求被转发到服务器。
    4. 回复从服务器发送到路由器ip。
    5. 路由器转发回复给您本地IP
    6. 在通用路由器上,转换是一个应该明确配置的选项。然而,在ISP提供的(消费者)路由器上,每个用户几乎总是只有1个公共地址,NAT是标准的,因为私有地址(192.168 / 16,10 / 8)是不允许的,因此不会通过互联网。

      对于你的案子来说,简而言之。数据包如何通过网络从路由器流向服务器并返回其自身的故事; - )

      Here is a primer on tcp/ip

      您的电脑如何知道服务器的IP。这里有DNS发挥巨大的分布式查找系统,将主机名转换为IP地址。可与电话簿相媲美。 有关此DNS and BIND

      的标准讲座

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

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