TCP (tcp和udp的区别)

教程大全 2025-07-15 16:07:43 浏览

由于TCP/IP协议是Internet的基础协议,所以对TCP/IP协议的完善和改进是非常必要的。TCP/IP协议从开始设计时候并没有考虑到现在网络上如此多的威胁(更多请参考RFC文档),由此导致了许多形形色色的攻击方法,一般针对协议原理的攻击(尤其是DDOS)我们无能为力。

2020年初,黑客对著名代码托管平台GitHub发动攻击,GitHub和旗下很多子站点均被提示有信息安全问题,大批访问用户被挡在网站之外。这样的例子还有很多,14年微软账号系统被入侵事件,16年美国网络瘫痪事件等等等等。今天,我们一起来看看TCP/IP常见的3种攻击手段。

要建立一个TCP连接,需要经过三次握手,过程如下:

(1) 客户端向 服务 发送SYN包,并进入SYN_SENT状态,等待服务器确认;

(2) 服务器收到SYN包并进行确认,同时向客户端发送SYN包,即SYN+ACK包。此时服务器进入SYN_RECV状态。

(3) 客户端收到服务器的SYN+ACK包后,向服务器发送确认包ACK,发送完毕后,TCP连接成功,完成三次握手。

TCP

为了保证三次握手TCP连接的顺利建立,TCP协议在三次握手过程中,设置了一些异常处理机制。第三步客户端发送确认包ACK后,如果服务器没有收到,会一直处于第二步的SYN_RECV状态,并将客户端IP加入等待列表,重发SYN+ACK报文试图重试。重发一般会进行3-5次,大约30秒左右轮询一次等待列表重试所有客户端。

SYN_RECV状态如果一直存在,超过了服务器承受上限后,新的SYN报文将不再被接收,也就会拒绝新的TCP连接的建立。

SYN Flood正是利用了这一设定来攻击目标,攻击者伪装大量的IP地址给服务器发送SYN报文,由于IP地址不存在,客户端不会给服务器发送最终确认包ACK,使服务器要维持一个庞大的 等待列表,不断重试发送SYN+ACK报文,SYN_RECV队列被占满后,服务器也就彻底崩溃了。

怎么防SYN Flood呢?最简单的方法是使用DDoS云清洗。DDoS不仅能清洗SYN Flood攻击,对其他类型的DDoS攻击也有效,例如UDP Flood、CC等。

CDN也有缓解这类攻击的作用,前提是攻击量没有达到CDN最大承受能力,否则就会直接穿透到达源站,很快源站也会失守,彻底沦陷。如果网站/APP经常遭受DDoS攻击,最好使用DDoS云清洗。

IP欺骗

我们知道,IP是识别身份的重要信息,所以它自然也成了黑客们极力想利用的对象。

假设一个用户,已经和服务器建立正常的TCP连接,攻击者会通过构造TCP数据,将自己的IP伪装为与这名用户相同的IP,并向服务器发送一个带有RSI位的TCP数据段。

服务器收到这一数据后,会认为从用户发送的连接有错误,将清空缓冲区中建立好的连接。这样一来,这名用户再发送数据时,服务器已经没有连接,无法响应,用户必须从新建立连接。黑客会伪造大量的IP地址,向目标发送RST数据,使服务器无法对正常用户服务,这就是IP欺骗攻击。

TCP重置攻击

TCP连接有一个特别的设定,如果客户端发现到达的报文段,对于相关连接而言是不正确的,TCP会发送一个重置报文段断开连接,防止连接被用来进一步交换信息。

攻击者正是利用了这一机制,通过向通信的一方或者双方发送伪造的重置报文段,让通信方提前关闭TCP连接。虽然服务器仍然可以创建一个新的TCP连接恢复通信,但还是很可能会被攻击者重置。

TCP重置攻击有两种。一种是攻击者截获了通信双方的交换信息,读取数据包上的序列号和确认应答号后,得出伪装的TCP重置报文段的序列号。

