关于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协议在项目中的运用的主要内容,如果未能解决你的问题,请参考以下文章

关于TCP协议,我想你应该懂了!

运用tcp协议创建上传文件

关于TCP协议

关于HTTP和TCP/IP

关于tcp和http

网络协议概述——TCP,5分钟快速了解