网络分层协议集合分析
传输层
netstat ,ss 看到的是传输控制层的数据 主要查看IP,端口,进程号 等相关信息
网络层
route 查看下一跳的信息数据
内核会根据路由表中的路由条目和目标IP进行路由匹配,如果匹配成功则会把数据包转发给相应网络接口,如果没有匹配到则无法进行转发
网络传包的时候源IP和目标IP是不变的,每一跳不断变化的是源MAC地址和目标MAC地址
链路层
arp表,arp协议
arp表是动态收集同一个局域网除自身主机外所有其它主机和MAC地址的映射关系表
一个TCP包从开始到最后送到目标主机上,源IP地址和目标IP地址是不能变化的。但是TCP在传输这个包的时候不能一步就找到目标IP主机,而是会通过路由设备进行多次中转.
TCP/IP封包的时候源IP和目标IP是从一而终的,表示的是最开始地址和最终的目标地址,不管中间需要经过多少网络转发设备都不会改变
TCP在封装源MAC地址和目标MAC地址的时候只管当前主机的MAC地址和下一跳设备的MAC地址,而不会管最初的主机MAC和最终目标的MAC地址
每次路由设备中转的时候都会修改一下数据包
1.把数据包中的源MAC地址改成自己的MAC地址
2.把目标MAC地址改成路由表匹配到下一跳设备的MAC地址
arp -a 看的就是链路层数据表
arp解析的是同一局域网内IP地址和MAC地址的映射关系
arp表刚开机的时候是空的
采集到同一个局域网中除了自己其它所有的IP地址和MAC地址映射信息
系统启动的时候需要首先发送一个arp包来获取网段中的arp信息填充arp表
arp包中的目标MAC地址是一个特殊的MAC地址,是ffffff地址
arp表数据来源
启动系统后网卡就会被通电激活,网卡一旦激活便会向自身所处的网段中发送广播数据包用来向同一局域网中的其它主机通告自己的MAC地址和IP地址.其它主机会把这条记录保存到自己的arp表中
当系统内核在封装数据包的时候没有找到目标MAC地址的时候,就需要先发送arp包来找到目标MAC地址.然后再封装TCP数据包进行网络发送
arp包格式
目标MAC地址 FFFFFF
目标IP是路由表中的网关IP
交换机特殊约束如果收到目标MAC地址是FFFFFF,那么交换机会把这个包进行广播,广播给除入口之外的其它所有端口
同一网络内的主机收到广播包发现目标IP不是本机的IP,就会把这个包丢弃
网络规则设定如果发现接收到的包是arp协议包,就需要把自己的的MAC地址,填充到一个arp响应包中发送回去
arp协议解析
OSI模型把网络工作分为七层,IP地址在OSI模型的第三层,MAC地址在第二层,彼此不直接打交道.在通过以太网发送IP数据包时,需要先封装第三层(32位IP地址)、第二层(48位MAC地址)的包头,但由于发送时只知道目标IP地址,不知道其MAC地址,又不能跨第二、三层,所以需要使用地址解析协议.使用地址解析协议,可根据网络层IP数据包包头中的IP地址信息解析出目标硬件地址(MAC地址)信息,以保证通信的顺利进行
ARP请求为广播形式发送的,网络上的主机可以自主发送ARP应答消息,并且当其他主机收到应答报文时不会检测该报文的真实性就将其记录在本地的MAC地址转换表,这样攻击者就可以向目标主机发送伪ARP应答报文,从而篡改本地的MAC地址表. ARP欺骗可以导致目标计算机与网关通信失败,更会导致通信重定向,所有的数据都会通过攻击者的机器,因此存在极大的安全隐患
路由通信
SNAT模型
运行商会给路由器分配一个公网IP地址
用户会给路由器设置一个内网IP地址
一个路由器是有两个地址的,一个内网地址,一个公网地址
路由器的SNAT模型
1.路由器中除了有一个路由表还增加一个NAT表
2.NAT表里面的记录是由(内网主机IP+内网主机端口 > 路由器申请随机端口) 的映射关系
3.路由器会在转发包的时候把内网主机IP替换成路由器的公网IP
4.把内网主机端口替换成路由器申请的随机端口
5.然后把替换源IP和端口的包转发给公网服务器,公网服务器会把响应的包返回给路由器
6.路由器会根据路由器NAT表路由器的随机端口和接收包里的目标端口转发给对应的内网IP和端口
DNAT模型
非对称通信
1.客户端发送请求的数据包一般都比较小 上行流量小
2.服务器响应客户端请求的数据包一般都比较大 下行流量大
3.要求后端server的默认网关指向负载均衡器
4.负载器带宽成为性能瓶颈
无论是客户端请求包还是服务端响应包都要经过负载器的修改
DR模型
一台主机可以对其它主机隐藏某个自己的IP,对内可见这个IP
负载均衡器不再需要修改包里面的IP地址,只需要在转发到后端server的时候在包中添加server的MAC地址即可
隧道模型
IP的数据包背着(包含)一个内部的IP数据包
解压外层的IP地址后里面的数据还是一个完整的IP数据包