详细讲解TCP和UDP

详细讲解TCP和UDP

首先我们来看看TCP和UDP所在网络七层协议中的位置:
在这里插入图片描述

TCP和UDP的优缺点

TCP的优点

  1. 可靠
  2. 稳定
1.在数据的正确性上:TCP采用校验和函数来检验数据是否出现错误,在发送和接收的时候都会计算校验和;同时海可以使用MD5认证对数据进行加密
2.可靠性上:采用超时重传的和捎带确认的机制。
3.在流量控制上:采用滑动窗口协议。
4.在拥塞控制上:采用TCP拥塞控制算法(AIDM算法)。该算法的主要几个部分:加性增、乘性减;慢启动;对超时的时间做出反应。

TCP的缺点

  1. 速度慢,效率低
  2. 占用系统资源高
  3. 易被攻击
TCP在传递数据之前,要先建连接,这会消耗时间,而且在数据传递时,确认机制、重传机制、拥塞控制机制等都会消耗大量的时间。
而且要在每台设备上维护所有的传输连接,事实上,每个连接都会占用系统的CPU、内存等硬件资源。
而且,因为TCP有确认机制、三次握手机制,这些也导致TCP容易被人利用,实现DOS、DDOS、CC等攻击。

UDP的优点

  1. TCP稍安全
UDP没有TCP的握手、确认、窗口、重传、拥塞控制等机制,UDP是一个无状态的传输协议,所以它在传递数据时非常快。
没有TCP的这些机制,UDP较TCP被攻击者利用的漏洞就要少一些。但UDP也是无法避免攻击的,比如:UDP,Flood攻击

UDP的缺点

  1. 不可靠
  2. 不稳定 因基于上面的优缺点
为UDP没有TCP那些可靠的机制,在数据传递时,如果网络质量不好,就会很容易丢包。 

TCP协议和UDP协议的差别

TCPUDP
是否连接面向连接面向非连接
传输是否可靠可靠不可靠
应用场景少量数据传输大量数据
速度

使用的场景

TCP的使用场景

当我们希望整个数据更加准确无误的传递给对方:
浏览器:HTTP、HTTPS协议
传输文件:FTP协议
基于邮件传输:STMP协议等
QQ文件传输等

UDP的使用场景

对通讯的质量要求不高的时候,但是要通许的速度尽量快:
QQ语音 
QQ视频 
TFTP

TCP详解

TCP报文头

在这里插入图片描述

简要介绍报文头

  1. 序号:发送方的序号
  2. 确认序号:接收方得到序号之后回复的确认序号
  3. 标志位,标志位主要用户标志该报文当前的状态。
    • URG:指示报文中有紧急数据,应尽快传送(相当于高优先级的数据)。
    • ACK:确认序号(AN)有效。
    • PSH:接到后尽快交付给接收的应用进程。
    • RST:TCP连接中出现严重差错(如主机崩溃),必须释放连接,在重新建立连接。
    • SYN:处于TCP连接建立过程。
    • FIN:发送端已完成数据传输,请求释放连接。

TCP的三次握手和四次挥手

三次握手

在这里插入图片描述

第一次:客户端向服务端发送一个 SYN(SEQ=x 客户端序号)报文给服务器端,进入SYN_SEND状态。

第二次:服务器端收到SYN报文,回应一个SYN (SEQ=y 服务端序号)ACK(ACK=x+1 确认号=客户端序号+1)报文,进入SYN_RECV状态。

第三次:客户端收到服务器端的SYN报文,回应一个ACK(ACK=y+1)报文,进入Established状态。

四次挥手

在这里插入图片描述

第一次:客户端向服务端发送 FIN + ACK 报文,同时携带序号为 X。 客户端进入 FIN-WAIT1

第二次:服务器端回复 ACK 报文。附带序号Z和确认序号X+1,表示服务器已经接受到了客服端的报文。但是由于服务器可能还在处理事务,因此,报文并不会携带FIN标志。状态:CLOSE WAIT

第三次:在一段时间之后,服务器已经处理完毕,发送带有 FIN和ACK的报文,序号为Y,确认序号为 X + 1 。 状态: ACK-LAST

第四次:客户端发送ACK报文,序号为 X+1,确认号Y+1 。 客户端进入: TIME_WAIT。服务端进图CLOSE(初始状态)

UDP详解

UDP报文头

在这里插入图片描述

注:我们长用的ping命令就是该协议的一个实例

UDP的特点

UDP 特点
(1) UDP是一个非连接的协议,传输数据之前源端和终端不建立连接,当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。在发送端,UDP传送数据的速度仅仅是受应用程序生成数据的速度、计算机的能力和传输带宽的限制;在接收端,UDP把每个消息段放在队列中,应用程序每次从队列中读一个消息段。
(2) 由于传输数据不建立连接,因此也就不需要维护连接状态,包括收发状态等,因此一台服务机可同时向多个客户机传输相同的消息。
(3) UDP信息包的标题很短,只有8个字节,相对于TCP的20个字节信息包的额外开销很小。
(4) 吞吐量不受拥挤控制算法的调节,只受应用软件生成数据的速率、传输带宽、源端和终端主机性能的限制。
(5)UDP使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的链接状态表(这里面有许多参数)。
有8个字节,相对于TCP的20个字节信息包的额外开销很小。
(4) 吞吐量不受拥挤控制算法的调节,只受应用软件生成数据的速率、传输带宽、源端和终端主机性能的限制。
(5)UDP使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的链接状态表(这里面有许多参数)。
(6)UDP是面向报文的。发送方的UDP对应用程序交下来的报文,在添加首部后就向下交付给IP层。既不拆分,也不合并,而是保留这些报文的边界,因此,应用程序需要选择合适的报文大小。

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值