admin 管理员组

文章数量: 887021

一、TCP的三次握手?

第一次握手:建立连接。客户端发送连接请求报文段,并将syn(标记位)设置为1,Squence Number(数据包序号)(seq)为x,接下来等待服务端确认,客户端进入SYN_SENT状态(请求连接)。

第二次握手:服务端收到客户端的 SYN 报文段,对 SYN 报文段进行确认,设置 ack(确认号)为 x+1(即seq+1 ; 同时自己还要发送 SYN 请求信息,将 SYN 设置为1, seq为 y。服务端将上述所有信息放到 SYN+ACK 报文段中,一并发送给客户端,此时服务器进入 SYN_RECV状态。

第三次握手:客户端收到服务端的 SYN+ACK(确认符) 报文段;然后将 ACK 设置为 y+1,向服务端发送ACK报文段,这个报文段发送完毕后,客户端和服务端都进入ESTABLISHED(连接成功)状态,完成TCP 的三次握手。

三次握手的本质是确认通信双方收发数据的能力


二、TCP的四次挥手?

第一次挥手:客户端设置seq和 ACK ,向服务器发送一个 FIN(终结)报文段。此时,客户端进入 FIN_WAIT_1 状态,表示客户端没有数据要发送给服务端了。

第二次挥手:服务端收到了客户端发送的 FIN 报文段,向客户端回了一个 ACK 报文段。

第三次挥手:服务端向客户端发送FIN 报文段,请求关闭连接,同时服务端进入 LAST_ACK 状态。

第四次挥手:客户端收到服务端发送的 FIN 报文段后,向服务端发送 ACK 报文段,然后客户端进入 TIME_WAIT 状态。服务端收到客户端的 ACK 报文段以后,就关闭连接。此时,客户端等待 2MSL(指一个片段在网络中最大的存活时间)后依然没有收到回复,则说明服务端已经正常关闭,这样客户端就可以关闭连接了。


三、为什么要三次握手而不是两次?

 谢希仁版《计算机网络》对这个问题进行了讨论。总的来说,三次握手是为了防止当已失效的连接请求报文段突然又传到服务端,造成双方的不一致,导致资源的浪费。

“已失效的连接请求报文段”指的是这样的情况,客户端发出一个SYN报文段,由于阻塞或者其他原因在网络中滞留,以至于客户端认为丢包了(其实并没有丢),于是重新发出一个SYN报文段,假设这一次顺利完成了,那么双方建立连接。这看起来似乎没什么问题,但网络中有一个隐患,就是那个还在网络中传输的SYN报文段,如果这个SYN在连接期间被服务端收到了,那服务端只会无视它,这样就万事大吉了,但如果是在连接释放之后被收到呢?此时服务端认为有人向他发出连接请求,于是响应一个SYNACK回去,如果采用两次握手的话,那么服务器认为此时连接已经建立好了。但是当客户端收到这个SYNACK时,如果他并没有发起连接,那么他不会理睬这个SYNACK,就当没事发生过(如果客户端此时正好发起连接,那其实他也不会理睬这个SYNACK,因为确认号不对啊。)。那问题就大了,这时候服务器以为连接好了,向客户端发送数据,而客户端处于CLOSED状态,会丢弃这些包,这样就很浪费了。并且还有一个尴尬的问题,就是这个时候当客户端打算发起连接时,服务端又不理睬了,在这里尬这,他们就别想互发数据了。当然这些问题似乎不是不可解决的,当客户端发现服务端老是向自己发数据,而自己总是丢弃,可能会向服务端发一个RST(报文段的RST标记号为1),强制服务端关闭连接。但资源总归是浪费了一会了。而用三次握手就不会出现这样的问题。


四、为什么TCP断开连接需要四次?

  TCP协议是一种面向连接的、可靠的、基于字节流的运输层通信协议。TCP是全双工模式,通信的双方建立两条条通道,两条通道同时工作,同时发消息,这就意味着,当主机1发出FIN报文时告诉主机2,我要关闭输入通道了,这个时候主机1还是可以接受来自主机2的数据;于是主机2返回ACK报文,告诉主机1说:好的你关吧,我也要关了,但是主机2还是可以发送数据到主机1的;随后主机2也发送了FIN报文,告诉主机1说:我要关闭输入通道了,主机1就会告诉它:好的,你关把,我也要关了。这个时候就表示主机2也没有数据要发送了,就会告诉主机1,我也没有数据要发送了,之后彼此就会愉快的中断这次TCP连接。如果要正确的理解四次分手的原理,就需要了解四次分手过程中的状态变化。


五、http与https的区别?

HTTPS和HTTP的区别主要如下:

1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。

2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。

3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。


六、https为了保证数据传输的安全,使用的是对称加密还是非对称加密呢?

答:采用对称加密和非对称加密相结合的方式。

详情参考另一篇博文:点我


七、Tcp/ip协议族的分层以及各层常见的一些协议

OSI七层网络模型TCP/IP四层概念模型每层对应网络协议
应用层应用层 HTTP、TFTP、FTP、 NFS、WAIS、SMTP
表示层Telnet, Rlogin, SNMP, Gopher
会话层SMTP, DNS
传输层传输层 TCP, UDP
网络层网络层IP, ICMP, ARP, RARP, AKP, UUCP
数据链路层数据链路层 FDDI, Ethernet, Arpanet, PDN, SLIP, PPP
物理层IEEE 802.1A, IEEE 802.2到IEEE 802.11


八、一些常见的端口以及对应的服务

FTP:控制端口21 数据传端口20
SSH:22
telne(远程登录):23
smtp(简单邮件传输协议):25
whois服务端口:43
DNS(域名解析):53
http(超文本传输协议):80
pop3(邮局协议第三版):110
https(安全超文本传输协议):443
文件共享端口:445 (永恒之蓝病毒)
SQL Server对外提供服务端口:1433
Oracle(甲骨文数据库):1521
mysql(数据库):3306
远程桌面:3389
Redis (数据库):6379
weblogic:7001
腾讯qq服务器开放端口:8000
Tomcat、JBoss:8080(可能存在Tomcat管理页面弱口令Getshell,JBoss未授权访问漏洞)
Webmin-Web控制面板:10000(可能存在弱口令)Webmin是目前功能最强大的基于Web的Unix系统管理工具

九、对称加密和非对称加密的概念以及特点

对称加密:只有一把密钥,可以加密,也可以解密。
这种方式存在的最大问题就是密钥发送问题,即如何安全地将密钥发给对方;

非对称加密:甲方生成一对儿密钥,并将其中的一把作为公钥对外传播,乙方在收到该公钥之后利用该公钥加密数据发送给甲方,甲方再利用自己的私钥对该加密数据进行解密这就是所谓的非对称加密。

其实任何一方都可以生成一对儿密钥,都可以把其中一个钥匙作为公钥,只不过私钥必须保存在自己这里,不能外泄。(公钥加密私钥解密。)

常见的对称加密的算法有:DES、3DES、AES
DES:数据加密标准,速度较快,适用于加密大量数据的场合。
3DES:是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高。
AES:高级加密标准,是下一代的加密算法标准,速度快,安全级别高。

常见的非对称加密算法有:RSA、DSA(数字签名用)
RSA:由 RSA 公司发明,是一个支持变长密钥的公共密钥算法,需要加密的文件块的长度也是可变的。
DSA:数字签名算法,是R一种标准的 DSS(数字签名标准)。

(1)对称加密算法的加密和解密的过程是非常快的,效率非常高,但是安全性不高。
(2)非对称加密算法的加密和解密是非常缓慢的,效率不比对称加密算法高,但是安全性极高。


十、路由器、交换机、集线器

路由器:路由器是连接两个或多个网络的硬件设备,在网络间起网关的作用,是读取每一个数据包中的地址然后决定如何传送的专用智能性的网络设备。(隔离广播域)

主要功能:
第一,网络互连,路由器支持各种局域网和广域网接口,主要用于互连局域网和广域网,实现不同网络互相通信;
第二,数据处理,提供包括分组过滤、分组转发、优先级、复用、加密、压缩和防火墙等功能;
第三,网络管理,路由器提供包括配置管理、性能管理、容错管理和流量控制等功能。

交换机:交换机工作于数据链路层,用来隔离冲突域,连接的所有设备同属于一个广播域(子网),负责子网内部通信。

工作原理:交换机在接收到数据帧以后,首先会记录数据帧中的源MAC地址和对应的接口到MAC表中,接着会检查自己的MAC表中是否有数据帧中目标MAC地址的信息,如果有则会根据MAC表中记录的对应接口将数据帧发送出去(也就是单播),如果没有,则会将该数据帧从非接受接口发送出去(也就是广播)。

主要功能:

  1. 地址学习
    有些地方也叫做基于源MAC地址学习,这个功能主要就是学习和存储MAC地址。

  2. 帧的转发/过滤
    数据帧的转发主要是交换机能够根据MAC地址表来转发数据,过滤则是对一些受限制的数据进行阻止或丢弃。

  3. 环路避免
    由于交换机的某些特性会带来一些问题,比如形成环路,因此为了保证网络上数据的正确传输以及网络的稳定要采取一些措施来避免这些问题,主要是通过STP来实现。

集线器:集线器的英文称为“Hub”。“Hub”是“中心”的意思,集线器的主要功能是对接收到的信号进行再生整形放大,以扩大网络的传输距离(类似于给飞机空中加油),同时把所有节点集中在以它为中心的节点上。它工作于OSI(开放系统互联参考模型)参考模型第一层,即“物理层”。集线器与网卡、网线等传输介质一样,属于局域网中的基础设备,采用CSMA/CD(即带冲突检测的载波监听多路访问技术)介质访问控制机制。集线器每个接口简单的收发比特,收到1就转发1,收到0就转发0,不进行碰撞检测。

工作特点:集线器是纯硬件的网络底层设备,它发送数据时没有针对性,均采用广播的形式发送。

不同点:
1、工作层次不同

1、集线器工作在物理层
2、交换机工作在数据链路层
3、路由器工作在网络层

2、转发数据的方式不同

1、集线器均采用广播
2、交换机根据mac地址表转发
3、路由器转发的工作原理与交换机类似,不过具体操作上有区别,路由器是基于IP设计的,所以它会根据数据包的IP地址,在路由表中查询进行转发。

3、传输模式不同

1、集线器采用半双工模式
2、交换机采用半双工或者全双工模式


十一、Get与Post的区别

Get与Post是两种HTTP协议两种常用的请求方式,区别:

1、从功能上讲,Get一般是用来从服务器上获取资源,Post一般用来更新服务器上的资源。
Get不会改变服务器上的资源,Post会对服务器资源进行改变。

2、从请求参数上讲,Get会把请求的数据附在URL之后,Post请求会把请求的数据则放置在HTTP请求报文的请求体中。

3、Post安全性相对高一些(比如登录)
Get的请求会小一些(URL有长度限制),Post没有限制。


十二、http、sesion、cookie之间的联系

点我查看


十三、交换机和路由器的端口镜像

端口镜像(port Mirroring):
通过在交换机或路由器上,将一个或多个源端口的数据流量转发到某一个指定端口来实现对网络的监听,指定端口称之为“镜像端口”或“目的端口”,在不严重影响源端口正常吞吐流量的情况下,可以通过镜像端口对网络的流量进行监控分析。在企业中用镜像功能,可以很好地对企业内部的网络数据进行监控管理,在网络出故障的时候,可以快速地定位故障。

目的:为了方便对一个或多个网络接口的流量进行分析(如IDS产品、网络分析仪等),可以通过配置交换机或路由器来把一个或多个端口(VLAN)的数据转发到某一个端口,即端口镜像,来实现对网络的监听。端口镜像功能是对网络流量监控的一个有效的安全手段,对监控流量的分析可以进行安全性的检查,同时也能及时地在网络发生故障时进行准确的定位。

功能:镜像的功能简单地说就是将被监控流量镜像到监控端口,以便对被监控流量进行故障定位、流量分析、流量备份等,监控端口一般直接与监控主机等相连。

根据镜像作用的端口模式来划分,端口镜像分为以下三种类型:

  • 入口镜像:只对从该端口进入的流量进行镜像。

  • 出口镜像:只对该端口的发出的流量进行镜像。

  • 双向镜像:支持对该端口收到和发出的双向流量进行镜像。

    交换机把某一个端口接收或发送的数据帧完全相同的复制给另一个端口;其中被复制的端口称为镜像源端口,复制的端口称为镜像目的端口。
    

通过交换机镜像引流的这个功能来实现的IDS、IPS的旁路部署


十四、mac地址表以及ARP缓存表

一、MAC地址表详解

  说到MAC地址表,就不得不说一下交换机的工作原理了,因为交换机是根据MAC地址表转发数据帧的。在交换机中有一张记录着局域网主机MAC地址与交换机接口的对应关系的表,交换机就是根据这张表负责将数据帧传输到指定的主机上的。

交换机的工作原理

1)主机A会将一个源MAC地址为自己,目标MAC地址为主机B的数据帧发送给交换机。

