3.1 引言
所有的TCP、UDP、ICMP及IGMP数据都以IP数据报格式传输。
IP是不可靠协议,即它不能保证IP数据报能成功到达目的地。任何要求的可靠性都由其上层协议完成。
IP是无连接的,即IP并不维护任何关于后续数据报的状态信息。
每个IP数据报的处理都是相互独立的,因此IP数据报是可以不按照发送顺序接收的。
3.2 IP首部
IP数据报的格式:
图1 IP报文首部
1)版本号:目前为4,即IPV4
2)首部长度:指首部站32bit字的数目,4位,所以首部最长为60个字节。对于没有选项值的IP数据报长度均为5
3)服务类型:一个3bit的优先权子字段(现已被忽略),4bit的TOS子字段和1bit未用位(需置零)。4bit的TOS分别表示:最小延时、最大吞吐量、最高可靠性和最小费用。这4bit只能有一位置为1bit,其他的要为0,如果四位全都置为0,则表示是一般服务
图2 服务类型字段推荐值
Telnet 和 Rlogin 主要用来传输少量的交互数据,所以交互应用要求最小时延。
4)总长度:整个IP数据报的长度,即首部加数据,因此根据该项和首部长度可以推算出数据部分的长度以及起始位置。IP数据报的最大长度是65535,但是通常在数据链路层通常都会被分片。总长度的另一作用是在IP数据报不到46字节时(以太网要求的最小长度)会根据总长度确定哪些是真正的IP数据哪些是填充数据5)标识:每发依次报文他的值就会加1
6)生存时间TTL:数据报可经过的最多路由器数,一般有源主机进行设置,每经过一个路由就减一。当变为零,则丢弃报文,并发送ICMP报文通知源主机
7)选项:数据报中的一个可变长的可选信息,可选字段包括
安全和处理限制 记录路径 时间戳 宽松的源站选路 严格的源站选路
4个字节的32bit值以下面的次序传输:首先是0~7bit,其次是8~15bit,然后是16~23bit,最后是24~31bit。这种传输次序称为bit endian字节序(大端)。TCP/IP首部中所有的二进制整数在网络中传输时均要求以这种次序,因此它又称作网络字节序。以其他形式存储二进制整数的机器,如Little endian格式(小端),则需要在传输数据之前把首部转化成网络字节序。
3.3 IP路由选择
IP层即可以配置成路由器的功能,也可以配置成主机的功能
区别:主机不把数据报从一个接口转发到另一个接口,而路由器需要转发数据报。内含路由器功能的主机应该从不转发数据报,除非被它被设置为那样。
一般体制中,IP可以从TCP、UDP、ICMP和IGMP接收数据报(即本地生成的数据报)并进行发送,或者从一个网络接口接收数据报(待转发的数据报)并进行发送。IP层在内存中有一个路由表。每收到一份数据报,对该表进行搜索。当数据报来自某个网络接口时,IP首先检查目的IP地址是否为本机的IP地址之一或者IP广播地址,如果是则将数据报送到由IP首部协议字段所指定的协议模块进行处理,如果不是,则1)若IP层被设置为路由器的功能,则对数据报进行转发,否则2)数据报被丢弃
路由表项:
- 目的IP地址。 该项既可以是完整的主机地址(非0主机号),也可以是网络地址(主机号为0)即可指定网络中的所有主机。
- 下一站(下一跳路由)的IP地址,或者有直接相连的网络IP地址
- 标志。一个标志指明目的IP地址是网络地址还是主机地址,另一个标志指明下一站路由器是否为真正的下一站路由器,还是一个直接相连的接口
- 为数据报的传输指定一个网络接口
路由器功能:
- 搜索路由表,找到与目的IP地址完全匹配的表项,将报文发送给该表项指定的下一站路由器或直接连接的网络接口
- 找到与目的网络号匹配的表项,将报文发送给该表项所指定的下一站路由器或者直接相连接的网络接口
- 都未能找到,则发送“默认”表项指定的下一站路由
- 如果上述步骤都没有成功,在该数据报不能被传送,则会想生成数据报的应用程序返回一个“主机不可达”或者“网络不可达”
一般是为一个网络指定一个路由器,而非为每一个主机指定一个路由器
3.4 子网寻址
IP地址不再是简单的一个网络号和一个主机好组成,而是把主机号再分成一个子网号和一个主机号
对于外部路由器而言隐藏了内部网络组织的细节。子网对子网内部的路由器不透明
3.5 子网掩码
子网掩码是用来区分有多少比特用于子网号及多少比特用于主机号。值为1的是比特留给网络,0留给主机
子网掩码通常使用十六进制表示
3.6 特殊情况的IP地址
图3 特殊情况的IP地址
其中0表示所有比特位均为0;-1表示所有的比特位全为1;netid、subnetid和hostid表示不全为0或不全为1.子网号栏为空表示该地址并没有进行子网划分。
2.7 ifconfig
ifconfig命令一般在引导时运行,用于配置主机上的每个接口
2.8 netsat命令
netsat -i 打印出接口信息 -n 打印出IP地址