网络相关知识

OSI七层模型中各层协议及作用

各层协议简介对比

层级名称常用协议或标准常用协议或标准相关设备传输单位
7应用层特定应用对接受数据的处理HTTP、TTTPS、SMTP终端、服务器-
6表示层设备数据格式与网络标准数据格式转化JPEG、LPP、GIF终端服务器-
5会话层通信管理,建立和断开通信连接PRC、SSL、TLS终端、服务器-
4传输层管理两个网络终端之间的数据传输TCP、UDP终端、服务器
3网络层网络地址管理和路由选择IP/IPv6、ICMP路由器、三层交换机分组、包
2数据链路层互联设备之间传送和识别数据帧(差错控制)ARP、PARP网桥、二层交换机
1物理层比特流和电子信号的转化IEEE 802.3/802.2网卡、网线、集线器、中继器、调制解调器比特位

IPv4地址的相关知识

保留地址:
0.0.0.0——默认网络,这是连接到TCP/IP网络的抽象概念
255.255.255.255——此地址是为网络广播或应发送到网络上所有计算机的消息保留的
127.0.0.1——回环地址
169.254.0.1到168.254.255.254——这是计算机从DHCP服务器获取地址失败时自动分配的专用IP地址(APIPA)范围
子网地址分类
10.0.0.1到10.255.255.255——这属于1.0.0.0到127.0.0.0的A类地址范围,其中第一位为0
172.16.0.0到172.31.255.255——这设计会128.0.0.0到191.255.0.0的B类地址范围,其中前两位是10
192.168.0.0到192.168.255.255——这属于192.0.0.0到223.255.255.0的C类范围,其中前三位是110
多播(以前成为D类)——地址的前四位是1110,地址范围是224.0.0.0到239.255.255.255
预留做日后的(以前成为E类)——地址240.0.0.0到254.255.255.254

IPV6

优点:
1.更大的地址空间:128位的地址空间可以满足星球上的每个人
2.无需NAT:保障端到端通信
3.没有广播地址:包括单播、多播、任意播
4.支持移动性和安全性:有助于确保遵循移动IP标准和Ipsec标准
5.更简单的报文提高了路由器的效率
6.接口标识:从接口的数据链路层
新特性:
1.每个接口多个地址
2.链路本地地址:交换路由更新时,IGP将link-local地址作为下一跳地址
3.无状态自动配置:一个IPV6设备根据本身分配一个独特Link-local IPV6的地址
4.独立或不独立于提供商的编址

静态路由和动态路由的区别

静态路由是指由网络管理员手工配置的路由信息。当网络的拓扑结构或链路的状态发生变化时,网络管理员需要手工去修改路由表中相关的静态路由信息。静态路由信息在缺省情况下是私有的,不会传递给其他的路由器。当然,网管员也可以通过对路由器进行设置使其成为共享的。静态路由一般适用于比较简单的网络环境,在这样的环境中,网络管理员易于清楚了解网络的拓扑结构,便于设置正确的路由信息。
动态路由是指路由器能够自动建立自己的路由表,并且能够根据实际情况的变化适时地进行调整。动态路由机制的运行依赖路由器的两个基本功能:对路由表的维护;路由器之间适时的路由信息交换。

三次握手和四次挥手

