计算机网络(谢希仁版)——第四章回顾(1)

  什么是网际层?其主要作用是什么?

  TCP/IP体系结构中的网际层(internet layer)就是网络层,核心协议为IP(Internet Protocol)协议,但是为了避免名字冲突而将internet翻译为了“网际”,同时也可以体现出其作用:解决网络(局域网)与网络互连的问题。

  什么是“面向连接”、“可靠地”?什么是“无连接”、“尽最大努力的”?

  所谓面向连接、可靠,就是通信双方在通信时必须确保建立连接,如果连接建立了就可以确定消息能发送到目标方,如果连接没有建立好,就不可以将消息发送到目标方,类似于“打电话”

  所谓无连接、尽最大努力的,就是通信双方在不确定能否发送成功的情况下依然可以将消息发出去,负责转发的中间方(路由器)会尽可能的将消息送到目标方,但是不保证一定成功,类似于“发短信”

  TCP/IP体系结构中的网际层采用的是“尽最大努力”的通信方式。(下图分别为提供可靠服务的网络层和提供最大努力的网络层)

  

  为什么网际层要采用“尽最大努力”的方式?

  相比于传统电话网络,计算机网络中的结点均为具有一定处理能力的主机,可以处理好通信出错的情况,比如三个数据报,丢失了中间的一份,主机可以发现。所以计算机网络中网络层提供可靠的通信并没有太大的意义,相比之下尽最大努力的通信更适合计算机通信的突发性特点,并且能节省更多的网络资源。

  

  

  网际层有哪些协议?

  最主要的就是IP(Internet Protocol)协议,除此之外还有3个“配套使用”的协议:

  ARP协议(Address Resolution Protocol),即地址解析协议

  ICMP协议(Internet Control Message Protocol),即网际控制报文协议

  IGMP(Internet Group Management Protocol),即网际组管理协议

  这三个配套协议的用途之后介绍。

  

  既然MAC地址已经是唯一的,为什么还需要网际层或者说IP地址?

  因为网络中的路由器不可能存下网络中所有主机的MAC地址,但却可以根据IP地址知道消息下一步该转发给哪个路由器,直到转发到目标主机所在网络的路由器,然后由该路由器直接交付给目标主机。

  为什么路由器可以根据IP地址确定消息该转发给哪个路由器?

  简要回答就是IP地址中声明了“该IP地址所属的网络”,所以路由器只需要将消息向该网络转发即可,当转发至该网络的路由器后,该网络的路由器再负责将消息传递给目标主机。

  要想知道为什么路由器可以根据IP地址知道下一步转发至何处,就得看看IP地址的组成和历史。

  IP地址的发展经过了三个阶段:

  1.分类的IP地址

  2.对分类的IP地址再次“划分”出子网

  3.构成超网,也就是不再对IP地址进行分类,或者可以理解为将IP地址“自由划分”

  ※不论在上述哪个阶段,IP地址长度都是32位(准确的说是IPv4,IPv6有128位长,IPv就是IP version,即IP版本,目前常见为IPv4,其地址于2011年宣布耗尽,IPv6注定是下一代,1、3、5版本均未使用)

  ※在第一阶段,IP地址的结构为{<网络号>,<主机号>},可理解为:网络号部分用于标明该IP地址位于哪个网络,主机号部分用于标明该IP地址为该网络中的哪个主机。

  在此基础上分出5种类型,其中以A,B,C类最常见,这三类用于点对点通信。D类地址用于一对多通信(多播),不常见。

  

  不难看出C类地址可以分出最多的网络(2^21),但单个网络中能拥有的主机数量少,A类地址可以分出较少的网络(2^7),但单个网络中能拥有的主机数量最多。

  ※IP地址为32位,但是用32位来表示一个IP地址“太长”,所以手写或表达时往往采用“点分十进制”来表示IP地址

  

  IP地址划分出“网络号”和“主机号”以及分类有什么优点和缺点?

  优点就是可以方便IP地址管理机构的IP地址分配任务,其只需要负责分配网络号给各个“单位”即可,主机号部分可以由“单位”自行划分。

