IP,ARP,RIP和BGP协议

IP,ARP,RIP和BGP协议

前言

今天还是接着学习计算机网络方面的内容,争取在开学之前先把计算机网络的内容过一遍,JAVA学过一点,但是不精通,能看懂一些简单的代码,仅此而已,大三就只有三门课,数据库,网络,JAVA,好好学,别放弃,最近腰疼的厉害,可能是那天找女朋友的原因,爬山去了,累了个半死,回来就腰疼了.唉,身体跟不上了,身体是革命的本钱,保护好自己的身体,说不定将来买苹果的时候用到了呢...

网络层是实现互联网的最重要的一层.正是网络层面上,各个局域网根据IP协议相互连接,最终构成覆盖全球的因特网.更高层的协议,无论是TCP还是UDP,必须通过网络层的IP数据报(datagram)来传递信息.OS也会提供盖层的socket,从而允许用户直接操作IP包.

IP数据包是符合IP协议的信息(也就是0/1序列),我们后面简称IP数据包为IP包.IP包分为头部(header)和数据(Data)两部分.数据部分是要传送的信息,头部是为了能够实现传输而附加的信息(这与以太网帧的头部功能类型,如果对帧感到陌生,看前面)

IP包的格式

IP协议可以分为IPV4和IPV6两种,IPV6是改进版本,用于在未来取代IPV4协议.咱们先以IPV4为例,下面是IPV4的格式:

与帧类似,IP包的头部也有多个区域.我们将注意力放在红色的发出地(source address)和目的地(destination address).他们都是IP地址.IPV4的地址为4 bytes的长度(也就是32位).我们通常将IPV4的地址分为4个十进制的数,每个数的范围为0-255,比如192.0.0.1就是一个IP地址.填写在IP包头部的是该地址的二进制形式.

IP地址是全球地址,它可以识别”社区”(局域网)和”房子”(主机).这是通过将IP地址分类实现的.(这一点前面我说了).


类型


起始范围


终止范围


子网掩码


A


1.0.0.0


126.255.255.255


255.0.0.0


B


127.0.0.0


191.255.255.255


255.255.0.0


C


192.0.0.0


223.255.255.255


255.255.255.0

每个IP地址的32位分别为前后两部分,第一部分用来区分局域网,第二部分用来区分该局域网的主机.子网掩码(Subnet Mask)告诉我们这两部分的分界线,比如255.0.0.0(也就是8个1和24个0)表示前八位用于分区局域网,后24位用于区分主机.由A,B,C分类已经规定好,所以当一个IP地址属于B类范围时,我们就知道它的前16位和后16位分别表示局域网和主机.

网卡与路由器

IP地址是分配给每个房子(计算机)的”邮编”.但这个说法并不精确.IP地址实际上识别的是网卡(NIC).网卡是计算机的一个硬件,它在接受到网络信息之后,将信息交给计算机(处理器/内存).当计算机需要发送信息的时候,也要通过网卡发送.一台计算机可以有不止一个网卡,比如计算机就有一个以太网卡和一个WiFi网卡.计算机在接受或者发送信息的时候,要现决定想要通过哪个网卡.

路由器实际上就是一台配备有多个网卡的专用电脑.它让网卡接入到不同的网络中,这样,就构成了”邮局”的概念.比如下图中位于中间位置的路由器有两个网卡,地址分别为199.165.145.17和199.165.146.3 . 他们分别接入到两个网络199.165.145和199.165.146 .

IP包接力

IP包的传输要通过路由器的接力.没一个主机和路由中都存在一个路由表,路由表根据目的地的IP地址,规定了等待发送的IP包所应该走的路线.

比如我们从主机147.17生成发送到146.21的IP包:铺开信封,写好信号的开头(剩下的数据部分可以是TCP包,也可以是UDP包,也可以是任意乱写的字,咱们不关心这个),注明目的地IP地址(199.165.146.21)和发出地IP地址(199.165.145.17).主机145.17随后参照自己的路由表(routing table),里面有三行记录:

145.17 路由表(Genmask为子网掩码,Iface用于说明使用哪个网卡接口,Gateway为网关,Destination为目的地址)


Destination


Gateway


Genmask


Iface


199.165.145.0


0.0.0.0


255.255.255.0


eth0


0.0.0.0


199.165.145.17


0.0.0.0


eth0

分析:这里有两条记录.