2)交换机收到此数据帧后,首先将数据帧中的源MAC地址和对应的接口(接口为f 0/1) 记录到MAC地址表中。

3)然后交换机会检查自己的MAC地址表中是否有数据帧中的目标MAC地址的信息,如果有,则从MAC地址表中记录的接口发送出去,如果没有,则会将此数据帧从非接收接口的所有接口发送出去(也就是除了f 0/1接口)。

4)这时,局域网的所有主机都会收到此数据帧,但是只有主机B收到此数据帧时会响应这个广播,并回应一个数据帧,此数据帧中包括主机B的MAC地址。

5)当交换机收到主机B回应的数据帧后,也会记录数据帧中的源MAC地址(也就是主机B的MAC地址),这时,再当主机A和主机B通信时,交换机根据MAC地址表中的记录,实现单播了。

当局域网存在多个交换机互联的时候,交换机的MAC地址表是怎么记录的呢?

1)主机A将一个源MAC地址为自己,目标MAC地址主机C的数据帧发送给交换机。

2)交换机1收到此数据帧后,会学习源MAC地址,并检查MAC地址表,发现没有目标MAC地址的记录,则会将数据帧广播出去,主机B和交换机2都会收到此数据帧。

3)交换机2收到此数据帧后也会将数据帧中的源MAC地址和对应的接口记录到MAC地址表中,并检查自己的MAC地址表,发现没有目标MAC地址的记录,则会广播此数据帧。