此外,IP地址中有“网络号”可以极大的减轻路由器的压力,因为路由器只需要以网络为目标来转发分组。

  缺点就是浪费了很多位(比如C类地址浪费了3位),使得IP地址的32位并不能被充分利用,此外,由于第一阶段的分类IP地址划分过于“粗枝大叶”,导致了更多的IP地址浪费。比如一个“单位”有数百万台主机需要连接互联网,请求B类网络号需要几十个,不便管理,于是请求了一个A类网络号,但是其内部只有几百万台主机,而一个A类网络号支持一千多万台主机号,该A类网络号中剩下的IP地址就被浪费掉了。

  IP数据报的传输过程是怎样的?

  在网络之间传送时,是这样的:主机将IP数据报传给本网络的路由器,本网络的路由器根据IP地址将IP数据报传递给下一路由器,直至传递到目标网络的路由器,然后由目标网络的路由器将该IP数据报传给目标主机

  

  

  那么,目标主机就位于本网络,或IP数据报到达目标网络路由器后,是如何传递给目标主机的?

  不论是目标主机就位于本网络,还是目标网络路由器将数据报传给目标主机,都是同一性质的问题:局域网传递消息。

  此时我们需要用到地址解析协议ARP,其作用就是将IP地址转换为MAC硬件地址。

  当源主机(也可以是本网络路由器)准备发送IP数据报时,其先在本机中的ARP缓存地址中查找是否有该IP地址,若有,则直接将该IP地址对应的MAC地址写入MAC帧,然后通过局域网传递给目标主机。若没有,则在局域网内广播一个ARP请求分组,其形式、过程如下

  

  若目标主机不在本局域网内,则源主机将IP数据报传递给本网络的路由器。

  

  ※路由器至少有两个IP地址,路由器的每一个接口对应一个IP地址

  

  路由器是如何实现转发分组的?

  路由器存有一个路由表,其根据IP数据报中的IP地址和路由表,判断出分组应该传递给谁

  

  

  IP数据报的组成是怎样的?

  如图

  1.版本:说明该IP数据报使用的IP协议的版本,通信双方必须使用同一个IP协议版本

  2.首部长度:因为IPv4中首部存在可变部分,所以需要指出首部的长度以划分首部与数据部分

  3.区分服务:一般不用

  4.总长度:说明该IP数据报的总长度。IP数据报封装为MAC帧时受限于MAC帧的长度上限,所以IP数据报还存在“分片”操作,即将IP数据报分为多片,封装进多个MAC帧。

  5.标识:IP数据报若存在分片,则接收方需要将各分片组合出原IP数据报,相同标识号的IP数据报就说明它们其实是同一个源IP数据报。

  6.标志:占3位,目前只有前两位有意义,最低位为MF(More Fragment),若MF=1则说明该数据报后面“还有分片”。中间一位为DF(Don‘t Fragment),若DF=1则没有分片,只有DF=0才可以分片

  7.片偏移:用于说明该IP数据报(已分片)在源IP数据报中的相对位置(相对于数据字段的起点),单位是字节。

  8.生存时间:IP分组在网络中传递时有可能出现“兜圈子”的情况,所以需要对IP数据报进行一定的限制,生存时间的单位是“跳数”,最大值为255,每经过一个路由器,路由器便将IP数据报的生存时间-1,当IP数据报中的生存时间为0时,路由器丢弃该分组。

  9.协议:说明该IP数据报的上层协议类型,如TCP对应6,UDP对应17

  10.首部校验和:验证首部是否存在传输错误

  11.源地址

  12.目的地址

  ※IP地址中的可变部分可用于支持很多操作,但很多情况都用不上,而且会增加路由器处理分组的开销,所以IPv6中的数据报首部做成了固定长度

  如何解决IP地址分类带来的浪费问题?

  历史上解决该问题有两个阶段,分别是划分子网和无分类编址(CIDR)。我们逐一讨论。

  划分子网即在原有分类IP地址的基础上进行进一步划分网络,如B类网络143.13.0.0,可以再次划分出255个子网络,即从143.13.1.0到143.13.255.0。这么做的话会带来一个小问题,就是像143.13.3.10这样的IP地址,如何从中提取出目标子网络143.13.3.0?解决的方法是子网掩码,即一串32位的掩码,将IP地址与子网掩码进行按位与即可得出IP地址中的子网络号。例如下:

  

  同时,路由器中的路由表改为如下格式:

  

  当IP分组传递至某个路由器后,路由器将该IP地址与路由表中的子网掩码逐一按位与,然后比较是否与对应的目的网络地址相同,若相同则说明该分组的目标子网是该行。

  但是划分子网依然有缺陷,因为划分子网的基础依然是分类的IP地址,所以网络号的分配依然不够灵活,所以IP地址又发展为了CIDR无分类编址的阶段。

  在CIDR中,原“网络号”对应了CIDR的“网络前缀”,原“子网号”对应了“CIDR地址块”。CIDR的最大特点就是“无分类”,其IP地址可抽象看为{网络前缀,主机号},在分类IP地址中,网络号长度是固定的(即使划分子网也是在某一类地址中进行划分),而CIDR中网络前缀长度则是不固定的,如143.13.24.23/17,该IP地址后接了一个/17,用于说明其网络前缀的位数,我们要想知道该IP地址的网络前缀就需要令该IP地址与11111111 11111111 10000000 00000000进行按位与,然后得出网络前缀。

  CIDR的方式可以减少路由器中路由表的大小,因为CIDR地址块的大小是不固定的,一个CIDR地址块有可能包含了多个C类或B类地址,这样一来路由表中只需要一行CIDR地址,就相当于分类IP地址中的多个网络号地址。

  CIDR的方式带来了另一个问题,那就是如何确定一个IP地址的网络前缀?基础思路是将IP地址与子网掩码按位与,然后找出符合的“最长网络前缀”。

  什么是ICMP网际控制报文协议?

  ICMP的意义是IP数据报的转发效率和交付成功的几率。说白了就是封装于IP数据报中的一种特殊报文,用于测试主机间的连通性等。

  ICMP报文分为两大类:ICMP差错报告报文和ICMP询问报文。

  

  ICMP有两种常见应用:PING和路由探测

  PING即Packet InterNet Groper,用于探测两台主机间是否连通,源主机向目标主机发送ICMP的回送请求报文(封装在IP数据报中),目标主机若接收到该报文则返回回送回答报文。Windows中可如下操作:打开命令行操作界面,输入“ping hostname”(hostname即目标主机名或IP地址),按Enter

  

  路由探测即源主机向目标主机发送无法交付的UDP数据报(封装于IP数据报,若目标主机接收到该数据报,则会返回ICMP终点不可达报文),第一次发送时将IP数据报的生存时间设为1,这样一来第一个路由器接收到后将生存时间-1就会直接判断该IP分组需要丢弃,并返回ICMP时间超过报文,源主机接下来发送第二个IP数据报(依然为不可交付UDP数据报),此次将生存时间设为2……以此类推,直至接收到ICMP终点不可达报文,或生存时间达到上限为止。

  在windows中路由探测的命令为tracert,用例如下

  

