TCP协议 UDP协议

2021-04-11  本文已影响0人  灏玮

传输控制协议(Transmission Control Protocol,TCP)是一种面向连接的、可靠的、基于字节流的传输层通信协议。在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能。用户数据报协议(UDP)是同一层内另一个重要的传输协议。

UDP是一个简单的传输层协议。和TCP相比,UDP有下面几个显著特性:

TCP的特性

注意:TCP并不能保证数据一定会被对方接收到,因为这是不可能的。TCP能够坐到的是,如果有可能,就把数据递送到接收方,否则就(通过放弃重传并且中断连接这一手段)通知用户。因此准确说TCP也不是100%可靠的协议,它所能提供的是数据的可靠递送或故障的可靠通知。

三次握手建立连接
四次挥手断开连接

应用

TCP并不是对所有的应用都适合,一些新的带有一些内在的脆弱性的运输层协议也被设计出来。比如,实时应用并不需要甚至无法忍受TCP的可靠传输机制。在这种类型的应用中,通常允许一些丢包、出错或拥塞,而不是去校正它们。例如通常不实用TCP的应用有:流媒体、网络游戏、IP电话等等。任何不是很需要可靠性或者是想将功能减到最少的应用可以避免使用TCP。在很多情况下,当只需要多路复用应用服务时,用户数据报协议(UDP)可以代替TCP为应用提供服务。

SYN攻击

  1. 缩短超时(SYN Timeout)时间
  2. 增加最大半连接数
  3. 过滤网关防护
  4. SYN cookies技术

TCP KeepAlive

基本原理是,隔一段时间给连接对端发送一个探测包,如果收到对方回应的ACK,则认为连接还是存活的,在超过一定重试次数之后还是没有收到对方的回应,则丢弃该TCP连接。
存在的局限,监测的方式会给网络带来额外的流量,监测连接的存活与否,连接的存活不一定代表服务可用。对于应用层程序的价值是相对较小的,连接包活的应用层程序,心跳功能。


这是因为服务端在LISTEN状态下,收到建立请求的SYN报文后,把ACK和SYN放在一个报文里发送给客户端。而关闭连接时,当收到对方的FIN报文时,仅仅表示对方不再发送数据了但是还能接收数据,己方也未必全部数据都发送给对方了,所以己方ACK和FIN一般都会分开发送。


TCP协议是有链接的,有链接的意思是开始传输实际数据之前TCP的客户端和服务器端必须通过三次握手建立连接,会话结束之后也要结束连接。而UDP是无连接的。
TCP协议保证数据按序发送,按序到达,提供超时重传来保证可靠性,但是UDP不保证按序到达,甚至不保证到达,只是努力交付,即便是按序发送的序列,也不保证按序送到。
TCP协议所需资源多,TCP首部需20个字节(不算可选项),UDP首部字段只需8个字节。
TCP是一对一的连接,而UDP则可以支持一对一,多对多,一对多的通信。
TCP面向的是字节流的服务,UDP面向的是报文的服务。


主要是为了防止已失效的连接请求报文突然又传到了,而产生错误。


第一,为了保证发送端发送的最后一个ACK报文能够到达接收端。这个ACK报文段有可能丢失,因而使处在LAST-ACK状态的接收端收不到对已发送的FIN和ACK报文段的确认。接收端会超时重传这个FIN和ACK报文段,而发送端就能在2MSL时间内收到这个重传的ACK+FIN报文段。接着发送端重传一次确认。
第二,就是防止上面提到的已失效的连接请求报文段出现在本连接中,发送端在发送完最后一个ACK报文段后,再经过2MSL,就可以使本连接持续的时间内所产生的所有报文段都从网络中消失。

上一篇下一篇

猜你喜欢

热点阅读