4)主机C收到数据帧后,会响应这个数据帧,并回复一个源MAC地址为自己的数据帧,这时交换机1和交换机1都会将主机C的MAC地址记录到自己的MAC地址表中,并且以单播的形式将此数据帧发送给主机A。

5)这时,主机A和主机C通信就是一单播的形式传输数据帧了,主机B和主机C通信如上述过程一样,因此交换机2的MAC地址表中记录着主机A和主机B的MAC地址都对应接口f 0/1。

总结:根据以上得出,交换机具有动态学习源MAC地址的功能,并且交换机的一个接口可以对应多个MAC地址,但是一个MAC地址只能对应一个接口。

注意:交换机动态学习的MAC地址默认只有300S的有效期,如果300S内记录的MAC地址没有通信,则会删除此记录。


二、ARP缓存表详解

  上面我们讲解了交换机的工作原理,知道交换机是通过MAC地址通信的,但是我们是如何获得目标主机的MAC地址呢?这时我们就需要使用ARP协议了,在每台主机中都有一张ARP表,它记录着主机的IP地址和MAC地址的对应关系。

ARP协议:ARP协议是工作在网络层的协议,它负责将IP地址解析为MAC地址。

ARP的工作原理。

1)如果主机A想发送数据给主机B,主机A首先会检查自己的ARP缓存表,查看是否有主机B的IP地址和MAC地址的对应关系,如果有,则会将主机B的MAC地址作为源MAC地址封装到数据帧中。如果没有,主机A则会发送一个ARP请求信息,请求的目标IP地址是主机B的IP地址,目标MAC地址是MAC地址的广播帧(即FF-FF-FF-FF-FF-FF),源IP地址和MAC地址是主机A的IP地址和MAC地址。

