当主机A发向主机B的数据流在网络层封装成IP数据包,IP数据包的首部包含了源地址和目标地址。主机A会用本机配置的24位IP网络掩码255.255.255.0与目标地址进行与运算,得出目标网络地址与本机的网络地址是不是在同一个网段中。如果不是将IP数据包转发到网关。
在发往网关前主机A还会通过ARP的请求获得默认网关的MAC地址。在主机A数据链路层IP数据包封装成以太网数据帧,然后才发住到网关……也就是路由器上的一个端口。
当网关路由器接收到以太网数据帧时,发现数据帧中的目标MAC地址是自己的某一个端口的物理地址,这时路由器会把以太网数据帧的封装去掉。路由器认为这个IP数据包是要通过自己进行转发,接着它就在匹配路由表。匹配到路由项后,它就将包发往下一条地址。
路由器转发数据包就是这样,所以它始终是不会改IP地址的。只会改MAC.
当有数据包传到路由器时,路由器首先将其的目的地址与路由表进行对比,如果是本地网络,将不会进行转发到外网络,而是直接转发给本地网内的目的主机,改变的只是数据包的源地址,(原源地址MAC变为了路由器的MAC);当然其中的过程关系到相关的协议的使用,像什么ARP,IP等。但是如果目的地址经路由表对比,发现不是在本网中,有nat就将改变源地址的IP(原源地址的Ip地址改为了路由器的IP地址),路由器将熟数据包转发到相应的端口,进行通信。
如:A访问B,首先对比是否同一子网,如果是,检查ARP表,有B的MAC就直接发送,没有就发送ARP请求.如果否,发送到默认网关C,源IP为A,源MAC为A,目的IP为B,目的MAC地址为C,C接收到这个包,检查路由表,发送到下一跳D,源IP为A,源MAC为C,目的IP为B,目的MAC为D.....如此循环,直到发送到B.NAT为特殊应用,会修改源IP为网关自己外网IP。
TCP通过确认 和 重传 机制保障传输可靠性
ICMP:
各种ICMP报文的前32bits都是三个长度固定的字段:type类型字段(8位)、code代码字段(8位)、checksum校验和字段(16位)
D类I P地址范围在244.0.0.0到239.255.255.255之间。它分为两类:永久地址和临时地址。永久地址是为特殊用途而保留的。比如,244.0.0.0根本没有使用(也不能使用),244.0.0.1代表子网内的所有系统(主机),而244.0.0.2代表子网内的所有路由器。
IP 地址中,网络部分和主机部分都为全0 的地址表示 所有网络
当访问Internet时,需要利用网络地址转换(
NAT,NetworkAddress Translation)技术,把私有IP地址转换为
Internet可识别的公有IP地址。
对于主机部分全为“0”的IP地址,称为网络地址,网络地址用来
标识一个网段。例如,A类地址1.0.0.0,私有地址10.0.0.0,
192.168.1.0等。
对于主机部分全为“1”的IP地址,称为网段广播地址,广播地址
用于标识一个网络的所有主机。例如,10.255.255.255,
192.168.1.255等。
网络地址计算:
网络地址就是IP地址的二进制和子网掩码的二进制进行“与”的
结果。
“与”的计算方法是1&1=1,1&0=0,0&0=0。胶片中IP地址和子网
掩码的与计算为:
11000000,10101000,00000001,00000111
& 11111111, 11111111,11111111,11110000
11000000,10101000,00000001,00000000
最后得到的就是网络地址。
网段地址是一个C类地址:201.222.5.0。假设需
要20个子网,其中每个子网5个主机,每个网段分别为:
201.222.5.0~201.222.5.7
201.222.5.8~201.222.5.15
201.222.5.16~201.222.5.23
………
201.222.5.232~201.222.5.239
201.222.5.240~201.222.5.247
201.222.5.248~201.222.5.255
如图所示,路由器工作流程为:
物理层从路由器的一个端口收到一个报文,上送到数据链路层。
数据链路层去掉链路层封装,根据报文的协议域上送到网络层。
网络层首先看报文是否是送给本机的,若是,去掉网络层封装,
送给上层。若不是,则根据报文的目的地址查找路由表,若找到
路由,将报文送给相应端口的数据链路层,数据链路层封装后,
发送报文。若找不到路由,将报文丢弃,并按需要发送相关错误
信息。