消息如何在与Internet或LAN连接的计算机之间流动?

时间:2010-06-15 21:27:19

标签: asp.net

自从过去两年以来,我一直在.Net中进行Windows编程。 现在我转向网络编程,所以我只是坚持理解 网络编程的基础知识,谷歌搜索后我来到StackOverflow学习 来自你们所有人。

我的困惑是关于消息如何在分布式环境中的系统之间流动? 我的意思是假设我想向连接到LAN或Internet的系统发送消息"Hello", 然后发送消息的步骤是什么。

第二件事是假设我的系统是"A"并且我发送消息给通过线路连接的系统"B",因此消息如何在线上流动以及系统"B"如何读取它来自电线?

请有人以外行的方式解释我。

提前谢谢大家。

4 个答案:

答案 0 :(得分:1)

以下是对正在发生的事情的简短外行解释。您可以搜索任何突出显示的术语,以阅读有关整个堆栈中特定图层的更多信息。

  • 您的浏览器会创建一个HTTP数据包,其中包含所需页面的GET请求详细信息。
  • 然后要求OS网络堆栈通过TCP/IP协议将该数据包传递到目标计算机。
  • 如果浏览器给网络堆栈domain name(即http://google.com),网络堆栈会向其DNS服务器发出请求,要求将该域名解析为{{1} (即74.125.155.99) 如果DNS服务器没有在本地缓存该信息,则可能需要联系其他DNS服务器。
  • 一旦DNS服务器确定了IP地址并将其返回到OS网络堆栈,或者如果HTTP请求直接发送到IP地址,则网络堆栈将为该IP地址创建TCP / IP数据包并提供它到网卡驱动程序。
  • 网卡驱动程序将TCP / IP数据包包装在IP address数据包中。
  • 如果IP地址在本地网络上,则网卡驱动程序将尝试确定Ethernet frame中的目标计算机MAC address。如果成功,则它将通过直接寻址到该机器的MAC地址的网络线路发送以太网帧数据包。
  • 如果IP地址不在本地网络上,则网卡会将以太网帧数据包发送到本地网络网关机器的MAC地址。
  • 网关机器上的网卡驱动程序将打开TCP / IP数据包并将其交给该机器TCP / IP堆栈。
  • 网关机器TCP / IP堆栈将查看目标IP地址,并重复上述正确步骤,将数据包传送到目标机器或路由中的下一台机器。

答案 1 :(得分:0)

HTTP over TCP / IP是Web服务使用的。大多数通信使用TCP / IP及其协议。

您可以找到快速TCP/IP tutorial here和更详细的one here

答案 2 :(得分:0)

基本上,不是交换消息的计算机,而是这些计算机上的程序。所以你需要有两个程序或一个程序,但在两台机器上运行实例。现在,这里发挥了人们称之为套接字的功能。无论如何,您将需要有关套接字编程的详细阅读和基本代码示例,因此我将告诉您基本知识。套接字是网络抽象。这是不同计算机上的程序通信的事情。您使用套接字建立连接。然后基本上套接字可以被处理(几乎)像文件。您将字节(您的消息)写入套接字,另一端通过套接字接收消息。这只是一个基本的想法,下一步是找到一个用你想要的语言编写套接字编程的好例子

答案 3 :(得分:0)

您可以通过多种方式在网络上实现这一目标。我认为你能做到的最简单方法是使用ASP.NET Web Services。

但是你应该看看WCF,这已经成为过去几年在MS世界中这样的思维模式。使用WCF允许您使用许多不同的协议,只需更改xml配置文件。