网络层向上只提供简单灵活的、无连接的、尽力交付的服务。这里 我对自己提出以下几个问题
1、互联网上的不同网络的主机 通信具体是什么样的?
假设 LAN1 有主机A ,ip地址为IPA,物理地址PA 该网络的路由器R1 的硬件地址为 PR1,PR2,LAN2有主机B,ip为IPB,那么A与B通信的过程是:A首先会通过ARP获取路由器R1的接口硬件地址PR1,然后构造mac帧发送给R1,R1查询路由表得知该分组需要从PR2出然后通过ARP获取H2的硬件地址,然后构造mac帧发送给H2。通过以上过程得知ARP可以获取一个网络中的所有主机或者路由器中的物理地址,并且ip数据包中的首部ip地址不会变化,但是数据链路帧中的目的地址和源地址经过每一条链路 都会变化。
2、具体记忆ip首部每个字段的意义是比较困难的,比如让你设计首部,应该至少包含哪些字段?
首先 目的ip 、源ip 是必须的。
向下层考虑:我们知道ip数据报可能会很大,那么数据链路层又将帧的数据部分限制在48 ~1500 (MTU),所以数据必须要分片传输。则必须有标识字段标识某个分片属于哪个ip数据包,同时需要在目的地组装好,那么就需要有偏移量,同时设设置标志字段 标志是否分片 或者是否有更多分片 使得更容易组装。
向上层考虑:我们知道网络层还是要经过上层协议的处理,不管是tcp还是udp都需要指明。所以设置协议字段。
校验相关:虽然可靠传输是由tcp 保证的,但是还是需要ip层进行首部校验 从而丢弃出错的ip数据包
整个包的数据说明部分:首部长度 、 数据包长度。
3、icmp 协议中文名称是什么?有什么作用?icmp差错报告报文如何生成?
数据包在发送到目标主机的过程中,通常会经过一个或多个路由器。而数据包在通过这些路由进行传输时,可能会遇到各种问题,导致数据包无法发送到目标主机上。为了了解数据包在传输的过程中在哪个环节出现了问题,就需要用到 ICMP 协议。它可以跟踪消息,把问题反馈给源主机
互联网控制消息协议,icmp报文有两种差错检测报文 和询问报文。icmp是为了更有效的转发ip数据包和提高交付成功的机会。
将ip数据报首部+数据字段的前8个字节(传输层端口号)+icmp首部8字节 作为icmp差错报告报文,然后将整个icmp报文加上ip首部 作为ip数据报发给源点。
icmp 报文分为差错报告报文(终点不可达、源点抑制、时间超时、路由改变、参数错误)和查询报文(回送请求和回答报文 、时间戳请求和回答报文) ping 就是使用了icmp协议,不过并未使用传输层tcp和udp等协议,
4、子网划分和构造超网(CIDR无分类域间路由)解决了什么问题
子网划分:早期二级IP(网络号+主机号)不够灵活,造成了IP地址的极大浪费,假设少数不浪费又造成路由表项过多。所以提出了三级IP地址(网络号:子网号主机号)
构造超网(CIDR):路由表项过大 废除了分类的概念 这就是classless inner-Domain route 的由来