【计算机网络】-网络层-Internet的网络层

  • Internet是一组相互连接的网络或者自治系统的集合
  • Internet
    1.存在几个主要骨干网络,骨干网络是由高带宽的线路和快速路由器构成
    2.这些骨干网络中最大的一个称为一级网络,每个骨干网都与它连接,进而达到其他骨干网
    3.连接在骨干网络上的是ISP
    4.ISP为家庭和企业、数据中心和服务器托管设施,以及区域(中级)网络提供接入Internet服务
    5.连接在区域网络上是更多ISP、许多大学和公司局域网和其他边缘网络

Internet是相互连接的许多网络

IP(Internet Protocol)

将整个Internet粘合在一起的是IP(Internet Protocol)
IP协议设计之初就考虑了网络互联的需求

IP的任务
提供一种尽力投递的(best-efforts,即不提供任何保证)方法将数据报从源端传输到目标端,它不关心源机器和目标机器是否在同样的网络中,也不关心它们之间是否还有其他网络

IPv4协议头部的各个字段信息

IPv4头部:

各个字段的含义:

版本域与头部长度

版本号(version)
4bits,IPv4协议填4,IPv6协议填6
头部长度(IHL)
4bits,单位为4字节,取值范围5-15(确省值为5,即标准头标长20字节),指示IP包头的长度

服务类型(TOS)域

总长度域、标识域

总长度域
16bits ,单位字节,描述IP包的总长(包括头和数据),最大包长度为65535字节

标识域
16bits,用于唯一标识该包

标志域、分段偏移域

标志域
3bits。第1位未定义
第2位DF代表“不分段”,DF为0表示该包可分段,否则表示不可分段
第3位MF代表“更多的分段”,MF为0表示这是最后分段,否则表示还有后续分段

分段偏移域
13bits,单位8字节。取值0-8191,标明当前报片在原包中的位置

生存时间域、协议域

生存时间(TTL)域
8bits,单位秒,表示包的生存时间。实际操作时,包每经过一个路由器,TTL值减一,当TTL值为0时,该包被丢弃

协议(Protocol)域
表示高层协议类型。协议的编号详见http://www.iana.org
0 Reserved
1 Internet Control Message Protocol (ICMP)
2 Internet Group Management Protocol (IGMP)
3 Gateway-to-Gateway Protocol (GGP)
4 IP (IP encapsulation)
5 Stream
6 Transmission Control (TCP)
8 Exterior Gateway Protocol (EGP)
9 Private Interior Routing Protocol
17 User Datagram (UDP)

头部校验和域、源/目的地址域

头部校验和域
16bits,用来检验包头

源地址域
32bits,包的发送者的IP地址

目的地址域
32bits,包的接收者的IP地址

填充(padding)
包头长度必须为4字节的整数倍,如果选项的长度不是4字节的整数倍,那么就要进行填充

选项(option)

安全性选项
指明包的机密性

严格的源路由选项
给出包经过的完整路由

宽松的源路由选项
给出包经过的某些路由器列表

记录路径选项
使每个路由器都附上它的IP地址

时间戳选项
使每个路由器都附上它的IP地址和时间戳

IP地址

IP地址

  • 为了屏蔽物理网络地址的差异,IP采用一种全局通用的地址格式为全网的每个主机和路由器分配一个唯一的地址
  • 实际上,IP地址引用的不是一台主机,而是一个网络接口。大多数主机只有一个网络接口,也就只有一个IP地址

IP地址是32位长,包含网络部分和主机部分

IP地址分类

A类地址

  • Class A - 0nnnnnnn hhhhhhhh hhhhhhhh hhhhhhhh
  • 第一位为0;7位网络位;24位主机位
  • 第一个字节:0-127
  • 允许多达126个网络(0和127保留)
  • 每个网络允许多达16,777,214(=2^24-2)台主机

