您的位置:首页 > 理论基础 > 计算机网络

小c学网络(1)--网络与数据传输之网络层

2018-03-28 17:39 190 查看
对于网络的认识,让我们先从这两个问题入手:

网络是什么?

网络传输数据怎么传输?

网络

从硬件层面上看,网络主要是由一些通用的,可编程的硬件互连而成的。包括电脑和现在的智能手机。

从抽象层面来看,网络分为边缘部分和核心部分。边缘部分就是主机,核心部分就是连接这些主机的设备。



数据传输

计算机网络是个非常复杂的系统。为了说明这一点,可以设想一种最简单的情况:连接在网络上的两台计算机要互相传送文件。而要互相传送文件,就必须要有一条传送数据的通路。两台电脑之间如何互相识别?识别之后又如何建立数据通路?建立之后如何发送?发送后如何接受?接受后如何识别?这都是需要考虑的问题。由此可见,相互通信的两个计算机系统必须高度协调工作才行,如果一次性将这些问题笼统的概括在一起,那这种协调是相当“复杂”的。所以就必须采用一种“分层的机制”,将庞大而复杂的问题,转化为若干较小的局部问题,而这种“分层”一般叫做网络的体系结构。

试想一下,如何任意两台计算机的网络体系结构不一,那两台计算机之间如何建立数据连接?如何实现通信呢?所以,所有的计算机网络体系结构必须一样才能实现相互之间的互连!由此,国际标准化组织ISO成立了一个专门机构研究该问题,然后提出了开放系统互连基本参考模型OSI/RM(Open Systems Interconnection Reference Model),简称OSI。

可是由于OSI的七层协议体系结构既复杂又不实用,所以就出现了TCP/IP的四层协议,它是以OSI的七层协议为基础,将其七层进行了再修饰而成为四层。



物理层

物理层在最底层。

物理层考虑的是怎样才能在连接各种计算机的传输媒介上传输数据比特流,也就是01比特位。也就是说当计算机建立连接物理连接后,传送的比特流数据是依赖物理的传输媒体,比如双绞线,同轴电缆,光缆等传输媒介。至于数据流它是怎么传输的,速率有多快, 带宽是多少,里面涉及的内容我们现在不用关心,我们只要知道数据是通过这样一种媒介传送的就可以了。这就是我所理解的物理层,它就是用来传送比特流数据的。

4000

数据链路层

数据链路层在倒数第二层,物理层的上层。

数据链路层将IP数据包封装成帧,帧分两种格式,一个是:ppp帧,一个是:MAC帧

ppp帧

ppp帧主要是在广域网上进行点对点传输。它在物理层传输是比特流,也就是010101传输。需要加标识位。



首部:

F:7E ,标志开始和结束,实现透明传输,一个帧在物理层发送时,必须得标识帧的开头和结尾,这样才能获得一个完整的帧

A:地址

C:控制字段

FCS:帧检测序列,来确认帧数据是否完整,是否有错误

MAC帧

Mac帧主要是在局域网上进行多点对多点传输。它在物理传输是使用曼彻斯特(Machester)编码的信号。不需要加标识位。



网络层

网络层在倒数第三层,在数据链路层上。

网络层将上层数据封装成IP数据包。



首部:

首部长度:IP数据包首部长度,固定大小位20字节

总长度:IP数据包总长度,首部+数据部分

标识:分成的切片的标识数字一样就代表属于同一个IP报文,根据片偏移合并成一个完整的IP数据包

标志:MF=1,表示还有分片,MF=0,表示没有分片了,是最后一个分片

片偏移:某片相对于原IP报文的位置除以8,子分片的片偏移=子片偏移+父片偏移

生存时间(TTL最大跳转次数):TTL值默认位255,每跳转一次减一,为0此包就被抛弃

协议:上层协议类型,如TCP=6,UDP=17

首部检验和:可以重新计算出标志,片偏移量,因为分片后的IP数据包的标志和片偏移量都会改变

IP分组转发

IP是主机的虚拟地址,而mac地址才是主机的硬件地址,而物理层传输得找到对方的mac的地址才能进行转发。如何通过主机IP找到主机的mac地址呢?这就是ARP(Adress Resolution Protocol)。

IP如何解析mac地址详解