2)当交换机接受到此数据帧之后,发现此数据帧是广播帧,因此,会将此数据帧从非接收的所有接口发送出去。

3)当主机B接受到此数据帧后,会校对IP地址是否是自己的,并将主机A的IP地址和MAC地址的对应关系记录到自己的ARP缓存表中,同时会发送一个ARP应答,其中包括自己的MAC地址。

4)主机A在收到这个回应的数据帧之后,在自己的ARP缓存表中记录主机B的IP地址和MAC地址的对应关系。而此时交换机已经学习到了主机A和主机B的MAC地址了。

十五、ARP欺骗

假设在一个LAN里,只有三台主机A、B、C,且C是攻击者。

1、 攻击者聆听局域网上的MAC地址。它只要收到两台主机泛洪的ARP 请求包,就可以进行欺骗活动。
主机A、B都泛洪了ARP请求包,攻击者现在有了两台主机的IP、MAC地址,开始攻击。
2、 攻击者发送一个ARP回复包给主机B,把此包protocol header里的源IP设为A的IP地址,源mac设为攻击者自己的MAC地址。
3、主机B收到ARP回复包后,更新它的ARP表,把主机A的MAC地址(IP_A, MAC_A)改为(IP_A, MAC_C)。
4、当主机B要发送数据包给主机A时,它根据ARP表来封装数据包的Link报头,把目的MAC地址设为MAC_C,而非MAC_A。
5、 当交换机收到B发送给A的数据包时,根据此包的目的MAC地址(MAC_C)而把数据包转发给攻击者C。
6、 攻击者收到数据包后,可以把它存起来后再发送给A,达到偷听效果。攻击者也可以篡改数据后才发送数据包给A,造成伤害。


