网络层设计思路:向上只提供简单的灵活的、无连接、尽最大啊努力交付的数据报服务。
每个分组独立发送,前后分组不进行编号、分组可能出错、丢失、重复、失序,也不保证交付的时间,如果计算机需要保证可靠的通信,需要运输层负责,网络层的实现尽量简单。
互联网中需要把两个网络连接起来的设备
- 物理层使用的中间设备是转发器
- 数据链路层使用的中间设备叫做网桥或桥接器
- 网络层使用的中间设备叫路由器
- 网络层以上的叫网关
第一种和第二种其实将网络扩展,在网络层其实还是属于一个网络,第四种比较复杂,所以现在使用的都是路由器。
字段 | 解释 |
4位版本号 | 指定IP协议的版本, 对于IPv4来说,就是4 |
4位头部长度 | IP头部的长度是多少个32bit, 也就是 length * 4 的字节数. 4bit表示最大的数字是15, 因此IP头部最大长度是60字节 |
8位服务类型 | 3位优先权字段(已经弃用), 4位TOS字段, 和1位保留字段(必须置0). 4位TOS(最小延时, 最大吞吐量, 最高可靠性, 最小成本),只能选其一. ssh/telnet这样的应用程序, 最小延时比较重要; 对于ftp这样的程序, 最大吞吐量比较重要 |
16位总长度 | IP数据报整体占多少个字节 |
16位标识 | 唯一的标识主机发送的报文. 如果IP报文在数据链路层被分片了, 那么每一个片里面的这个id是相同的 |
3位标志字段 | 第一位保留,第二位置为1表示禁止分片, 这时候如果报文长度超MTU, IP模块就会丢弃报文. 第三位表示”更多分片”, 如果分片了的话, 最后一个分片置为1, 其他是0 |
13位分片偏移 | 是分片相对于原始IP报文开始处的偏移. 其实就是在表示当前分片在原报文中处在哪个位置 |
8位生存时间 | 数据报到达目的地的最大报文跳数 |
8位协议 | 表示上层协议的类型 |
16位头部校验和 | 使用CRC进行校验, 来鉴别头部是否损坏 |
32位源地址和32位目标地址 | 表示发送端和接收端 |
选项字段 | 不定长, 最多40字节 |
IP数据报的总长度不能超过MTU,超过MTU需要进行分片,但是IP数据报越长,效率高,所以规定每一个路由器必须可以处理不超过576个字节的IP数据报,就是说MTU不能小于576。
网络层只校验数据报的首部,不校验数据部分,数据部分在数据链路层有校验。
路由器转发需要配置路由表,根据路由表中的配置进行转发分组。
主机号为0的网络地址和主机号为1的网络地址不能使用,主机号0表示当前的网络号,主机号为1表示广播地址。
网络层丢弃报文:
- 规定时间内没有接受到源点发送的所有分组,对齐已经接受的所有分组
- 首部校验出错丢弃所有的分组。
ICMP差错报告报文
- 终点不可达
- 源点抑制
- 时间超时
- 参数问题
- 改变路由
ICMP询问报文
- 会送请求和回答
- 时间戳秦秋和回答