ARP协议使每一台主机内部有一个ARP高速缓冲区,里面存储了一张(IP地址:Mac地址)映射表(初始时为空,通过发送ARP请求,慢慢建立起来),有生存时间,比如10-20分钟就清空一下映射表,对于换了适配器的计算机,其mac地址就变了。需要重新发送ARP请求建立新映射表,当一个IP数据包从源IP地址发送到目标IP地址时,马上读取ARP高速缓冲区的地址映射表,没有发现目标IP地址的映射数据,就发送ARP请求,目标IP主机响应ARP请求,将mac地址反馈给请求方,在响应的同时,它也会在ARP高速缓冲区存储发送方的IP和mac地址,这样下一次自己给请求方发数据时就不用发送ARP请求了。这样,得到目标地址的IP和mac地址后,数据链路层就将拿到的mac地址封装成mac帧发给相应方。

路由表:<目标主机所在网络><下一跳IP地址>

每一台主机都有自己的路由表,发送IP数据包时,首先会查看自己的路由表,一般主机路由表存储3种项目:

目的网络为本地网络 ===> 直接转发

目的网络有对应的下一跳地址在路由表中 ===> 下一跳IP

其他网络段 ===> 默认路由(网关)

我们应当注意一个问题:在IP数据包中,首部的IP是源IP和目标IP,并没有中间经过的路由的IP,既然IP数据包中没有下一跳路由器的IP地址,那么待转发的IP数据包又怎么能找到下一跳路由器的IP地址呢?

举个例子,ip数据包:

本机 IP10.0.0.2 ==> 目标IP 10.0.0.3

本地网络段10.0.0.0 ==> 目标网络段 10.0.0.0

在本机路由表上找到对应项目

在同一网络段,直接转发

启动ARP协议,广播,ARP发送请求,目标主机ARP响应,大概类似这样的对话:

“我的ip是10.0.0.2,mac地址是a1,目标ip10.0.0.3你好,请问你的mac地址是多少?”

“你好ip10.0.0.2,Mac地址为a1的兄台,我是10.0.0.3,我的mac地址是b1”

同一网络段的其他主机收到广播后,一看ip不是自己的就会将此广播包丢弃

于此同时,10.0.0.3这台主机会在自己ARP高速缓冲区存下10.0.0.2的ip和mac的地址a1

拿到10.0.0.3的mac地址后,将ip数据包封装成mac帧

物理层转发数据

上面例子是本地网络段转发,其他网络段一样。

通过这个例子,上面的问题就明白了,虽然只有目标IP地址,没有中间跳转路由的IP地址,但是通过路由表的目标网络段可以找到下一跳的路由的IP地址,找到下一跳IP地址,通过ARP协议就能找到下一跳的mac地址,这样就能传输数据了,最后就把数据包从源IP地址传送到了目标IP地址。而这些中间过程都被隐藏了。

划分子网

从2级IP地址到3级IP地址

3级IP地址::={<网络号>,<子网号>,<主机号>}

2级IP地址不合理的3点

1. IP地址空间的利用率很低

2. 两级IP地址不够灵活

3. 给每一个物理网络分配网络号会使路由表变得太大而使网络性能变坏

划分出来的子网群对外仍然是一个网络,当没有划分子网时IP地址时两级结构,划分子网后IP地址变成了三级结构,划分子网只是把IP地址的主机号这部分进行在划分,而不改变IP地址原来的网路号。

子网掩码

不管网络有没有划分子网,只要把子网掩码和IP地址做逐位的“与”运算(AND),就立即得出网络地址来。

问:在不划分子网时,既然没有子网,为什么还要使用子网掩码?

答:方便查找路由,互联网标准规定,必须使用子网掩码

默认子网掩码1的位置和IP地址中的网络号字段正好对应

使用子网时的分组转发

使用子网时的分组转发的路由表包含了子网掩码

路由表::={<目的网络地址>,<子网掩码>,<下一跳地址>}

核心:用子网掩码与目的IP地址做与(AND)运算,得到子网段,,根据路由表子网段找到对应的下一跳IP地址。

无分类编址CIDR(超网)

超网出现的最主要原因:在2011年2月3号,IANA宣布IPV4地址已经耗尽了。

超网IP地址::={<网络前缀>,<主机号>}

问:怎么才能不会弄错IP地址的网络地址?

