计算机网络初探(ip协议)

粗读了两遍计算机网络(谢希仁),对于计算计算机网络算是有了一个初步的了解,所以打算写一篇文章(希望是教程)进行巩固(主要围绕IP协议)。

局域网

因特网的产生和广泛使用极大地改变了我们的生活,但对于不了解当中技术细节的人来说,因特网的工作是透明的,即我们不知道在每次点击一个链接,发送一个文件,或者进行联机游戏时计算机的软硬件背后,无数线缆,电磁波,甚至卫星是怎样将我们的数据运送到另一台计算机上,而我们能感受到的只有毫秒间的数据收发和一个世界范围内的网络互联。

首先,从比较原始的地方开始讲起,当我们有许多的计算机并且想要通过一种方法实现所有计算机之间的互联从而实现数据交换,最为简单的方法是什么?我们可以这样,为每一台计算机分配一个唯一标识符(mac地址)来定位他,然后将所有打算接入网络的计算机用导线连接起来,这样就非常简单且原始的实现的物理层次上的互联。那么他们之间该如何进行通信呢(暂不考虑对接受到的数据的解读)?

参考下图:图一

假如H1试图与H2进行通信,首先H1细心的将自己想要表达的东西打包好,注明收到消息的计算机的标识符,然后将这份数据包裹发送到线路中,由于这份包裹只有目的计算机的地址,他不知道目的计算机的具体位置,所以只好采用最笨的方法,一个一个的问:“你的地址是***吗”,例如当H3收到了这份包裹,但是却发现他不是发给自己的,就不予理睬,而包裹只能问下一个,直到他遇到了H2,H2发现这份包裹注明的目的地址是自己的地址,于是收下并打开他。这样便完成了一次H1到H2的通信。这种收发数据的方式被称为轮询,即每次发送一个数据包裹都需要询问每个计算机,直到找到目的主机。(事实上这是一个只通过集线器连接的局域网)

    这种方法构建的网络似乎也不赖,计算机之间可以正常通信,那么可以考虑继续将更多的计算机加入进来了。但是在这之前,我们会发现这种网络有个小毛病,就是每次网络上只能有一份包裹在传输,如果有第二个包裹也发送到网络中,二者就会发生碰撞,从而造成混乱。怎么解决这种情况呢?方法就是谦让。谦让体现在每当有一台计算机试图发送一个数据包裹时,先检测当前网络状态,如果网络中没有任何人在通信,即网络所有线路都是空闲的,那么自己便将数据包裹发送出去,而一旦发现有人在通信,即网络线路上有数据包裹正在跑来跑去,那么自己就先等着,等一会在检测一次网络线路是否空闲。然而在这里还有另一个问题,就是存在两台计算机同时发送数据包裹或是因为网络固有的时延而没有检测到网络线路上有包裹而导致他们都发送了包裹到网络上,那么碰撞必然发生,而解决方法则是一旦发生碰撞,那么两份包裹都丢弃,然后两台计算机各自沉默一个随机的时间之后再次检测网络线路选择是否发送。二者通过各自等待一个随机的时间,很好的避免了二者的再次碰撞。(CSMA/CD协议)

    解决了碰撞的问题。那么可以继续我们的主题,将更多的计算机加入进来!随着更多的计算机的加入,网络规模也越来越大,在较大规模下的网络中。我们当前的网络有个很致命的问题,那就是刚刚讨论过的谦让。在很小型的网络中由于这种谦让所带来的延迟是可以忽略不计的,但是一但网络规模大起来,比如几百台甚至上千台计算机构成的网络,每当有一台计算机在通信时,其他所有的计算机都要等待他通信结束后才能发送自己的包裹,这种延迟是不能被接受的。这时便不得不引入一种新的设备来将这种这个碰撞范围进行限制,这种设备就是网桥(一种专用计算机)。

如图:图二

网桥将一个原本为一个整体的网络划分为一个一个的子网络并将他们连接起来,这样做最大的优点便是将碰撞范围很好的控制在一个个小型的子网络中。

同时呢,在网桥中储存并维护一张由标识符组成的查找表,对应于不同的线路接口,

如图:图三

(假装有图)

