第四章 网络层

电信网使用面向连接的通信方式,使电信网络能够向用户提供可靠传输的服务。

互联网设计思路:网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报(分组)服务。

网络层不提供可靠传输服务,所传送的分组可能出错、丢失、重复和失序。 

TCP/IP体系的网络层提供的是数据报服务。

网络层协议:IP协议、地址解析协议ARP、网际控制报文协议ICMP、网际组管理协议IGMP。

ICMP和IGMP要使用IP协议、IP协议要经常使用ARP。 

IP地址是32位二进制代码,每8位换成一个十进制数并中间加一个点即叫点分十进制。 

ARP协议:知道自己的IP、硬件地址和对方的IP地址求对方的硬件地址。

IP地址和硬件地址不是简单映射关系,ARP解决方法是在主机ARP高速缓存中存放一个IP地址到硬件地址的映射表,而且经常动态更新(新增或超时删除)

网络链路上传送的帧是按照硬件地址找到目的主机的,使用IP地址的好处在于不需要进行非常复杂的硬件地址转换工作就能使这些异构网络能够互相通信,一个主机只有一个IP地址,它们之间的通信就像连接在同一个网络一样简单。

IP数据报格式: 

32位(4个字节)为单位进行描述,固定首部长度为20字节。首部长度是20-60字节。

首部检验和采用反码算术运算求和的方式进行检验。

互联网有两种交付:在本网络上的直接交付和到其他网络的间接交付。

网络地址=IP地址与子网掩码化成二进制后逐位相与,网络地址指的是网络号+主机号全为0。

无分类域间路由选择CIDR是解决IP地址紧缺第一个好方法。CIDR记法把IP地址后面加上斜线‘/‘,然后写上网络号所占的位数,把前缀都相同的连续IP地址组成一个“CIDR地址块“。

CIDR主要特点:(1)消除了传统的A类、B类C类地址以及划分子网的概念 
(2)CIDR把网络前缀都相同的连续IP地址组成一个“CIDR地址块“。

路由表必须包含三个内容:目的网络地址、子网掩码和下一跳地址。

ICMP报文有两类:ICMP差错报告报文和ICMP询问报文。 
ICMP的一个重要应用:分组网间探测PING,测试两台主机之间的连通性。 

路由选择协议划分:内部网关协议IGP(RIP和OSPF等)和外部网关协议EGP(目前用的是BGP)

RIP协议:一种分布式的基于距离向量的路由选择协议,距离是指跳数,RIP适用于小型互联网。

RIP协议特点:仅和相邻路由器交换信息、交换的信息是自己现在的路由表、按固定的时间间隔交换路由信息。

RIP协议最大优点就是实现简单,开销较小,缺点首先是RIP限制了网络的规模;其次,路由器之间交换的路由信息是完整路由表,随着网络规模扩大,开销也增加;最后是坏消息传播得慢,当网络出现故障时,要经过较长时间才能将此信息传送到所有路由器。

OSPF协议:使用分布式的链路状态协议。

OSPF协议特点:向本自治系统中所有路由器发送信息(洪泛法)、发送的信息是与本路由器相邻的所有路由器的链路状态、只有当链路状态发生变化时,路由器才向所有路由器用洪泛法发送此消息。

OSPF的优点是OSPF的更新过程收敛得快,链路状态数据库能较快地进行更新;对于不同类型的业务可计算出不同的路由;提供负载均衡功能;支持可变长度的子网划分和无分类的编址CIDR,缺点是协议本身庞大复杂,实现起来难度大。

路由器可划分为:路由选择部分和分组转发部分。

解决IP地址耗尽的问题,根本办法就是采用具有更大地址空间的新版本IP协议IPv6。

IPv6的主要变化: 
(1)更大的地址空间(128位地址) (2)灵活的首部格式 
(3)改进的选项 (4) 支持即插即用 (5)支持资源的预分配 
(6)首部改为8字节对齐(IPv4是4字节对齐)

IPv6数据包的目的地址有三种基本类型地址:单播、多播、任播。

IPv6地址采用冒号十六进制记法。

向IPv6过渡只能逐步演进,可以使用双协议栈或隧道技术。

一个VPN至少要有一个路由器具有合法的全球IP地址,这样才能和本系统的另一个VPN通过互联网进行通信,所有通过互联网传送的数据都必须加密。