答:只要将IP地址其中一个关键字转换为二进制的表示,然后弄清网络前缀的位数,就不会把地址块的范围搞错,地址块位数=32-IP网络前缀数

主要依据地址块位数判断地址块的大小,也就是IP地址有多少个,根据位数减少,IP地址

个数减小

转发超网IP地址的路由表::={<网络前缀><下一跳>}

地址聚合

例如:某个ISP拥有地址块:206.0.64/18,而206.0.64.0相当于64个c类网,如果不采用CIDR技术,则与该ISP的路由器交换路由信息的每一个路由表中,就要有64个项目。但是采用地址聚合后,只要206.0.64.0/18就能找到该ISP,也就是下一跳地址。

网际控制报文协议ICMP

在我们每个主机上都有一张路由表来查询转发ip数据报,如果每一个网络地址如果都存储在我们本机的路由表上,将会造成很大的消耗。ICMP协议它采用一个默认的路由,任何从主机发送的IP数据报发出后先经过它,经过它发出去,所以在主机上只需要一个项目,大大就降低了因为在我们本机上查询路由表的消耗。总之它的出现是为了更有效的转发IP数据报和提高交付成功的机会

举个生活中的例子:假如我们把默认路由当作一个交通警察,你第一次来到北京,这时你想去天安门,你前面有N条十字路口(n个路由),其实你也不知道怎么走,但是有这个交通警察就在前面,你跑过去问他怎么走,他会为你指一个最好的路口,以至于你下个路口怎么走就不关他的事了。

应用举例:ping IP地址

路由

内部网关协议RIP(Routing Information Protocol)

仅和相邻的路由器交换信息

交换的信息为{<目的网络><条数><下一跳>}

按固定时间间隔交换信息,如30秒

特点:好消息传的块,怀消息传的慢。怀消息是指当某一个路由器坏了,则与它相连的网络就不可达,但是它相邻的某个路由的兄弟路由不知道它坏了,还是将交换信息发给了这个相邻的路由,相邻的路由和其兄弟路由可能会造成一种循环往复使跳数增加到16才知道那个路由器实际上已经坏掉了。

路由的结构

路由器是一种特殊的计算机,具有多个输入端口和多个输出端口,其任务是分组转发,这也是网络层最主要的工作



路由器结构=路由选择部分+分组转发部分

分组转发=交换结构+一组输入端口和一组输出端口

交换结构又称交换组织,作用是根据转发表对分组进行处理,将某个输入端口进入的分组从一个合适的输出端口转发出去。交换结构本身就是一种网络,但这种网络完全包含在路由器之中,因此交换结构可看成是“在路由器中的网络”

路由器的工作机制:

路由器的输入和输出端口里面都各有3个框,用方框中的1,2,3分别代表物理层,数据 链路层和网络层的处理模块。物理层进行比特的接受。数据链路层则按照链路层协议接受传送分组的帧。在把帧的首尾部剥去后,分组就被送入网络层的处理模块。若接受到的分组是路由器之间交换路由信息的分组(如RIP或OSPF分组等),则把这种分组送交路由器的路由选择部分中的路由选择处理机。若接收到的是数据分组,则按照分组首部中的目的地址查找转发表,根据得出的结果,分组就经过交换结构到达合适的输出端口。一个路由器的输入输出端口就做在路由器的线路接口卡



输入端口中的查找和转发功能在路由器的交换功能中是最重要的。为了使交换功能分散化,往往把复制的转发表放在每一个输入端口中。路由选择处理机负责对各转发表的副本进行更新。这些副本常称为“影子副本”。

当一个分组正在查找转发表时,后面又紧跟着从这个输入端口收到另一个分组。这个后到的分组就必须在队列中排队等待,因而产生了一定的时延。如图所示:



输出端口从交换结构接受分组,然后把它们发到路由器外面的线路上。在网络层的处理模块中设有一个缓冲区,实际上它就是一个队列。当交换结构传送过来的分组速率超过输出链路的发送速率时,来不及发送的分组就必须暂时存放在这个队列中。数据链路层处理模块把分组加上链路层的首部和尾部,交给物理层后发送到外部线路。如图所示:



整个网络传输,路由器是极其关键的一环,而路由器的转发速率现在已经达到了百万分组每秒,不得不说,技术真的是强大啊!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: