• 07_通信过程


    知识点1【给路由器添加一块网卡】

    知识点2【演示浏览器访问web服务器】

    知识点2【局域网的划分】(补充)

    知识点3【跨外网的不同局域网通信过程】(补充)

    知识点4【LInux下的防火墙】(了解)

    防火墙的分类

    防火墙的使用限制

    知识点5【原始套接字的概述】

    知识点1【给路由器添加一块网卡】

     成功:

    知识点2【演示浏览器访问web服务器】

    WebServer:网页服务器

    DNS:域名解析服务器(将域名www.baidu.com--->转换成对应web服务器的IP)

     

    知识点2【局域网的划分】(补充)

    比如:将192.168.1.0/24 划分成 10个子网 请问子网掩码 为啥?

    知识点3【跨外网的不同局域网通信过程】(补充)

     

     

     

    知识点4【LInux下的防火墙】(了解)

    防火墙的分类

    硬件防火墙:一个独立的设备,用于访问控制。

    软件防火墙:一个软件,用于访问控制。

    防火墙最重要的任务

    1、切割被信任(如子域)与不被信任(如 Internet)的网段

    2、划分出可提供Internet的服务与必须受保护的服务

    3、分析出可接受与不可接受的数据包状态

    你需不需要防火墙?

    理论上需要,但你必须知道系统哪些数据与服务需要保护、针对需要受保护的服务来设置防火墙规则

    防火墙的一般网络布线示意:

    防火墙的使用限制

    防火墙不能有效阻止病毒或木马程序

    防火墙对于来自内部LAN的攻击无能为力

    Linux的数据包过滤软件:iptables

    对比结果符合Rule1,此时这个网络数据包就会进行Action1的动作,而不会理会后续的Rule2、Rule3等规则了

    iptables的表格与链:

    1、Filter(过滤器):与本机数据有关

    INPUT:主要与想要进入Linux本机的数据包有关

    OUTPUT:主要与Linux本机所要送出的数据包有关

    FORWARD:与本机无关,传送数据到后端的计算机中

    2、NAT(地址转换):主要用来进行来源和目的地的ip或port的转换

    PREROUTING:在进行路由判断之前所要进行的规则

    POSTROUTING:在进行路由判断之后所要进行的规则

    OUTPUT:与发出去的数据包有关

    3、Mangle(破坏者):主要与特殊的数据包的路由标志有关(很少使用)

    规则的清除:

    iptables [-t tables] [-FXZ]

    -F:清除所有已定制的规则

    -X:除掉所有用户"自定义"的chain

    -Z:将所有的chain的计数与流量统计都归零

    例:清除本机防火墙(filter)的所有规则

    定义默认策略(policy)

    iptables [-t nat] -p [INPUT,OUTPUT,FORWARD] [ACCEPT,DROP]

    -P:定义策略(Policy),P为大写

    ACCEPT:该数据包可接受

    DROP:该数据包直接丢弃,不会让client知道为何丢弃

    例:将本机的INPUT设置为DROP,其他设置为ACCEPT注意先清除所有规则

    网络及接口设备的防火墙设置:

    例1:设置lo成为受信任的设备,亦即进出lo的数据包都予以接受

    例2:只要来自内网的(172.20.223.0/24)的数据包都接受。

    例3:只要是来自172.20.223.32就接受,但是来自172.20.223.91的数据包就丢弃

    针对端口的防火墙设置

    例1:想连接到本机的udp port 137,138 tcp port 139,445就放行

    对mac与state的防火墙设置:

    例1:只要已建立或相关封包就予以通过,只要是不合法封包就丢弃

    例2:针对局域网络内的 aa:bb:cc:dd:ee:ff 主机放行

    防火墙重心针对的是报文 比如协议、ip、端口、mac地址

    知识点5【原始套接字的概述】

    原始套接字(SOCK_RAW)

    1、一种不同于SOCK_STREAM、SOCK_DGRAM的套接字,它实现于系统核心

    2、可以接收本机网卡上所有的数据帧(数据包),对于监听网络流量和分析网络数据很有作用

    3、开发人员可发送自己组装的数据包到网络上

    4、广泛应用于高级网络编程

    5、网络专家、黑客通常会用此来编写奇特的网络程序

    流式套接字只能收发

    TCP协议的数据

    数据报套接字只能收发

    UDP协议的数据

    原始套接字可以收发

    1、内核没有处理的数据包,因此要访问其他协议

    2、发送的数据需要使用,原始套接字(SOCK_RAW)

    1、创建原始套接字 

    int socket(PF_PACKET, SOCK_RAW, protocol)

    功能:

    创建链路层的原始套接字

    参数:

    protocol:指定可以接收或发送的数据包类型

    ETH_P_IP:IPV4数据包

    ETH_P_ARP:ARP数据包

    ETH_P_ALL:任何协议类型的数据包

    返回值:

    成功(>0):链路层套接字

    失败(<0):出错

    sock_raw_fd = socket(PF_PACKET,SOCK_RAW,htons(ETH_P_ALL));

    头文件:

    #include

    #include

    1. #include<stdio.h>
    2. #include<sys/socket.h>
    3. #include<netinet/ether.h>
    4. int main()
    5. {
    6. //创建一个链路层 通信的原始套接字
    7. int fd = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL));
    8. printf("fd = %d\n", fd);
    9. close(fd);
    10. return 0;
    11. }

     

  • 相关阅读:
    三维重建一种实现算法
    H3C LC-5120-52SC-HI配置管理IP
    虹科方案 | 虹科ATTO加速虚拟存储管理
    Java基础面试,什么是面向对象,谈谈你对面向对象的理解
    趋势分析 | 如何选择适合超融合的备份方案?
    Ae 效果:CC Flo Motion
    自定义filter与interceptor
    UniApp项目实践HelloUni继续快速小步快跑中,前面是大上海吗
    ddia(5)----Chapter5.Replication
    权值初始化的常用方法
  • 原文地址:https://blog.csdn.net/buhuidage/article/details/127951890