3.1ARP原理
ARP不是一个单纯的数据链路层的协议,而是一个介于数据链路层和网络层之间的协议;
以广播的形式(主机号填成全1)构建Mac帧,发送ARP请求包,告诉所有在局域网的主机我的IP地址和Mac帧,与目的IP相同的主机用它的Mac地址构建Mac帧,返回ARP响应包;即先广播消息,然后其他主机一对一地将数据返回或者丢弃数据帧;
3.2ARP报文格式
硬件类型,指的是数据链路层的网络类型,1为以太网;
协议类型,指的是要转换的地址类型,一般是IP地址,即0800;
硬件地址长度,与硬件类型对应,如果是以太网长度应该是6字节;
协议地址长度,与协议类型对应,如果是IP协议,则长度应该是4字节;
OP,1表示是ARP请求,2表示ARP响应;
在局域网内部的主机都可以发送ARP请求和ARP响应,在数据链路层和网络层之间进行构建,之后再数据链路层进行构建Mac数据帧;
如果是ARP请求:发送端以太网地址就是入口路由器的Mac地址,IP地址同理,目的以太网地址为全F,目的IP为IP报文的目的IP地址;在发送IP报文前是会先发送ARP请求,构建好ARP请求,然后添加Mac报头;以太网目的地址为广播地址,以太网源地址为路由器Mac地址,帧类型为0806,OP为1;
如果是ARP响应:发送端以太网地址就是发送主机的Mac地址,IP地址同理,目的以太网地址为路由器Mac地址,目的IP地址同理;构建好ARP响应,然后添加Mac报头;以太网目的地址为路由器Mac地址,以太网源地址为当前主机的路由器Mac地址,帧类型为0806,OP为2;
在ARP层先看的是OP;对于ARP请求,因为目的地址是广播地址,所以每一个主机的数据链路层的会接收并解包分用给ARP层,而ARP应答,因为目的地址不是广播地址,在数据链路层就可以判断出来进行丢弃;根据OP确定请求和应答,然后确定关注目的端还是发送端的Mac地址和IP地址;
4.ARP相关指令
arp -a
#查看被主机临时缓存起来的目标主机的Mac地址和IP地址
ARP完成之后会将目标主机的Mac地址和IP地址临时缓存起来;之后发送IP报文就会在数据链路层添加目标主机的Mac地址,成功发送到目标主机;
5.ARP周边问题
1.ARP只有在失效的时候才会将进行;
2.ARP在任何局域网内的两设备之间都可以进行;
3.可以通过本机IP地址和子网掩码获取当前网段的网络号,ping所有本网段的主机之后获得所有主机的IP地址和Mac地址映射;
4.收到多个ARP应答,实际上是会以最新的为准;如果第三方主机构建大量的虚假ARP应答,就会使得发送端主机发送的IP报文被发送虚假ARP应答的第三方主机收到并且丢弃,使得发送方主机发生了一次断网;这种攻击方式称为ARP欺骗;其实也可以将获取的IP报文发送给路由器,然后路由器会将报文返回给第三方主机,第三方主机将IP报文发送回发送端主机,这样就是实现了一次单向中间人攻击,当然也可以对路由器进行ARP欺骗,实现双向的中间人攻击;
5.RARP是通过Mac地址获取IP地址;
6.其他问题
1.DNS是域名解析技术,将域名解析成对应的IP地址;浏览器内置了DNS服务器的IP地址,进行域名和IP地址的转化;
主域名是用来识别主机名称和主机所属的组织机构的一种分层结构的名称;域名使用 . 连接;
com: 一级域名. 表示这是一个企业域名. 同级的还有 “net”(网络提供商), “org”(非盈利组织) 等;
baidu: 二级域名, 公司名;
www: 只是一种习惯用法. 之前人们在使用域名时, 往往命名成类似于ftp.xxx.xxx/www.xxx.xxx这样的格式, 来表示主机支持的协议;
2.ICMP是网络层的协议,在IP之上,传输层之下;ping就是使用的ICMP协议,使用原始套接字直接发送到网络层;一个新搭建好的网络,往往需要先进行一个简单的测试,来验证网络是否畅通;但是IP协议并不提供可靠传输;如果丢包了,IP协议并不能通知传输层是否丢包以及丢包的原因,此时就需要使用ICMP协议来进行网络诊断和通知出错原因;
7.NAT技术
将私有IP和WAN口IP不断替换的技术;
缓解IP地址不足的问题,使用私有IP和WAN口IP将源IP地址不断替换成内网入口路由器IP地址,最终从内网入口路由器发送公网,然后公网发生数据响应返回到内网入口路由器;这时是区别不了具体发送到哪一个子网中,因为此时的目的IP地址是内网入口路由器的IP地址;这时就需要使用NAPT建立一个内网源IP:端口号和目的IP:端口号与公网源IP:端口号和目的IP:端口号的映射,最后多个映射组成一个NAT转化表;最后就实现了内网向公网转发,公网向内网转发;
其实在NAT替换的过程当中不仅仅是源IP替换,端口也替换了,因为要保证公网和内网部分key都唯一,而内网IP一定是唯一的,转换成WAN口IP地址会导致IP都一样,需要使用不同的端口号保证唯一性;
这种关联关系也是由NAT路由器自动维护的. 例如在TCP的情况下, 建立连接时, 就会生成这个表项; 在断开连接后, 就会删除这个表项;
NAT缺陷
无法从NAT外部向内部服务器建立连接;
转换表的生成和销毁都需要额外开销;
通信过程中一旦NAT设备异常, 即使存在设备, 所有的TCP连接也都会断开;
内网穿透
不同内网是不可以直接进行通信,需要先访问外网然后外网转发到内网,间接实现不同内网的通信;
frp工具会提供frps(服务器端)和frpc(客户端),实现了通过外网访问内网;
8.代理服务器
8.1正向代理服务器
校园网就是一种代理服务器,其他主机的请求都会通过学校路由器发送到学校的服务器,然后在转发到公网,之后接收响应,返回给其他主机;
校园网服务器可以拦截学生的非法请求或者特殊请求;
校园网服务器会将没有加密的数据缓存起来,如电影视频,当其他主机有同样的需求时,就可以通过内网进行查看并获取资源;
校园网可以对外来的请求做安全处理,防止内网穿透;这种服务器叫做正向代理服务器;
国内运营商一般会将访问外网的请求拦截丢弃,但是有一些特殊地区不会,所以可以购买这些地区的主机访问外网,但是也会被运营商检测到是发送给特殊地区的请求,所以可以使用socks5技术将发送的请求加密,成功发送到特殊地区正向代理服务器,然后解密就得到正确的https请求,最后就可以访问到外网了;可以使用对真正地请求和响应报文套一层协议,这种技术叫做隧道技术,转你也得有socks5;
8.2反向代理服务器
企业内部可能有多台主机充当服务器,如果将所有主机的IP都暴露出去,就会导致主机的负载不均衡,此时设置一个高配置的主机不提供任何服务,而是将客户端发送的所有请求均匀地转发到后端的所有机器上;
即反向代理服务器主要做的就是负载均衡;内网穿透其实就是使用的反向代理服务器;
8.3NAT和代理服务器的区别与联系
路由器往往都具备NAT设备的功能,通过NAT设备进行中转,完成子网设备和其他子网设备的通信过程;代理服务器看起来和NAT设备有一点像;客户端像代理服务器发送请求,代理服务器将请求转发给真正要请求的服务器;服务器返回结果后,代理服务器又把结果回传给客户端;
区别
1.从应用上讲,NAT设备是网络基础设备之一,解决的是IP不足的问题;代理服务器则是更贴近具体的应用,比如通过代理服务器进行访问外网;
2.从底层实现上讲,NAT是工作在网络层,直接对IP地址进行替换;代理服务器往往工作在应用层;
3.从使用范围上讲,NAT一般在局域网的出口部署,代理服务器可以在局域网做,也可以在广域网做,也可以 跨网;
补充:路由器不仅有网络层的功能,还具备了数据链路层的构建子网的功能,甚至在传输层实现了端口号的替换,如:NAT替换表将端口号进行替换;