《计算机网络》谢希仁(第7版) 第四章 c语言http://c.biancheng.net/cpp/html/3137.html的更多相关文章

  1. 重读 谢希仁《计算机网络》3 - 网络层和IP协议

  2. C++PrimerPlus第6版 第四章——复合类型

    1,复合类型主要包含:数组.结构.联合.枚举.类.指针.引用等. 2,数组.长度必须确定.即编译阶段,数组的长度就得确定好.所以只能使用常量(#define.const)声明数组长度.如果使用变量声明 ...

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

    一.等待与通知 public final void wait() throws InterruptedException      等待条件的发生. public final void wait(lo ...

  4. C#高级编程第11版 - 第四章 索引

    [1]4.2 继承的类型 1.C#不支持类的多继承,但它支持一个接口继承自多个接口. 2.单继承:单继承允许一个类继承自另外一个基类,C#支持. 3.多级继承:多级继承允许创建一个类继承自它的父类,而 ...

  5. MVC5+EF6 简易版CMS(非接口) 第四章:使用业务层方法,以及关联表解决方案

    目录 简易版CMS后台管理系统开发流程 MVC5+EF6 简易版CMS(非接口) 第一章:新建项目 MVC5+EF6 简易版CMS(非接口) 第二章:建数据模型 MVC5+EF6 简易版CMS(非接口 ...

  6. 图片人脸检测——Dlib版(四)

    上几篇给大家讲了OpenCV的图片人脸检测,而本文给大家带来的是比OpenCV更加精准的图片人脸检测Dlib库. 点击查看往期: <图片人脸检测——OpenCV版(二)> <视频人脸 ...

  7. ROS机器人程序设计(原书第2版)补充资料 (肆) 第四章 在ROS下使用传感器和执行器

    ROS机器人程序设计(原书第2版)补充资料 (肆) 第四章 在ROS使用传感器和执行器 书中,大部分出现hydro的地方,直接替换为indigo或jade或kinetic,即可在对应版本中使用. 第四 ...

  8. Python操作redis系列以 哈希(Hash)命令详解(四)

    # -*- coding: utf-8 -*- import redis #这个redis不能用,请根据自己的需要修改 r =redis.Redis(host=") 1. Hset 命令用于 ...

  9. C语言程序设计:现代方法(第2版)第二章全部习题答案

    前言 本人在通过<C语言程序设计:现代方法(第2版)>自学C语言时,发现国内并没有该书完整的课后习题答案,所以就想把自己在学习过程中所做出的答案分享出来,以供大家参考.这些答案是本人自己解 ...

随机推荐

  1. python pip使用报错:Fatal error in launcher: Unable to create process using '"'

    在一个系统中共存Python2.python3的时候,pip.pip2.pip3使用的时候会报错: c:\Python35\Scripts>pip3Fatal error in launcher ...

  2. loganalyzer

  3. python编程之禅

    在python界面输入 import this >>> import this The Zen of Python, by Tim Peters Beautiful is bette ...

  4. 15.Result配置详解

    转自:https://wenku.baidu.com/view/84fa86ae360cba1aa911da02.html 说明:在前面的许多案例中我们所用到的Action基本都继承自ActionSu ...

  5. FireFox 火狐主页被劫持

    火狐主页被劫持hao123,流氓 WIN7 ,firefox,任务栏,快速启动,右键 属性 target 应该是 "D:\Program Files (x86)\Mozilla Firefo ...

  6. CentOS 7 基础命令安装

    https://my.oschina.net/u/1428349/blog/288708 1. ifconfig安装 > yum install net-tools 临时变量(可以直接使用sbi ...

  7. Python之建立APP流程以及SVN 的使用

    一, 1)我们先拿到SVN的地址比如说:https://123.com/trunck/nihao 2)执行命令行 svn checkout 此时check out是将项目存到了本地根目录下面,如果想存 ...

  8. Json字符串转Dictionary

    /// <summary> /// json字符串转Dictionary /// </summary> /// <param name="json"& ...

  9. eclipse 自动生成json格式的toString()方法

    文本代码 {"${member.name()}":"${member.value}", "${otherMembers}"}

  10. Oracle免客户端InstantClient安装使用

    正常情况下,用PL/SQL等软件连接Oracle,需要安装Oracle客户端软件,一般安装oracle客户端差不多需要2G左右的硬盘空间,但如果我们仅仅是连接数据库进行查询和执行一些相应的语句而不进行 ...