先了解一下TCP报文格式图
在这里插入图片描述
重点字段:
(1)序号:Seq序号,占32位,用来标识从TCP源端口想目的端口发送的字节流,发送方发送数据时对此进行标记。
(2)确认号:Ack序号,占32位,只有ACK标志位为1时,确认序号字段才有效,Ack=Seq+1
(3)标志位:共6个,即URG、ACK、PSH、RST、SYN、FIN等,含义如下:
(A)URG紧急,当URG=1,表示紧急指针字段有效,应尽快传输
(B)ACK确认,当ACK=1,表示确认应答号AN有效
(C)PSH推送,接受TCP收到PSH=1的报文段,就尽快地交付接受应用进程而不用再等待缓存满了以后再交付。
(D)RST复位,当RST=1,表明TCP连接出现严重差错,必须释放重新建立。
(E)同步SYN,同步SYN=1表示这是一个连接请求报文。
(F)终止FIN,用来释放一个连接,FIN=1表明发送端数据已发送完毕,要求释放传输连接。
注意:确认序号Ack与标志位中的ACK不是一回事,确认发Ack=发起方Req+q,两端配对。
3次握手过程详解
三次握手是简历TCP连接时,需要客户端和服务器总共发送3个包以确认连接的建立。在socket编程中,这一过程由客户端执行connect来触发,整个流程如下图表示:
在这里插入图片描述
(1)第一次握手:Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server,Client进入SYN_SENT状态,等待Server确认。
(2)第二次握手:Server收到数据包后由标志位SYN=1知道Client请求建立连接,Server将标志位SYN和ACK都置为1,ack=J+1,随机产生一个值seq=K,并将该数据包发送给Client以确认连接请求,Server进入SYN_RCVD状态。
(3)第三次握手:Client收到确认后,检查ack是否为J+1,ACK是否为1,如果正确,将标志位ACK置为1,ack=K=1,并将该数据包发送给Server,Server检查ack是否为K+1,ACK是否为1,如果正确则连接建立成功,Client和Server进入ESTABLISHED状态,完成三次握手,随后Client与Server之间可以进行传输数据了。

SYN攻击:
在三次握手过程中,Server发送SYN-ACK之后,收到Client的ACK之前的TCP连接称为半连接(half-open connect),此时Server处于SYN_RCVD状态,当收到ACK后,Server转入ESTABLISHED状态。SYN攻击就是Client在短时间内伪造大量不存在的IP地址,并向Server不断地发送SYN包,Server回复确认包,并等待Client的确认,由于源地址是不存在的,因此,Server需要不断重发直至超时,这些伪造的SYN包将产时间占用未连接队列,导致正常的SYN请求因为队列满而被丢弃,从而引起网络堵塞甚至系统瘫痪。SYN攻击时一种典型的DDOS攻击,检测SYN攻击的方式非常简单,即当Server上有大量半连接状态且源IP地址是随机的,则可以断定遭到SYN攻击了,使用netstat -nap | grep SYN_RECV命令可以让之现行

四次挥手

四次挥手是断开一个TCP连接时,需要客户端和服务端总共发送4个包以确认连接的断开,这一过程由客户端或服务端任一方执行close来触发,整个流程图如下所示:
在这里插入图片描述
由于TCP连接是全双工的,因此,每个方向都必须要单独进行关闭,这一原则是当一方完成数据发送任务后,发送一个FIN来终止这一方的连接,收到一个FIN只是意味着这一方向上没有数据流动了,即不会再收到数据了,但是在这个TCP连接上仍然能够发送数据,直到这一方向也发送了FIN。首先进行关闭的一方将执行主动关闭,而另一方则执行被动关闭。
(1)第一次挥手:Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态
(2)第二次挥手:Server收到FIN后,发送一个ack给Client,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态
(3)第三次挥手:Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态
(4)第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到的序号+1,Server进入CLOSED状态,完成四次挥手。
还有双方同时发送主动关闭的情况,流程图如下:
在这里插入图片描述
问题:为什么建立连接是三次握手,而关闭连接却是四次挥手呢?
这是因为服务端在LISTEN状态下,收到建立连接请求的SYN报文后,把ACK和SYN放在一个报文里发送给客户端。而关闭连接时,当收到对方的FIN报文时,仅仅表示对方不再发送数据了但是还能接收数据,己方也未必全部数据都发送给对方了,所以己方可以立即close,也可以发送一些数据给对方后,再发送FIN报文给对方来表示同意现在关闭连接,因此,己方ACK和FIN一般都会分开发送。

TCP连接状态分析:SYNC_RECV,CLOSE_WAIT,TIME_WAIT

Linux的iptables防火墙相关知识

