什么是网络?网络最初是由美国军事部门搞出来用于跨平台通信的协议。后来被广泛商用化,普及化。网络协议有两种:OSI七层协议,和TCP/IP协议。第一种是一帮标准化组织的科学家搞出来,将网络抽象成7层模型。分别为:应用层,表示层,会话层,传输层,网络层,链路层,还有物理层。具体的模型图如下所示:
设计的核心思想是各层之间都是相互透明的,每层只与对应的相同层打交道。这样一来方便各层的独立发展和改进,二来也有利于基础设备的建设,比如:对于链路层来说,不管物理层怎么变化,设备如何更新,只要提供的服务没有变化就可以。这7层模型分类固然好,讲网络抽象的非常完美,但是十分不利于商用。简单来说就是真正实施起来特别费劲,可能这也是科学家与工程师,理论与实际之间的差别吧。这直接导致了TCP/IP协议的普及。它只讲网络抽象成4层,分别为:应用层,传输层,网络层,网络接口层。实际模型如下:
因为这种分层特别适合于商用化,所以普及的特别快,目前全球的网络协议基本都用的是TCP/IP协议。虽然OSI协议没有普及,但并不代表它一点价值也没有,其实它对网络的抽象更加清晰,更加易于我们理解,比tcp/ip的4层笼统抽象要好很多,还是有必要了解它的。
TCP/IP也好,OSI协议也好,都只是规范化了网络层次。其实网络协议有很多,在tcp/ip的各层都有很多网络协议,比如以太网的传输协议:CSMA/CD,还有网络接口层的ARP与RARP协议,还有网络层的路由协议等。要详细的了解各层的协议还需要花费很多的时间,要阅读很多的文献,本人的观点是先了解个大概,等具体需要用某个协议的时候再去仔细查阅某个协议。
网络简单分为局域网和广域网。比如我们一个教研室电脑统一通过集线器和路由器相连来上网,这样就构成了一个局域网。中国地区的网络和美国地区的网络这就是广域网。在局域网中通信比较方便,速度也比较快,在广域网中通信速度比较慢,远达不到局域网中的网速。其实这种分类现在也不一定可靠。比如中国地区的教育网中网速可以达到很快,几乎和局域网中差不多,所以整个中国的教育网就是一个局域网。
局域网通过路由器相互连接,构成一个很大的广域网。我们发现在INTERNET上面上网时,每个联网的电脑都有一个IP地址,这就像我们每个人的身份证,在网络中独一无二,不然要是有重复的IP就会发现网络故障,因为无法准确传输数据了。上网的IP地址统一由各地区的ISP(电信运营商)发放,付钱给IP上网,不付钱就不给IP,然后你就没办法上网了。IP地址其实就分为两类:公有IP和私有IP。一般在局域网中的电脑多用的是私有IP,大多为192.168.*.*。在windows中DOS下输入ipconfig,在linux下输入ifconfig就可以看到自己的ip地址了。公有IP经Inter NIC所统一规划,有这种IP才可以上网,而私有IP或保留IP,不能直接联网,其主要用于局域网中。IP地址分有5类,如下:
A类:0.*.*.* ~ 127.*.*.*
B类:128.*.*.* ~ 191.*.*.*
C类:192.*.*.* ~ 223.*.*.*
D类:224.*.*.* ~ 239.*.*.*
E类:240.*.*.* ~ 255.*.*.*
私有IP分别在A,B,C三个类别中各保留了一段作为私有IP网段:
A类:10.0.0.0 ~ 10.255.255.255
B类:172.16.0.0 ~ 172.31.255.255
C类:192.168.0.0~ 192.168.0.0
局域网中我们都拥有一个私有IP,方便路由器讲数据传送给我们,路由器是一般有连个IP地址,一个是公有IP,用于与外部网络打交道,还有一个私有IP,用于与局域网内部打交道,私有IP一般为192.168.0.1,路由器怎么将数据传递给我们呢?这就涉及到了MAC地址,每一个以太网适配器(俗称网卡)都有一个固定的MAC地址(有的MAC可以修改),每个MAC地址都不一样,从网卡出厂时就被设置好了。数据在网络接口层传输的时候通过寻找源MAC地址,讲MAC数据包传输出去,路由器也是这样的,在路由器中,有一张动态变化的表格,对应局域网中MAC地址与IP地址的对应关系。当路由器接收到外部网络传来的数据时,通过将目标IP与表格中的IP对比,得知对应主机的MAC地址,然后将数据打包成MAC数据包,传输给我们。至于路由器内的MAC与IP对应的表格怎么生成的,这就要大名鼎鼎的ARP(网络地址解析)协议了,当路由器想要了解各台主机的IP分布时,就会向整个局域网发送出ARP数据包,各个主机接受到以后就返回自己的MAC地址给路由器。路由器讲获取的MAC信息记录到ARP table中,记录20分钟。其实不光是路由器有ARP table,局域网中每台电脑都会有个ARP table,方便各台电脑在局域网中通信。如何你是linux系统,你可以在终端中输入arp -n查看自己表中的信息。arp命令也可以设置固定MAC与IP对应。有兴趣的同学可以自己man一下arp。动手操作一下总是印象深刻一下的。
说完了ARP,我们来说一下route,就是路由,路由和路由器是不一样的,路由是一个表,路由器是一个硬件。每个联网的电脑都有一个路由表,由目标网络,网关,还有子网掩码和各标志位组成。在linux中我们可以输入route -n 来查看我们的路由表。一般局域网中的默认网关都是路由器。
还有一个ICMP协议一定要提一下,大家都用过PING命令吧。很多同学都希望在网络故障的时候打开终端ping一下试试。其实ping命令就是利用了ICMP协议来检查我们的网络状态的。ICMP全名是因特网信息控制协议。这是一个错误检查与报告的机制,基本最大的用处就是检查我们的网络连接状态了。其实它有很多类别,大家可以查阅详细资料去了解一下。
说过了网络层和网络接口层,我们来聊聊传输层,在传输层有两个重点协议,一个是面向连接的TCP协议,还有一个是面向无连接的UDP协议。我们常听到的三次握手就是说的TCP协议的连接过程,TCP协议能够保证数据包的可靠性和准确性,当然也不是100%的保证,我听师兄说面试的时候有人问TCP协议的三次握手的漏洞,要是我说的话,应该是进过了3次握手也不是100%确定一定连接成功了(著名的红军和蓝军模型就是说的这个)。UDP协议是面向无连接的,它只管发送数据,不管对方有没有接受到,由于少了连接的过程,所以比TCP协议更加有效率,直接表现在速度更快。比如一些对数据准确度要求不高的视频监控中就可以应用UDP协议。
说到TCP/UDP协议,不得不说通信端口,port。有个比喻很恰到,在网络世界中,IP相当于你的门牌号,TCP相当于是你家的楼房,各个服务就是每个楼层,端口号就是楼层号。每个服务都对应一个端口号,端口号最大可达65535(16位),小于1024以下的端口是固定端口,一般提供给许多知名网络服务使用,大于1024是可用户自行设置的。规定的端口和服务对应关系,我们可以在/etc/services中看到。SSH----22, FTP---21,WWW---80等。比如我们上qq的时候,我们应用tcp协议,找到腾讯服务器,对应相关端口号获取服务,然后腾讯服务器中在对应端口给我们提供服务,在将消息发送到客户端的对应端口,我们qq客户端程序接受消息,完成登录。
记得以前不懂网络的时候,一直以为防火墙是设置在网络中的一堵墙,可以阻挡一切危险。认为只要防火墙设的好,就可以阻挡100%的攻击。其实想错了,防火墙只是可以阻挡一些非法连接,和过滤一些不必要的IP访问,对应服务器提供的服务程序基本没有保护效果,如果服务程序有漏洞,或者黑客通过服务连接到服务器上这些情况,防火墙基本失效。换句话说即使没有任何漏洞的防火墙也不可能阻挡100%的攻击,除非该电脑不提供服务。
在linux中,查看网络情况可以用netstat命令,可以查看本机各个服务程序运行情况和各个端口情况。
再来说说DHCP,这是一种动态分配IP服务。现在几乎各大运营商都有提供DHCP服务,在学校上网,或者在公司上网,没有必要每次都输入固定ip上网,这样会把人整疯的,因为太不方便了,效率又低。DHCP就是解决分配IP的问题,由DHCP服务器给每一个想要上网的电脑分配一个IP地址,该IP不固定,随时动态变化,用户不需要关注自己的IP设置等,一切交给DHCP就OK。
还有DNS服务,就是域名解析服务,这个大家一般都知道,就是讲公司域名交给DNS服务器,然后返回公司对于的IP,这样特别方便,不是吗?其实自己也可以搭建DNS服务,只不过比较麻烦,有兴趣的同学可以试试。其实在ubuntu系的linux系统中,有个dnsmanager服务,它会自动根据用户的上网记录等建立小型的DNS表格在内存中,这样可以加快上网速度,因为无需再远程DNS解析了。其实好处远不止这样,它还提供局域网的电脑DNS服务,这样其实也可以加快其他电脑的上网速度,真的是特别特别优秀的程序。(有时间一定好好研究一下)
好了,今天就网络就先复习到这里吧!!!
最后来一张老师的萌萌表情