zoukankan      html  css  js  c++  java
  • TCP/IP 协议:IP 协议

    首先来看一下IP协议在实际中的位置:

    我们只关系流程,不关系当前具体的服务类型

    1、IP协议概述

     

    作用:

    从上图或从应用层->运输层->网络层->链路层来看,IP协议属于网络层,也就是作为运输层(UDP等)和链路层(以太网)沟通的桥梁。

    特点:

        IP协议提供的是不可靠和无连接的数据报传递。

        什么是不可靠?不可靠意味着不保证当前的数据报成功送到目的地

        什么是无连接?无连接意味着对发送后的数据不再维护其状态信息

    注:IP协议是TCP/IP协议族中最为核心的协议(桥梁、通信协议)

     

    2、IP协议-首部说明

     

    注1.关于TOS服务类型:

     

    注2.关于首部长度字段说明:

    1.字段为16位说明IP数据报最长可达65535字节,尽管如此,大多数链路层都会进行分片操作(后续讲解)

    2.字段存在原因:上文的RFC定义的以太网数据帧长最小为46字节,此处的IP数据报真实的内容可能小于46字节

    (注意:此时其他字节需填充凑齐46字节)

    注3.校验和计算方式:

     

    注意:所有TCP/IP首部所有的传输都采用大端模式即:高位在低比特位,读值直接采用顺序读取,小端模式则相反(对应于网络编程API:htons系列)。

    3、IP层数据的传递-IP路由选择(路由表描述)    

     1.路由是什么

        在网络层(IP层)中,普通的服务器既可以被配置成主机也可以被配置为路由器,而主机和路由器的本质区别在于:

    具有路由功能的主机对接收到的数据进行转发,而主机只接收不转发。

     

    2.路由表是什么

        在应用层->运输层->网络层->链路层的基础结构下,网络层(IP层)可以从运输层(TCP,UDP..)接收数据,在网络层(IP层)发送到

    链路层的时候,我们需要对应IP地址的主机硬件地址(见本文的第一张图),IP层通过ARP协议(见下次分析)获取到对应IP地址的主机硬件地址

    并将该硬件地址保存在内存中这就是路由表。

    3.路由表的作用

        由(2)可知,路由表的功能在于提供地址查询,IP层每次在接收发送数据的时候都对该表进行查询,如果判断该IP为本机地址或IP广播地址,

    此时数据报被送到IP首部协议字段指定的协议模块处理。如果不是本机或广播地址,则需要对当前服务器IP层的配置进行判断见(1),

    配置成主机功能的服务器此时将抛弃该数据报。

     

    4.路由表的内容

    1.目的IP地址,既可以是主机地址也可以是网络地址(见下文)

    2.下一个路由表的IP地址或直接连接(SLIP..)的网路IP地址

    3.标志

    4.为数据的传输指定一个网络接口

     

    5.IP路由选择的优先级顺序

    1.目的IP完全匹配的主机

    2.目的IP网络号匹配的表目

    3.默认表目(通常情况下,IP层为同一网络号分配一个路由器)

    注意:如果到最后都未能找到下一表目的情况,数据将被丢弃,ICMP(见下次分析)将返回"主机不可达"或"网络不可达的错误"

    6.举例

     

     

     

    四、IP层地址中的子网选址(子网编号)和子网掩码的设定描述

     1.什么是子网号,为什么需要子网号

        由于各类地址为主机号分配太多的空间,为更方便查询到相应主机,我们为32bit的地址设定了网络号和子网号以及主机号。

    以B类地址为例:

    注:在上一节(IP的传递-IP路由选择(路由表描述))中我们所讲述的网络号地址就是此处16bit的140.252。

        

    子网号的作用在于:

    a)隐藏子网内部的网络组织,减小网络路由表的规模

    b)见(2)的说明

     

    2.什么是子网掩码,子网号在子网掩码的作用

    将32bit地址中的主机号位置0,其余位置1就是子网掩码。

    此时子网号的作用就在于确定此时存在n个bit为主机号位。

     

    3.举例

    1.一般情况下的子网掩码

    2.变长的子网掩码

    Reference:

    祝:玩得愉快!
  • 相关阅读:
    python 基础(三) list 的用法
    python 基础(二) string 的用法
    python 基础(四)购物车(list类型练习)
    python 基础(一)猜年龄游戏
    centOS 7 环境搭建之安装 python 3
    centOS 7 环境搭建之安装 JDK 8
    源代码管理相关命令(Git常用命令、Nuget常用命令、CMD常用命令)
    .Net Core 3.0 关于Windows Form和WPF的全面支持
    .Net Core 常用开发工具(IDE和运行时、Visual Studio插件、Visual Studio Code插件)
    .Net Core 精选公众号集合(保持更新)
  • 原文地址:https://www.cnblogs.com/hejianglin/p/5499761.html
Copyright © 2011-2022 走看看