• IP网络层


    一、IP网络层概述

    在TCP/IP协议的Internet中,网络层由IP协议实现:

    1. everything is over IP
    2. IP is over everything

    IP网络是数据报网络:

    1. 无连接
    2. 简单网络,终端复杂(可靠性实现在TCP)

    IP网络层核心功能还是网络层的基本功能:抓发,路由

    IP协议的配套协议:

    1. ICMP协议(Internet Control Message Protocol),一般用于差错报告等,它最终会使用IP协议
    2. ARP协议(Address Resolution Protocol),地址解析协议,用于查找硬件的物理地址(链路层Mac地址),IP协议会使用它
    3. 路由协议(RIP、OSPF、BGP等),路由协议最终会填充转发表(路由表)

    二、IP数据报格式

    2.1 抓包

    2.2 格式

    首部字段:只有4位,最大值为15,所以是不够标识首部长度的,最终这个字段以4字节为单位。抓包中为5,实际为5*4为20字节。

    服务类型字段:在1998年被修改为区分服务,抓包里面的Differentiated Service Field字段,一般性情况下不使用。

    总长度:16比特,最大可以65535,表示IP数据报的总长度可以达到65535字节,但是实际一般最大为1500字节,因为下层链路层的MTU一般为1500字节。

    生存时间(TTL) : time to live,寿命,用于确保数据报不会永远在网络中传播,每经过一个路由器,ttl减一,当TTL为0时,这个数据报会被丢弃。

    标识、标志物、片偏移,这三个字段为IP数据报分片使用。

    源IP地址,目的IP地址:各32位。

    选项字段:一般不用

    填充:当有选项字段,但是不足32位时用于补齐32位用。

    由上面分析看到,一个IP数据报其IP头部长度一般为20字节。

    数据部分:为TCP报文,其中TCP的头部长度一般也为20字节

    最终可以得出,一个IP数据报,其有固定的头部开销40字节。

    二、IP数据报分片

    IP数据报最终要经过链路层进行传递,每次所能传递的数据大小取决取决于链路层的最大传输单元,英文名字叫做MTU(Maximum Transmission Unit)。比如目前主流的局域网技术以太网的MTU是1500字节。

    问题:当上游IP数据报的数据长度大于下游链路层的MTU时候怎么办?

    类比:IP数据报类似于一车沙子(1000KG),到了河边以后需要用船运输过河(船类似于链路层),但是船一次只能运输100KG(类似于MTU),这个就很好解决了,把沙子拆分成10份,分10次让船运输过去,等十分沙子都全部传输到河对岸后,再重新组装成一车即可。。IP数据报超过MTU后的处理办法也是类似的,也是对IP数据报进行分片,最终全部传输完毕后在进行组合。

    分片示意图

    分片相关的字段

    在IP数据报的格式中"标识"、“标志位”、“片偏移”这三个字段用于专门处理IP数据报分片的case。

    标识(Identification):是IP软件在存储器中的一个计数器,每生成一个IP数据报,这个计数器就+1。当IP数据报的长度大于MTU需要分片时候,被拆分的IP数据报的标识字段都被赋值为原有IP数据报的标识的值,这样这些分片就拥有了相同的标识,最终传输完毕后相同的标识用于正确的组装在一起。

    标志位(Flags)

    1. DF字段(Don't fragment):0/1。DF=1,表示不能分片,此时如果IP数据报的长度大于MTU,路由器直接丢弃。DF=0,表示可以分片。
    2. MF字段(More fragment):0/1。MF=1标识后面还有分片。MF=0表示是最后一个分片或者没有分片。

    片偏移(Fragment Offset):分片的偏移量,分片在原数据报里面的相对偏移量,以8字节为单位。例子(谢希仁-计算机网络)

    以上是IPv4的分片相关的说明,实际的网络传输中很少分片,在TCP的MSS会控制大小,一般不会超过MTU。

    分片的组装在端系统中进行,路由器不就行组装。

    三、IP地址编制

    IP地址用于标记主机和路由器的接口,IP地址和接口关联,不是标记主机本身

    IP地址

    32位,点分10机制标识。192.168.11.25

    格式:

    1. 网络号(NetId)
    2. 子网号(SubId)
    3. 主机号(HostId)

    子网掩码:相应IP地址除了主机号以外全部为1。和对应IP地址按位取add,即可得到网络号和子网号。最终用于路由。

    无类域间路由CIDR(Classless InterDomain Routing)

    a.b.c.d/x。x为前缀长度,系统前缀的网络代表一个子网。

    1. 方便子网划分
    2. 减少路由表的大小,进行路由聚合
    作者:iBrake
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
  • 相关阅读:
    WebDev.WebServer使用帮助
    [原创]通过编写PowerDesigner脚本功能批量修改属性
    Web中响应用户修改的事件
    郁闷的切换foxmail
    Java中Split函数的用法技巧
    [转].NET安装项目卸载的方法
    把你的名字刻到IE上
    JavaScript面向对象编程笔记
    附件下载直接显示另存为对话框并保存原有中文文件名的解决办法
    MyEclipse开发JSP页面假死问题解决办法
  • 原文地址:https://www.cnblogs.com/Brake/p/14457244.html
Copyright © 2020-2023  润新知