B类地址

  • Class B - 10nnnnnn nnnnnnnn hhhhhhhh hhhhhhhh
  • 前两位10; 14位网络位;16位主机位
  • 第一个字节:128-191
  • 允许多达16,384(=2^14)个网络
  • 每个网络允许多达65,534(=2^16-2)台主机

C类地址

  • Class C - 110nnnnn nnnnnnnn nnnnnnnn hhhhhhhh
  • 前三位110;21位网络位;8位主机位
  • 第一个字节:192 - 223
  • 允许多达2,097,152网络
  • 每个网络允许多达254台主机

D类地址

  • Class D - 1110mmmm mmmmmmmm mmmmmmmm mmmmmmmm
  • 前四位1110;28位多播( multicast)地址位
  • 第一个字节:224 - 247
  • D类地址是多播地址 – 见RFC 1112

E类地址

  • Class E - 1111rrrr rrrrrrrr rrrrrrrr rrrrrrrr
  • 前四位1111;28位保留地址位
  • 第一个字节:248 - 255
  • 预留将来扩展

IP地址表示

点分十进制
161.0.116.225
二进制
10100001 00000000 01110100 11100001
十六进制
A10074E1

特殊IP地址

环回地址(Loopback)
每个IP协议栈都实现了
127.0.0.0
本地网络的广播地址和对一个指定网络的广播地址
FF.FF.FF.FF: 255.255.255.255
network.FF: 196.34.5.255, 19.255.255.255
网络地址
network.00: 196.34.5.0
本地网络中的主机地址
00.00.00.host: 0.0.0.188

子网划分

为什么要进行子网划分?

  • 分类地址适用于设计之初的互联网,但是A类网络和B类网络太大,不易管理
    解决方法
  • 将网络分成若干供内部使用的子网,对外界,该网络还是一个单独的网络

例子:

划分为三个子网后对外仍是一个网络

子网划分距离:

例如:C类网络192.10.1.0,主机号部分的前三位用于标识子网号,即:

子网地址分别为
11000000 00001010 00000001 00000000 -- 192.10.1.0
11000000 00001010 00000001 00100000 -- 192.10.1.32
11000000 00001010 00000001 01000000 -- 192.10.1.64
11000000 00001010 00000001 01100000 -- 192.10.1.96
11000000 00001010 00000001 10000000 -- 192.10.1.128
11000000 00001010 00000001 10100000 -- 192.10.1.160
11000000 00001010 00000001 11000000 -- 192.10.1.192
11000000 00001010 00000001 11100000 -- 192.10.1.224

子网掩码

经过上述子网划分后存在的问题,如何知道一个IP地址中哪些位是网络号+子网号,哪些位是主机号呢?

解决方法:引入子网掩码

子网掩码格式:

32比特
前一部分全1,1的个数表示相应IP地址中网络+子网部分的位数
后一部分全0,0的个数表示相应IP地址中主机部分的位数

注意
连接在同一个子网上的所有主机和路由器的子网掩码相同
两个IP地址和子网掩码相与结果相同,表示这两个IP地址的主机在同一个子网中

无类别域间路由(CIDR)

分类地址存在的问题:
A类、 B类地址太大
一个A类网络有16M个地址
一个B类网络有65536主机地址
C类地址太小
一个C类网络有256个地址
需要更灵活的方式!

解决方法1:子网划分
将网络分成若干供内部使用的子网

但是还存在着问题
C类地址太小
每个C类网络对应一个路由表项,造成路由表膨胀

解决方法2:CIDR
在网络和主机间使用可变长度的划分方法,即无类别地址(CIDR),不需要子网

表示法:
点分十进制表示法后跟“/”和网络部分长度
如:198.16.16.0/21

198.16.16.0/21表示网络部分长度为21的一段地址,这段地址中第一个地址为198.16.16.0,最后一个地址为198.16.23.255

