TCP/IP系列之网络层IP协议 当数据要在网际直接传输的时候,路由器根据IP数据报进行路由. 当一台主机要发送数据的时候,其目的主机一般为局域网内的主机或者网外的主机. 如果是局域网内的主机,主机发送的以太网帧的头部目的mac地址为目的主机的mac地址,不需要路
TCP/IP系列之网络层IP协议 当数据要在网际直接传输的时候,路由器根据IP数据报进行路由. 当一台主机要发送数据的时候,其目的主机一般为局域网内的主机或者网外的主机.
如果是局域网内的主机,主机发送的以太网帧的头部目的mac地址为目的主机的mac地址,不需要路由. 如果是网外的主机,则将数据发到默认的网关,由网关路由器进行路由到目的主机,主机发送的以太网帧 头部的目的mac地址为网关的mac地址. IP数据报的协议规定的数据报格式如下图:

IP协议不保证送达,不保证顺序.可靠性由上层协议保证.上层协议如TCP,UDP的信息在IP数据报的数据部分. 下图是通过Wireshark抓取的一个数据包:

路由器就要通过ip包的信息来为ip包寻找到一个合适的目标来进行传递,比如合适的主机,或者合适的路由.路由器或者主机将会用如下的方式来处理某一个IP数据包 如果IP数据包的TTL(生命周期)以到,则该IP数据包就被抛弃.
搜索路由表,优先搜索匹配主机,如果能找到和IP地址完全一致的目标主机,则将该包发向目标主机 搜索路由表,如果匹配主机失败,则匹配同子网的路由器,这需要“子网掩码(1.3.)”的协助. 如果找到路由器,则将该包发向路由器. 搜索路由表,如果匹配同子网路由器失败,则匹配同网号路由器,如果找到路由器,则将该包发向路由器. 搜索路由表,如果以上都失败了,就搜索默认路由,如果默认路由存在,则发包 如果都失败了,就丢掉这个包. 作者 kkdelta (文章内容如有侵权,敬请来信告知,我们将及时撤销)