十六、 A、B、C三类的私有IP地址范围

对于10开头:是A类地址。子网掩码:255.0.0.0 10.0.0.0 - 10.255.255.255

对于172.16开头:来说是B类地址。子网掩码:255.255.0.0 172.16.0.0 - 172.16.255.255

对于192.168开头:来说是C类地址。子网掩码:255.255.255.0 192.168.0.0 - 192.168.255.255

私有地址只能在局域网进行使用,不能放到公网中进行通信,如果要访问公网中的某一个网址,那么就进行NAT转化,将私有地址一级一级的转化到公网的地址。

对于每一个类的私有地址,最后都会转化为相对应的同一类的公网IP地址。

举例:私有IP地址是:10.168.123.56。转化到可以访问外网的时候,一定是10开头的公网地址。


十七、DDos攻击

  分布式拒绝服务(DDoS:Distributed Denial of Service)攻击指借助于客户/服务器技术,将多个计算机联合起来作为攻击平台,对一个或多个目标发动DDoS攻击,从而成倍地提高拒绝服务攻击的威力。通常该攻击方式利用目标系统网络服务功能缺陷或者直接消耗其系统资源,使得该目标系统无法提供正常的服务。

  分布式拒绝服务攻击,将正常请求放大了若干倍,通过若干网络节点同时发起攻击,以达成规模响应。这些网络节点往往是黑客们所控制的“肉鸡”,数量达到一定规模后,就形成了一个“僵尸网络”。大型的僵尸网络,甚至达到了数万、数十万台的规模。如此规模的僵尸网络发起的DDOS攻击,几乎是不可阻挡的。

栗子:
  比如一个停车场总共有100个车位,当100个车位都停满车后,再有车想要停进来,就必须等已有的车先出去才行。如果已有的车一直不出去,那么停车场的入口就会排起长队,停车场的负荷过载,不能正常工作了,这种情况就是“拒绝服务”。我们的系统就好比是停车场,系统中的资源就是车位。资源是有限的,而服务必须一直提供下去。如果资源都已经被占用了,那么服务也将过载,导致系统停止新的响应。


十八、SYN FLOOD攻击

  SYN flood在攻击时,首先伪造大量的源IP地址,分别向服务器端发送大量的SYN包,此时服务器端会返回SYN/ACK包,因为源地址时伪造的,所以伪造的IP并不会应答,服务器端没有收到伪造IP的回应,会重试3-5次并且等待一个SYN Time(一般为30秒至2分钟),如果超时则丢弃这个连接。攻击者大量发送这种伪造源地址的SYN请求,服务端将会消耗非常多的资源(CPU和内存)来处理这种半连接,同时还要不断地对这些IP进行SYN+ACK重试,最后的结果是服务器无暇理睬正常的连接请求,导致拒绝服务。


