介绍
IP是TCP/IP协议栈中最核心的协议,TCP、UDP、ICMP和IGMP都基于IP协议传输数据网络
IP协议的两个重要特色:code
- 不可靠:不保证IP数据报成功传输到目的地,可靠性由上层保障
- 无链接:不维护数据报的状态信息。每一个数据报都是独立传输,可能A在B以前传输,可是A在B以后到达
IP首部

其中普通IP首部占据20字节,除非包含可选字段,而且IP数据报的长度必定是32位的整数倍blog
- 版本号: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路由选择
- IP收到上层的数据报,搜索路由表,根据搜索结果并完成发送
- IP收到下层网络接口传上来的数据报,check数据报中目的IP是否为本机。若是是,则交给IP首部字段指定的协议模块解析;若是不是,则若本机无路由功能就丢弃数据报,若本机有路由功能则进行路由表搜索和转发
路由表:接口
- 目的IP地址:能够是网络地址,也能够是主机地址
- 下一站路由器的IP地址:直连网络的路由器IP,经过该路由器将数据转发到目的地
- 标志:一个标志区分目的IP是网络地址仍是主机地址;另外一个标志区分下一站路由器是真正的路由器仍是直连的网络接口
- 为数据报传输指定一个网络接口
IP路由是逐跳地(hop-by-hop)进行,IP并不知道到达目的地的完整路径,只是经过路由寻找到下一站路由器,如此不断接近终点ci
IP路由选择过程:路由
- 搜索路由表,找到与目标IP彻底匹配的条目,将报文发送给该条目的下一站路由器或直连的网络接口
- 搜索路由表,找到与目标网络号匹配的条目,将报文发送给该条目的下一站路由器或直连的网络接口
- 搜索路由表,找到“默认”条目,将报文发送给该条目的下一站路由器或直连的网络接口
为每一个网络指定一个路由器,能够减小路由表的规模路由器
- 大部分主机和路由器能够采用“默认”路由条目将数据传送到目的地
- 逐跳传递过程当中,目的IP地址不变化
- 逐跳传递过程当中,链路层数据帧首部的目的地址始终指向下一站链路层的目的地址(mac地址)
子网寻址
子网的目的:搜索
- 若是网络下直接就是主机号,一般一个网络可用主机号较多,实际用不了这么多,浪费
- 子网对外只须要暴露网关的IP地址,可用极大减小Internet路由表规模
一般B类地址才划分子网im

子网掩码
用来肯定IP地址中有多少位是网络号和子网号,有多少位是主机号数据
有盘主机一般在系统启动的时候,会读取磁盘中的文件来获取IP地址和子网掩码

经过子网掩码能够肯定目标地址与本机地址是否在:
这个功能也是路由选择中不断进行的步骤
特殊的IP地址

变长子网

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

3-10中各接口IP
