一、介绍TCP连接的三次握手?追问:为什么TCP握手需要三次?
三次握手的过程:
1)第一次握手:建立连接时,客户端发送syn(syn=a)包到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号
2)第二次握手:服务器收到syn包,必须确认客户的SYN(ack=a+1),同时自己也发送一个SYN包(syn=b),即SYN+ACK包,此时服务器进入SYN_RECV状态
3)第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=b+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手
为什么TCP需要三次握手?
总结来说,两次不可靠,四次不高效。TCP是可靠的传输控制协议,三次握手能保证数据可靠传输又能提高传输效率,而且三次握手可以保证任何一次握手出现问题,都是可以被发现或补救的。
如果是两次握手:
现假定出现一种异常情况,即C发出的第一个连接请求报文段并没有丢失,而是在某些网络结点长时间滞留了,以致延误到连接释放以后的某个时间才到达S。本来这是一个早已失效的报文段。但S收到此失效的连接请求报文段后,就误认为是C又发出一次新的连接请求。于是就向C发出确认报文段,同意建立连接。假定不采用三次握手,那么只要S发出确认,新的连接就建立了。由于现在C并没有发出建立连接的请求,因此不会理睬S的确认,也不会向S发送数据。但S却以为新的运输连接已经建立了,并一直等待C发来数据。S的许多资源就这样白白浪费了。采用三次握手的办法可以防止上述现象的发生。例如在刚才的情况下,C不会向S的确认发出确认。S由于收不到确认,就知道C并没有要求建立连接。
如果是4次及以上的握手
三次握手之后,C和S可以保证正常通信,之后的次数都是徒劳没有必要,三次握手是可以建立链接的最少次数,节约资源使传输更加高效。
二、什么是DHCP?描述DHCP工作过程
DHCP是动态主机分配/配置协议,DHCP协议基于Client-Server模型,所有的报文基于UDP封装,端口号:Server:67 Client:68
主要作用是集中管理、分配IP地址,使用网络中的主机动态获得IP地址、Gateway地址、DNS服务器地址等信息,能够提升地址的使用率
工作原理:
DHCP discover 发现
DHCP offer 应答
DHCP request 请求
DHCP ACK 确认
1)发现阶段,即DHCP客户机寻找DHCP服务器的阶段。
DHCP客户机以广播方式(因为DHCP服务器的IP地址对于客户机来说是未知的)发送DHCP discover发现信息来寻找DHCP服务器,即向地址255.255.255.255发送特定的广播信息。网络上每一台安装了TCP/IP协议的主机都会接收到这种广播信息,但只有DHCP服务器才会做出响应。
2)提供阶段,即DHCP服务器提供IP地址的阶段。在网络中接收到DHCP discover发现信息的DHCP服务器都会做出响应,它从尚未出租的IP地址中挑选一个分配给DHCP客户机,向DHCP客户机发送一个包含出租的IP地址和其他设置的DHCP offer提供信息。DHCP服务器的offer是以广播的方式发送的,那么怎么确定pc收到的哪一个offer是给自己的?
每一个DHCP的offer中包含着客户端的MAC地址、源目IP、DNS等信息
3)选择阶段,即DHCP客户机选择某台DHCP服务器提供的IP地址的阶段。如果有多台DHCP服务器向DHCP客户机发来的DHCP offer提供信息,则DHCP客户机只接受第一个收到的DHCP offer提供信息,然后它就以广播方式回答一个DHCP request请求信息,该信息中包含向它所选定的DHCP服务器请求IP地址的内容。之所以要以广播方式回答,是为了通知所有的DHCP服务器,他将选择某台DHCP服务器所提供的IP地址。
4)确认阶段,即DHCP服务器确认所提供的IP地址的阶段。当DHCP服务器收到DHCP客户机回答的DHCP request请求信息之后,它便向DHCP客户机发送一个包含它所提供的IP地址和其他设置的DHCP ack确认信息,告诉DHCP客户机可以使用它所提供的IP地址。然后DHCP客户机便将其TCP/IP协议与网卡绑定,另外,除DHCP客户机选中的服务器外,其他的DHCP服务器都将收回曾提供的IP地址。
三、什么是路由器?描述一下工作过程
1、概念:路由器运行在网络层,核心作用是实现不同网段间网络互连,分组数据转发
1)路由(寻径):路由表建立、刷新、查找
2)子网间的速率适配(带宽大小适配)
3)隔离网络,防止网络风暴,指定访问规则(防火墙)
4)异种网络互连(例如:光电转换,无线转有线)
2、工作过程:通过查询路由表,把数据从一条链路转发到另一条链路,转发时会变化二层封装
路由器工作于OSI七层协议中的第三层,其主要任务是接收来自一个网络接口的数据包,根据其中所含的目的地址,决定转发到下一个目的地址。因此,路由器首先得在转发路由表中查找它的目的地址,若找到了目的地址,就按照相应的出口发送到下一个路由器,在数据包的帧格前添加下一个MAC地址,同时IP数据包头的TTL(Time To Live)域也开始减数,并重新计算校验和。若没有找到目标地址,则丢弃数据包,给源IP发送一个出错ICMP数据包表明没法传递该数据包。
四、什么是交换机?描述一下工作过程
1、概念:交换机根据网口地址传送信息,比集线器的网线直接传输多了一个步骤,它工作在二层(数据链路层)
2、交换机的基本功能:
1)基于源MAC学习(生成MAC条目/接口绑定)
2)基于目标MAC转发(查看MAC地址表)
3)防止环路
4)数据包过滤(基于目标MAC的过滤/如果转发的接口和接收的接口一样,就会丢弃数据包)
3、交换机的作用:
1)无限传输距离
2)没有冲突(所有节点可以同时收发数据/分段传输)
3)单播(当流量进入交换机后,先查看数据包中的源MAC地址,然后记录该MAC地址对应的本地接口,之后关注目标MAC,若表中存在记录将按照记录单播转发,若不存在将泛洪流量)
4、工作过程:
1)交换机根据收到数据帧中的源MAC地址建立该地址同交换机端口的映射,并将其写入MAC地址表中。
2)交换机将数据帧中的目的MAC地址同已建立的MAC地址表进行比较,以决定由哪个端口进行转发。
3)如数据帧中的目的MAC地址不在MAC地址表中,则向所有端口转发。这一过程称为泛洪。
五、讲一讲什么是ARP?
正向ARP:
当一台设备知道对方的IP地址,不知道对方的MAC 地址时,启动ARP,发送ARP Request请求广播包到其他主机,收到广播包的主机查看,只有该请求的设备才会单播回答ARP Reply响应包
ARP工作流程:三层往二层封装时,先要查询本机的ARP 表,如果有则封装二层,如果没有则启动ARP 来查找关于目标的 MAC,查找完成后记录在ARP 表中。
1)每个主机都会在自己的ARP缓存区中建立一个ARP列表,用来表示IP地址和MAC地址的对应关系
2)当原主机要发送数据时,首先检查ARP表中是否有对应的IP地址的目的主机的MAC地址,如果有,则直接转发数据,如果没有,就想本网段的所有主机发送ARP请求数据包(洪泛),该数据包内容包括:源主机IP地址、源主机MAC地址,目标主机的MAC地址
3)当本网络的所有主机收到了该ARP洪泛数据包时,首先检查数据包中的IP是否是自己,若不是,则忽略,若是,则把数据包的源主机的IP地址和MAC地址写入自己的ARP列表中,若存在则覆盖,后将自己的MAC地址写入ARP的响应包中,告诉源主机自己是他要找的MAC地址
反向/逆向ARP:
当一台设备知道对方的MAC地址,不知道对方的IP 地址时,启动ARP,发送ARP Request请求广播包到其他主机,收到广播包的主机查看,只有该请求的设备才会单播回答ARP Reply响应包
代理ARP:
1)为什么需要有代理ARP:一个网络范围的设备如果想和另一个网络范围的设备通信时,无法获得另一个网络范围设备的MAC,为什么?网络中的路由器挡住了广播包。需要找到网关,且要知道网关的IP,把数据传到网关才能到达目标,进而需要获得网关的MAC。路由器的一个重要功能就是把局域网广播包限制在该网内,不让扩散,否则会造成网络风暴。ARP request是广播包,它询问的对象若在同一个局域网内,就会回答。但如果不在同一个局域网内,就需要路由器提供一个服务:代理ARP
2)什么是代理ARP :
路由器/三层接口收到ARP request时,若发现查询的目的IP地址在不同子网,路由器/三层接口会扮演代理ARP的角色,代为回答,告诉查询者它所查询的MAC地址
免费/无故ARP:
作用:公告自己,检测重复地址,在ARP报文中请求的IP地址为自己的IP地址
重复地址检测,清除主机ARP 缓存,通告数据链路链接标识
六、如何实现VLAN间通信?有几种方法?
1)使用trunk协议,中继/干道协议,用一条物理链路传递不同vlan间的流量
2)单臂路由:指在路由器的一个接口上通过配置子接口或“逻辑接口”,(并不存在真正物理接口)的方式,实现原来相互隔离的不同VLAN之间的互联互通。
3)使用三层交换机,开启路由功能
七、OSPF有哪几种协议包?作用分别是什么?
1)hello:邻居的发现、建立、保活。时间默认10s,在特殊网络类型中为30s,dead时间默认40s, 在特殊网络类型中为120s,更新地址为224.0.0.5
2)DBD:数据库描述数据包,使用隐式确认,主从选举DBD,发送LSA头部摘要信息
3)LSR:链路状态请求,单播
4)LSU:链路状态更新,单播回复LSR,用于确认LSR的请求
5)LSACK:链路状态确认
OSPF区域划分的好处?
1)节省区域中的每一个设备的系统资源
大区域被划分以后,小区域中的数据库内容就会变少,同时减小路由表大小
2)增强 OSPF 网络的稳定性
一个不稳定链路造成的不良影响,仅在同一个区域中传播,不会影响到其他区域
3)加快路由收敛
4)减少LSA的数量和传播范围
八、两台路由器通过直连链路,建立OSPF邻居,那么一边使用P2P,而另一边使用P2MP,能正常建立邻居状态机制?
不能,P2P网络类型的hello时间和dead时间是10s和40s,而P2MP网络类型的hello时间和dead时间是30s和120s,hello和dead不一致故无法建立。邻居建立的条件:是否选举DR、hello和dead时间是否一致、有一方主动建立邻居
九、OSPF是纯链路状态型的协议吗?
是。
ospf需要建立邻接关系。ospf向邻居发送的是链路状态通告,而不是路由条目。简单说ospf就是告诉邻居自己的直连网段信息,并转发其它邻居发来的。每个路由器收集本区域全部的链路状态信息后,还原拓扑,并通过spf算法,得出每个路由条目。显然和rip的传递路由条目完全不同。