• 网络层向上只提供无连接的、尽最大努力支付的数据报服务
  • IP地址,32位,分为两部分,网络和主机标示
  • IP地址分类:
    • A类:0开头,1~8位为网络标示
    • B类:10开头,1~16位为网络标示
    • C类:110开头,1~24位为网络标示
    • D类:1110开头,1~32位为网络标示(用于多播)
  • IP地址和硬件地址:物理地址数据链路层和物理层使用的地址,IP地址是网络层及以上层使用的地址,是一种逻辑地址。使用IP地址的IP数据报交给数据链路层之后就被封装成MAC帧,MAC帧中源地址和目的地址都是硬件地址
  • 地址解析协议ARP:根据IP地址找到相应硬件地址。ARP只是转换局域网中的IP地址到硬件地址
    • 在每一个主机中存放有一个ARP高速缓存,里面有本局域网上各主机和路由器的IP地址到硬件的映射表,
    • 当主机刚刚启动或者ARP表中没有相应IP地址时:在局域网中广播发送ARP请求分组,此局域网中所有主机的ARP进程都能收到此请求分组,当与某主机IP地址一致时响应,再将此记录写入高速缓存中
    • 高速缓存中的每一项都要设置一个生存时间,硬件地址更新
  • IP数据报格式:32位,固定部分20字节
    • 版本:IPv4还是IPv6
    • 协议:指出此数据报携带的数据使用的是哪种协议,以使目的主机IP层知道需要将数据交给那个处理过程
    • 首部校验和:使用CRC校验码,只是校验首部部分,不包括数据
    • 源地址,目的地址
  • IP层转发流程:使用路由表,每一行对应一个网络(目的网络地址:下一条地址)
    • IP数据报根据目的主机找到下一条路由器,间接交付
    • 到达最后一个路由器时,向主机直接交付
    • 分组转发算法:
      1. 根据首部中IP地址得到目的网络地址
      2. 若此路由器与网络直接相连,则直接交付
      3. 若路由表中有到达目的网络的路由,则间接交付
      4. 若路由表中有默认路由,则交付默认路由
      5. 报告分组转发错误
    • 路由表:因特网中主机数大于路由器数量,属于效率考虑,主机不和连接在互联网上的路由器定期交换路由信息。在主机刚开始工作时,一般在路由表中先设置一个默认路由,不管要把数据报发送到哪里,都先直接发送到默认路由中,而这个默认路由知道每一个目的网络的最佳路径,如果到达某一个目的网络不需要经过默认路由,则将此信息告诉主机,在主机路由表中加上一条记录
  • 划分子网:
    • 地址空间利用率低,路由表过大,两级地址不够灵活(比如需要在其他地方新建子网)
    • 划分方式:
      1. 将所属物理网络划分为若干个子网,但对外仍表现为一个网路
      2. 网络的主机号借用若干位作为子网号
      3. 发送IP数据报时仍然是根据目的网络号发送,在路由器收到数据报时,再按目的网络号和子网号找到子网交付
    • 子网掩码:将源网络分为多个物理网络
      • IP网络地址部分全为1,主机部分全为0
  • 无分类编址CIDR:消除了网络IP地址类别及划分子网的概念,从三级地址改为两级:IP地址/网络前缀所占位数(后面为子网掩码位数)
  • 网际控制报文协议ICMP:为了更高效转发IP数据报和提高支付成功机会。ICMP报文存在IP数据报的数据部分
    • 分类:

      • 差错报告报文:当交付出现问题(如终点不可达,时间超过,参数问题)
      • 询问报文:回送请求回答,时间戳请求回答
    • 应用举例:
      • PING:测试两个主机的连通性,没有通过传输层。如果目的主机正常工作则发回回送请求报告
      • traceroute:数据报中封装的是无法交付的UDP用户数据报。路途中每经过一个路由器,相应路由器就会向源主机发送时间超过的差错报告报文。就可以知道经过的路由信息。
  • 路由选择协议:因特网一般采用动态的路由协议。因特网将整个互联网划分为多个较小的自治系统,因此路有选择协议划分为
    • 内部网关协议:在一个自治系统内部使用的路有选择协议,RIP、OSPF
    • 外部网关协议:不同自治系统之间
    • 内部网关协议RIP工作原理:要求网络中每一个路由器都要维护一个从他自己到下一个目的网络的距离纪录,能直接到达的网络记为1,每经过一个路由器加1。
      • 需要不断和其他的路由器交换信息,要求:

        • 仅和相邻路由器交换信息
        • 交换当前路由器所知道的全部信息
        • 按固定时间间隔交换路由信息
      • 路由表中的内容:目的网路,距离,下一条地址
      • 距离向量算法:
        1. 将收到的相邻路由器X发送来的信息,下一条都改为X,距离加1
        2. 对于每一条信息,如果目的网络不存在原路由表中,加上
        3. 如果原路由表中对应目的主机行,下一跳是X,则更新
        4. 如果原路由表中对应目的主机行,下一跳是不X,比较距离若更小,则更新
    • 内部网关协议OSPF
      • 特点:

        1. 与RIP不同,将路由信息发送到所有路由器而不是相邻路由器
        2. 不采用UDP而是直接用IP数据报
    • 外部网关协议BGP:
      • 不使用内部网关协议原因:

        1. 因特网规模太大,自治系统之间选择困难
        2. 原则路由时不是选择最短路径,需要考虑网络性能,安全性
      • 自治系统管理员需要为自治系统选择一个路由器作为‘发言人’,当需要交换路由信息时,先建立TCP连接,在此连接上建立会话。
  • 虚拟网络VPN
    • 由于IP地址紧缺,在一个机构内部可以自行分配其IP地址,仅在机构内部有效,因特网中的路由器对目的地址是专用地址的数据报不能转发,因此内网中主机不能作为服务器
    • 当一个机构不同部门在不同地点时,可以利用因特网作为专用网之间的通信载体,这样的网络称为虚拟专用网,通过因特网传输的数据需要加密,每个专用网需要有一个具有全球IP地址的路由器
  • 网络地址转换NAT:
    • 当专用网中的主机想要访问互联网中的主机,需要将本地地址转换为全球IP地址
    • NAT地址转换表:源IP地址(本地地址)、目的主机地址(互联网IP地址)
    • 可以利用运输层端口号,使得多个拥有本地地址的主机共用一个NAT路由器的全球IP地址,叫做NAPT网络地址与端口号转换

