关于TCP协议在项目中的运用

  1. TCP概述

  TCP(Transmission Control Protocol,传输控制协议)是一种面向连接(连接导向)的、可靠的、基于IP的传输层协议,由IETF的RFC 793说明(specified)。TCP的协议号是6。

  2. TCP与UDP的区别

  TCP协议面向连接,UDP协议面向非连接;

  TCP协议传输速度慢,UDP协议传输速度快;

  TCP有丢包重传机制,UDP没有;

  TCP协议保证数据正确性,UDP协议可能丢包;

  TCP有三次会话,UDP两次。

  3. TCP连接

  TCP是因特网中的传输层协议,使用三次握手建立连接。当主动方发出SYN连接请求后,等待对方回答SYN+ACK,并最终对对方的 SYN 执行 ACK 确认,这种建立连接的方法可以防止产生错误的连接。TCP三次握手的过程如下:

  1、客户端发送SYN(SEQ=x)报文给服务器端,进入SYN_SEND状态。

  2、服务器端收到SYN报文,回应一个SYN (SEQ=y)ACK(ACK=x+1)报文,进入SYN_RECV状态。

  3、客户端收到服务器端的SYN报文,回应一个ACK(ACK=y+1)报文,进入Established状态。

  三次握手完成,TCP客户端和服务器端成功地建立连接,可以开始传输数据了。

  4. 案例拓扑

  

图片5.png


  5. 案例问题

  内网数据通过接入交换机à汇聚交换机àSR66路由器àFW插卡àSR66路由器àInternet。发现内网数据可以ping通互联网DNS、百度等所有官网服务器,但打不开网页(可以上QQ)。按照常规思路,我们第一想法都会觉得是DNS的问题。然而,在此案例中,我们用PC直接连接公网,DNS正常设置,是可以打开网页的。那么,为什么中间增加了其他三层转发设备之后却可以了呢?

  6. 问题定位

  通过dis nat session 命令查看内网的会话,发现都是0。通过抓包分析,内网数据在TCP会话中完成了前两次的握手,而丢失了最后的ACK(ACK=y+1)报文。通过分析,发现内网数据在出去的时候,路经按照{交换机à汇聚交换机àSR66路由器àFW插卡àSR66路由器àInternet},路径正常;返回的时候按照{SR路由器à汇聚交换机à 接入交换机},TCP报文没有经过FW插卡,由此确定是来回路径不一致,而非DNS问题。 在此刻,我们立即就会豁然开朗:路由器的下联接口没有下发重定向命令,导致数据在返回的时候没有经过FW插卡。

  7. 问题处理

  在SR66路由器下联汇聚交换机的接口上下发一条重定向到FW插卡的策略,网络恢复正常。

  配置如下:

  #

  policy-based-route TO_FW_DOWN permit node 10

  if-match acl 3010

  apply ip-address next-hop 20.0.0.2

  #

  interface GigabitEthernet2/0/0

  description Link_to_internet

  ip policy-based-route TO_FW_DOWN

  #

  8. 总结

  通过本次问题的处理,我发现网络故障很多时候是因为我们粗心大意,忽略了一些细微的步骤而导致的。通过这次故障处理得出经验,我们要在以后处理问题的过程中多多思考,多多总结,以获得到客户对我们技术的进一步肯定,并保持良好的客户关系。


2016年01月