TCP协议与UDP协议

1. TCP协议与UDP协议基本区别
1.基于连接与无连接
2.TCP要求系统资源较多,UDP较少;
3.UDP程序结构较简单
4.流模式(TCP)与数据报模式(UDP);
5.TCP保证数据正确性,UDP可能丢包
6.TCP保证数据顺序,UDP不保证

三次握手那个阶段容易出现攻击?

比较典型的是 syn 泛洪攻击,或叫 syn 溢出攻击。
syn 溢出攻击,即出现在第二个阶段,如果客户机伪造出大量第一次的 sys 同步报
文,服务端就会依次耗掉很多资源来保存客户端的信息,并进行确认,实际确认是会失
败的,但失败是需要一定时间,因为服务端会连续多次进行第二次握手确认后才认定失
败。那么短时间有大量 syn 同步报文涌向服务端,服务器资源可能被耗尽,就可能导致
正常的客户端得不到响应而失败。

为什么是三次握手,两次可以吗?


首先,两次显然是不可以的。这类问题可以举一个反例来说明情况。
谢希仁版《计算机网络》中的例子是这样的,“已失效的连接请求报文段”的产生在
这样一种情况下:client 发出的第一个连接请求报文段并没有丢失,而是在某个网络结
点长时间的滞留了,以致延误到连接释放以后的某个时间才到达 server。本来这是一个
早已失效的报文段。但 server 收到此失效的连接请求报文段后,就误认为是 client 再次
发出的一个新的连接请求。于是就向 client 发出确认报文段,同意建立连接。假设不采
用“三次握手”,那么只要 server 发出确认,新的连接就建立了。由于现在 client 并没有
发出建立连接的请求,因此不会理睬 server 的确认,也不会向 server 发送数据。但 server
却以为新的运输连接已经建立,并一直等待 client 发来数据。这样,server 的很多资源
就白白浪费掉了。采用“三次握手”的办法可以防止上述现象发生。例如刚才那种情况,
client 不会向 server 的确认发出确认。server 由于收不到确认,就知道 client 并没有要
求建立连接。”。主要目的防止 server 端一直等待,浪费资源。


扩展下,挥手一般是四次为什么?挥手在某些情况下三次能完成吗?
某些情况下,三次是可以完成挥手的,当本端关闭了连接,恰好也同时收到了对方
的 FIN 报文,此时可以把自己的 FIN 和给对端的确认 ACK 合在一起发送。就变成了三
次。

 

TIME_WAIT 状态存在的意义?

TIME_WAIT 状态是:主动断开连接的一端收到对端的 FIN 报文段并且将 ACK 报文
段发出后的一种状态。
意义:
1) 保证迟来的报文段能被识别并丢弃。
2) 保证可靠的终止 TCP 连接。保证对端能收到最后的一个 ACK,如果 ACK 丢失,
在TIME_WAIT状态本端还可以接受到对端重传的FIN报文段并重新发送ACK。
所以 TIME_WAIT 的存在时间为 2MSL。

TIME_WAIT 和 CLOSE_WAIT 有什么区别?

CLOSE_WAIT 是被动关闭的一端在接收到对端关闭请求(FIN 报文段)并且将 ACK
发送出去后所处的状态,这种状态表示:收到了对端关闭的请求,但是本端还没有完成
工作,还未关闭。
TIME_WAIT 状态是主动关闭的一端在本端已经关闭的前期下,收到对端的关闭请
求(FIN 报文段)并且将 ACK 发送出去后所处的状态,这种状态表示:双方都已经完成
工作,只是为了确保迟来的数据报能被是被并丢弃,可靠的终止 TCP 连接。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值