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<sys/socket.h>

#include<netinet/ether.h>

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

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值