前置机上如何地址转换_?一台主机,两个QQ,如何通信?

同一台主机不同的进程之间进行通信、需要经过TCP/IP的四个层吗?

我在同一台电脑上打开了两个qq软件、让这两个qq进行收发消息、那么数据会经过IP层、数据链路层吗?我觉得应该不经过、因为同一台电脑ip是相同的、不会经过路由器转发、也不会通过链路层传输、直接在本机上就可以实现传输了吧?如果是这样、那么具体数据是怎么流动的呢?比如第一个qq进程发出的消息数据是怎么进行封装之后到达第二个qq进程的呢?有经过传输层封装吗?

37f8b6f6c2cae2907a3517e5b416de03.png

这个问题可以拆分成两个独立的问题:

同一台主机不同的进程之间是如何通信的?

同一台主机不同的QQ进程之间是如何通信的?

心急吃不了热豆腐,不要痴想一口吃成相扑运动员。

同一台主机不同的进程之间是如何通信的?

内存管道

先来看一个场景,在文件管理器中,可以将一个文件拖拽到Word文件到Office Word里,Office Word会自动打开。这个就是一个典型的不同进程之间的通信。文件管理器(File Manager)这是一个进程,Office Word是另外一个进程,它们分别有自己独立的进程号。

文件管理器将文件的绝对路径,以及操作类型“Read and Open”放入(Write)一个管道(Pipe),然后通知Office Word进程号有管道消息需要取走(Read),Office Word读取消息,获得文件的绝对路径以及操作类型,读取文件并打开文件。

在上述的通信过程中,并没有TCP/IP协议什么事,双方通过共享的内存管道来交换信息。但是并不是所有的进程之间都采用内存管道来交换信息。本机运行一个FTP文件服务器,在本机上使用客户端下载文件,这就需要TCP/IP协议的介入了。

TCP/IP

先来回忆一下,我们是如何下载文件的?首先我们要在地址栏输入:ftp://xxxx,对吗?这里的“xxxx”有可能是主机名,也有可能是域名,也有可能是服务器的IP地址。无论输入的是什么,无论才是DNS域名解析,还是WINS主机名解析,最终FTP客户端得到的信息都是FTP服务器的IP地址,加黑部分是理解这个问题的关键中的关键!客户端得到的并不是服务器的进程号!

难道不能通过文件拖拽的方式下载文件吗?不能,我试过!不相信的同学可以试试看。至于为何不能,我的理解是,采用TCP/IP协议传输,不仅可以满足本地进程之间的通信的需求,同时可以满足不同主机之间通信的需求。而采用内存管道传输,只能满足前者,却无法满足后者。所以FTP的文件传输只会使用TCP/IP来传输。

接下来的问题就是FTP服务器与FTP客户端之间的数据包,会下沉到TCP/IP第几层?

既然客户端与服务器是使用IP地址来识别对方,数据包肯定会下沉到IP层。IP层是路由层,路由调度员一看,咦,目的IP不就是我自己吗?然后将IP报文从发送缓存区,Copy到接收缓冲区,然后等待TCP层的宠幸,然后一路上浮到应用进程。

欲知同一台主机不同的QQ进程之间是如何通信的,且听下回分解。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值