第一条表示,如果IP目的地址是199.165.145.0这个网络的主机,那么只需要自己在eth0上的网卡直接传送(“本地社区”:直接送达),不用前往router(Gateway 0.0.0.0=”本地送信”).

 

第二行表示所有不符合第一行的目的IP地址,都应该送往Gateway 199.165.145.17,也就是中间router接入在eth0的网卡Ip地址(邮局在eth0的分支).

我们的IP包目的地为199.165.146.21,不符合第一行,所以按照第二行,发送到中间的router.主机145.17会将IP包放入帧的payload,并在帧的头部写上199.165.145.17对应的MAC地址,这样,就可以按照小喇叭那一讲中的方法在局域网中传送了.

中间的router在收到IP包之后(实际上是收到以太协议的帧,然后从帧中的payload读取IP包),提取目的地IP地址,然后对照自己的routing table:


Destination


Gateway


Genmask


Iface


199.165.145.0


0.0.0.0


255.255.255.0


eth0


199.165.146.0


0.0.0.0


255.255.255.0


eth1


0.0.0.0


199.165.146.8


0.0.0.0


eth1

从前两行我们看到,由于router横跨eth0和eth1两个网络,它可以直接通过eth0和eth1上的网卡直接传送IP包.

第三行表示,如果是前面两行之外的IP地址,则需要通过eth1,送往199.165.146.8(右边的router).

我们的目的地符合第二行,所以将IP放入一个新的帧中.

在真的头部下上199.165.146.21的MAC地址,直接发送到主机146.21.(在linux下,可以使用$route -n来查看routing table)

IP包可以进一步接力,到达更远的主机.IP包从主机出发,格局沿途路由器路由表(routing table)指导,在router间接力.IP包最终到达某个router,这个router与目标主机唯一同一局域网中,可以直接建立链接层的通信.最后,IP包被送到目标主机.这样一个过程叫做routing(IP包接力,因为路由这个词包含的含义太多了)

整个过程中,IP包不断的被主机和路由装入帧(信封)并拆开,然后借助链接层,在局域网的各个NIC之间传送帧.整个过程中,我们的IP包的内容保持完整,没有发生变化.最终的效果是一个IP包从一个主机传送到另一个主句.利用IP包,我们不需要去关心底层(比如链接层)发生了什么.

ARP协议

在上面的过程中,我们实际上假设了,每一台主机和路由都能了解局域网内的IP地址和MAC地址的对应关系,这是实现IP包封装到帧的基本条件IP地址与MAC地址的对应是通过ARP协议传播到局域网的每个主机和路由.每一台主机或路由中都有一个ARP cache,用以存储局域网内的IP地址和MAC地址如何对应.

ARP协议(ARP介于链接层和网络层之间,ARP包需要包裹在一个帧中)的工作方式如下:主机会发出一个ARP包,该ARP包中包含有自己的IP地址和MAC地址.通过ARP包,主机以广播的形式询问局域网上所有的主机和路由:我是IP地址xxxx,我的MAC地址是xxxx,有人知道199.165.146.4的MAC地址吗?拥有该IP地址的主机会回复发出请求的主机:哦,我知道,这个IP地址属于我的一个NIC,它的MAC地址是xxxx.由于发送ARP请求的主机采取的是广播形式,并附带有自己的IP地址和MAC地址,其他的主机和路由会同时检查自己的ARP cache,如果不符合,则更新自己的ARP cache.

这样,经过几轮的ARP请求之后,ARP cache会达到稳定.如果局域网上设备发生变动,ARP重复上面过程.

(在linux下,可以使用$arp命令来查看ARP的过程.ARP协议只用与IPV4,IPV6使用Neighbor Discovery Protocol来代替ARP的功能)

Routing Table的生成

我们还有另一个假设,就是每个主机和路由上都已经有了合理的routing table.这个routing table描述了网络的拓扑结构,如果你了解自己的网络连接,可以手写自己主机的routing table.但是,一个路由可能有多个出口,所以routing table可能会很长.更重要的是,周围链接的其他路由可能发生变动(新增一个路由器或者路由器坏了),我们就需要routing table能及时将交通导向其他的出口.我们需要一种更加智能的探测周围的网络拓扑结构,并自动生成routing table.

我以一个案例来说问题.如果北京机场前往朝阳门,那么可以采取2号航站楼=>三元桥==>东直门==>朝阳门.2号航站楼和朝阳门分别是出发和目的主机.而三元桥和东直门为中间的两个router.如果三元钱==>东直门这条路维修了,我们就需要更改三元桥的routing table,从而给前往朝阳门的乘客(IP包)指示:请走如下路线三元桥==>芍药居.然后依照芍药居的routing table前往朝阳门(芍药居==>东直门==>朝阳门).

