网络编程之TCP与UDP
版权声明 :
本文为博主原创文章,如需转载,请注明出处(https://blog.csdn.net/F1004145107/article/details/87946437)
TCP
-
优点 : 可靠,不丢包.因为在传输数据之前会先进行三次握手建立连接,并且在传输数据时有确认、窗口、重传、拥塞控制机制,所以TCP的传输很稳定,并且不会丢包,不会重复,能按照顺序来传输
-
缺点 : 耗时,性能低.
-
TCP在传输之前先建立连接,并且TCP所拥有的机制导致了其在进行数据传输时会消耗大量的时间,还要对连接进行维护
-
因为TC有三次握手和确认等机制,所以容易受到DOS,DDOS,CC等攻击
-
-
UDP
-
优点 : 速度快,不易被攻击.UDP是一个无状态的传输协议,而且没有TCP的三次握手和确认等机制,所以速度非常快,而正是因为没有那些机制所以可以被利用的攻击点较少
-
缺点 : 不可靠,容易丢包.因为缺少TCP的连接机制,所以在传输数据时会受到网络的影响,容易丢包
TCP和UDP怎么选择
-
如果你需要稳定的数据传输,如HTTP,FTP等协议用来做文件上传,消息通知等,那么就选择TCP
-
如果你需要的是快速的传递数据而不太考虑网络原因的话就选择UDP,如视频播放,视频直播,视频会议等
TCP于UDP的对比总结
TCP的三次握手与四次挥手
-
三次握手
-
第一次 : A发送一个syn包(建立连接)到B请求建立连接
-
第二次 : B收到syn包知道A想要建立连接,此时返回一个ack包(确认连接)表示可以连接
-
第三次 : A收到B发来的ack包后会再给B发送一个ack包表示已收到可以连接的信息,并建立连接
借用一张网上的图
图上的Seq是一个随机数字
-
-
四次挥手
-
第一次 : A发送Fin包(取消连接)以及ack包(确认)请求取消连接
-
第二次 : B发送ack包表示可以取消连接
-
第三次 : B发送Fin包以及ack包请求取消连接
-
第四次 : A发送ack包确认取消连接,连接中断
再次借用一张网上的图
-
TCP的标记状态
-
syn : 建立连接
-
fin : 关闭连接
-
ack : 响应,确认
-
psh : 有数据进行传输
-
rst : 连接重置
-
-