1.请简述TCP\UDP的区别
TCP和UDP是OSI模型中的运输层中的协议。
- TCP面向连接,UDP不面向连接,即发送数据前不需要建立连接。
- TCP提供可靠的服务(数据传输),UDP无法保证
- TCP面向字节流,UDP面向报文
- TCP数据传输慢,UDP数据传输快
2. 在浏览器中输入www.baidu.com后执行的全部过程
- 应用层:客户端浏览器通过DNS解析到www.baidu.com的IP地址220.181.27.48,通过这个IP地址找到客户端到服务器的路径。客户端浏览器发起一个HTTP会话到220.161.27.48,然后通过TCP进行封装数据包,输入到网络层。
DNS解析IP:
HTTP访问服务器:
- 传输层:在客户端的传输层,把HTTP会话请求分成报文段,添加源和目的端口,如服务器使用80端口监听客户端的请求,客户端由系统随机选择一个端口如5000,与服务器进行交换,服务器把相应的请求(HTTP响应)返回给客户端的5000端口,然后使用IP层的IP地址查找目的端。
- 客户端的网络层不用关心应用层或传输层的东西,主要做的是通过查找路由表如何到达服务器,期间可能经过多个路由器,这些都是由路由器来完成的工作,通过查找路由表决定通过哪个路径到达服务器,其中用到路由选择协议
路由选择协议
内部路由选择协议
1)RIP
基于距离向量的路由选择协议。应用层协议,使用UDP(端口号520)传送数据。
交换所有信息,仅相邻,固定时间间隔,若超过15跳距离不可达。
2)OSPF
链路状态协议。采用迪杰斯特拉算法。利用洪泛法。规模大时好用。
边界网关协议BGP
要有BGP发言人 ,通过TCP传送,能够到达,且比较好的路径
协议 RIP OSPF BGP 类型 内部 内部 外部 路由算法 距离-向量 链路状态 路径-向量 传递协议 UDP IP TCP 路径选择 跳数最少 代价最低 较好非最佳 交换结点 相邻的路由器 所有 相邻的路由器 交换内容 整个路由表 相邻的所有器的链路状态信息 首次,整个路由表
非首次则有变化的部分
- 客户端的链路层,包通过链路层发送到路由器,通过邻居协议查找给定IP地址的MAC地址,然后发送ARP请求查找目的地址。
总结:所用到的协议。
应用层。HTTP:www访问协议;DNS:域名解析协议。
传输层。TCP:HTTP提供可靠的数据传输。UDP:DNS使用UDP传输。
网络层。IP:IP包传输和路由选择;ICMP:提供网络传输中的差错检测;ARP:将本机的默认网关IP地址映射成物理MAC地址。
3.为什么TCP连接要建立三次连接?
第一步:客户机的TCP向服务器的TCP发送连接请求报文段。
SYN=1,seq=x
第二步:服务器的TCP收到后确认连接。
SYN=1,ACK=1,ack=x+1,seq=y
第三步:向服务器给出确认。
ACK=1,ack=y+1,seq=x+1
为了防止失效的连接请求又传送到主机,因而产生错误。
如果使用的是两次握手建立连接,客户端发送第一个请求连接并且没有丢失,但在网络中滞留时间较长,由于客户端迟迟收不到确认报文,重发后两次握手正常传输数据,然后关闭连接,这时那之前滞留的请求连接到达了服务器,两次握手的机制将会让客户端和服务器端再次建立连接,这将导致不必要的错误和资源的浪费。
服务关闭后,之前滞留的发了过去,两次的话直接连接,造成误会。 若是三次握手,客户机已经关闭,不再会发确认报文,服务器收不到确认,就知道客户端并没有请求连接。
4.为什么要4次挥手?
- FIN=1,seq=u
- ACK=1,ack=u+1,seq=v(服务器端发送还未发完的数据)
- FIN=1,ACK=1,ack=u+1,seq=w;
- ACK=1,ack=w+1,seq=u+1
服务器端要完全发完才会回复FIN=1。
四次挥手中TIME-WAIT为什么设置成2MSL?
- TIME_WAIT至少需要持续2MSL时长,这2个MSL中的第一个MSL是为了等自己发出去的最后一个ACK从网络中消失
- 第二MSL是为了等在对端收到ACK之前的一刹那可能重传的FIN报文从网络中消失。
去向ACK消息最大存活时间(MSL) + 来向FIN消息的最大存活时间(MSL)。为何一定要等2MSL?
如果不等,释放的端口可能会重连刚断开的服务器端口,这样依然存活在网络里的老的TCP报文可能与新TCP连接报文冲突,造成数据冲突,为避免此种情况,需要耐心等待网络老的TCP连接的活跃报文全部死翘翘,2MSL时间可以满足这个需求。
5.http和https的区别,http的三个特性
HTTP协议传输的数据都是未加密的,使用HTTP协议传输隐私信息非常不安全,为保证加密传输,设计了SSL协议用于对HTTP协议传输的数据进行加密,从而诞生了HTTPS。简单来说,HTTPS协议是由HTTP+SSL协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全。
主要区别如下:
- https协议需要到ca申请证书,需要一定费用。
- http是超文本信息传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
- http和https使用的是完全不同的连接方式,http端口80,https端口是443。
- http的连接很简单,是无状态的;https协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
http的五大特点:
- 支持客户/服务器模式。
- 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。
- 灵活:HTTP允许传输任意类型的数据对象。
- 无连接:每次只处理一个请求。服务器处理完并收到客户的应答后,即断开连接。节省传输时间。
- 无状态:无状态是指没有记忆能力,数据量小应答较快。
6.对称加密机制和非对称加密机制
对称密钥加密
指加密和解密使用同一个密钥的方式。
非对称加密加密
A(客户)想给B(服务器)发送一段文字,但是不想让别人看到,因此想使用非对称加密方法来加密这段文字,当然,B需要有一对公钥和私钥:
① B将他的公钥发送给A
② A用B给他的公钥加密这段文字,然后传给B
③ B用他的私钥解密A发过来的消息,这里要强调的是,只要B的私钥不泄露,这封信就是安全的,即使落在别人手里,也无法解密。
通过这几步,B就能成功收到A发送的信息,同时又达到了保密的目的。解密
如果B想给A回信息,就简单的多了:
① B将要回复的信息通过自己的私钥加密,然后传送给A
② A用B之前给他的公钥解出这份信息。数字签名原理
“数字签名”是指可以添加到文件的电子安全标记。使用它可以验证文件的发行者以及帮助验证文件自被数字签名后是否发生更改。
B给A回信时,采用了数字签名的方式
1、B先用hash函数,生成信件的摘要(digest)
2、B使用自己的私钥,对这个摘要加密,这样就生成了数字签名(signature)
3、B将这个签名附在要回复的信息后面,一起发给A
4、A收到B的信息后,取下数字签名,并通过B的公钥解密,得到信件的摘要信息
5、A在对B发送的信息本身使用B指定的hash函数,将得到的结果同上一步解密得到的摘要进行对比,如果两者一致,就说明B发过来的信息未被修改过。7.SYN、FIN、ACK
同步位SYN
同步SYN=1表示这是一个连接请求或连接接受报文。
终止位FIN
用来释放一个连接。当FIN=1时,表明此报文段的发送方的数据已发送完毕,并要求释放传输连接。
确认位ACK
连接建立后所有传送的报文段都必须把ACK置一。
确认号ack
期望收到对方下一个报文端中的第一个数据字节的序号。
8.TCP协议如何保证传输可靠性?
- 校验和
如果接收方比对校验和与发送方不一致,那么数据一定传输有误。但是如果接收方比对校验和与发送方一致,数据不一定传输成功。
- 确认应答与序列号
TCP传输时将每个字节的数据都进行了编号,这就是序列号。
- 超时重传/冗余确认
超时重传
首先,发送方没有介绍到响应的ACK报文原因可能有两点:
- 数据在传输过程中由于网络原因等直接全体丢包,接收方根本没有接收到。
- 接收方接收到了响应的数据,但是发送的ACK报文响应却由于网络原因丢包了。
如果是第一个原因,接收方收到二次重发的数据后,便进行ACK应答。
如果是第二个原因,接收方发现接收的数据已存在,那么直接丢弃,仍旧发送ACK应答。
冗余确认
每当比期望序号大的失序报文段到达时,发送一个冗余ACK,指明下一个期待字节的序号。
发送方已发送1,2,3,4,5报文段
接收方收到1,返回给1的确认(确认号为2的第一个字节)
接收方收到3,仍返回给1的确认(确认号为2的第一个字节)
接收方收到4,仍返回给1的确认(确认号为2的第一个字节)
接收方收到5,仍返回给1的确认(确认号为2的第一个字节)发送方收到3个对于报文段1的冗余ACK——认为2报文段丢失,重传2号报文段(快速重传)
- 连接管理
三次握手和四次挥手
- 流量控制
接收方根据自己接收缓存的大小,动态地调整发送方的发送窗口大小。
- 拥塞控制
- 慢开始和拥塞避免
先设置门限,指数增加,到门限后后加法增大,若网络拥塞,则门限乘法减小,又从0慢开始。
- 快重传和快恢复
先设置门限,指数增加,到门限后加法增大,当发送方连续收到3个冗余ACK,乘法减小,直接从新门限执行加法增大,重复上述过程。
9.DDOS攻击和预防的策略
DDOS攻击又称“分布式攻击”,它使用非法数据淹没网络链路,这些数据可能淹没Internet链路,导致合法数据流被丢弃。
DDOS的攻击方式/类型有哪些?
1、SYN Flood攻击
SYN Flood攻击是当前网络上最为常见的DDoS攻击,它利用了TCP协议实现上的一个缺陷。通过向网络服务所在端口发送大量的伪造源地址的攻击报文,就可能造成目标服务器中的半开连接队列被占满,从而阻止其他合法用户进行访问。
2、UDP Flood攻击
UDP Flood是日渐猖厥的流量型DDoS攻击,原理也很简单。常见的情况是利用大量UDP小包冲击DNS服务器或Radius认证服务器、流媒体视频服务器。由于UDP协议是一种无连接的服务,在UDP Flood攻击中,攻击者可发送大量伪造源IP地址的小UDP包。
3、ICMP Flood攻击
ICMP Flood攻击属于流量型的攻击方式,是利用大的流量给服务器带来较大的负载,影响服务器的正常服务。由于目前很多防火墙直接过滤ICMP报文。因此ICMP Flood出现的频度较低。
4、Connection Flood攻击
Connection Flood是典型的利用小流量冲击大带宽网络服务的攻击方式,这种攻击的原理是利用真实的IP地址向服务器发起大量的连接。并且建立连接之后很长时间不释放,占用服务器的资源,造成服务器上残余连接(WAIT状态)过多,效率降低,甚至资源耗尽,无法响应其他客户所发起的链接。
5、HTTP Get攻击
这种攻击主要是针对存在ASP、JSP、PHP、CGI等脚本程序,特征是和服务器建立正常的TCP连接,并不断的向脚本程序提交查询、列表等大量耗费数据库资源的调用。这种攻击的特点是可以绕过普通的防火墙防护,可通过Proxy代理实施攻击,缺点是攻击静态页面的网站效果不佳,会暴露攻击者的lP地址。
6、UDP DNS Query Flood攻击
UDP DNS Query Flood攻击采用的方法是向被攻击的服务器发送大量的域名解析请求,通常请求解析的域名是随机生成或者是网络世界上根本不存在的域名。域名解析的过程给服务器带来了很大的负载,每秒钟域名解析请求超过一定的数量就会造成DNS服务器解析域名超时。
预防策略:
- 过滤不必要的服务和端口
- 异常流量的清洗过滤
- 分布式集群防御
- 高防智能DNS解析
10.get和post的区别
GET:它用来向服务器请求资源,所以没有副作用,而且它是幂等的,可以被缓存;
POST:用来请求服务器修改数据,所以有副作用,它是非幂等的,不能被缓存。
11.OSI七层协议
OSI层 功能 TCP/IP协议 应用层 文件传输,电子邮件,
文件服务,虚拟终端HTTP,TFTP,FTP,
SMTP,DNS,DHCP表示层 数据格式化,代码转换,
数据加密没有协议 会话层 解除或建立与其他结点的联系 没有协议 传输层 提供端对端的接口 TCP,UDP 网络层 为数据包选择路由 IP,ICMP,IGMP,OSPF,BGP,RIP 数据链路层 传输有地址的帧,
错误检测功能PPP,ARP,RARP,HDLC 物理层 以二进制数据形式在
在物理媒体上传输数据ISO2110,IEEEE802,
IEEE802.212.ARP协议的工作原理
地址解析协议(Address Resolution Protocol),其基本功能为透过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。它是IPv4中网络层必不可少的协议,不过在IPv6中已不再适用,并被邻居发现协议(NDP)所替代。
假设主机A和B在同一个网段,主机A要向主机B发送信息,具体的地址解析过程如下:
(1) 主机A首先查看自己的ARP表,确定其中是否包含有主机B对应的ARP表项。如果找到了对应的MAC地址,则主机A直接利用ARP表中的MAC地址,对IP数据包进行帧封装,并将数据包发送给主机B。(2) 如果主机A在ARP表中找不到对应的MAC地址,则将缓存该数据报文,然后以广播方式发送一个ARP请求报文。ARP请求报文中的发送端IP地址和发送端MAC地址为主机A的IP地址和MAC地址,目标IP地址和目标MAC地址为主机B的IP地址和全0的MAC地址。由于ARP请求报文以广播方式发送,该网段上的所有主机都可以接收到该请求,但只有被请求的主机(即主机B)会对该请求进行处理。
(3) 主机B比较自己的IP地址和ARP请求报文中的目标IP地址,当两者相同时进行如下处理:将ARP请求报文中的发送端(即主机A)的IP地址和MAC地址存入自己的ARP表中。之后以单播方式发送ARP响应报文给主机A,其中包含了自己的MAC地址。
(4) 主机A收到ARP响应报文后,将主机B的MAC地址加入到自己的ARP表中以用于后续报文的转发,同时将IP数据包进行封装后发送出去。
13.RARP协议的工作原理
反向地址转换协议,网络层协议,RARP与ARP工作方式相反。 RARP使只知道自己硬件地址的主机能够知道其IP地址。RARP发出要反向解释的物理地址并希望返回其IP地址,应答包括能够提供所需信息的RARP服务器发出的IP地址。
(1)网络上的每台设备都会有一个独一无二的硬件地址,通常是由设备厂商分配的MAC地址。主机从网卡上读取MAC地址,然后在网络上发送一个RARP请求的广播数据包,请求RARP服务器回复该主机的IP地址。
(2)RARP服务器收到了RARP请求数据包,为其分配IP地址,并将RARP回应发送给主机。
(3)PC1收到RARP回应后,就使用得到的IP地址进行通讯。
14.DNS域名系统的工作原理
DNS是应用层协议,事实上他是为其他应用层协议工作的,包括不限于HTTP和SMTP以及FTP,用于将用户提供的主机名解析为IP地址。
具体过程如下:
①用户主机上运行着DNS的客户端,就是我们的PC机或者手机客户端运行着DNS客户端了。
②浏览器将接收到的url中抽取出域名字段,就是访问的主机名,比如http://www.baidu.com/,并将这个主机名传送给DNS应用的客户端。
③DNS客户机端向DNS服务器端发送一份查询报文,报文中包含着要访问的主机名字段(中间包括一些列缓存查询以及分布式DNS集群的工作)。
④该DNS客户机最终会收到一份回答报文,其中包含有该主机名对应的IP地址。
⑤一旦该浏览器收到来自DNS的IP地址,就可以向该IP地址定位的HTTP服务器发起TCP连接。15.常见的状态码和原因短语
1xx:请求处理中,请求已被处理,正在处理
2xx:请求成功,请求被成功处理
200 OK
3xx:重定向,要完成请求必须进一步处理
301:永久性转移
302:短暂性转移
304:已缓存
4xx:客户端错误,请求不合法
400:Bad Request,请求有语法问题
403:拒绝请求
404:客户端访问的页面不存在、
5xx:服务器端错误,服务器不能处理合法请求
500:服务器内部错误
503:服务器不可用稍等
16.交换机和路由器的区别
工作层次不同:
交换机主要工作在数据链路层,路由器工作在网络层
转发依据不同:
交换机转发所依据的对象是:MAC地址。
路由转发所依据的对象是:IP地址。
主要功能不同:
交换机主要用于组建局域网,而路由主要功能是将交换机组好的局域网相互连接起来。
- 集线器既不能分割冲突域也不能分割广播域,它就像一根接口比较多的网线一样。(物理层)
- 交换机只能分割冲突域不能分割广播域。交换机连接的网段仍属于同一个广播域,广播数据包会在交换机连接的所有网段上传播,在某些情况会导致通信拥堵和安全漏洞。(数据链路层)
- 路由器既分割了冲突域又分割了广播域。连接到路由器上的网段会被分配成不同的广播域,广播数据不会穿过路由器。(网络层)
17.ICMP协议的功能,报文类型
ICMP是因特网控制报文协议的简称,它与IP协议同属于OSI结构的第三层网络层,用于传送有关通信问题的消息。例如,数据报不能到达目标站,路由器没有足够的缓存空间,或路由器向发送主机提供最短路径信息等。ICMP报文封装在IP数据报中传送,因而不能保证能可靠地提交。ICMP有11种之多。报文中地类型字段表示ICMP报文地类型。
(1)目标不可达(类型3)。如果路由器判断出不能把IP数据报送达目标主机,则向源主机返回这种报文;另一种情况是目标主机找不到有关的用户协议或上层服务访问点,也会返回这种报文。出现这种情况可能是IP头中的字段不正确;或是数据报中说明的源路由无效;也可能是路由器必须把数据报分段,但IP头中的D标志已置位。
(2)超时(类型11)。路由器发现IP数据报的生存期已超时,或者目标主机在一定时间内无法完成重新装配,则向源端返回这种报文。
(3)源抑制(类型4)。这种报文提供了一种流量控制的初等方式。如果路由器或目标主机缓冲资源耗尽而必须丢弃数据报,则每丢弃一个数据报就向源主机发回一个源抑制报文。这时源主机必须减小发送速率。另一种情况是系统的缓冲区已用完,并预感到行将发生拥挤,则发出源抑制。但是与前一种情况不同的是,所涉及的数据报尚能提交给目标主机。
(4)参数问题(类型12)。如果路由器或主机判断出IP头中的字段或语义出错,则返回这种报文,报文头中包含一个指向出错字段的指针。
(5)路由重定向(类型5)。路由器向直接相连的主机发出这种报文,告诉主机一个更短的路径。例如,路由器R1收到本地网络上的主机发出的数据报,R1检查它的路由表,发现要把数据报发往网络X,必须先转发给路由器R2,而R2又与源主机在同一网络中。于是R1向源主机发出路由重定向报文,把R2的地址告诉它。
(6)回声。(请求/响应,类型8/0)。用于测试两个节点之间的通信线路是否畅通。收到回声请求的节点必须发出回声响应报文。该报文中的标识符和序列号用于匹配请求和响应报文。当连续发出回声请求时,序列号连续递增。常用的ping程序就是这样工作的。
(7)时间戳(请求/响应,类型13/14)。用于测试两个节点之间的通信延迟时间。请求方发出本地的发送时间,响应方返回自己的接收时间和发送时间。这种应答过程如果结合强制路由的数据报实现,则可以测量出指定线路上的通信延迟。
(8)地址掩码(请求/响应,类型17/18)。主机可以利用这种报文获得他所在的局域网的子网掩码。首先主机广播地址掩码请求报文,同一局域网上的路由器以地址掩码响应报文回答,告诉请求方需要的子网掩码。了解子网掩码可以判断出数据报的目标节点与源节点是否在同一局域网中。
18.DHCP协议的功能
动态主机配置协议DHCP是应用层协议,使用客户/服务器方式,客户端和服务端通过广播方式进行交互,基于UDP。
DHCP协议的工作流程:
- 主机广播DHCP发现报文。
“有没有DHCP服务器?” 试图找到网络中的服务器,服务器获得一个IP地址。
- DHCP服务器广播DHCP提供报文。
“有,有,有。” 服务器拟分配给主机一个IP地址及相关配置,先到先得。
- 主机广播DHCP请求报文。
“我用你给我的IP地址啦?” 主机向服务器请求提供IP地址。
- DHPC服务器广播DHCP确认报文。
“用吧!” 正式将IP地址分配给主机。
19.网桥的功能,为什么称为透明网桥?透明网桥的实现原理
数据链路层互联的设备是网桥(bridge),在网络互联中它起到数据接收、地址过滤与数据转发的作用,用来实现多个网络系统之间的数据交换。
透明网桥由各个网桥自己来决定路由选择,局域网上的各结点不负责路由选择,网桥对于互连局域网的各结点来说是“透明”的。
当网桥刚连接到以太网时,其转发表是空的,网桥按照自学习算法处理收到的帧。使用了生成树算法(无环),但不是最佳路由。
20.数据链路层提供的服务
封装比特流成帧,差错控制,物理寻址,链路访问,流量控制,可靠数据传输
21.网卡
网卡也叫"网络适配器“,网卡是局域网中最基本的部件之一,它是连接计算机与网络的硬件设备。
22.什么是路由汇聚?
路由汇聚是把一组路由汇聚为一个单个的路由广播。
23.为什么无限局域网使用CSMA/CA,而不是CSMA/CD?
CSMA/CD协议已经成功地应用于使用有线连接的局域网,但在无线局域网的环境下,却不能简单地搬运CSMA/CD协议。 主要有两个原因: (1)接受信号的强度往往会小于发送信号的强度,且在无线介质上信号强度动态变化范围很广。因此若要实现碰撞检测,在硬件上的花费就会过大; (2)在无线通信中,并非所有的站点都能够听见对方。而“所有站点都能够听见对方”正是实现CSMA/CD协议必备的基础。
CSMA/CD与CSMA/CA主要有如下区别:
- CSMA/CD可以检测冲突,但无法避免;CSMA/CA发送数据的同时不能检测信道上有无冲突,本结点处没有冲突并不意味着在接收结点处就没有冲突,只能尽量避免。
- 传输介质不同。CSMA/CD用以总线形以太网,CSMA/CA用于无线局域网。
- 检测方式不同。CSMA/CD通过电缆中的电压变化来检测;而CSMA/CA采用能量检测、载波检测和能量载波混合检测三种检测信道空闲的方式。
24.内部网关的两类路由选择协议,区别,各自实现原理,rip和ospf如何实现路由表更新
首先路由选择协议有两大类,分别是内部网关协议IGP和外部网关协议EGP。而RIP和OSPF都是内部网关协议。
- 路由信息协议RIP是一种基于距离向量的路由选择协议,优点是简单,其特点是:
- 仅和相邻路由器交换信息。
- 路由器交换的信息为自己的路由表
- 按固定的时间间隔交换路由信息。
开放最短路径优先OSPF协议最主要的特征就是使用分布式的链路状态协议,其特点:
- 向本自治系统中的路由器发送信息。
- 发送的信息就是与本路由相邻的所有路由器的链路状态。
- 只有当链路状态发生变化时,路由器才向所有路由器用洪泛法发送此信息。
25.NAT协议的功能,三类实现方式
网络地址转换(NAT)是指通过将专用网络地址(如Intranet)转换为公用地址(Internet),从而对外隐藏内部管理的IP地址。它使得整个专用网只需要一个全球IP地址就可以与因特网联通,由于专用网本地IP地址是可重用的,所有NAT大大节省了IP地址的消耗。
- 静态转换(一对一)
静态转换是指将内部网络的私有IP地址转换为公有IP地址,IP地址对是一对一的,是一成不变的,某个私有IP地址只转换为某个公有IP地址。
- 动态转换(多对多)
动态转换是指将内部网络的私有IP地址转换为公用IP地址时,IP地址对并不是一一对应的,而是随机的。
- 端口多路复用(多对一)
通过使用端口多路复用,可以达到一个公网地址对应多个私有地址的一对多转换。在这种工作方式下,内部网络的所有主机均可共享一个合法外部IP地址实现对Internet的访问,来自不同内部主机的流量用不同的随机端口进行标示,从而可以最大限度地节约IP地址资源。同时,又可隐藏网络内部的所有主机,有效避免来自internet的攻击。
私有IP地址网段如下:
- A类:1个A类网段,即10.0.0.0~10.255.255.255.255
- B类:16个B类网段,即172.16.0.0~172.31.255.255
- C类:256个C类网段,即192.168.0.0~192.168.255.255