IP总结的更多相关文章

  1. Tcp/ip 报文解析

    在编写网络程序时,常使用TCP协议.那么一个tcp包到底由哪些东西构成的呢?其实一个TCP包,首先需要通过IP协议承载,而IP报文,又需要通过以太网传送.下面我们来看看几种协议头的构成 一 .Ethe ...

  2. 网站定位之---根据IP获得区域

    记得以前做一个培训机构网站时候需要定位,那时候用的搜狐的api,不是很精准. demo:https://github.com/dunitian/LoTCodeBase/tree/master/NetC ...

  3. 通过 floating IP 访问 VIP - 每天5分钟玩转 OpenStack(126)

    前面我们是直接用 curl 测试 VIP,在更为真实的场景中通常会使用 floating IP 访问 VIP. 下面我们给 VIP 关联一个 floating IP,再进行测试. 访问 Project ...

  4. PHP获取客户端IP

    /** * 获取客户端IP */ function getClientIp() { $ip = 'unknown'; $unknown = 'unknown'; if (isset($_SERVER[ ...

  5. 获取 dhcp IP 过程分析 - 每天5分钟玩转 OpenStack(91)

    前面我们已经讨论了 DHCP agent 的配置以及 namespace 如何隔离 dnsmasq 服务,本节将以 cirros-vm1 为例分析获取 DHCP IP 的详细过程. 在创建 insta ...

  6. Java获取本机的IP与MAC地址

    有些机器有许多虚拟的网卡,获取IP地址时会出现一些意外,所以需要一些验证: // 获取mac地址 public static String getMacAddress() { try { Enumer ...

  7. 根据ip判断返回城市名称查询当地天气

    <?phpheader("content-type:text/html;charset=utf-8");date_default_timezone_set("Asi ...

  8. TCP/IP基础

    TCP/IP 是用于因特网 (Internet) 的通信协议. 计算机通信协议是对那些计算机必须遵守以便彼此通信的规则的描述. 什么是 TCP/IP? TCP/IP 是供已连接因特网的计算机进行通信的 ...

  9. CentOS:ECDSA host key "ip地址" for has changed and you have requested strict checking(转)

    原文地址:http://blog.csdn.net/ausboyue/article/details/52775281 Linux SSH命令错误:ECDSA host key "ip地址& ...

  10. TCP/IP之TCP_NODELAY与TCP_CORK

    TCP/IP之Nagle算法与40ms延迟提到了Nagle 算法.这样虽然提高了网络吞吐量,但是实时性却降低了,在一些交互性很强的应用程序来说是不允许的,使用TCP_NODELAY选项可以禁止Nagl ...

随机推荐

  1. 【JZOJ3920】噪音

    description FJ有M个牛棚,编号1至M,刚开始所有牛棚都是空的.FJ有N头牛,编号1至N,这N头牛按照编号从小到大依次排队走进牛棚,每一天只有一头奶牛走进牛棚.第i头奶牛选择走进第p[i] ...

  2. NX二次开发-使用MFC对话框不能用UF_UI_select等函数解决方法

    VC/MFC调用UG Dialog要进入加锁状态 加锁 UF_UI_lock_ug_access ( UF_UI_FROM_CUSTOM ); 此处为UF_UI_select的函数 解锁 UF_UI_ ...

  3. 谈html mailto(电子邮件)实际应用

    大家知道,mailto是网页设计制作中的一个非常实用的html标签,许多拥有个人网页的朋友都喜欢在网站的醒目位置处写上自己的电子邮件地址,当点击时就能自动打开当前计算机系统中默认的电子邮件客户端软件, ...

  4. python re 正則匹配規則

  5. win 解除鼠标右键关联

    点击「开始」→「运行」→「输入Regedit」→「确定」,打开注册表编辑器,找到子键: 「HKEY_CLASSES_ROOT\*\shellex\UltroEdit」,删除此项即可:

  6. MarkDown 快速开始 基础教学

    # MarkDown 快速上手 # > [源代码](https://www.cnblogs.com/qiyuexin/p/9932941.html) > by qyx@2018/11/07 ...

  7. LeetCode 相交链表&环形链表II

    题目链接:https://leetcode-cn.com/problems/intersection-of-two-linked-lists/ 题目连接:https://leetcode-cn.com ...

  8. 【react】---Hooks的基本使用---【巷子】

    一.react-hooks概念 React中一切皆为组件,React中组件分为类组件和函数组件,在React中如果需要记录一个组件的状态的时候,那么这个组件必须是类组件.那么能否让函数组件拥有类组件的 ...

  9. C#内嵌Python架构实现

    C#通过IronPython内嵌Python脚本,实现了对业务逻辑抽象及判断,适合在大量订单需要进行校验的场合使用. 比如,贷款时会对用户进行核查,核查过程可能存在多个节点,并且节点可能会随着政策而不 ...

  10. JUC源码分析-集合篇(六)LinkedBlockingQueue

    JUC源码分析-集合篇(六)LinkedBlockingQueue 1. 数据结构 LinkedBlockingQueue 和 ConcurrentLinkedQueue 一样都是由 head 节点和 ...