一种用来生成routing table的协议是RIP.它通过距离来决定routing table,所以属于distance-vector protocol.对于RIP来说,所谓的距离是从出发地到目的地沿途的路由器数目.比如上面从机场到朝阳门,按照2号航站楼==>三元桥==>东直门==>朝阳门路线,途径两个路由器,距离就是2.我们最初可以手动生成三元桥的routing table.随后,根据RIP协议,三元桥向周围的路由器和主机广播自己前往各个IP的距离(比如到机场为0).收到RIP包的路由器路由器和主机根据RIP包和自己到发送RIP包的主机的距离,算出自己前往各个IP的距离.东直门与三元桥的距离为1.东直门收到三元桥的RIP包(到机场的距离为0),那么东直门途径三元桥前往机场的距离为1+0=1.如果东直门自己的RIP记录都比这个远(比如东直门==>芍药居==>三元桥==>机场=2).那么东直门更改自己的routing table:前往机场的交通都发往三元桥而不是芍药居.如果东直门自身的RIP包和收到的新的RIP包没有差别,那么东直门保持routing table不变.上述过程在各个点不断重复RIP广播/计算距离/更新routing table的过程,最终所有的主机和路由器都能生成最合理的路径.

注意:RIP的基本逻辑是:如果A距离B为6,而我距离A为1,那么我途径A到B的距离为7.

RIP处于技术的原因,认为距离超过15的IP不可到达.所以RIP更多用于互联网的一部分(比如整个中国电信的网络).这样一个互联网的部分往往属于同一个ISP或者同一个管理机构,所以叫做自治系统.自治系统内部的主机和路由根据通向外部的边界路由器来和其他的自治系统通信.各个边界路由器之间通过BGP来生成自己前往其他自治系统的路由表,而自治系统内部则参考边界路由器,使用RIP来决定routing table.BGP的基本工作过程与RIP类似,但是在考虑距离的同事,也权衡比如政策,连接性能等其他因素,再决定交通的走向.

 

 

总结

我们一开始讲述了IP包根据routing table进行接力的过程.为了顺利的实现接力,我们又进一步深入到ARP和RIP/BGP.这三个协议都协助了IP传输.ARP让每台电脑和路由器知道自己局域网内IP地址和MAC地址的对应关系,从而顺利实现IP包到帧的封装.RIP协议可以生成自治系统内部合理的routing table.BGP协议可以生成自制系统外部的routing table.

 

在整个过程中,我们都将注意力放在了IP包大的传输过程中,而故意忽略了一些细节.而上面的IP接力过程适用于IPV6.

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-18 04:30:20

IP,ARP,RIP和BGP协议的相关文章

协议学习之 vamei博客系列 03 IP接力赛 (IP, ARP, RIP和BGP协议)

作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 网络层(network layer)是实现互联网的最重要的一层.正是在网络层面上,各个局域网根据IP协议相互连接,最终构成覆盖全球的Internet.更高层的协议,无论是TCP还是UDP,必须通过网络层的IP数据包(datagram)来传递信息.操作系统也会提供该层的socket,从而允许用户直接操作IP包. IP数据包是符合IP协议的信息(也就是0/1序列),我们后面简称IP数

TCP/IP详解学习笔记(3)IP协议ARP协议和RARP协议

把这三个协议放到一起学习是因为这三个协议处于同一层,ARP协议用来找到目标主机的Ethernet网卡Mac地址,IP则承载要发送的消息.数据链路层可以从ARP得到数据的传送信息,而从IP得到要传输的数据信息. 1.IP协议 IP协议是TCP/IP协议的核心,所有的TCP,UDP,IMCP,IGCP的数据都以IP数据格式传输.要注意的是,IP不是可靠的协议,这是说,IP协议没有提供一种数据未传达以后的处理机制--这被认为是上层协议--TCP或UDP要做的事情.所以这也就出现了TCP是一个可靠的协议

OSI七层模型,讲解tcp/ip五层涉及的网络协议,网络通信实现,结合协议来看网络通信流程

