本文转自迅为讨论群:http://www.topeetboard.com 1. 网络的基础知识在学习网络之前,需要学习一些基础知识,不少用户对于这个概念非常模糊,导致IP地址或者网络环境稍微有点变化,就无法完成基础实验。如果没有接触过这些概念,建议将这一小节好好研究一下。 局域网通信中会经常用到“同一网段”的概念。要弄明白这个概念需要结合IP地址以及子网掩码。 IP地址关于IP地址的理论,网络上有大量的文章,这里主要是介绍和实验中需要理解的几个要点知识。 如下图所示,使用ifconfig,可以查看Ubuntu系统下的IP,下图表面Ubuntu的IP地址是192.168.0.226。 再来看一下开发板的IP,如下图所示,在查看最小文件系统的etc文件可以看到默认的IP地址为192.168.1.230。 上图是没有打包编译的最小系统,如下图所示,是运行着的最小linux系统,也是可以查询和修改IP地址的。 最小系统在开发板上运行的时候,也可以使用vi命令来修改IP地址。 子网掩码子网掩码的查询和IP的查询方式一模一样。 如下图所示,使用ifconfig,可以查看Ubuntu系统下的子网掩码,下图表面Ubuntu的子网掩码是255.255.255.0。 再来看一下开发板的子网掩码,如下图所示,在查看最小文件系统的 etc/eth0-setting文件可以看到默认的子网掩码。 上图是没有打包编译的最小系统,如下图所示,是运行着的最小linux系统,也是可以查询和修改子网掩码。 最小系统在开发板上运行的时候,也可以使用vi命令来修改IP地址。 同一网段本小节主要介绍如何判断两个IP是不是在同一网段。如果通过计算得出Ubuntu系统的IP和开发板的IP不在同一网段,则需要修改开发板的IP。 单纯的两个IP不能直接拿来确认是不是在同一网段,必须结合子网掩码经过计算才能得出结论。 计算方法是:两个IP分别和相应的子网掩码做与运算,得出的结果相等则表明在同一网段。 Ubuntu系统的IP和子网掩码分别是:192.168.0.226和255.255.255.0 开发板的IP地址和子网掩码分别是:192.168.1.230和255.255.255.0 进行与运算需要转换为二进制 Ubuntu系统: IP:11000000 10101000 00000000 11100010 MASK:11111111 11111111 11111111 00000000 Result二进制:11000000 10101000 00000000 00000000 Result十六进制:192.168.0.0 开发板: IP:11000000 10101000 00000001 11100110 MASK:11111111 11111111 11111111 00000000 Result二进制:11000000 10101000 00000001 00000000 Result十六进制:192.168.1.0 对比上面两个十六进制结果,可以发现这两个例子中的IP地址并不在同一个网段。开发板需要重新根据路由器或者交换机来修改IP。 路由器网络参数查询如下图所示,作者的路由器地址为192.168.0.1,读者根据实际情况登陆路由器,路由器背面一般都有这个地址,如果没有查一下路由器的手册。 注意上图中WAN设置界面中的网关是192.168.1.1,这个是广域网的网关,实验中使用的是局域网的网关,需要选择“LAN口设置”再查找网关。 如下图所示,选择DHCP服务器,这里会有一个分配局域网中的IP区间。也就是说IP可以设置为192.168.0.220到192.168.0.250这个区间。 如下图所示,选择“LAN口设置”再查找,子网掩码为255.255.255.0。 另外在后面的NFS文件系统实验的时候需要上面的192.168.0.1这个地址,可以把这个地址看成局域网的网关,而不能使用WAN中的网关! 了解了IP地址,子网掩码,查看了路由器设置之后,首先可以确定子网掩码为255.255.255.0,然后IP地址可以处于192.168.0.220到192.168.0.250这个区间。大家可以在这个区间取一个地址来计算。 最后根据大家的实际情况,确认了IP地址和MASK地址之后,修改最小linux系统中的etc/eth0-setting文件,将它们的IP设置到同一网段! 2. 组建最小网络在网络不是很发达的时代,要是想联网玩游戏,会把两台电脑直接用网线连接在一起,通过设置IPV4,这两台机器就组成了局域网。 部分读者,由于没有路由器和交换机,或者部分网络绑定了IP和MAC地址,无法分配IP地址。但是教程中不少实验都需要将开发板和Ubuntu设置在同一网段,也就是处于同一个局域网中。这时用户可以直接将将PC机的网口和开发板的网口用网线直连,它们在物理层上就已经处在局域网中,然后经过简单的网络配置就可以实现和局域网一模一样功能。 另外介绍一点需要交叉网线的知识,交叉网线是古老的技术,现在几乎所有的网络都支持网线的翻转,软件会自动识别和匹配,只要使用一根标准的网线就可以了,不需要关心这个问题。 PC网络配置进入PC机的网络和共享中心,win7如下图所示,其它系统可以网上查找具体路径,单击进入“网络和共享中心”,单击选择本地连接,拔掉PC机的网线后,网络设置则如下图所示。 找到“本地连接”,单击弹出本地连接对话框之后,然后选择单击“属性”。在弹出本地连接属性对话框。需要配置IPV4,单击IPV4的设置,弹出IPV4设置的对话框。 然后强制设置两台机器在同一网段。 如下图所示,选择“使用下面的IP地址”然后设置IP和子网掩码以及网关。 IP地址:192.168.0.10 子网掩码:255.255.255.0 默认网关:192.168.0.1 单击确定,保存退出。 修改开发板设置并测试设置好之后需要将开发板的网络配置文件修改一下才能实现tftp传输文件。 IP地址设置为:192.168.0.11 子网掩码Mask设置为:255.255.255.0 网关Gateway设置为:192.168.0.1 修改之后,如下图所示。 修改之后,将开发板和PC的网口用一根网线连接,重启开发板,测试网络是否通畅。 如下图所示,启动最小linux系统,使用ping命令测试。 这里PC机的IP是192.168.0.10,开发板的IP是192.168.0.11 如上图所示,可以看到有数据发送和返回,开发板和PC机的网络已经设置好了。 虚拟机的设置虚拟机的网络模式需要设置为“启动自动连接”“桥接模式”,设置后启动Ubuntu。 Ubuntu开启之后,如果使用ifconfig查看的ip地址和前面PC的IP不在同一网段,可以手动设置IP地址,如下图所示。 单击右上角的“上传下传的图标”。在弹出框中单击“Edit Connnections...”。单击选择“Edit...”。如下图所示,选择“IPv4 Settings”,Method选择“Manual”,单击Add。 添加IP地址:192.168.0.12子网掩码:255.255.255.0网关:192.168.0.1 保存退出配置界面,完成之后Ubuntu终端中使用命令ifconfig命令查看网络,如下图所示。 测试最小网络前面分别设置了PC机、开发板、Ubuntu的网络,开启虚拟机,用网线将开发板和PC连接起来。 首先测试虚拟机Ubuntu和PC之间的网络,如下图所示,在Ubuntu终端中输入命令“ping 192.168.0.10”,Ctrl+c可以结束。注意,测试Ubuntu和PC之间的通信,需要用网线将开发板和PC连接起来,否则将无法ping通。 接着测试开发板和Ubuntu之间的网络,使用命令“ping 192.168.0.11”如下图所示。 通过了三者之间的测试,局域网就搭建起来了,可以在这个局域网中进行后面tftp和nfs等网络实验。 3. 搭建TFTP服务器和TFTP传输在前面的介绍控制led的程序的实现,需要把编译好的led可执行文件拷贝到文件系统里面,用make_ext4fs命令重新制作system.img文件系统,然后再烧写到iTOP-4412开发板,最后再运行led可执行文件。这种方式的缺点是每次修改了应用程序,都需要重新制作文件系统,在重新烧写文件系统,效率很低。 这一节先讲解如何通过TFTP来实现在线传输文件,先在虚拟机Ubuntu上搭建一个服务器,并在虚拟机Ubuntu上做客户端进行测试。 基本知识介绍 TFTP(Trivial File Transfer Protocol,简单文件传输协议),是一个基于UDP协议实现的用于在客户机和服务器之间进行简单文件传输的协议,适合于开销不大、不复杂的应用场合。TFTP协议专门为小文件传输而设计,只能从服务器上获取文件,或者向服务器写入文件,不能列出目录,也不能进行认证。 根据上面关于TFTP的介绍,实现TFTP我们需要搭建一个TFTP的服务器,iTOP-4412开发板当做客户端。 使用的虚拟机Ubuntu来当做服务器,下面我们先讲解一下服务器端的配置。 根据上面关于TFTP的介绍,实现TFTP最终需要搭建一个TFTP的服务器,iTOP-4412开发板当做客户端。 搭建服务器在的虚拟机Ubuntu上打开终端,首先输入命令:sudo apt-get install xinetd,安装xinetd。安装完xinetd,接下来输入命令安装tftp和tftpd:sudo apt-get install tftp tftpd。 然后建立TFTP的配置文件,使用命令:vi /etc/xinetd.d/tftp建立文件,写入下面的代码: service tftp { socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -s /var/tftpboot/ disable = no per_source = 11 cps = 100 2 flags = IPv4 } 这个文件在粘贴内容之后,必须按照格式严格对齐。 其中server_args设置的/var/tftpboot目录是tftp服务器的目录,TFTP客户端就是从这个目录里面获取服务器上的文件的。使用命令mkdir /var/tftpboot建立tftp服务器的目录。 然后设置/var/tftpboot的访问权限为777。输入:sudo /etc/init.d/xinetd restart命令重启xinetd服务。 服务器到这一步就搭建好了,后面来进行测试。 服务器测试本机测试:在/var/tftpboot下面建立一个文件test,在里面输入hello world,然后保存该文件。在启动另外一个终端。然后输入:tftp 127.0.0.1,如下图所示。 输入get test获取test文件,如下图: 在上图我们看到获取到test的信息13字节,然后输入q退出tftp,如下图:
|