概述
7.1 引言
网际协议(Internet Protocol,IP)是TCP/IP协议簇在网络层使用的传输机制。
IP是一种不可靠的无连接数据报协议—尽最大努力交付(best-effort delivery)的服务。
7.2 数据报
网络层的分组称为数据报(datagram)。
数据报是一个可变长度的分组,它由两部分组成:首部和数据。
VER 版本
HLEN 数据报的首部总长度
服务类型(type of service,TOS)
数据长度=总长度-首部长度;总长度字段定义了包括首部在内的数据报总长度。
标识、标记,分片偏移用于分片。
生存时间:用于标致数据报所经历的最大跳数(路由器)
协议:标识使用IP服务的高层协议。
校验和:
源IP地址,目的IP地址:在ip数据报从源主机到目的主机过程中,这俩ip地址保持不变。
7.3 分片
7.3.1 最大传输单元mtu
数据报在到达最后终点之间可以经过多次的分片。
数据报可以被源主机或途中的任何路由器分片,但数据报的重装却只能在目的主机上进行,因为每一个分片都变成了独立的数据报。
当数据报被分片时,首部中的一些必要的部分必须被复制到所有分片中
7.3.2 与分片有关的字段
16位。注意:所有分片的标识字段都是一样的。此标识与源IP组合唯一的确定这个数据报。
7.4 选项
7.4.1 格式
·长度字段(length field)定义选项的总长度,包括类型字段和长度字段本身。
·值字段(value field)包含的是某些特定选项所需的数据。
7.4.2 选项类型
类型0:选项结束选项(end-of-option option)也是个1字节的选项,用于选项字段结束时的填充。
类型7:记录路由选项(record-route option)是用来记录处理数据报的因特网路由器。
类型137:严格源路由选项(strict-source-route option)被源点用来预先指定数据报在因特网中传送时的路由。
类型131:不严格源路由选项(loose-source-route option)与严格源路由类似,但是不指定的路由器可以经过。
类型68:时间戳选项(timestamp option)用来记录路由器处理数据报的时间。
7.5 校验和
绝大多数TCP/IP协议采用的差错检测方法称为检验和(checksum)。检验和能够防止分组在传输期间出现的损坏。检验和是附加在分组上的冗余信息。
发送端计算校验和,
接收端计算校验和
7.5.3 IP分组中校验和
IP中的检验和只覆盖首部,不包括数据。
7.6 IP在ATM中运行
7.6.1 ATM广域网
AAL5有时候被称作简单有效的适配层(simple and efficient adaptation layer,SEAL)
ATM信元具有53字节的固定长度,其中前5个字节是信元头,其余48个字节是有效载荷。
AAL5(效率更高),这里需要对比其他协议。
7.6.2 信元的路由选择
ATM网络在进入点路由器和离去点路由器之间建立一条路由。
IP地址(每个连接到ATM网络上的路由器都有一个IP地址。IP地址在IP层制定了特定路由器,但在ATM层没有作用)
物理地址(在一个网络中每个地址都是唯一的,且用网络管理员来指定。作用于局域网中MAC类似,建立连接时用)
虚电路标识符(ATM网路内部交换机使用虚电路标识符来(VPI,VPC)为信元选路,在数据传输的时候使用)
地址绑定
7.7 安全性
7.7.1 安全问题
有三个安全问题是特别应用于IP协议的:分组窃取(packet sniffing)、分组篡改(packet modification)和IP伪装(IP spoofing)。
7.7.2 IPSec
IPSec能够提供以下四种服务:定义算法和密钥、分组加密、数据完整性、起源鉴别。
7.8 IP软件包
可以认为IP软件包包含八个构件:首部添加模块、处理模块、转发模块、分片模块、重装模块、路由表、MTU表和重装表。此外,在软件包中还包括一些输入和输出队列。
·这个软件包接受来自数据链路层和高层协议的应用。
7.8.1 首部添加模块
首部添加模块(headr-adding module)接受来自高层协议的数据及其目的IP地址。它通过添加IP首部,把数据封装在一个IP数据报中
7.8.2 处理模块
处理模块(processing module)是IP软件包的核心。接收来自一个接口或者首部添加模块的数据报。数据被转发和处理。
//从一个输入队列获取数据
//判断数据是否到达终点,是被重装
if(目的地址与本地地址一个相匹配)
{
把数据报发给重装模块
return;
}
if(本机是路由器)
{
TTL -1;
}
if(TTL <=0)
{
丢弃报文。
发送ICMP差错报文
返回
}
把数据包发送到转发模块
}
7.8.3 队列
我们的软件包使用了两种类型的队列:输入队列和输出队列。输入队列(input quenes)存放的是来自数据链路层或高层协议的数据报。输出队列(output squenes)存放的是将要发送到数据链路层或高层协议的数据。
·处理模块从输入队列中取出数据报。分片和重装模块则向输出队列中添加数据报。
7.8.4 路由表
转发模块利用路由表确定分组的下一跳地址。
7.8.5 转发模块
转发模块(forwarding module)接收来自处理模块的IP分组。
7.8.6 MTU表
分片模块使用MTU表找出特定接口的最大传送单元(maximum transfer unit,MTU)。mtu表只包含两列:接口和mtu.
7.8.7 分片模块
//提取数据报长度
if(长度>MTU)
{
if(D位置被置1)
{
数据报被丢弃
发送ICMP报错报文
返回
}
else{
计算最大长度
把数据报分片
给分片添加首部
给分片添加需要的选项
}else{
直接发送
7.8.8 重装表
重装表(ressembly table)是重装模块使用的。有5个字段:状态,源IP地址,数据报标识符,超时,分片、
数据报标识符是一个数字,它唯一地定义了一个数据报以及属于该数据报的所有分片。
7.8.9 重装模块
重装模块(ressenbly module)接收来自处理模块的,且已到达最终目的地的数据报分片。
就是找出一个分片是属于哪个数据报的,把属于同一个数据报的所有分片进行排序,所有的分片到达后组成一个数据报。预定超期到了分片数据还不齐,重装模块就把这些分片丢弃。
最后
以上就是甜美小天鹅为你收集整理的TCP/IP协议族【第7章网际协议版本4(IPv4)】7.1 引言7.2 数据报7.3 分片7.4 选项7.5 校验和7.6 IP在ATM中运行7.7 安全性7.8 IP软件包的全部内容,希望文章能够帮你解决TCP/IP协议族【第7章网际协议版本4(IPv4)】7.1 引言7.2 数据报7.3 分片7.4 选项7.5 校验和7.6 IP在ATM中运行7.7 安全性7.8 IP软件包所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复