当我们通过自己电脑的浏览器访问京东的时候, 览器上输入了一个网址,但是我们都知道,互联网连接的电脑互相通信的是电信号,我们的电脑是怎么将我们输入的网址变成了电信号然后发送出去了呢,并且我们发送出去的消息是不是应该让京东的服务器能够知道,我们是在请求它的网站呢,也就是说京东是不是应该知道我发送的消息是什么意思呢.是不是发送的消息应该有一些固定的格式呢?让所有电脑都能识别的消息格式,他就像英语成为世界上所有人通信的统一标准一样,如果把计算机看成分布于世界各地的人,那么连接两台计算机之间的intern

BGP协议的学习及一些特性

写一点最近开始接触的BGP一点知识(部分截取自网络)RFC4271 定义一个路由器只属于一个as,as取值范围1-65535   64521-65535是私有as号BGP协议是提供一种区域间的路由选择协议,自助系统能够无环的交换路由选择信息,BGP路由交换有去往目标网络的路径信息.BGP在选路的时候考虑的不是速度,而是让AS能够根据多种BGP属性来控制数据流的传输. 1,BGP 靠TCP进行连接,所以要保证三层ip的可达性:端口号TCP179(目标端口)2,BGP以到单播的形式建邻居,所以通告之

HCNP学习笔记之BGP协议原理及配置2-BGP工作原理

1 基于TCP连接的邻居关系 BGP邻居关系建立在TCP连接的基础之上 可以通过IGP或静态路由来提供TCP连接的IP可达性 同OSPF.ISIS一样,在BGP中,路由学习的依然要首先建立邻居关系. 所不同的是: OSPF.ISIS的邻居关系是自动建立的,而BGP邻居的建立必须手动完成,从邻居的建立开始就体现出了BGP是基于策略进行路由的(物理上直接相连未必是邻居,反过来物理上没有直接相连可以建立邻居关系). BGP邻居关系是建立在TCP会话的基础之上的,而两个运行BGP的路由器要建立TCP的会

带你挑战年薪20W的广域网协议---BGP协议

BGP原理的概述 BGP协议是一种距离矢量(Distance vector)的路由协议,但是比起RIP等典型的距离矢量协议,又有很多增强的性能.BGP使用TCP作为传输协议,使用端口号179.在通信时,要先建立TCP会话,这样数据传输的可靠性就由TCP协议来保证,而在BGP的协议中就不用再使用差错控制和重传的机制,从而简化了复杂的程度.另外,BGP使用增量的.触发性的路由更新,而不是一般的距离矢量协议的整个路由表的.周期性的更新,这样节省了更新所占用的带宽.BGP还使用"保留"信号(K

层次深入学习MAC IP ARP 以常用处理手段

1.MAC定义 MAC称为硬件地址,是网络中设备的唯一标识符,共计48 bit. 例如我的无线MAC:8C-A9-82-96-F7-66 在系统里的展现形式是由16进制组成的6组数字组合.例如开头位的8C 为 8__c 换成2进制位数为 4X2=8位, 8X6=48位.扩展内容:该地址是全球唯一的,没有重复的MAC地址,如果有重复的MAC地址出现在交换网络中,那是必定有环路,环路现象则会造成时通是不通或者根本不通. 2.局域网内PC通信(IP与MAC) 世界上有一种东西叫电脑,电脑上有LOL,C

《网络协议》ARP 协议和 RARP 协议

ARP 概述 在以太网协议中规定,同一局域网中的一台主机要和另一台主机进行直接通信,必须要知道目标主机的 MAC 地址(硬件地址).而在 TCP/IP 协议中,网络层和传输层只关心目标主机的 IP 地址.这就导致在以太网中使用 IP 协议时,数据链路层的以太网协议接到上层 IP 协议提供的数据中,只包含目的主机的 IP 地址. ARP 是一种地址解析协议,是一个位于 TCP/IP 协议栈中低层的协议,主要是负责将 IP 地址解析为对应的 MAC 地址.ARP 协议只适用于局域网.另外,当发送主机

TCP/UDP,动态路由,RIP/OSPF/BGP简述

1.TCP/UDP的区别:TCP相对UDP相对安全:但传输效率慢2.什么是静态路由静态路由就是必须手工配置,无法适应网络拓扑变化,变化一次就得修改一次什么是动态路由路由器自动建立自己的路由表,并且能够根据实际情况的变化自动调整当网络中节点和节点间的链路发生故障,或存在其它可用路由时,动态路由可以自行选择最佳的可用路径并继续转发报文.查看路由表最长匹配原则:看子网掩码3.RIPRIPv1/2都是小型网络下使用的动态路由,路由器之间开启rip进程周期的通告邻居的路由,保证实时更新拓扑变化,是一种基于