使用CIDR需要路由协议的支持(到目前所有路由器都支持)
每个路由表项进行扩展,增加了32位的掩码。路由表由所有网络的三元组(IP地址、子网掩码、输出线路)构成的
当一个数据包到达时,路由器首先将它的目标IP提取出来,和子网掩码去“与”,结果和表项中的网络号比较,是否匹配
最长匹配原则
路由查找时,若多个路由表项匹配成功,选择掩码长(1比特数多)的路由表项

网络地址转换(NAT)

临时解决IP地址的短缺问题
出现了NAT方案
NAT的基本思想
为公司分配一个或少量的公有IP地址,使用公有IP地址在Internet上传输数据包
在公司内部,每台计算机有唯一的私有IP地址,使用该地址在公司内部传输数据包
当一个数据包离开公司的网络时,它需要一个地址转换
私有地址
10.0.0.0 ---10.255.255.255
172.16.0.0---172.31.255.255
192.168.0.0---192.168.255.255
注:含有私有地址的数据包不应该出现在Internet上

任何时候当一个向外发送的数据包进入到NAT盒中,源地址被公有IP替代,传输层(如:TCP)的源端口号与被一个索引值替代
回来时根据传输层的目的端口号从NAT盒中找到对应的表项,提取相应的私有IP地址和原来的端口号,填到数据包中

NAT方案的缺陷
违反了IP的结构模型。IP的结构模型声明每个IP地址均唯一标示一台机器
将Internet从一个无连接的网络变成一个面向连接的网络
违反最基本的协议分层规则
Internet上层的进程不一定使用TCP或者UDP
有些应用会在正文内容中插入IP地址
TCP端口号16位,至多65536台机器被映射

IPV6协议

采用IPv6原因

  • IPv4所面临的问题
  • IPv4的地址严重匮乏
  • 路由表急剧膨胀
  • 扩展性问题
  • 安全问题
  • 服务质量等
  • 暂时的解决方法
  • NAT(网络地址翻译)
  • CIDR(无类域间路由)等等
  • 只有全新的协议才能彻底解决IPv4的问题

IPv6包头格式

和ipv4对比

  • 协议标头具有更长的地址128与32位
  • 通过使用扩展头,协议更简单
  • IPV6固定标头(必填)
  • 扩展头处理其他功能

Internet控制协议

ICMP

功能

  • 当发生意外时,通过ICMP可以报告有关的事件
  • ICMP也可以用来检测因特网
  • ICMP报文封装在IP包中

ICMP报文需要两层封装

ICMP经常被认为是IP层的一个组成部分

ARP-地址解析协议

问题提出
因特网上主机间通信使用的是IP地址

当一台主机发送数据包时,是根据硬件地址(如:以太网地址)来确定目的接口的
如何将IP地址映射到对应的硬件地址?

  • 通过直接映射解析
  • ARP

ARP(地址解析协议)
用于在以太网中解决网络层地址(IP地址)与数据链路层地址(MAC地址)的映射问题

地址解析过程举例

1.主机A发送一个广播数据包到以太网上,问“谁拥有IP地址202.112.10.5?”
2.该数据包将会到达以太网202.112.10.0/24上的每一台主机,每台主机都会检查它自己的IP地址
3.只有主机B(IP地址为202.112.10.5)会用自己的以太网地址作为应答
4.主机A收到ARP应答后,提取其中的MAC地址,进行通信

优化方法-ARP高速缓存

缓存IP地址和MAC地址的映射关系
减少了广播流量
缓存的映射表项要设置生存时间
一般为20分钟
ARP缓存表不要太大

DHCP-动态主机配置协议

DHCP允许服务器将IP地址和配置信息动态分发给客户端。正常情况下,DHCP服务器至少会为客户端提供以下基本信息:IP地址、子网掩码、默认网关,也可以提供以下信息,例如DNS服务器地址和 Windows Internet 名称服务(WINS)服务器地址

基本思想
每个网络必须有一个DHCP服务器来负责地址配置
当计算机启动时,它有一个嵌入在NIC中的内置以太网地址或其他链路层地址,但没有IP
该计算机在自己的网络上广播一个DHCP DISCOVER包。(若DHCP服务器和主机不再同一个LAN上,这时需要将路由器配置成一个DHCP中继代理)
当DHCP服务器收到请求,它就为该主机分配一个空闲的IP地址,并通过DHCP OFFER包返回给主机

