【网络】TCP/IP协议网络层 - IP协议炒鸡详细的详解

一、认识IP协议

1、什么是IP协议

IP协议(Internet Protocol,网际协议),IP协议作为整个TCP/IP中至关重要的协议,主要负责将数据包发送给终端目标计算机。因此,IP协议可以让世界上任何两台计算机之间进行通信。

IP协议是TCP/IP协议族的动力,它为上层协议提供无状态、无连接、不可靠的服务。

  • 无状态:IP通信协议的双方不会同步传输数据的状态信息,每个IP数据报之间都是相互独立的,没有上下文关系
  • 无连接:IP通信协议双方都不会长久的维持对方的任何信息,每次发送数据都必须表明对方的IP地址
  • 不可靠:IP通信协议并不能保证IP数据准确的发送到接收端,需要借助TCP等协议完成可靠传输

2、IP地址

IP地址(IPv4)由32位的正整数来表示,TCP/IP通信要求将这样的IP地址分配给每一个参与通信的主机。IP地址在计算机内部以二进制方法被处理。但是在实际生活中,人们并不适用用二进制数字,所以使用点分十进制来表示IP地址。

但是IPv4的地址毕竟是有限的,最多可以分配大约43亿台计算机(并且实际连接是肯定达不到43亿的),肯定是不够用的,所以诞生出了新的IPv6。

3、网络标识和主机标识

IP地址是由“网络标识”和“主机标识”两部分组成的。网络标识必须保证相互连接的每个段的地址不相重复。而相同段内连接的主机必须由相同的网络地址。IP地址的“主机标识”则不允许在同一个网段内重复出现。所以这样就可以通过设计网络地址和主机地址,在相互连接的整个网络中保证每台主机的IP地址不会重复出现。

4、网段的划分

1、早期的IP地址分为五个级别:A类、B类、C类、D类、E类。

它根据IP地址中的第1位到第4位的比特列对其网络标识和主机标识进行区分。

  • A类:0.0.0.0 ~ 127.255.255.255
  • B类:128.0.0.0 ~ 191.255.255.255
  • C类:192.0.0.0 ~ 223.255.255.255
  • D类:224.0.0.0 ~ 239.255.255.255
  • E类:240.0.0.0 ~ 247.255.255.255

2、现在的划分方案为 —— CIDR:(子网掩码 netmask)

通过 子网掩码 识别码将子网网络地址细分出比 A类 、B类、C类 更小的粒度网络。这种方式实际上就是将原来的 A类 、B类  、C类等分类中的主机地址部分作为子网地址,可以将原网络分为多个物理网络的一种机制。

子网掩码如果用二进制表示的话,也是一个32为的数字,它对应IP地址网络标识部分的位全部为 “1”,对应IP地址的主机标识部分则全部用 “0”。

例:有一个网络IP192.168.122.132,netmask 255.255.255.0,将这个网络平均划分成四个子网,请问每个子网的IP地址范围及子网掩码。

通过IP地址和子网掩码得到原网络的主机号个数(netmask 取反):256

通过IP地址和子网掩码得到原网络号(IP地址 与 netmask 相与):192.168.122.0

平均划分四个子网,则每个子网主机号个数(256/4)64个 0~63个

子网掩码:~63(255.255.255.192)

RFC1918规定,能够用于组建私网的网段只有:10.~.~.~ 、172.16.~.~ - 172.31.~.~ 、 192.168.~.~

3、特殊的IP地址: 192.168.122.132   255.255.255.0

主机号全为1的IP地址 局域网的UDP广播地址 192.168.122.255

主机号全为0的IP地址 网络号-识别一个网络 192.168.122.0

每一个局域网中,这两个主机号是不能分配给主机的意味着主机号虽然有256,但是能够分配给主机的只有254个

127.0.0.1 本地回环网卡地址 - 虚拟网卡地址 - 用于本机内的网络回环测试

二、IPv4

1、IPv4首部格式

  • 4位版本号:指定IP协议的版本,对于IPv4来说,这个值为4;
  • 4为头部长度(IHL):标识该IP头部有多少个32bit字(4个字节),最长为60个字节;
  • 8为服务类型(TOS):包括一个3为的优先权字段,4个字节的TOS字段和1位保留字段(必须置0),其中四位TOS分别表示:最小延时、最大吞吐量、最高可靠性、最小费用,其中最多只有一个可以被置为1;
  • 16位总长度:是指整个IP数据报的长度,以字节单位,最大值为65536字节,但是由于MTU(最大传输单元)的限制,实际传输过程中长度远远没有达到最大值,超过MTU的数据报将会被分片传输;
  • 16位标识:唯一的标识主机发送的每一个数据报,初始值由系统随机分配,每发送一个数据报,其值就加1;
  • 3位标志字段:第一位保留,第二位(DF)表示“禁止分片”,第三位(MF)表示“更多分片”;
  • 13位片偏移:是分片先对原始IP数据报开始出的偏移;
  • 8位生存时间(TTL):是数据报达到目的地之前允许经过的路由器跳数,数据报没经过一个路由,该值就会被路由器减1,当为0时,该数据报就会被丢弃,并向源端发送ICMP差错报文,可以防止数据进入路由循环;
  • 8位协议:是用来区分上层协议,比如ICMP是1、TCP是6、UDP是17;
  • 16位头部校验和:由发送端填充,接收端对其使用CRC校验,判断IP数据报头部是否在传输过程中损坏;
  • 32位源端IP地址
  • 32位目的段IP地址
  • 选项字段(最多40个字节,因为IP地址头部最长是60字节),可用的选项为:
  1. 记录路由:告诉数据报途径的所有路由器都将自己的IP地址填入IP头部的选项部分;
  2. 时间戳:告诉每个路由器都将数据报被转发的时间(或时间与IP地址对)填入IP头部选项部分;
  3. 松散路由选择:指定一个路由器IP地址列表,数据报发送过程都必须经过其中所有的路由器;
  4. 严格源路由选择:和松散路由选择类似,但是数据报只能经过被指定的路由器;

2、IP模块的工作流程

通过这张图片,我们可以很清晰的了解整个IP地址的工作流程。

首先当数据报进入 IP出入队列后,会对头部进行CRC校验,确认无误后就会对头部信息进行分析和判断。值得指出的一点是,在数据转发的过程中,如果IP数据报不允许被转发,则会丢弃该数据报。

【注】:文中图片均剪切自《图解TCP/IP(第五版)》、《Linux高性能服务器编程》

发布了79 篇原创文章 · 获赞 28 · 访问量 7781

猜你喜欢

转载自blog.csdn.net/weixin_43753894/article/details/98469988