十九、关于日志的一些问题

1、linux下的日志
  Linux系统中的日志子系统对于系统安全来说非常重要,它记录了系统每天发生的各种各样的事情,包括那些用户曾经或者正在使用系统,可以通过日志来检查错误发生的原因,更重要的是在系统受到黑客攻击后,日志可以记录下攻击者留下的痕迹,通过查看这些痕迹,系统管理员可以发现黑客攻击的某些手段以及特点,从而能够进行处理工作,为抵御下一次攻击做好准备。

在Linux系统中,有三类主要的日志子系统:

  • 连接时间日志: 由多个程序执行,把记录写入到/var/log/wtmp和/var/run/utmp中,utmp、wtmp日志文件是多数Linux日志子系统的关键,它保存了用户登录进入和退出的记录。有关当前登录用户的信息记录在文件utmp中; 登录进入和退出记录在文件wtmp中; 数据交换、关机以及重启的机器信息也都记录在wtmp文件中。所有的记录都包含时间戳,login等程序会更新wtmp和utmp文件,使系统管理员能够跟踪谁在何时登录到系统。

  • 进程统计: 由系统内核执行,当一个进程终止时,为每个进程往进程统计文件(pacct或acct)中写一个记录。进程统计的目的是为系统中的基本服务提供命令使用统计。

  • 错误日志: 由syslogd(8)守护程序执行,各种系统守护进程、用户程序和内核通过syslogd(3)守护程序向文件 /var/log/messages 报告值得注意的事件,其中/var/log/messages 日志是核心系统日志文件。它包含了系统启动时的引导消息,以及系统运行时的其他状态消息。IO 错误、网络错误和其他系统错误都会记录到这个文件中。其他信息,比如某个人的身份切换为 root,也在这里列出。如果服务正在运行,比如 DHCP 服务器,您可以在 messages 文件中观察它的活动。通常,/var/log/messages 是您在做故障诊断时首先要查看的文件。
    -

2、windows下的日志
  
  Windows操作系统在其运行的生命周期中会记录其大量的日志信息,这些日志信息包括:Windows事件日志(Event Log),Windows服务器系统的IIS日志,FTP日志,Exchange Server邮件服务,MS SQL Server数据库日志等。处理应急事件时,客户提出需要为其提供溯源,这些日志信息在取证和溯源中扮演着重要的角色。

windows下查看日志的方法:
(1)右键我的电脑——管理———事件查看器————windows日志

(2)到路径:C:\Windows\System32\winevt\Logs
必看日志:Security.evtx、System.evtx、Application.evtx

从上可以看出系统日志被分为了两大类:Windows日志和应用程序和服务日志,系统内置的三个核心日志文件(System,Security和Application)默认大小均为20480KB(20MB),记录事件数据超过20MB时,默认系统将优先覆盖过期的日志记录。其它应用程序及服务日志默认最大为1024KB,超过最大限制也优先覆盖过期的日志记录。


二十、FTP的主被动模式

  1. PORT(主动模式)
     在主动模式下,FTP客户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,发送FTP用户名和密码,然后开放N+1号端口进行监听,并向服务器发出PORT N+1命令,告诉服务端客户端采用主动模式并开放了端口。FTP服务器接收到PORT命令后,会用其本地的FTP数据端口(通常是20)来连接客户端指定的端口N+1,进行数据传输。

(2) PASV(被动模式)

  在被动模式下,FTP客户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,发送用户名和密码进行登陆,同时会开启N+1端口。然后向服务器发送PASV命令,通知服务器自己处于被动模式。服务器收到命令后,会开放一个大于1024的端口P(端口P的范围是可以设置的,后面会说到这个是很重要的)进行监听,然后用PORT P命令通知客户端,自己的数据端口是P。客户端收到命令后,会通过N+1号端口连接服务器的端口P,然后在两个端口之间进行数据传输。

  

本文标签: 计算机网络 方向 常见