Internet路由协议

Internet把整个互联网划分成为许多的自治系统(AS)
一个AS内的所有网络都属于一个行政单位来管辖
它有权自主地决定在本系统内采用何种路由选择协议
一个AS内的所有路由器都必须是在本系统内连通的
如果一个部门管辖两个网络,但这两个网络要通过其他的主干网才能互连起来,则这两个网络就不能构成一个自治系统
Internet是由大量的AS构成的,每个AS由不同的组织来运行
内部网关协议IGP(interior gateway protocol)
AS内使用的路由算法,如:RIP、OSPF
外部网关协议EGP(exterior gateway protocol)
AS之间使用的路由算法,如:BGP

OSPF

开放最短路径优先OSPF(Open Shortest Path First)

  • 开放,算法是公开发表
  • 支持多种距离衡量尺度,例如,物理距离、延迟等
  • 动态算法
  • 支持基于服务类型的路由(服务类型域)
  • 负载平衡
  • 支持分层系统
  • 适量的安全措施
  • 支持隧道技术

OSPF支持三种连接和网络

  • 两台路由器间的点到点线路
  • 支持广播传送的多路访问网络(如大多数LAN)
  • 不支持广播传送的多路访问网络(如大多数数据包交换的WAN)

多路访问网络
它有多台路由器,每台路由器可以直接与其他所有路由器进行通信
所有的LAN和WAN都有这个特性

OSPF的工作方式
将实际的网络、路由器和线路抽象到一个有向图中,并给图中的每条弧分配一个开销值(如:距离、延迟等)
根据这些弧段上的权值计算出最短路径

分层路由
庞大的自治系统(AS)可以划分区域(areas);每个区域是一个网络或者一组邻近的网络,区域不能相互重叠,也不必覆盖所有的网络或路由器。在一个区域外部,它的拓扑结构和细节是不可见的
每个AS有一个骨干(backbone)区域,称为区域0,所有区域与骨干区域相连
区域内部,每台路由器都有同样的链路状态数据库,并运行同样最短路径算法,在一个区域中至少有一台路由器连接到骨干上

在OSPF中,AS、骨干区域和区域之间的关系

BGP

边界网关协议(BGP)
AS之间的路由算法

外部网关与内部网关的区别
要考虑其他的因素(如:政治、安全或经济方面)

BGP协议
通过TCP连接传送路由信息
采用距离矢量算法,但它与大多数其它的距离矢量协议(如:RIP)有显著不同
每台BGP路由器并不仅仅维护它到每个目标的开销值,而且还记录下所使用的路径
每台BGP路由器将它所用的确切路径告诉它的邻居