每当有一台计算机试图与某一台计算机进行数据交换(通信)时,便将数据报包裹注明目的计算机的标识符,在本子网进行广播,如果目的主机不在本子网,则通过专用线路递交给网桥,而后网桥通过查找转发表找到与该标识符匹配的计算机,将这份数据通过连接到这台计算机的线路发送给他。(只通过网桥连接的局域网)

    上述的模型在小型的网络中也许会工作的很好,但是现实是我们有几十亿台地理分布在世界各地的计算机,显然之前的模型完全不能使用,因为这种策略本质上仍是简单的线性查找,查找过程和对数据包裹的运送将耗费极大的时间和资源。这时候,一些优秀的算法思想便可以被应用起来了。行之有效的方法是分治,而这种算法的实现就是IP协议。

IP协议下的分组转发

    我们先撇开技术方面的内容,来想这样一个问题——如何在中国找到某个美女并要到她的联系方式。因为每个人在世界上都是独一无二的,比较笨的方法就是,从当前所在地开始逢人便问,你是那个美女吗(她的个人信息就是独一无二的标识符),问遍整个中国,直到找到这个人,成功得到了她的电话。

这种方法是按照美女的全球唯一标识符(长相,年龄,血型,基因型等信息的组合体)来确定她,很浪漫的方式,但却非常低效且不现实。

    那么接下来就是另一种方法,根据她的地址信息来定位她。比如她的地址是辽宁省-沈阳市-长滩县-张家村-2-22号-户主之女-美女,那么首先我们应该最先得知的是要到辽宁省去,所以第一次选择我们就排除了中国80%的地方,下一条信息是沈阳市,我们又排除了辽宁省的70%的地方,之后在定位到长滩县,张家村,到了这里搜索范围已经很小了,我们得知美女住2-22号,按照住户序号的分配规律(按块分配,有序)我们仍可以很快定位到2-22这家住户,但是我们发现,户主有12个女儿,我们已经没有任何信息可以帮助我们将户主女儿们划分开了,所以只能一个一个的询问,通过匹配长相,年龄,血型,基因型等信息的组合体(即唯一标识符)来定位到美女,所幸搜索范围只有12个,很快我们就找到了美女。

过程如图:图四

    下面回到技术方面,我们的计算机同美女一样,在因特网中它也必须只有一个唯一标识符,而这个标识符是生产我们计算机网卡时网卡制造商写在其中的,叫做mac地址,是一个48为二进制数,具有全球唯一性。mac地址才是最终我们能将美女从12个相似的美女中将她选出来的关键。之前说过单纯使用mac地址的索引来实现通信是一件非常不明智的事,而且不同的主机(计算机,路由器等都可称为主机)在系统,软硬件上的差异性将会使得这种方法更为不可靠。那么,IP协议是如何实现IP数据报(相似之前的数据包裹,即将要发送的数据按照Ip协议的规则打包后的数据包)在全球范围内的高效分组转发并屏蔽了诸多的差异性呢?其实从找美女的第二个例子我们应该能够看出IP协议转发的思想了。

    首先简单介绍下IP地址的长相:204.79.197.200;它是一个32位二进制数,通常通过每8位进行一次划分,为了表示方便通常将每8位二进制数表示为十进制。我们可以认为第一段204即对应于地理位置“市”,相应的,79对应于“县”,197对应于“村”,200对应于户主的某个女儿。其中前三者被称为网络地址,代表主机所属的区域,最后一个8位是已经无法再划分的主机号,每个拥有主机号的主机都是一个不同的个体(户主的12个女儿)。

这种划分方式称为划分子网(分类别编址),即将一个本来很大的相似的群体划分为不同层次,在这里将网络地址划分为A类,B类,C类。在我们给出的这个IP地址中,A类地址:204.0.0.0,B类地址:204.79.0.0,C类地址:204.79.197.0;能看出A类地址所能包含的主机数量最大,B类次之,C类最小。前者可以包含若干个后者。那么当我要找到主机号为200的主机时就很简单了,首先找到网络地址为204.0.0.0的网络,第一步我们排除了大部分的网络,而后找到网络地址为204.79.0.0的网络(其实可以认为204.79.0.0是204.0.0.0网络下的一台主机),然后是网络204.79.197.0,这时发现网络已经没有再进行划分了,所以在该网络进行广播,遍历所有的主机号,找到主机号为200的目的主机。