时间: 2024-11-03 19:49:38

计算机网络(谢希仁版)——第四章回顾(1)的相关文章

计算机网络(谢希仁版)——第五章回顾

为什么有了IP层,还需要运输层? 从IP层的角度来看,网络通信的双方是两台主机,然而实际上,网络通信的双方应为两个应用或者说进程,因此数据仅仅指出源主机和目标主机是不够的.而指明数据"源进程"和"目标进程"的工作就是运输层负责的.此外,IP层并不负责数据内容的差错检测(为了减轻网络路由器的压力),只对IP分组的首部进行检测,而运输层则会对数据内容进行差错检测(这一工作在主机处完成,不会对路由器造成压力) 运输层是如何指明"源进程"和"目

计算机网络(谢希仁版)——第三章导读(1)

※数据链路层讨论什么 数据链路层讨论的是局域网中主机与主机间的连接问题,网络(IP)层讨论的主要是网络与网络互连的问题. 在数据链路层(局域网)使用的信道主要有两种:点对点信道和广播信道,我们具体要讨论的就是这两个信道的特点,以及它们所使用的协议的特点.但在讨论过程中,我们会先讨论数据链路层的三个基本问题,然后再讨论点对点信道.广播信道.此外我们还会讨论一些些额外知识. 数据链路是什么意思? "链路"指的是两个结点间的物理线路(有线或无线),中间没有其它结点,而"数据链路&q

