详细描述一下tcp三次握手和四次挥手的过程和各个阶段的状态机。
假设Clinet为C,Server为S。
TCP三次握手:
在正式握手之前S会进行socket()创建套接字用来通信,调用bind()绑定这个文件文件描述符,调用listen()监听端口是否有客户端请求。
1.C请求连接,发送一个带SYN标志的TCP报文给服务器,占用一个随记序列号seq假设为x。C进入SYN_SENT状态。
2.S调用accept()接受到该报文后短暂时间内回应客户端报文,该报文同时带有ACK和SYN标志表示对刚才客户端SYN报文的回应,同时又标志SYN给客户端询问是否做好准备进行数据通讯。SYN,ACK标志位均置为1,ack=x+1,seq=y。S进入SYN_RCVD状态。
3.C收到回应S一个ACK报文,其ack=y+1,seq=x+1。进入Established状态。S收到后也随即进入Established状态。至此完成了三次握手建立TCP连接。
TCP四次挥手:
1.C主动请求关闭连接,向S发送一个FIN报文,用来关闭客户端到服务器的数据传送,占用一个随机序列号seq=i。FIN=1。C进入FIN_WAIT1状态
2.S收到后该报文后回应一个ACK报文,表示确认收到客户端关闭其数据传送的报文。ack=i+1,seq=j。S进入CLOSE_WAIT状态,C收到该报文随即进入FIN_WAIT2状态。
3.S端查看自身是否还有未发送或待发送的数据。若无,服务端被动关闭连接,向C发送FIN报文,表示要关闭服务端到客户端的数据传输,FIN=1,seq=k。若有待续传输的数据,传输完这些数据后执行上述动作。S进入Last_ACK状态。
4.C收到FIN报文后客户端随即发回ACK报文确认。ack=k+1.C进入TIME_WAIT状态(用于可靠的终止TCP连接,保证让迟来的TCP报文段有足够短时间被识别并丢弃),待两个MSL后进入closed.S收到后进入closed状态。至此完成四次挥手断开连接。
详细描述一下ospf协议中从初始化到建立完成的邻接关系的过程,以及各个阶段的状态机
过程:Down--init--2-WAY--Exstart--Exchange--Loading—Full
(1) Init:在Down状态下路由器发出第一个hello包。当R2收到一个Hello包,并且在这个hello包中看不到自已的ID,则将自已和邻居的关系转到Init状态。Init下一个one way 状态,当R1和R2都认识对方(收到hello包邻居里有自己Router-id)后就会进入Two Way状态。【路由器收到邻居发来的hello包】
(2)在Two Way时,将选举DB/BDR(MA网络)。进入Two way状态后(即从Exstart开始),表示这两个路由器已经建立了邻居关系了。但最终能不能邻接关系要看最后是不是FULL。【已经建立双向连接,建立邻居关系;NBMA和广播网络选DR/BDR】
(3)Exstart:Exstart是firstDBD, 确认主从关系。双方互相发送第一个DBD报文,
选取主从(router-id大的是Master)【确定主从关系Master/Slave】
(4) Exchange: Exchange是通过DBD交换LSA的头部信息。
注意:DBD分为FirstDBD和DBD。【通过DBD交换LSA的头部信息】
FirstDBD携带除LSA头部外的信息(I/M/MS,DD SN,Option,MTU等)。
通过firstDBD确认主从关系,从会使用主的Seq Num(同步序号),最后从给主发DBD来隐式确认
DBD只携带LSA的Header,没有携带LSA的具体信息。承载完整LSA是LSU。
(5)Loading:等待M位为0时,才进入loading。
LSR:是不携带LSA头部的,只通过部分字段(公告ID,LSA 类型,linkID)来请求具体的条目。【根据DBD发送LSR来更新链路状态信息】
LSU:含有真正LSA完整信息的,用来回应LSR。
(6)FULL:完成了邻接关系的完整建立。
自己写的,上面是参考答案和个人理解。
过程:Down--init--2-WAY--Exstart--Exchange--Loading--Full。
1.Down状态,路由器没有收到邻居任何消息。
2.Init状态,路由器收到了邻居发送的hello包。
3.2-Way状态,说明两台路由器之间已经建立了双向的链接,除广播和NBMA网络下,Drother之间维持邻居关系外,其余将进行下一步建立邻接关系如选DR/BDR。2-way下双方仅知道邻居的存在双方并无实质性数据的交互。
4.Exstart状态,根据prority协商主从关系,其他路由器和DR,BDR初始sequence number来形成邻接。
5.Exchange状态,OSPF路由器交换DBD包(包含LSA描述链路状态数据库的内容)。
6.Loading状态。基于DBD报文提供的信息路由器会发送链路状态请求报文LSR等来跟新链路状态信息。
7.Full状态。路由器间更新同步即完成了数据库同步的工作。他们链路的状态信息一致。已建立完成邻接关系。
自然连接:是一种特殊的等值俩捏,它要求两个关系中比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉。而等值连接并不会去掉重复的属性列。
内连接:结果仅包含符合连接条件的两表中的
外连接:结果包含符合条件的行,同时包含不符合条件的行(分为左外连接、右外连接和全外连接)
左外连接:左表全部行+右表匹配的行,如果左表中某行 在右表中没有匹配的行,则右表该行显示NULL。
右外连接:和左外连接相反。
全外连接:不管匹配不匹配,全部显示出来,左表在右表没有的显示NULL,右表在左表没有的显示NULL
VLAN标签问题
- 交换机内部转发数据帧的时候,均是携带vlan tag的。即交换机内部帧一定是有vlan tag的。
- 所以数据帧从交换机的端口发出时必定携带vlan tag
报文入方向:在入方向上,交换机的根本任务是决定该报文是否允许进入该端口
根据入报文的tag/untag的属性以及端口属性,细分为如下情况:
- 报文为untag:允许报文进入该端口,并打上PVID的vlan tag,与端口属性无关。
- 报文为tag:在这种情况下,需要交换机来判断是否允许该报文进入端口:
(1)Access端口:PVID和报文中的vlan tag标明的vlan一致,接受并处理报文。否则丢弃;
(2)Trunk/Hybrid端口:如果端口允许tag中标明的vlan通过,则接收并处理报文,否则丢弃
报文出方向:在出方向上,交换机已经完成对报文的转发,其根本任务就是在转发出端口时,是否携带tag转发出去
根据出端口属性,细分如下情况:
(1)Access端口:将标签剥掉,不带tag转发。
(2)Trunk端口:报文所在vlan和PVID相同,则剥掉标签后报文不带tag;否则带tag
(3)Hybrid端口:报文所在VLAN配置[vlan list]是含有tag的,则报文带tag,否则不带tag
4.以太网端口三种链路类型:Access,Hybrid和trunk
Access类型的端口只能属于1个VLAN,一般用于连接计算机的端口;
Trunk类型的端口可以允许多个VLAN通过,可以接收和发送多个VLAN的报文,一般用于交换机之间连接的端口;
Hybrid类型的端口可以允许多个VLAN通过,可以接收和发送多个VLAN的报文,可以用于交换机之间连接,也可以用于连接用户的计算机。
Hybrid端口和Trunk端口在接收数据时,处理方法是一样的,唯一不同之处在于发送数据时:Hybrid端口可以允许多个VLAN的报文发送时不打标签,而Trunk端口只允许缺省VLAN的报文发送时不打标签。
Ping的请求超时和不可达原因的区别:请求超时,路由表存在目标因其他原因到达不了;而不可达,路由表没有存在到达目标路由。
BGP
- BGP连接是否建立用【show tcp bri】查看是否建立,一般为本地随机大端口到目标的179端口。谁发起建立连接,则发起方为随机端口到目标的179端口
- Ebgp给身后的ibgp需要next-hop-self;Ebgp之间需要ebgp-mutihop 2-255
3.
IPsec VPN
- 【show crypto isakmp sa / show crypto ipsec sa】最直观查看是否建立成功
- 【show crypto engine connections active】查看加密数据包,如果加密成功,那么可能是对方路由的问题导致回不来。
ACL
- 要删除ACL中的某条规则,需要进入该ACL配置模式中在删除某条规则,在全局下删除该规则时,会默认将该ACL整条删除。
#经典、知名端口是目的Destination,如23,80等