如图:图五
(假装有图)

    更进一步考虑,我们有必要每次都去查看一个人所在地范围最大的地址吗?通信的发起者同接受者一样,也是位于某个村子的某个门牌号里的某人,也许他要发送信息的目的对象就是本村的人(同一局域网内),这时还要去查看他是哪个省,哪个市吗?显然没必要。在这里我们一定要理解一点,那就是计算机始终是存在于整个网络的边缘或者说网络的终端,中心区域为连接在一起的互联网。这就像我们每个人的住所一样,都是存在于国-省-市-县-村-号的模型的门牌号中这个最底层中,上面各层都是人为抽象出来的。所以当某个局域网内的主机试图向因特网中的某台主机(IP:200.78.132.44)通信时,首先判断目的主机是否和自己在一个局域网中,如果是,那么直接将IP数据报根据主机号(44)发送给目的主机(12个女儿找美女的过程),路由器(转发IP数据报的专用计算机)都不必经过,这很大程度上的节省了互联网的线路资源,同时也提高了通信的速度。

这里不得不简要介绍一下路由器。路由器是一台用于转发IP数据报文的专用计算机,他有若干个端口,每个端口有一个网络地址,代表不同的网络并连接到他们。同时路由器也有自己的IP地址和mac地址,标识他作为一个主机本身在网络中的位置。当IP数据报在互联网上传输时,每台路由器都根据其IP地址作为独立的主机被定位。路由器会维护一张路由表,包含了他连接的子网络。比如有一份IP报文IP地址为172.43.50.15,此时这份报文到达路由器H1,H1查找自己的路由表,发现自己所连接的各个子网的网络地址没有匹配报文网络地址的端口,但是他发现H2所连接的子网有匹配的端口,于是他将IP数据报转发给H2,此时H2查找转发表,发现自己连接的子网有个地址为172.43.50.0的匹配项,于是便将这个报文从这个端口发送出去到达该子网络,由于这是一个简单的局域网,所以路由器将IP数据报的IP地址转换为目的主机的mac地址,情况转化为在局域网中根据mac地址查找主机(12女儿选美女)。

回到正题,如果目的主机不在本局域网,那么便将数据报转交给本局域网的连接到互联网的路由器(路由器可以被认为是一台主机,此时他连接到发出数据报的网络的端口的IP地址是204.79.197.0)。这台路由器首先判断IP数据报的目的网络地址是否在本网络中(可以认为路由器之间又组成了一个局域网,这块网络的网络地址为200.79.0.0。197是当前路由器一个端口的主机号,不过这个主机号代表的是一个网络而不是一个主机)。如果数据报的网络地址(200.78.132.0)就是由这一层路由器组成的网络,那么我们先将每台路由器都看做单独的主机,并假想这是一个由路由器组成的局域网,那么当一个路由器向另一个主机发送数据报时,首先IP地址被转换成mac地址并在当前局域网内广播(12女儿找美女),当找到目的路由器后,路由器查找转发表,如果有匹配的网络地址,则将数据报发送至该网络,重复上述过程,直到数据报被运输到局域网进行广播,找到主机数据传输结束。如果某层网络没有匹配项,则通过连接更大的网络的路由逐层向上传递至更高的网络(范围更大),直至有匹配的网络地址,而后在向下传递。

版权所有,未经允许,禁止转载。

时间: 2024-10-17 09:32:04

计算机网络初探(ip协议)的相关文章

计算机网络之IP协议族

网际协议IP 与IP协议配套使用的还有三个协议: 地址解析协议 ARP   (Address Resolution Protocol) 网际控制报文协议 ICMP  (Internet Control Message Protocol) 网际组管理协议 IGMP  (Internet Group Management Protocol) 将网络互相连接起来要使用一些中间设备,中间设备又称为中间系统或中继(relay)系统.根据中间设备所在的层次,可以有以下几种不同的中间设备: 物理层中继系统:转

计算机网络——TCP/IP协议族详解

一.OSI七层协议体系结构域TCP/IP四层体系结构对比 ISO/OSI模型,即开放式通信系统互联参考模型(Open System Interconnection Reference Model),是国际标准化组织(ISO)提出的一个试图使各种计算机在世界范围内互连为网络的标准框架,简称OSI. TCP/IP协议模型(Transmission Control Protocol/Internet Protocol),包含了一系列构成互联网基础的网络协议,是Internet的核心协议,通过20多年的

WIZnet启动线下培训活动:计算机网络TCP/IP协议及其实现方法