《计算机网络(第7版)谢希仁 著》第二章 物理层 要点及习题总结

1.物理层基本概念:物理层考虑的是怎样才能再连接各种计算机的传输媒体上传输数据比特流,而不是指具体的传输媒体 2.物理层特性:机械特性,电气特性,功能特性,过程特性 3.数据通信系统:分为源系统(发送端).传输系统(传输网络).目的系统(接收端)三大部分,通信的目的是传送消息,数据是运送消息的实体,信号则是数据的电气或电磁的表现,通信系统必备的三大要素:信源,信道,信宿 4.信号: (1)模拟信号(连续信号) 代表消息的参数的取值是连续的,连续变化的信号,用户家中的调制解调器到电话端局之间的用户

计算机网络(谢希仁版)--应用层

应用层: 1. 域名系统(DNS): 1. 概述: 许多应用层软件经常直接使用域名系统 DNS (Domain Name System),但计算机的用户只是间接而不是直接使用域名系统. 因特网采用层次结构的命名树作为主机的名字,并使用分布式的域名系统 DNS. 名字到 IP 地址的解析是由若干个域名服务器程序完成的.域名服务器程序在专设的结点上运行,运行该程序的机器称为域名服务器. 2.  因特网的域名结构: 因特网采用了层次树状结构的命名方法. 任何一个连接在因特网上的主机或路由器,都有一个唯

《计算机网络(第七版)谢希仁著》PDF高清版,计算机考研推荐

<计算机网络(第七版)谢希仁著> 链接: https://pan.baidu.com/s/1vKLoNwiziDQwO0V-aGVQfA 提取码: imwy ? ? 内容简介  · · · · · · 本书自1989年首次出版以来,曾于1994年.1999年.2003年.2008年和2013年分别出了修订版.在2006年本书通过了教育部的评审,被纳入普通高等教育“十一五”国家级规划教材:2008年出版的第5版获得了教育部2009年精品教材称号.2013年出版的第6版是“十二五”普通高等教育本科

Java 线程第三版 第四章 Thread Notification 读书笔记

一.等待与通知 public final void wait() throws InterruptedException 等待条件的发生. public final void wait(long timeout) throws InterruptedException 等待条件的发生.如果通知没有在timeout指定的时间内发生,它还是会返回. public final void wait(long timeout, int nanos) throws InterruptedException

计算机网络第七版谢希仁知识点总结

1.专有名词: 互联网服务提供商ISP(Interest Service Provider) 互联网交换点 IXP (Internet eXchange Point) 广域网WAN(Wide Area Network) 城域网MAN(Metropolitan Area Network) 局域网LAN(Local Area Network) 个人区域网PAN(Personal Area Network) 传输控制协议TCP(Transmission Control Protocol) 用户数据报协

计算机网络第七版(谢希仁)知识点总结

1.常见专有名词:互联网服务提供商ISP(Interest Service Provider)互联网交换点 IXP (Internet eXchange Point)广域网WAN(Wide Area Network)城域网MAN(Metropolitan Area Network) 局域网LAN(Local Area Network)个人区域网PAN(Personal Area Network)传输控制协议TCP(Transmission Control Protocol)用户数据报协议UDP(

Java编程思想第四版 第四章个人练习

第四章 练习1:(1)写一个程序,打印1到100的值 public static void main(String[] args) { test(100); } public static void test(int num){ int i=0; while(i<num){ System.out.print(++i); if(i!=100){ System.out.print("."); } } System.out.println(); int j=0; do{ System.