网络上两台主机相互通信的过程及路由器的背靠背实验两台主机在同网段和不同网段的通信过程见图7-1、2一、同网段主机A在应用层上的操作:1、首先我们应该知道:计算机区分各种不同的应用程序和服务就是依靠端口号进行的。平时访问一个网站的网页,访问的就是该网站的HTTP80端口。而不论主机或服务器运行什么操作系统,只要其使用TCPIP协议,各种服务端口号是一样的,这就是我们为什么能在WINXP的系统上能打开用UNIX作的服务器上的网站。同时为了让对方能给我们回信息,我们也需要有一个接口来接收信息。这个端口不能和已存在的系统服务端口冲突。通常大于1024。(也就是前面讲过的套接字)通常在WIN系统下能用NETSTAT查看端口。图7-5是一个我们自己的主机WEIDX访问某网页的套接字情况。2、图7-1中,假设A向B传送一个大文件,WIN系统会随机地在A上打开一个大于1024的端口(假设1336),而会话的目的端口是B上的NETBIOS-SSN端口,即139,它在局域网内负责通过网上邻居进行文件拷贝时,该端口负责接收文件。看图7-6。在应用层,主机A的应用程序将该文件转换为源端口是1336目的端口是139的数据流,准备向B发送。此时会话建立。准备建立完后向下层传送。二、主机A在传输层的操作1、首先对上层发来的数据做分段。其分段的原因有三个:其一一个大文件的数据流,如果被封装成一个巨大的数据包和数据帧,当在网络上传输的时候,其他网络应用就无法进行了。必须等到该数据帧传送完毕。其二,一个数据包在网络上传递,经常面临各种原因造成的错误,比如线路受到磁场干扰。如果此时数据包错误则还要重传。无法忍受。其三,各种网络传输介质及网络设备都有最大传输单元的限制,不允许在网络上出现巨大的包。综上所述要给数据流分段,即每个分段称为segment2、在本例中,分段完后要添加控制信息。在传输层有两个数据传输协议,一个是TCP另一个是UDP,一般网上邻居传数据时,用的是TCP。此层为每一个SEGMENT加上一个TCP头。其中最主要的就是加上源端口,目的端口和顺序号。其中源端口和目的端口表示数据是由哪个协议或应用程序发出的,送到哪个应用程序及协议。顺序号是该数据段在整个数据流中的位置。3、但是此层无法封装数据段为哪台主机发出送往哪台主机于是用到下一层三、主机A在网络层的操作。IP地址做为逻辑地址,虽不能表示网络设备的实际位置,但它能逻辑的标明远程设备,从而解决物理地址无法表示远程设备的弊病。通过此层添加了IP头,标明了源IP,及目的IP。这样主机B收到PACKET后就知道是哪台主机发来的了。在此层中有一个出名的协议被称作是ARP协议,(地址解析)此协议会向网络发出ARP的广播,做出主机IP与MAC的对应。否则数据包到了二层,无法完成封装。这样才能传送数据。每台主机中都有一张ARP表,用ARP–A可查看。ARP表中的条目大约存活20分钟。四、以上的数据最后变成数据帧被传到物理层的线缆上。变成电信号。交给交换机A进行处理。五、此时主机A的数据传递工作完毕。见表7-1六、交换机A接到此数据后。看目的MAC,查自己的MAC表,然后把数据从连接该MAC的接口中送出。没有对数据帧做任何修改。(如果该交换机MAC表中没有MAC则洪泛这与总线型网络类似了)主机B上的工作一、首先核实收到的数据帧的MAC是不是自己的,并了解该帧是来自于哪里。如果是,就拆卸该帧头从而得到数据包,向上层传送二、网络层,确认IP是自己的,并了解来自于哪个逻辑结点,拆掉包头,得到数据段。三、在传输层上,会对所收到的数据段进行确认,即向主机A发送确认信息。同时会拆掉TCP头,并按每个数据段的顺序号将分段组成数据流(如果顺序号不对,则要求对方重发)最后将数据流发送到TCP头中指定的目的端口。由那个端口的应用程序或协议来处理。本例中是主机B中的操作系统中的NETBIOS的139端口收到的数据进行处理。位于不同网段的主机之间的通信过程从图7-2中我们可以看出主机A与FTP服务器B并不在同一个网段,主机A不可能通过ARP解析到B的MAC地址。主机A必须依靠网络中的路由器来所数据包路由到目的网络。所以首先主机A要在自己的配置里输入默认网关。此网关可以是路由器的接口也可以是代理服务器的某网卡的IP,总之谁能为主机访问其他网络提供可能,默认网关的IP就写谁。见图7-7,本例中没有代理服务器,所以直接指向路由器。同时图中显示了还要写上DNS。(此可以为本网段内的DNS,也可以是ISP那得来的)这样的话,我们的ARP就能获得网关的IP,所以能把我们的数据送出去。一、众所周知,FTP的端口是20和21,其中21是常用的FTP文件传输接口,所以本例中主机A会把文件转换成以FTP服务器B的21号端口为目的端口,主机A的一个随机端口如:1700作为源端口。见图7-9二、在本地的封装和前面讲过的一样,不同的就在于网络层的ARP解析到的目的MAC地址不是FTP服务器的,而是网关的。所以在二层封装时,目的MAC为路由器的E0接口。本地封装见表7-3三、数据帧到了交换机上,不做任何修改。四、路由器A上的工作:路由器收到数据帧后,拆掉帧头,根据数据包包头中目的IP,查看自己的路由表,在本例中,查到了,到218.69.252.0这个网段必须经过路由器B,路由器接下来会用NAT把不能在互联网上使用的192.168.1。2转换成可以使用的S0接口地址即:218.68.45.2。然后为数据包重新封装帧头,源MAC改成路由器S0口的MAC,目的MAC改成路由器B的S0接口的MAC。五、路由器B的工作:当路由器B收到此帧后,拆掉帧头,查数据包,根据目的IP,查找自己的路由表,发现正好此FTP服务器连接在自己的E0口上。于是路由器B会发出一个ARP查找FTP服务器的MAC。接到回应后,路由器B会以自己E0接口的MAC为源MAC以FTP服务器的MAC作为目的MAC重新封装数据帧。并把此帧交给交换机B。六、交换机B查看自己的MAC表,对数据帧做无修改转发。七、在FTP服务器上,会依次校验,将整合后的数据流交给21号端口处理。记住:在此过程中自始至终没有改变的是IP地址。改变的是MAC。MAC只能表明直连的网络设备,构建实验室环境:两根电缆要连接得正确,必须一根是公头(DTE电缆),另外一根是母头(DCE电缆)。图1-5展示了两根V.35标准的串行电缆的图片,左边的是具有公头的DTE电缆,右边是具有母头的DCE电缆。V.35是最常用的串行电缆连接类型的标准之一。注释实际中的DTE和DCE电缆都在电缆上打印出“DTE”或“DCE”的字样,以方便大家辨认,而不像图1-5中显示的那样什么都没有标示。DCE方应配置速率:在s0端口配置(config-if-Serial0)#clockrate2048000填加IP地址:在接口模式下#ipadd+IP地址+掩码实验1、在路由器A上的操作routerenrouter#conftrouter(config)#hostA//修改路由器的名字为AA(config)#inS0A(config-if)#ipadd1.0.0.1255.0.0.0A(config-if)#clock2048000A(config-if)#noshExit//配置串行接口,由于A为DCE端所以配置时钟A#wr//保存配置2、在路由器B上的操作routerenrouter#conftrouter(config)#hostB//修改路由器的名字为Bb(config)#inS0b(config-if)#ipadd1.0.0.2255.0.0.0b(config-if)#noshExit//配置串行接口A#wr//保存配置验证:ping对方通为成功,不通失败showinterface