第四章 网络层

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

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

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

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. event事件传播规则

    参考原文:https://my.oschina.net/u/1454562/blog/205010 event事件传播有三个阶段:捕获阶段.目标阶段.冒泡阶段 target.addEventListe ...

  2. 〖Python〗-- Django的Form组件

    [Django的Form组件] Django的Form主要具有一下几大功能: 生成HTML标签 验证用户数据(显示错误信息) HTML Form提交保留上次提交数据 初始化页面显示内容 Form类的使 ...

  3. node和yarn

    nvm 版本管理工具 https://github.com/coreybutler/nvm-windows/releases   nvm-setup   nvm install +版本号   加版本 ...

  4. relocation error: /usr/lib64/libc.so.6: symbol _dl_starting_up, version GLIBC_PRIVATE not defined in file ld-linux-x86-64.so.2 with link time reference 问题解决

    在建立一个错误的软连接到ld-linux-x86-64.so.2时,悲剧就这么发生了.此时大部分命令都不能使用,SSH当然也不能登录了.这个时候一定不要退出终端. 有人说那就把软连接复原吧,可是ln也 ...

  5. JS监听浏览器事件

    Onunload与Onbeforeunload Onunload,onbeforeunload都是在刷新或关闭时调用,可以在<script>脚本中通过window.onunload来指定或 ...

  6. PHP大小写是否敏感问题的汇总

      一.大小写敏感1. 变量名区分大小写view sourceprint?     <?php    $abc = 'abcd';    echo $abc; //输出 'abcd'     e ...

  7. 40. Linux下7-zip解压到当前目录的命令

    7z x test.zip 解压到当前目录下,但保留原来的目录结构 7z e test.zip 解压到当前目录下,不保留原来的目录结构

  8. Delphi XE6打电话

    procedure TPhoneDialerForm.btnMakeCallClick(Sender: TObject); var PhoneDialerService: IFMXPhoneDiale ...

  9. bat 笔记 一

    echo 有两个参数 off 和 on 注意echo前面要加个@才生效 当 @echo off的时候就是将doc命令将前面的路径去掉,默认其实就是@echo on显示路径: 默认的状态: 输入@ech ...

  10. 9 random模块

    1.ramdom模块主要方法 random.random()函数是这个模块中最常用的方法了,它会生成一个随机的浮点数,范围是在0.0~1.0之间. random.uniform()正好弥补了上面函数的 ...