• 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. }

     

  • 相关阅读:
    【软考:系统集成项目管理】之 项目采购管理
    【Linux】之Jumpserver堡垒机添加linux主机资产
    栈与队列(JAVA)
    【练习】检测U盘并自动复制内容到电脑的软件
    python编程复习系列——week3决策声明(if-else)
    HTML期末学生大作业:基于html+css+javascript+jquery企业餐厅11页 企业网站制作
    音视频从入门到精通——超简单的基于FFMPEG+SDL的视频播放器(二)
    基于SSM框架的ACG动漫周边交易平台设计与实现
    Quartus Ⅱ调用FIFO IP核方法实现求和(Mega Wizard)
    Linux centos环境 安装谷歌浏览器
  • 原文地址:https://blog.csdn.net/buhuidage/article/details/127951890