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

C# 在c中创建Webrequest时的后端进程#,c#,networking,httpwebrequest,ip-address,webrequest,C#,Networking,Httpwebrequest,Ip Address,Webrequest,我想知道从C#执行webRequest时要执行的完整过程。我正在使用加密狗连接到internet。实际上,后端中为我准备标题的是什么?我的.net应用程序如何知道由我的internet提供商提供的我的公共IP地址(将在whatismyip中显示)?我的公共IP是否存储在系统中的任何位置?我只是不想知道完整的过程,比如包传输或套接字相关的东西/DNS。它们是如何建造的,它们是如何沟通的 我是网络编程新手。好的教程链接也欢迎。请帮助我理解所有这些事情。“只是一个教程”在这里对你没有帮助 问题的核心:

我想知道从C#执行webRequest时要执行的完整过程。我正在使用加密狗连接到internet。实际上,后端中为我准备标题的是什么?我的.net应用程序如何知道由我的internet提供商提供的我的公共IP地址(将在whatismyip中显示)?我的公共IP是否存储在系统中的任何位置?我只是不想知道完整的过程,比如包传输或套接字相关的东西/DNS。它们是如何建造的,它们是如何沟通的

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

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

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

事实上,您的IP地址存储在您的系统上,并绑定到您的networkinterface。但这只是故事的一部分

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

  • 包含服务器(目标)ip地址的标头
  • 和你的地址(来源)
  • 还有几件事
  • 所以服务器确实知道您的ip地址。它必须这样做,否则它将无法向您发送回复

    如果您位于执行NAT(地址转换)的路由器后面,您的本地ip(例如192.168.1.1)将被替换。使其成为一个5步流程

  • 路由器接收到对服务器的请求
  • 路由器用公共ip替换您的ip
  • 请求被转发到服务器
  • 应答从服务器发送到路由器ip
  • 路由器将回复转发到您的本地ip
  • 在通用路由器上,转换是一个选项,应该显式配置。然而,在ISP提供的(消费者)路由器上,每个用户几乎总是只有一个公共地址,NAT是标准的,因为不允许私人地址(192.168/16,10/8),因此不能通过internet路由

    就你的案子而言,这就是tcp。数据包如何在网络上从路由器流到服务器,然后再流回来,这是它自己的故事;-)

    您的电脑如何知道服务器的ip。DNS将扮演一个巨大的分布式查找系统的角色,将主机名转换为ip地址。类似于电话簿。 关于这个的标准讲座

    提出webrequest增加了一层复杂性。涉及的协议是HTTP(S)。这里涉及的内容很多,但可以提供一个起点


    HTTP对传输是不可知的。您的计算机决定与服务器通信的传输方式。还有更多的网络协议,但tcp ip(几乎)是默认协议。

    这个问题归结为“网络是如何工作的?”这对于堆栈溢出来说太宽泛了,我很抱歉。你能给我一个好教程的链接吗?给一个-ve投票不是一个解决方案,但是一个乐于助人的人可以像“lboshuizen”那样给我一个简短的描述和有用的链接。谢谢。我没有投反对票,但这太广泛了,需要非现场资源。非常感谢你的回复。这真的很有帮助。特别是
    路由器用公共ip替换您的ip。
    。我们是否可以应用某种机制,使路由器无法替换其ip?