【计算机网络】-网络层-Internet的网络层的更多相关文章

  1. 【计算机网络】详解网络层(二)ARP和RARP

    ARP ARP(Address Resolution Protocol,地址解析协议)是将IP地址解析为以太网MAC地址(物理地址)的协议.在局域网中,当主机或其他网络设备有数据要发送给另一个主机或设 ...

  2. 计算机网络和Internet之核心网络

    1.网状的路由器 路由器的链接组成了网络的核心. 任何一个路由器,或者某条线路挂掉,但是网络还是通的,这是internet的一个特性. data到底是怎么传输的? 1)circuit switchin ...

  3. 01TCP/IP基础

    ISO/OSI参考模型: OSI(open system interconnection)开放系统互联模型是由ISO(International Organization for Standardiz ...

  4. 【RL-TCPnet网络教程】第2章 嵌入式网络协议栈基础知识

    第2章        嵌入式网络协议栈基础知识 本章教程为大家介绍嵌入式网络协议栈基础知识,本章先让大家有一个全面的认识,后面章节中会为大家逐一讲解用到的协议. 基础知识整理自百度百科,wiki百科等 ...

  5. 网络层-network layer(下):网络互连、子网掩码计算方法、Ipv4报头解析

    第五章 网络层-Network Layer(下) 上一章讲了网络层的任务.提供的两种服务.五个重要的路由算法.以及网络层的拥塞控制和服务质量问题.这一部分主要讲一讲网络互连问题和Internet的网络 ...

  6. Linux内核--网络栈实现分析(四)--网络层之IP协议(上)

    本文分析基于Linux Kernel 1.2.13 原创作品,转载请标明http://blog.csdn.net/yming0221/article/details/7514017 更多请看专栏,地址 ...

  7. TCP/IP(四)网络层

    前言 前面给大家介绍了计算机网络的基本概述,物理层和数据链路层.这一篇给大家介绍面试中经常会被问到的网络层.在介绍之前我们回顾一下之前学习的知识! CP/IP协议栈:物理层.链路层.网络层.传输层.应 ...

  8. 网络层 IP

    网络层 -- 数据包 网络层作用 解决什么问题? 在讲网络层之前,其实基于广播的这种通信就可以实现全世界通信了,你吼一声,如果全世界是一个局域网,全世界的计算机肯定可以听得见,从理论上似乎行得通,如果 ...

  9. 网络层协议及ARP攻击

    一:网络层介绍及ICMP协议 1,网络层 网络层位于OSI参考模型的第三层,位于传输层和数据链路层之间.向传输层提供最基本的端到端的数据传送服务.定义了基于IP协议的逻辑地址,连接不同媒介类型,选择数 ...

随机推荐

  1. Nim积的一种???的写法

    Nim积总不能一直打四次暴力吧! 用SG定理等东西,可以证明 \((N, \oplus, \otimes)\) 构成一个域.(证明很难,我不会) 其中 \(\oplus\) 为异或, \(x \oti ...

  2. Django-批量更新

    1.表结构 class Student(models.Model): """ 学生表(已报名) """ customer = models. ...

  3. 2017 ZSTU寒假排位赛 #6

    题目链接:https://vjudge.net/contest/149212#overview. A题,水题,略过. B题,水题,读清题意即可. C题,数学题,如果把x表示成x=nb+m,则k=n/m ...

  4. 通读Python官方文档之cgi

    cgi 通用网关接口 前驱知识 网关协议学习:CGI.FastCGI.WSGI 简单点说: web服务器接受请求,启动CGI:CGI接受请求,处理,返回给服务器:服务器返回给用户 cgi效率不高,每次 ...

  5. PHPStorm2017去掉函数参数提示

    今天升级到 PHPStorm 2017.1 发现增加了好些新功能, 有个默认开启的参数名和类型提示功能, 虽然功能挺强大的, 不过我用不着, 还是关掉的好, 有同样需求的同学可以看看 例子比较特殊这么 ...

  6. [Mybatis]查询Sql得到一个字符串

    // find min date HashMap<String, String> minDateMap = new HashMap<String, String>(); min ...

  7. 初步理解js作用域

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. 计算机组成原理 — GPU 图形处理器

    目录 文章目录 目录 显卡 GPU GPU 与深度学习 GPU 与 CPU 体系结构的区别 GPU 显存与 CPU 主存的区别 GPU 与 CPU 之间的数据交互方式 GPU 的体系结构 GPU 的工 ...

  9. 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_5-1.数据信息安全--微信授权一键登录功能介绍

    笔记 1.数据信息安全--微信授权一键登录功能介绍 简介:讲解登录方式优缺点和微信授权一键登录功能介绍         1.手机号或者邮箱注册             优点:              ...

  10. 质量保障&&质量体系建设

    一.质量保障 先引用一段 百度百科 上对软件质量保障的解释:软件质量保障是建立一套有计划,系统的方法,来向管理层保证拟定出的标准.步骤.实践和方法能够正确地被项目所采用.软件质量保证的目的是使软件过程 ...