码迷,mamicode.com
首页 > 其他好文 > 详细

读书笔记:计算机网络4章:网络层

时间:2014-10-25 11:48:29      阅读:211      评论:0      收藏:0      [点我收藏+]

标签:des   style   http   color   io   os   ar   使用   for   

这是我在Coursera上的学习笔记。课程名称为《Computer Networks》,出自University of Washington。

因为计算机网络才诞生不久,眼下正在以快速在发展,所以有些旧的教材可能都已经跟不上时代了。这门课程在2013年左右录制,知识相对还是比較新的。覆盖了计算机网络中的各个协议层,从物理层到应用层都讲得很细致。学完这门课程之后对计算机网络会有比較深刻的了解。

本章具体解说了网络层的一些概念。通常网络层是通过IP协议实现的,网络层是全部协议的核心。本章介绍了IP地址、协议、IPv6、ARP、DHCP等重要概念。


  • ?概述

    • 课程位置

      • 已经到达网络层了。网络层基于链路层,路由器能够通过多个网络发送数据包

    • 为什么要网络层

      • 我们已经建立链路层了,全部的主机之间能够发送数据,为什么要须要网络层呢?

    • 交换机的缺点

      • 无法大规模应用:向后学习的时候要向整个网络广播,每一个交换机要记录全部机器的地址

      • 不同的链路技术之间,比方无线和有线之间无法通信

      • 没有流量控制机制

    • 网络层方案

      • 大规模:层级结构

      • 非均匀:IP

      • 带宽控制:路由成本极低,QOS流量控制

    • 话题

      • 网络服务模型

      • IP 互联网协议

      • IPv6

      • NAT(中间代理)

      • 路由算法

    • 路由和转发的比較

      • 路由的成本非常大,由于涉及到广播

      • 转发的成本略微小一点

    • 课程计划

      • 先讲转发,后讲路由




  • 网络服务模型

    • 话题

      • 网络层为传输层提供哪些服务呢

    • 两种网络服务模型

      • 数据报模型(无链接)

      • 虚拟电路模型(面向连接)

      • IP使用的是数据报模型

    • “保存并转发”分组交换

      • 这两种模型都实现了分组交换

    • 数据报模型

      • 包中包括了目标地址

      • 每一个路由器中包括了转发表

    • IP 互联网协议

      • 使用数据报模型

      • 地址占了32位

      • 每一个包通常1.5KB

    • 虚拟电路模型

      • 三个阶段:连接,传输,断开链接

    • MPLS(多协议标签交换)

      • 类似于虚拟电路的技术,被ISP广泛使用

    • 数据报模型和虚拟电路模型比較

      • 数据报模型  虚拟电路模型

      • 配置:不须要  须要

      • 路由:每一个目标   每次连接

      • 地址:每一个包包括了所有地址  每一个包包括了短标签

      • 路由:每一个包  每一个电路

      • 故障:easy排除 不easy排除

      • QOS:不易添加  easy添加


  • Internetworking

    • 话题

      • 我们怎样连接两个不同的网络?

    • 网络有哪些差异

      • 网络模型(数据包或虚拟电路)

      • 地址类型

      • QOS

      • 包大小

      • 安全性(是否加密)

    • 能够连接数据报网络、虚拟电路网络、无线网络等

    • Internetworking - Cerf & Kahn

      • 互联网之父

      • 解决网络之间连接的问题

    • 互联网參考模型

      • IP是全部网络层中最窄的一层

    • IP提取了上层协议中最主要的共同特性

      • 如果仅仅有一部分网络使用QOS或安全性

    • IPv4格式

      • 版本号 IHL头部 总长度 协议 校验和

      • IP协议是互联网的网络层,包括了源地址目标地址

      • 总长度,标识,帧位置,分段控制位

      • 其它字段满足了其它需求:不同的服务,TTL




  • IP前缀

    • 话题

      • IP地址应该长什么样呢?

    • IP地址

      • IP地址使用了32位的地址,IPv6是128位

      • 使用"."来分隔数字

    • IP前缀 - 现代

      • 表示被分配的IP段

      • 比如:10.21.0.0/16  表示以10.21开头的65536个地址,192.168.1.0/24 表示256个地址

      • 前缀越大,地址越详细,反之亦成

    • IP地址分类 - 以前的方法

      • 将地址分成4类: A类 B类 C类

      • A类相当于/8 B类相当于/16  C类相当于/24

    • 外网IP,内网IP

      • 外网IP在全球都有效

      • 内网IP仅仅在某个地区使用:10.0.0.0/8 172.16.0.0/12 192.168.0.0/16

      • 须要通过NAT将内网IP转换成外网IP

    • 分配外网IP

      • 分配IP是一个分层的过程

      • 最初是通过IANA进行分配,下一级就是ARIN  APNIC RIPE  LACNIC  AFRNIC,再下一级就是ISP或企业,再下一级就是通过DHCP分配给详细的用户


  • IP转发

    • 话题

      • 路由器怎样转发一个包呢

    • 复习

      • 网络层的功能:能支持大规模的网络,支持不同的链路协议,充分使用链路带宽

    • IP转发

      • 同一个网络中的计算机IP地址都有同样的网络前缀

      • 路由器使用路由表来连接下一跳地址

    • 最长匹配前缀

      • 在路由表中的前缀可能会重叠

      • 为了解决问题,我们使用了最长匹配前缀来选择路由规则。也就是路由的时候选择最详细的地址作为下一条

      • 举例

      • 路由表:

      • 192.24.0.0/18   下一跳A

      • 192.24.12.0/22   下一跳B

      • 当IP地址为192.24.12.32须要路由时,会选择B作为下一条,由于这条路由规则有更长的前缀

    • 主机/路由器的差别

      • 路由器负责路由,将包送达目标地址

      • 主机负责向远端发送数据,通过近期的路由器送达目标

    • 主机转发表

      • 使用0.0.0.0/0作为默认路由

    • 最长匹配前缀的灵活性

      • 能够提供更短的前缀来给某些网段设置默认的行为

      • 能够给某个详细的地址设置特例

      • 所以这样的方案的灵活性是非常高的

    • 最长匹配前缀的性能

      • 使用层级结构来匹配更详细的路由规则

      • 查表更加复杂

    • 转发的其它方面

      • 转发并不是只改变地址

      • 降低TTL

      • 检測头部校验和

      • 给大包分段

      • 发送堵塞信号

      • 生成错误消息

      • 处理多种不同的选项



  • IP辅助协议 ARP  DHCP

    • 话题

      • 解决实际应用中的IP转发问题

        • 获取IP地址

        • 将IP地址映射到链路地址

    • 获取IP地址

      • 问题:第一次连接路由器的时候不知道自己的IP是多少

      • 方法:手动配置,通过DHCP获取

    • DHCP

      • 动态主机配置协议 Dynamic Host Configuration Protocol

      • 给内网计算机提供IP,并提供其它信息:网络前缀,路由器地址,DNSserver,时间server等

    • DHCP协议栈

      • Ethernet IP UDP DHCP

      • 执行于UDP之上,使用67,68port

    • DHCP分配地址

      • 问题:在没有地址的时候,怎样向DHCPserver发送消息?

      • 答案:通过广播消息,将消息穿戴到全部的节点

      • 广播地址是 255.255.255.255,以太网ff:ff:ff:ff:ff:ff,IPv6是ffff:ffff:...:ffff

    • DHCP消息

      • 第一步:DISCOVER。client通过广播向服务端发送消息

      • 第二步:OFFER。服务端应答

      • 第三步:REQUEST。client通过广播请求服务端

      • 第四步:ACK。服务端返回确认消息

      • 刷新DHCP契约的时候,能够在ACK之后直接向server发送REQUEST

      • DHCP协议支持多个镜像server来提高可靠性

    • 发送一个IP包

      • 问题:一个节点须要下一跳的链路地址来传递消息。怎样将IP转换成链路地址呢?

    • ARP  Address Resolution Protocol  地址解析协议

      • 节点能够通过该协议将IP地址转换为链路地址

      • IP头:SourceMac | DestMac(通过ARP协议获取) | SourceIP | DestIP | Payload

    • ARP协议栈

      • Ethernet | ARP

      • 直接基于链路层,不须要server

      • 通过广播发送消息

    • ARP消息步骤

      • 第一步:REQUEST。谁有 IP 1.2.3.4?

      • 第二步:REPLY。我有,链路地址是 xx:xx:xx:xx:xx:xx

    • 发现协议

      • 帮助节点发现其它节点

      • 通常使用广播消息


  • 数据包分段

    • 话题

      • 我们怎样将数据报大小不同的两个网络连接在一起

    • 数据报大小问题

      • MTU:最大传输单元

      • 数据报越大,传输效率越高

      • 解决方式:分段、发现(找出最适合的数据包大小)

    • IPv4分段

      • 路由器将数据包进行分段,而目标计算机会将数据包又一次组合在一起

    • 分段字段

      • 在IPv4头部中和分段有关的字段有:Total Length | Identification | Fragment Offset | MF/DF control bits

      • MD表示More Fragment,DF表示Don‘t Fragment

    • IPv4分段过程

      • 发送方:路由器将太大的数据包进行分段,将IP头拷贝到片段中,调整片段的长度,设置片段的位置,除了最后一包都设置MF标志位

      • 接收方:利用Identification字段将片段连接在一起,利用DF标志位推断分段结束

      • 这样的方式可以工作,而且即使链路层有反复帧,IP层也不会出错(由于有Offset字段)。可是分段会添加路由器的负担、添加丢包率、安全性差等,所以分段不是最好的办法

    • Path MTU Discovery

      • 自主去发现最合适的MTU,来避免分段。这是现在常常使用的方法

      • 当主机试图将太大的数据包进行传递时,路由器不会将数据报进行转发,而是通知主机,告诉它最合适的数据包大小

      • 这样的方法看起来非常复杂,可是能找到合适大小最快的方法了

      • 路径MTU可能会在传输的过程中发生变化

      • 通过ICMP实现

      • For IPv4 packets, Path MTU Discovery works by setting the Don‘t Fragment (DF) option bit in the IP headers of outgoing packets. Then, any device along the path whose MTU is smaller than the packet will drop it, and send back an Internet Control Message Protocol (ICMP) Fragmentation Needed (Type 3, Code 4) message containing its MTU, allowing the source host to reduce its Path MTU appropriately. The process is repeated until the MTU is small enough to traverse the entire path without fragmentation.

      • IPv4中,Path MTU Discovery的实现方式是这种。首先主机在发送数据包的时候,在IP头中设置DF标志(Don‘t Fragment 不要分段)。数据包会经过一系列路由器,当某个路由器检測到MTU小于数据包大小时,这个路由器会将数据包丢掉,然后通过ICMP协议将Fragmentation Needed消息发送会主机,这条消息中就包括了路由器的MTU信息。这样,主机才干又一次调整MTU来降低数据包的大小。这个过程一直会反复,直到数据包刚好能通过整条线路。




  • ICMP错误处理

    • 话题

      • 传输数据的时候假设发生了错误该怎么办呢?

      • 要可以找出错误

    • 互联网控制协议

      • 基于IP协议,协议号为1

      • 提供错误报告和測试机制。经经常使用于连通性測试

    • 当数据包错误发生的时候,路由器会丢包,并通过ICMP协议将错误报告返回给主机

    • ICMP数据包格式

      • 每一个ICMP消息都有类型、代码、校验和

      • 通常将错误数据包的头部作为ICMP数据部分

      • 通过IP协议进行封装

      • 图示:[ IP头 [ ICMP [ 有问题的IP包头部 ] ] ]

    • ICMP消息种类

      • 目标无法到达

      • 超时

      • ping应答

    • Traceroute

      • IP头中包括了TTL,每一跳都会减1,防止死循环

      • traceroute利用了TTL的特性

      • 第一步:设置TTL为1,第一个路由器返回错误信息

      • 第二步:设置TTL为2,第二个路由器返回错误信息

      • 。。。

      • traceroute默认发送UDP包,依据返回的ICMP错误消息来判定跳点

      • 在linux中能够用traceroute -I来使用ICMP包进行路由跟踪



  • IPv6

    • 话题

      • IPv6是IPv4的将来,眼下仍然在部署

    • 互联网增长

      • 至少有10亿的互联网主机

      • 可是我们如今在用32位的地址空间,最多仅仅有40多亿的地址

    • IPv4地址用尽,IPv6能够解救

      • 由IETF 1994開始,提供更大的地址空间

      • 1998年成为IETF标准

    • IPv6部署情况

    • IPv6

      • 提供更大的地址空间

      • 新的表示方法

        • 比方2001:0db8:0000:0000:0000:ff00:0042:8329能够简化成2001:db8::ff00:42:8329,注意中间仅仅有两个冒号


      • 有非常多小的修改

        • 头部流线型处理

        • Flow Label 能够将数据包分组

        • 更适合现代特性:移动网络,多播,安全性

    • IPv6转换

      • 怎样部署IPv6?IPv6和IPv4是不兼容的

      • 有非常多解决的方法

        • 双IP头

        • IP协议转换

        • 通过隧道

    • IPv6隧道技术

      • 将IPv6封装到IPv4中:[ IPv4 [IPv6] ]

      • IPv6 -> IPv4 -> IPv6

      • 使用了隧道后,隧道可能须要经过多个路由器,可是在用户看来就仅仅能感觉到仅仅有两个路由器直接通信



  • NAT网络地址转换

    • 话题

      • 什么是NAT

    • 路由器不会看IP层以上的协议

    • 中间件

      • 处理IP层及以上的协议:比方防火墙、NAT

      • 长处

        • 能高速部署

        • 能控制非常多主机

      • 缺点

        • 打破了协议层,有时候会产生奇怪的副作用

        • 假设网络流量大,NAT没什么优势

    • NAT中间件

      • NAT将内网的地址转换成外网的地址

      • 受到IP地址用尽的启示

    • NAT

      • 家庭中可能会有多台计算机,假设家庭路由器中使用了NAT,那么在ISP那里看起来好像仅仅有一台电脑

    • NAT怎样工作

      • 路由器中保存了 内网/外网 的映射表

      • 通常使用IP地址+TCPport号

      • 路由表看起来例如以下:

      • 内网IP:port 外网IP:port
        192.168.1.12:5523 44.25.80.3:1500
        192.168.1.13:1234 44.25.80.3:1501
        192.168.2.20:1234 44.25.80.3:1502
      • 须要port级别的映射,由于外网IP仅仅有一个

      • 从内网发送的时候,或者从外网接收的时候通过查表,将IP头中的地址和port进行改写

      • 内网至少要向外网发送一个数据包才干激活NAT

    • NAT缺点

      • 连接被打断了,由于至少要内网向外网发送一个数据包才干激活NAT

      • 无法开启P2Pserver

      • 不能开启UDP

      • 有时候意外暴露内网IP

    • NAT长处

      • 减轻IP枯竭的压力

      • easy部署

      • 功能有用

      • 缺点总能克服的




































读书笔记:计算机网络4章:网络层

标签:des   style   http   color   io   os   ar   使用   for   

原文地址:http://www.cnblogs.com/mengfanrong/p/4049780.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!