为了给大家营造更好的学习环境,WIZnet特此举办第一期培训活动,由WIZnet一线工程师为你分享最最前沿和实用的网络技术知识,帮你解答开发过程中的疑问,欢迎前来交流!名额有限(20名满),抓紧报名吧! 面向对象:一线攻城狮,在校学生,创客等,需具备单片机编程能力- 本期内容:TCP/IP网络协议及其实现方法 准备物品:笔记本电脑 + W5500开发板(暂时借用也可) 培训地点:北京市朝阳区霄云路38号现代汽车大厦22层i108室(地铁十号线亮马桥B口出500M) 培训时间:2014年10月25

计算机网络 0.初识Internet与TCP/IP协议

互联网,即因特网,Internet.互联网是一个世界范围的计算机网络.连接了世界上无数的计算设备,这些计算设备为PC,基于Linux的工作站,服务器servers等等.这些设备根据其作用不同可以被称为主机host或者端系统end system. 端系统通过通信链路communication link和分组交换机packet switch连接到一起.发送数据时,发送端系统将数据分段,并为每段加上首部字节.这样的形成的信息包称为分组packet.分组到达目标端系统后,被装配成初始数据.分组交换机从它

计算机网络 4.网络层与IP协议

网络中的每一台主机和路由器都有一个网络层部分.而路由器中也没有网络层以上的层次.网络层是协议栈中最复杂的层次. 转发forwarding:当一个分组到达某路由器的输入链路时.该路由器将分组移动到适当的输出链路. 选路routing:当分组从发送方流向接收方时.网络层必须决定这些分组所採用的路由或路径.而计算这些路径的算法被称为选路算法routing algorithm. 转发是路由器将分组从输入链路接口转移到适当的输出链路接口的本地动作.而选路分组由源到目的地时.决定端到端路径的网络范围的进程.

初探-TCP/IP 协议

一.TCP/IP协议族 TCP/IP协议族体系结构及主要协议.png 1.数据链路层 ARP协议和RARP协议,它们实现了IP地址和机器物理地址之间的相互转化 ARP协议(Address Resolve Protocol,地址解析协议) RARP协议(Reverse Address Resolve Protocol,逆地址解析协议) 作用:网络层是用IP地址寻址一台机器,而数据链路层是用物理地址寻址一台机器,因此网络层必须先将目标机器的IP地址转化成其物理地址,这就是ARP协议的用途.RARP协

计算机网络基础:ARP协议 --- IP协议 --- ICMP + IGMP协议

ARP协议 ARP高速缓存:ARP把保存在高速缓存中的每一个映射地址项目都设置生存时间.凡超过生存时间的项目就从高速缓存中删除掉. ARP是解决同一局域网上的主机或路由器的IP地址和硬件地址的映射问题. IP协议 利用IP协议可以使这些性能各异的网络从用户看起来好像是一个统一的网络. ICMP协议 为了提高IP数据报交付成功的机会,在网际层用了网际控制报文协议ICMP. ICMP允许主机或路由器报告差错情况和提供有关异常情况的报告. ICMP报文格式 ICMP协议的应用 PING PING用来测

OSI七层模型详解 TCP/IP协议

总结 OSI中的层 功能 TCP/IP协议族 应用层 文件传输,电子邮件,文件服务,虚拟终端 TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 等等 表示层 数据格式化,代码转换,数据加密 没有协议 会话层 解除或建立与别的接点的联系 没有协议 传输层 提供端对端的接口 TCP,UDP 网络层 为数据包选择路由 IP,ICMP,OSPF,EIGRP,IGMP 数据链路层 传输有地址的帧以及错误检测功能 SLIP,CSLIP,PPP,MTU 物理层 以二进制数据形式在物理媒体上

计算机网络中的协议

物理层 物理层考虑的是怎样才能连接各种计算机传输媒体上传输的数据比特流,而不是具体的传输媒体,用于物理层的协议叫做物理层的规程. 数据链路层 对于点对点的链路,PPP协议书目前应用最广泛的数据链路层协议 PPP协议的组成 1)一个将数据报封装到串行链路的方法,PPP既支持异步链路,有支持面向比特的同步链路.IP数据报在PPP帧中就是其信息部分. 2)一个用来建立,配置和测试数据链路连接的链路控制协议LCP.通信双方可协商一些选项.链路控制,PPP为用户发起呼叫以建立链路,在建立链路是协商以参数选