iptables其实不是真正的防火墙,我们可以把它理解成一个客户端代理,用户通过iptables这个代理,将用户的安全设定执行到对应的“安全框架”中,这个“安全框架”才是真正的防火墙,这个框架的名字叫netfilter。netfilter才是防火墙真正的安全框架,netfilter位于内核空间。iptables其实是一个命令行工具,位于用户空间,我们用这个工具操作真正的框架。netfilter/iptables组成Linux平台下的包过滤防火墙,完成封包过滤、封包重定向和网络地址转换(NAT)等功能。
iptables基础
iptables是按照规则(rules)来办事的,规则其实就是网络管理员预定义的条件,规则一般的定义为“如果数据包头符合这样的条件,就这样处理这个数据包”。规则存储在内核空间的信息包过滤表中,这些规则分别指定了源地址、目的地址、传输协议(如TCP、UDP、ICMP)和服务类型(如HTTP、FTP和SMTP)等。当数据包与规则匹配时,iptables就根据规则所定义的方法来处理这些数据包,如放行(accept)、拒绝(reject)和丢弃(drop)等。配置防火墙的主要工作就是添加、修改和删除这些规则。
当客户端访问服务器的web服务时,客户端发送报文到网卡,而tcp/ip协议栈是属于内核的一部分,所以客户端的信息会通过内核的TCP协议传输到用户空间中的web服务中,而此时客户端报文的目标重点为web服务所监听的套接字(IP:Port)上,当web服务需要响应客户端请求时,web服务发出的响应报文的目标终点则为客户端,这时候web服务所监听的IP与端口反而变成了原点,我们知道netfilter才是真正的防火墙,它是内核的一部分,所以,防火墙想达到防火的目的,需要在内核中设置关卡,所有进出的报文都要通过这些关卡,经过检查后,符合放行条件的才能放行,符合阻拦条件的则需要被阻止,于是就出现了input和output关卡,而这些关卡在iptables中称为链。
在这里插入图片描述
其实上述场景并不完善,因为客户端发来的报文访问的目标地址可能并不是本机,而是其他服务器,当本机的内核支持IP_FORWARD时,我们可以将报文转发给其他服务器,这时候我们就会提到iptables中的其他关卡,也就是其他链,他们就是PREROUTING(路由前)、FORWARD(转发)和POSTROUTING(路由后)。也就是说,当我们启用了防火墙功能时,报文需要经过如下关卡,根据实际情况不同,报文经过的链可能不同。如果报文需要转发,那么报文就不会经过input链发往用户空间,而是直接在内核空间中经过forward链和postrouting链转发出去的。
在这里插入图片描述
所以上图的常用场景,报文流向:
到本机某进程的报文:PREROUTING->INPUT
由本级转发的报文:PREROUTIING->FORWARD->POSTROUTING
由本机的某进程发出的报文(通常为响应报文):OUTPUT->POSTROUTING
链的概念
防火墙的作用在于对经过的报文匹配规则,然后执行对应的动作,所以报文经过这些关卡的时候,必须匹配这个关卡上的规则,但是这个关卡可能不止有一条规则,而是有很多规则,当我们把这些规则串到一条链路上的时候,就形成了链,每个经过这个关卡的报文,都要将这条链上的规则匹配一遍,如果有符合条件的规则,就执行对应的动作。
在这里插入图片描述
表的概念
将链上实现相同功能的规则放在一起,及具有相同功能规则的集合叫做表。不同功能的规则可以放置在不同的表中进行管理,iptables定义了4中表,每种表对应不用的功能,我们定义的规则都逃脱不了这4中功能范围,分别是filter表,nat表,mangle表和raw表。
filter表:负责过滤功能,防火墙;内核模块:iptables_filter
net表:网络地址转换功能;内核模块:iptables_nat
mangle表:拆解报文,做出修改,并重新封装的功能;内核模块:iptables_mangle
raw表:关闭nat表上启用的连接追踪机制;iptables_raw
链表关系
链上所拥有的的规则并不完全相同,总结一下每个链中的规则都存在于哪些表中。
PREROUTING的规则可以存在于:raw表,mangle表,nat表
INPUT的规则可以存在于mangle表,filter表(centos7还有nat表,centos6没有)
FORWARD的规则可以存在于mangle表,filter表
OUTPUT的规则可以存在于raw表,mangle表,nat表,filter表
POSTROUTING的规则可以存在于mangle表,nat表
在实际使用中,往往是通过表作为操作入口,对规则进行定义的,再按照表总结一下:
表(功能)<————————————>链(钩子)
raw表 中的规则可以被哪些链使用:PREROUTING、OUTPUT
mangle表中的规则可以被哪些链使用: PREROUTING、INPUT、FORWARD、OUTPUT、POSTROUTING
nat表 中的规则可以被哪些链使用:PREROUTING、OUTPUT、POSTROUTING、INPUT(cnetos7)
filter表 中的规则可以被哪些链使用:INPUT,FORWARD、OUTPUT
链中表的执行优先级:raw->mangle->nat->filter
数据经过防火墙的流程
在这里插入图片描述
规则的概念
基本匹配条件:源地址IP和目的地址IP
扩展匹配条件:源端口和目标端口
处理动作:ACCEPT、DORP、REJECT、SNAT、MASQUERADE(SNAT的动态方式)、DNAT、REDIRECT(本机端口映射)、LOG