另一种是攻击者无法截取交换信息,无法确定重置报文段的序列号,但通过批量发出不同序列号的重置报文,盲猜序列号,一旦猜中,攻击目的便达成了。


TCP是一种面向连接的协议,在建立起连接后

B报文走的实际线路可能是各不相同的,虽然连接是同一个,但是不是电路连接。报文的丢失重传、及顺序是由TCP来处理的

TCP和UDP之间的区别

TCP---传输控制协议,提供的是面向连接、可靠的字节流服务。 当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。 TCP提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。 UDP---用户数据报协议,是一个简单的面向数据报的运输层协议。 UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。 由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快现在Internet上流行的协议是TCP/IP协议,该协议中对低于1024的端口都有确切的定义,他们对应着Internet上一些常见的服务。 这些常见的服务可以分为使用TCP端口(面向连接)和使用UDP端口(面向无连接)两种。 说到TCP和UDP,首先要明白“连接”和“无连接”的含义,他们的关系可以用一个形象地比喻来说明,就是打电话和写信。 两个人如果要通话,首先要建立连接——即打电话时的拨号,等待响应后——即接听电话后,才能相互传递信息,最后还要断开连接——即挂电话。 写信就比较简单了,填写好收信人的地址后将信投入邮筒,收信人就可以收到了。 从这个分析可以看出,建立连接可以在需要痛心地双方建立一个传递信息的通道,在发送方发送请求连接信息接收方响应后,由于是在接受方响应后才开始传递信息,而且是在一个通道中传送,因此接受方能比较完整地收到发送方发出的信息,即信息传递的可靠性比较高。 但也正因为需要建立连接,使资源开销加大(在建立连接前必须等待接受方响应,传输信息过程中必须确认信息是否传到及断开连接时发出相应的信号等),独占一个通道,在断开连接钱不能建立另一个连接,即两人在通话过程中第三方不能打入电话。 而无连接是一开始就发送信息(严格说来,这是没有开始、结束的),只是一次性的传递,是先不需要接受方的响应,因而在一定程度上也无法保证信息传递的可靠性了,就像写信一样,我们只是将信寄出去,却不能保证收信人一定可以收到。 TCP是面向连接的,有比较高的可靠性, 一些要求比较高的服务一般使用这个协议,如FTP、Telnet、SMTP、HTTP、POP3等,而UDP是面向无连接的,使用这个协议的常见服务有DNS、SNMP、QQ等。 对于QQ必须另外说明一下,QQ2003以前是只使用UDP协议的,其服务器使用8000端口,侦听是否有信息传来,客户端使用4000端口,向外发送信息(这也就不难理解在一般的显IP的QQ版本中显示好友的IP地址信息中端口常为4000或其后续端口的原因了),即QQ程序既接受服务又提供服务,在以后的QQ版本中也支持使用TCP协议了。

什么叫TCP协议

TCP (Transmission Control Protocol)和UDP(User Datagram Protocol)协议属于传输层协议。 其中TCP提供IP环境下的数据可靠传输,它提供的服务包括数据流传送、可靠性、有效流控、全双工操作和多路复用。 通过面向连接、端到端和可靠的数据包发送。 通俗说,它是事先为所发送的数据开辟出连接好的通道,然后再进行数据发送;而UDP则不为IP提供可靠性、流控或差错恢复功能。 一般来说,TCP对应的是可靠性要求高的应用,而UDP对应的则是可靠性要求低、传输经济的应用。 TCP支持的应用协议主要有:Telnet、FTP、SMTP等;UDP支持的应用层协议主要有:NFS(网络文件系统)、SNMP(简单网络管理协议)、DNS(主域名称系统)、TFTP(通用文件传输协议)等。

本文版权声明本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请联系本站客服,一经查实,本站将立刻删除。

发表评论

热门推荐