关于TCP协议在项目中的运用
Posted 网工与H3C
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于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. 案例问题
内网数据通过接入交换机-汇聚交换机-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
#
以上是关于关于TCP协议在项目中的运用的主要内容,如果未能解决你的问题,请参考以下文章