DNS域名解析的全过程

DNS(Domain Name System),域名系统,是互联网上作为域名和IP地址相互映射的一个分布式数据库。DNS能够时用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串,通过域名,最终得到该域名对应IP地址的过程叫做域名解析(或主机名解析)。
下图,详细说明了一个DNS域名解析的全过程。
在这里插入图片描述DNS域名解析的详细过程:
输入www.163.com,电脑会发出一个DNS请求到本地DNS服务器,本地DNS服务器会先查询它的缓存记录,如果缓存中有此记录会直接返回查询结果,如果没有本地DNS服务器会向DNS根服务器进行查询。DNS根服务器没有记录具体的域名和IP的对应关系,而是告诉DNS服务器到域服务器上去继续查询,并给出域服务器的地址。本地DNS服务器继续向域服务器发出请求,比如这个例子中的请求对象是.com域服务器。.com域服务器收到请求后,也不会直接返回域名和IP地址的对应关系,而是告诉本地DNS服务器你的域名解析服务器的地址。最后,本地DNS服务器向域名解析服务器发出请求
,得到域名和IP的对应关系,本地DNS服务器不仅要把IP地址返回给用户电脑,还要把这个对应关系保存在缓存中,以备下次别的用户查询时,可以直接返回结果,加快网络访问。
注意:
配置DNS解析时,TTL(Time to Live)参数的意思。TTL这个参数告诉本地DNS服务器,域名缓存的最长时间。比如阿里云默认是10分钟,也就是本地对域名缓存时间是10分钟,10分钟之后,本地DNS服务器就会删除这条记录,如果再有用户访问这个域名,就重复一遍上述的复杂流程。

CDN基本原理

CDN(Content Delivery Network),内容分发网络。CDN是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。C
引入CDN后用户访问流程:
在这里插入图片描述

DN的关键技术主要有内容存储和分发技术。CDN网络中包含的功能实体包括内容缓存设备、内容交换机、内容路由器、CDN内容管理系统等组成。
内容缓存为CDN网络节点,位于用户接入点,是面向最终用户的内容提供设备,可缓存静态Web内容和流媒体内容,实现内容的边缘传播和存储,以便用户就近访问。
内容交换机处于用户接入集中点,可以均衡单点多个内容缓存设备的负载,并对内容进行缓存负载平衡及访问控制。
内容路由器负责将用户的请求调度到适当的设备上。内容路由通常通过负载均衡系统来实现,动态均衡各个内容缓存站点的载荷分配,为用户的请求选择最佳的访问站点,同时提高网站的可用性。内容路由器可根据多种因素制定路由,包括站点与用户的临近度、内容的可用性、网络负载、设备状况等。负载均衡系统是整个CDN核心。负载均衡的准确性和效率直接决定了整个CDN的效率和性能。
内容管理系统负责整个CDN的管理,是可选部件,作用是进行内容管理,如内容的注入和发布、内容的分发、内容的审核、内容的服务等。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值