博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
3.IP:网际协议
阅读量:7116 次
发布时间:2019-06-28

本文共 1586 字,大约阅读时间需要 5 分钟。

hot3.png

介绍

IP是TCP/IP协议栈中最核心的协议,TCP、UDP、ICMP和IGMP都基于IP协议传输数据

IP协议的两个重要特点:

  1. 不可靠:不保证IP数据报成功传输到目的地,可靠性由上层保障
  2. 无连接:不维护数据报的状态信息。每个数据报都是独立传输,可能A在B之前传输,但是A在B之后到达

IP首部

image_1cgrtohol1ltolm21l92fn71cii9.png-84.7kB

其中普通IP首部占据20字节,除非包含可选字段,并且IP数据报的长度一定是32位的整数倍

  • 版本号:4位。IPv4的版本号是4
  • 首部长度:4位。代表图中首部占据了多少个32位。4位首部长度说明首部最长为2^4-1=15个32位,即60字节
  • 服务类型(TOS):8位。其中3位优先权子字段(已忽略)、4位TOS子字段和1位未用位。4位TOS最多设置其中一个位,如果全0代表一般服务,这4位分别是:最小时延、最大吞吐量、最高可靠性、最小费用。根据不同类型,来选择不同的执行逻辑
  • 总长度:16位。整个IP数据报的总长度,通过首部长度和总长度,可以知道数据内容的起始位置和长度
  • 标识:16位。唯一标识主机发送的数据报,每发送一份报文都会加1
  • 标志:3位。
  • 偏移:13位。
  • 生存时间:8位。数据报最多经过的路由器数
  • 协议:8位。表明是哪个上层协议向IP发送数据,根据这个字段在收到数据报的时候可用正确分用
  • 首部校验和:16位。根据IP首部计算的校验和
  • 选项(如果有):不定长。如有需求,会额外增加的字段,可选

IP路由选择

  1. IP收到上层的数据报,搜索路由表,根据搜索结果并完成发送
  2. IP收到下层网络接口传上来的数据报,check数据报中目的IP是否为本机。如果是,则交给IP首部字段指定的协议模块解析;如果不是,则若本机无路由功能就丢弃数据报,若本机有路由功能则进行路由表搜索和转发

路由表:

  • 目的IP地址:可以是网络地址,也可以是主机地址
  • 下一站路由器的IP地址:直连网络的路由器IP,通过该路由器将数据转发到目的地
  • 标志:一个标志区分目的IP是网络地址还是主机地址;另一个标志区分下一站路由器是真正的路由器还是直连的网络接口
  • 为数据报传输指定一个网络接口

IP路由是逐跳地(hop-by-hop)进行,IP并不知道到达目的地的完整路径,只是通过路由寻找到下一站路由器,如此不断接近终点

IP路由选择过程:

  1. 搜索路由表,找到与目标IP完全匹配的条目,将报文发送给该条目的下一站路由器或直连的网络接口
  2. 搜索路由表,找到与目标网络号匹配的条目,将报文发送给该条目的下一站路由器或直连的网络接口
  3. 搜索路由表,找到“默认”条目,将报文发送给该条目的下一站路由器或直连的网络接口

为每个网络指定一个路由器,可以减少路由表的规模

  1. 大部分主机和路由器可以采用“默认”路由条目将数据传送到目的地
  2. 逐跳传递过程中,目的IP地址不变化
  3. 逐跳传递过程中,链路层数据帧首部的目的地址始终指向下一站链路层的目的地址(mac地址)

子网寻址

子网的目的:

  1. 如果网络下直接就是主机号,通常一个网络可用主机号较多,实际用不了这么多,浪费
  2. 子网对外只需要暴露网关的IP地址,可用极大减少Internet路由表规模

通常B类地址才划分子网

image_1chj5h4kajndssilvm8g1ebf9.png-25.1kB

子网掩码

用来确定IP地址中有多少位是网络号和子网号,有多少位是主机号

有盘主机通常在系统启动的时候,会读取磁盘中的文件来获取IP地址和子网掩码

image_1chj5t9ab13nh1c37p031uuh1etum.png-24.4kB

通过子网掩码可以确定目标地址与本机地址是否在:

  • 其他网络
  • 同一个网络
  • 同一个子网

这个功能也是路由选择中不断进行的步骤

特殊的IP地址

image_1chj6ncmk124l1ll8ke21bmnhqe13.png-108kB

变长子网

image_1chj7eehrfhj7oo1vbc1er31n211g.png-63.8kB

当一个子网(如图中子网13)中存在多个网络(如图中SLIP和以太网),就需要通过增加子网的长度,来区分该子网是SLIP子网还是以太网子网。这种改变子网长度,称为变长子网

image_1chj7ht4trdfb5k1kfi1d5m18vl1t.png-40.7kB

3-10中各接口IP

image_1chj7md1atlk10hgttlm04k8l2a.png-96.3kB

转载于:https://my.oschina.net/u/1378920/blog/1841109

你可能感兴趣的文章
Android-Application详解
查看>>
echarts 的使用
查看>>
iOS超全面试题,面试前看一看,不错<上篇>
查看>>
四个提升服务器数据安全的方法
查看>>
分分钟解决MySQL查询速度慢与性能差
查看>>
设计电商平台优惠券系统
查看>>
后来才知道的JavaScript自带函数
查看>>
spring cloud互联网分布式微服务云平台规划分析--spring cloud定时调度平台
查看>>
开源USM-AlienVault OSSIM
查看>>
postgreSQL 9.1 的安装、基本配置、简单使用
查看>>
JavaScript日期时间对象的创建与使用(三)
查看>>
PHP编程效率的20个要点
查看>>
Visual Sudio 复制窗体文件
查看>>
实例变量并不安全(java)
查看>>
修改系统文件(cookie、桌面、我的文档)位置
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
debian6 Redis+phpredis安装
查看>>
Google Auth+openssh
查看>>
NFS服务器配置及客户端挂载
查看>>