计算机网络——网络层
Posted 我爱你,中国!中国加油,武汉加油!
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算机网络——网络层相关的知识,希望对你有一定的参考价值。
一、虚拟线路与数据报线路
1、 在网络层提供有连接的计算机网络为虚电路网络; 如因特网;它需要VC(虚拟电路)号,用于建立虚拟电路的报文称为信令报文,相关的协议称为信令协议;
无连接的网络为数据报网络;如ATM、帧中继等;
2、 由于虚电路的建立和释放需要占用一定的时间,因此虚电路方式不适合站点之间具有频繁连接和交换短小数据的应用,例如:交互式的通信。
二、路由器的工作原理
1、路由器的交换结构有三种:1、 过内存型 2、总线型(一次只能有一个分组占用总线) 3、互联网络交换(这个最好啦)
2、对于输出端口来说,分组排队占满内存时需要进行丢弃,有一个就需要主动队列管理算法(AQM)进行管理,策略为随机早期检测(RED);
三、IP协议
1、 网络层的分组被称为数据报;
2、 (http://blog.csdn.net/ce123_zhouwei/article/details/17453033)
版本:占4位,指IP协议的版本.通信双方使用的IP协议版本必须一致.日前广泛使用的 IP协议版本号为 4 (即 IPv4).IPv6 目前还处于起步阶段.
首部长度:占 4 位,可表示的最大十进制数值是15.请注意,这个字段所表示数的单位是32位字 (1个32位字长是4 字节),因此,当 IP 的首部长度为 1111 时 (即十进制的 15),首部长度就达到 60字节.当 IP 分组的首部长度不是4字节的整数倍时,必须利用最后的填充字段加以填充.因此数据部分永远在 4字节的整数倍开始,这样在实现 IP协议时较为方便.首部长度限制为 60字节的缺点是有时可能不够用.这样做的目的是希望用户尽量减少开销.最常用的首部长度就是 20 字节 (即首部长度为 0101),这时不使用任何选项.
总长度:总长度指首都及数据之和的长度,单位为字节.因为总长度字段为 16位,所以数据报的最大长度为 2^16-1=65 535字节.在IP层下面的每一种数据链路层都有自己的帧格式,其中包括帧格式中的数据字段的最大长度,即最大传送单元 MTU (Maximum Transfer Unit).当一个数据报封装成链路层的帧时,此数据报的总长度 (即首部加上数据部分)一定不能超过下面的数据链路层的MTU值,否则要分片;
标识 (Identification):占 16位.IP软件在存储器中维持一个计数器,每产生一个数据报,计数器就加 1,并将此值赋给标识字段.但这个"标识"并不是序号,因为 IP是无连接的服务,数据报不存在按序接收的问题.当数据报由于长度超过网络的 MTU 而必须分片时,这个标识字段的值就被复制到所有的数据报的标识字段中.相同的标识字段的值使分片后的各数据报片最后能正确地重装成为原来的数据报.
标志 (Flag):占3 位,但目前只有2位有意义. 标志字段中的最低位记为 MF(More Fragment).MF=1即表示后面"还有分片"的数据报.MF=0表示这已是若干数据报片中的最后一个.标志字段中间的一位记为DF(Don\'t Fragment),意思是"不能分片",只有当 DF=0时才允许分片.
片偏移:占 13位.较长的分组在分片后,某片在原分组中的相对位置.也就是说,相对用户数据字段的起点,该片从何处开始.片偏移以 8个字节为偏移单位,这就是说,每个分片的长度一定是 8字节(64位)的整数倍.
生存时间:占 8位,生存时间字段常用的英文缩写是TTL(Time To Live),其表明数据报在网络中的寿命.由发出数据报的源点设置这个字段.其目的是防止无法交付的数据报无限制地在因特网中兜圈子,因而白白消耗网络资源.最初的设计是以秒作为 TTL的单位.每经过一个路由器时,就把TTL减去数据报在路由器消耗掉的一段时间.若数据报在路由器消耗的时间小于 1 秒,就把TTL值减 1.当 TTL值为 0时,就丢弃这个数据报.
(注意:ip6已经废除了它了,不安全(分片攻击),并且吧,麻烦)
协议:占 8 位.协议字段指出此数据报携带的数据是使用何种协议,以便使目的主机的IP层知道应将数据部分上交给哪个处理过程.详细资料请看文章最后的注释.
IP选项: ip6也废它了,因为吧,有它的存在的话,首部不固定,不好;
3、 IP中的广播地址为:255.255.255.255,网络内的小组的主机都可以收到;
四、 动态主机配置协议:
DHCP;主机发送采用UDP、端口号为67, 服务器回复采用 UDP、68端口;工作模式为客户机/服务器模式;(http://tonyguo.blog.51cto.com/379574/163475/)
1. 寻找DHCP Server。
当DHCP客户机第一次登录网络的时候(也就是客户机上没有任何IP地址数据时),它会通过UDP 67端口向网络上发出一个DHCPDISCOVER数据包(包中包含客户机的MAC地址和计算机名等信息)。因为客户机还不知道自己属于哪一个网络,所以封包的源地址为0.0.0.0,目标地址为255.255.255.255,然后再附上DHCP discover的信息,向网络进行广播。
DHCP discover的等待时间预设为1秒,也就是当客户机将第一个DHCP discover封包送出去之后,在1秒之内没有得到回应的话,就会进行第二次DHCP discover广播。若一直没有得到回应,客户机会将这一广播包重新发送四次(以2,4,8,16秒为间隔,加上1-1000毫秒之间随机长度的时间)。如果都没有得到DHCP Server的回应,客户机会从169.254.0.0/16这个自动保留的私有IP地址中选用一个IP地址。并且每隔5分钟重新广播一次,如果收到某个服务器的响应,则继续IP租用过程。
2. 提供IP地址租用
当DHCP Server监听到客户机发出的DHCP discover广播后,它会从那些还没有租出去的地址中,选择最前面的空置IP(它会选一个没有用的,然后ping ,没有主机回复ICMP,则表示真的没有用),连同其它TCP/IP设定,通过UDP 68端口响应给客户机一个DHCP OFFER数据包(包中包含IP地址、子网掩码、地址租期等信息)。此时还是使用广播进行通讯,源IP地址为DHCP Server的IP地址,目标地址为255.255.255.255。同时,DHCP Server为此客户保留它提供的IP地址,从而不会为其他DHCP客户分配此IP地址。
由于客户机在开始的时候还没有IP地址,所以在其DHCP discover封包内会带有其MAC地址信息,并且有一个XID编号来辨别该封包,DHCP Server响应的DHCP OFFER封包则会根据这些资料传递给要求租约的客户。
DHCP从地址池中选择IP地址,以如下优先级进行选择:
1、当前已经存在的Ip Mac的对应关系
2、Client以前的IP地址
3、读取Discovery报文中的Requested Ip Address Option的值,如果存在并且IP地址可用
4、从配置的Subnet中选择IP地址:
3. 接受IP租约
如果客户机收到网络上多台DHCP服务器的响应,只会挑选其中一个DHCP OFFER(一般是最先到达的那个),并且会向网络发送一个DHCP REQUEST广播数据包(包中包含客户端的MAC地址、接受的租约中的IP地址、提供此租约的DHCP服务器地址等),告诉所有DHCP Server它将接受哪一台服务器提供的IP地址,所有其他的DHCP服务器撤销它们的提供以便将IP地址提供给下一次IP租用请求。此时,由于还没有得到DHCP Server的最后确认,客户端仍然使用0.0.0.0为源IP地址,255.255.255.255为目标地址进行广播。
事实上,并不是所有DHCP客户机都会无条件接受DHCP Server的OFFER,特别是如果这些主机上安装有其它TCP/IP相关的客户机软件。客户机也可以用DHCP REQUEST向服务器提出DHCP选择,这些选择会以不同的号码填写在DHCP Option Field里面。客户机可以保留自己的一些TCP/IP设定。
4. 租约确认
当DHCP Server接收到客户机的DHCP REQUEST之后,会广播返回给客户机一个DHCP ACK消息包,表明已经接受客户机的选择,并将这一IP地址的合法租用以及其他的配置信息都放入该广播包发给客户机。
客户机在接收到DHCP ACK广播后,会向网络发送三个针对此IP地址的ARP解析请求以执行冲突检测,查询网络上有没有其它机器使用该IP地址;如果发现该IP地址已经被使用,客户机会发出一个DHCP DECLINE数据包给DHCP Server,拒绝此IP地址租约,并重新发送DHCP discover信息。此时,在DHCP服务器管理控制台中,会显示此IP地址为BAD_ADDRESS。
如果网络上没有其它主机使用此IP地址,则客户机的TCP/IP使用租约中提供的IP地址完成初始化,从而可以和其他网络中的主机进行通讯。
五、 IP分类
上面的私有地址与下面的 NAT 有关;
而 169.254.X.x与上面 提到的DHCP协议有关;
六、网络地址转换(NAT)
- 就是一个子网内的IP设为私有的, 对外是隐藏的;
- 原理为:路由器中的NAT服务器里有一个NAT转换表, 子网内的主机发送数据时, 使用端口a加源IP b(私有IP), 到达NAT时,NAT服务器会把源IP 与端口都换了, 改为公开有IP 与一个它自己决定的端口, 它们 之间的映射就是NAT转换表了;这这是原理;
A类、b类、C类的IP私有地址在5中上面已经说明了;
七、网际控制报文协议ICMP:
- 最典型的用途为差错报告;
- ICMP的类型:
- ping 原理: 使用ICMP, 发送一个 8 0 的回显请求; 它是不需要端口的,因为它用的是ICMP消息,主机收到 ping消息以后 , 到达本机的IP层协议后,IP层检查后,将有用的信息提取后交给ICMP协议(不用UDP和TCP,所以不用端口);
- tracerout 原理:它发送一系列的不可UDP消息 ,它的端口是不会到达的(对不对应吧),然后呢,IP数据报里的TTL分别为1, 2, 3,*** ,到达路由器时,如果TTL变为0了,路由器就回复 11 0 的TTL过期(另外包括路由器名与IP), 当到达 要访问的主机时,由于端口找不到,此时也会用ICMP协议发送一个3 3 的端口不可达消息;
八、选路算法
根据算法的全局性还是局部性,可以分为全局选路算法(又称为链路状态算法LS) 与局部选路算法(典型的为距离向量选路算法DV);
路由选择分层次的: 自治系统内部选路协议与自治系统间的选路协议;
内部: RIP(路由选择信息协议), 是一个距离向量协议, 使用UDP、52端口; OSRF:开放最短路径优先协议, 链路状态协议,使用IP、89端口;
之间: BGP协议,还是不是单纯的适量距离协议,也不是单纯的链路状态协议, 使用TCP;
以上是关于计算机网络——网络层的主要内容,如果未能解决你的问题,请参考以下文章