网络协议基础(四):IP报文简单讲述

前面详细学习了传输层,了解了TCP头部的构成与各个组成部分的含义。那设计网络层的目可以简单的描述为IP 寻址、选路、封装打包、分片。

1. NAT与NAPT

(1) NAT(IP Network Address Translator)应用的前提

  • 内网中主要用于客户端访问互联网
  • 同一时间仅少量主机访问互联网
  • 内网中存在一个路由器负责访问外网

究其原因是因为对外配置有公网IP的路由器仅仅只替换转发报文的源IP,所以只能建立一对一的公网与私有IP的映射,大大限制了并发量。那如何解决这种情况哩,唯有借助改变源端口号来解决。
(2) NAPT 端口映射:Network Address Port Translation
如(1)中所述不止修改源IP,还会修改源Port.

2.IP 选路协议

传输 IP 报文的方式:

  • 直接传输
  • 本地网络间接传输
    内部选路协议 RIP, OSPF
  • 公网间接传输
    外部选路协议 BGP

3.IP 报文头部

ipheader如上图所示和TCP头部规定相同,IP头部也是20bytes的固定字节,剩余最多40bytes的选项。在固定20byets中有协议版本号,ip头部长度,整个IP分组的长度,分片标识符Identification,分片标记与偏移量,报文生存时间TTL与上层协议,头部校验和,源/目的ip地址这几个选项。它们具体作用也颇为简单,百度一下,你就拥有。下面还是基于Wireshark抓包来展示:
ipheaders基于以上的头部格式就可以解答为什么在ip报文有可能在传输过程中发生多次分片的情况下仍然可以有效组合的情况了! 盖因ip头部中有对应的分片标识符,对于同一个报文的不同分片会对应相同标识符与不同偏移量,基于此来实现也。

4.IP 协议的助手:ICMP 协议

ICMP 协议的本质是被IP报文封装的介于网络层与传输层之间的协议,其报文格式如下图所示:
icmp_message果然在好的一幅图不及一幅图来的详细。上面清楚的展示了ICMP报文的组织形式,然而具体问题具体分析,接下来就使用windows上的tracert命令远程一下baidu.com,并使用Wireshark抓icmp报文,捕获到的一个icmp报文格式如下:
example图片清楚的展示了ICMP的设计思想与tracet之所以可以跟踪路由的根本原因,此处不再过多阐述。

附:关于ipv4地址全 0 或者全 1 的特殊含义

网络号 主机号 A 类示例 B 类示例 C 类示例 含义
网络号 主机号 77.91.215.5 154.3.99.6 227.82.157.160 指定某个主机
网络号 全 0 77.0.0.0 154.3.0.0 227.82.157.0 指定某个网络
全 0 主机号 0.91.215.5 0.0.99.6 0.0.0.160 指定当前所属网络下的某个主机
全 0 全 0 0.0.0.0 0.0.0.0 0.0.0.0 指定自己的默认 IP 地址
网络号 全 1 77.255.255.255 154.3.255.255 227.82.157.255 指定某个网络下的所有主机,用于广播
全 1 全 1 255.255.255.255 255.255.255.255 255.255.255.255 所有主机
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章