TCP与UDP的区别

1. 定义:

TCP(Transmission Control Protocol):传输控制协议,是面向连接,可靠的传输层协议。

UDP(User Datagram Protocol):数据报文协议,是无连接,不可靠的传输层协议。

2. 首部格式不同

TCP首部格式

2.1

TCP首部格式包括20个字节的固定首部+任意长度的可变选项(20~40个字节)

在传输层:TCP报文段=TCP首部+TCP数据部分;

在网络层:IP报文段=IP首部+IP数据部分(TCP报文段);

在数据链路层:IP数据报+数据链路层的首部。

 TCP首部包括:

源端口:占两个字节,代表发送方;

目的端口:占两个字节,代表接收方;

序号:所发送的数据的第一个字节的序号,代表数据发送的位置,由序号值+该数据的字节大小可得到下一次要发送的数据的序号;

确认号:占四个字节,是指期望收到下一次发送方所要发送的数据的第一个字节的序号;

数据偏移:TCP报文中数据部分距离首部的距离;

保留:占四位;

控制位:占8位,在传输数据过程中,用于传递控制标志位

 常用的控制位(可用于三次握手和四次挥手):

                       SYN(同步控制位),SYN=1时,代表发送一个请求连接

                       ACK(确认控制位),ACK=1时,代表同意当前发送方发来的确认

                      FIN(终止标志位),FIN=1时,代表发送一个释放连接的请求

窗口:窗口值可用于接收方根据自身缓存告知发送方"我"可以接受多大的数据包

设置滑动窗口可以有效的避免"流量控制"和"乱序重排",每次接受到来自接收方的确认,才能再次发送数据,发送数据到服务器应答这段时间(RTT)会浪费大量时间,而设置窗口,就可以在不需要接受应答的情况下,发送发方继续发送数据,直到达到窗口值,提高了吞吐量。

检验和:占两个字节,检验的范围包括首部和数据;

紧急指针:表明本报文段中有多少紧急数据。

TCP协议的可靠运输是通过接受确认,超时重传机制实现的;接收端接受到来自发送端发送的数据时,如果接收到了,会发送给发送端一个确认号,如果超过了重传超时的时间间隔,发送端就认为数据丢失,会重新发送,所以它是可靠的。

由于TCP的面向连接,所以它在发送数据之前,需要建立连接,数据传输结束后,需要释放连接,

其可靠性依赖于连接管理,确认应答,重传机制等,所以它会消耗较大内存,一般用于文件传输、发送和接收邮件、远程登录等场景。

由于TCP需要建立连接,确认应答,超时重传这些机制,会产生一个往返时间,所以它不适于即时通信。

UDP首部格式

UDP首部只占8个字节,由四个字段组成,各占2个字节

包括:源端口,目地端口,长度,检验和

UDP在传输数据之前不需要建立连接,不提供可靠性服务,接收方在在接受到发送方数据之后,不需要等待接收方的应答,但是可用于即时通信,例如QQ,直播这些场景。

3.其他特点:

TCP:面向连接的协议,在发送数据之前,必须建立连接;

是端对端的的连接,每一条TCP连接只能有两个端点(客户端,服务器端)。

面向字节流;

具备“可靠性传输”、“流量控制”、“拥塞控制”(慢开始、拥塞避免、快重传、快恢复)等功能;

首部开销较大。

UDP:在发送数据之前,不需要建立连接;

允许一对一,一对多,多对一,多对多的交互;(可用于广播,多播)

面向报文;

首部开销较小。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值