• TCP/IP协议详解笔记——IP协议


    简介

    TCP/IP协议族中最核心的协议,提供不可靠、无连接的数据报传输服务。

    • 不可靠:不能保证IP数据报能成功送达。
    • 无连接:并不维护后续数据报的状态信息,每个数据报的处理都是相互独立。数据报可能不会按照发送顺序接收。同一站点向另一站点发送的多个数据报可能经过不同的路由到达。

    帧格式

    IP数据报格式如下。

     IP帧格式

    • 版本:IP协议版本号,目前为4。故称为IPv4.
    • 首部长度:以4字节为单位。最小值为5,不包含可选字段的IP首部大小为20字节。最大值为15IP首部最大长度为60字节
    • 服务类型(TOS)3bit优先权(已被忽略)4bitTOS字段,1bit未用(0)4bitTOS分别为最小时延、最大吞吐量、最高可靠性、最小费用。4bit中只能置其中一个为1。全零时表示一般服务。现在大多数TCP/IP实现都不支持TOS特性,但是无线中QoS有用到该字段
    • 总长度:整个IP数据报的长度,字节为单位。16bit,可知IP数据报最大长度为65535字节。
    • 标识符:唯一标示一份IP数据报。通常值递增。
    • 标志位:
    • 片偏移:
    • TTLtime to live,生存时间。设置了数据报可以经过的最多路由器数。由源主机设置,每经过一个路由器,该值减一,当值为0时,被丢弃。并发送ICMP报文通知源主机。
    • 协议:标示基于IP的协议。ICMP1IGMP2TCP6UDP17
    • 首部校验和:根据IP首部计算的校验和,不对首部后面的数据进行计算。先置检验和为0,按照16bit进行二进制反码求和,结果存放于检验和字段中。
    • 源IP地址
    • 目的IP地址
    • 可选字段:

    安全和处理限制(用于军事领域,详见RFC 1108

    记录路径(让每个路由器都记下它的IP地址)

    时间戳(让每个路由器都记下它的IP地址和时间)

    宽松的源站选录(为数据报指定一系列必须经过的IP地址)

    严格的源站选录(只能经过指定的这些地址)

    可选字段必须是32bit的整数倍,必要时需要插入0进行填充,因为IP首部始终是32bit的整数倍(这是首部长度字段要求的)

    IP路由选择

    对于主机,如果目的主机和源主机直接相连,或者处于同一个网络中,IP数据报就直接发送到目的主机。否则,主机将数据报发送给默认的路由器,由路由器来转发包。

    IP层可以配置成路由器的功能,也可以配置成主机功能。区别是,主机不转发数据报,而路由器需要转发包。

    IP层在内存中都有一个路由表,当收到数据报进行发送时,都要搜索该表。

    路由表每项包含的信息:

    • 目的IP地址。可以是主机地址,也可以是网络地址,由下述的标志来标示。
    • 下一跳路由器的IP地址,或者是直接连接的接口。
    • 标志。一个标志标示目的IP是网路地址还是主机地址,另一个标志指示下一站路由器是否为真正的下一站路由器,还是一个直连的接口。
    • 为数据报的传输指定一个网络接口。

    IP路由选择主要完成下面的功能:

    1) 搜索路由表,寻找与目的IP完全匹配的条目。如果找到,则把报文发给下一站路由或者直连接口(取决于标志字段的值)

    2) 搜索路由表,寻找与目的网络号匹配的条目。找到的处理同上。这种搜索网络的匹配方法必须考虑可能的子网掩码。

    3) 搜索路由表,寻找标为“默认(default)”的条目。如果找到,处理同上。

    如果上述都没成功,则丢弃该包,并返回主机不可达或者网络不可达的错误。

    数据包在传输过程中,经过不同的链路层或不同的网络会构造不同的链路层首部,但是IP部分不会更改(忽略路由器的NAT功能)。链路层的目的地址(如果有的话),始终是下一站的链路层地址。

    子网寻址

    最早:IP地址 网络号 主机号

    子网编址:IP地址 网络号 子网号 主机号

    子网对于子网以外的路由器都是透明的,对于子网内部的路由器不透明。

    RFC 1009允许含有子网的一个网络使用多个子网掩码。

    IP地址编址方案:将IP地址划分为ABCDE五类,其中ABC为基本类,DE类作为多播和保留使用。

    网络类别

    最大网络数

    IP地址范围

    最大主机数

    私有IP地址范围

    A

    1262^7-2)

    1.0.0.0--126.255.255.255

    16777214

    10.0.0.0--10.255.255.255

    B

    16384(2^14)

    128.0.0.0--191.255.255.255

    65534

    172.16.0.0--172.31.255.255

    C

    2097152(2^21)

    192.0.0.0--223.255.255.255

    254

    192.168.0.0--192.168.255.255

     

    内部私有地址:

    A类 10.0.0.0--10.255.255.255

    B类 172.16.0.0--172.31.255.255

    C类 192.168.0.0--192.168.255.255

    特殊的IP地址:

    0表示所有的比特为0-1表示所有的比特位全为1netidsubnetidhostid分别表示不为全0或全1的对应字段。子网号栏为空表示该地址没有进行子网划分。

    特殊IP地址

     

  • 相关阅读:
    在Mybatis中使用连表查询的一次实际应用
    Mybatis使用generatedKey在插入数据时返回自增id始终为1,自增id实际返回到原对象当中的问题排查
    一次org.springframework.jdbc.BadSqlGrammarException ### Error querying database Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException问题排查过程
    商品的spu、sku及其之间的关系
    Java transient关键字的理解
    关于Serializable的一个形象的例子
    一个很大的文件,存放了10G个整数的乱序数列,如何用程序找出中位数。
    Logger.error方法之打印错误异常的详细堆栈信息
    什么是Http无状态?Session、Cookie、Token三者之间的区别
    接口API中的敏感数据基于AES进行安全加密后返回
  • 原文地址:https://www.cnblogs.com/luckyxiaoxuan/p/3393355.html
Copyright © 2020-2023  润新知