传输层协议:TCP和UDP协议

TCP和UDP都是传输层协议,他们都属于TCP/IP协议族

目录

一、TCP协议

1.1 TCP协议的主要特点:

1.2 TCP的连接和断开:三次握手和四次挥手

1.3 TCP的适用场景:

1.4 基于TCP的协议:

1.5 TCP可靠性机制:

(1)确认应答机制:

(2)超时重传机制:

(3)连接管理机制:

(4)流量控制机制:

(5)拥塞控制机制:

1.6 TCP效率机制:

(1)滑动窗口

(2)延迟应答机制

(3)捎带应答机制

二、UDP协议

2.1 UDP协议的主要特点:

2.2 UDP的适用场景:

2.3 基于UDP的协议:

三、TCP和UDP的区别(重点)

五、TCP和UDP的优缺点:


一、TCP协议

TCP(Transmission Control Protocol),传输控制协议。是一种面向连接的、可靠的、基于字节流传输层通信协议,使用三次握手和四次挥手的连接管理机制。

传输数据时,可靠性和效率成反比,越可靠 效率越低,效率越高 可靠性越低。

TCP是综合考虑了两者,在可靠性和效率之间 取了一个平衡:不是保证绝对意义上的可靠,也不是保证绝对意义上的效率最高。

1.1 TCP协议的主要特点:

  1. 面向连接的;
  2. 可靠的;
  3. 基于字节流的方式;
  4. 提供拥塞控制;
  5. 一对一通信,每一条TCP连接只能有两个端点
  6. TCP提供全双工通信。TCP允许通信双方的应用进程在任何时候都能发送数据;
  7. TCP连接的两端都设有发送缓冲区和接收缓冲区,用来临时存放双方通信的数据。

1.2 TCP的连接和断开:三次握手和四次挥手

关于TCP的连接与断开(三次握手与四次挥手)以及相关问题写于另一篇博客,博客链接如下:TCP的连接管理机制:三次握手与四次挥手

1.3 TCP的适用场景:

  1. 浏览器:HTTP、HTTPS协议
  2. 传输文件:FTP协议
  3. 基于邮件传输:STMP协议
  4. QQ文件传输等

1.4 基于TCP的协议:

HTTP、HTTPS、FTP等传输文件的协议,SMTP(简单邮件传输协议) Telnet

1.5 TCP可靠性机制:

确认应答机制、超时重传机制、连接管理机制、流量控制机制、拥塞控制机制。

(1)确认应答机制:

发送的数据,接收端需要返回确认接收到数据报的应答。

(2)超时重传机制:

发送端超过一定的时限,没有接收到ack应答包,就会进行重传。

  • “一定的时限”——》动态变化的,跟网络环境(网速)有关,重传达到一定的次数,就会表示对方出现异常,关闭连接。
  • “没有收到ack应答包”——》可能出现:(1)发送数据丢包(2)ack应答包丢包
  • “重传”——》发送的数据包进行重新传输

(3)连接管理机制:

因为TCP的连接管理机制很重要且常考,所以重点写于另一篇链接如下:TCP的连接管理机制:三次握手与四次挥手 及相关问题

(4)流量控制机制:

背景:发送端发送速度 如果快于 接收端 程序读取速度,就可能导致接收端缓冲区被打满,进而引起一系列丢包,重传再次丢包的问题。

  • “程序读取速度”——》程序从缓冲区读取接受的数据
  • TCP协议首部:协议格式里面规定有16位窗口大小——>流量窗口大小
  • 接收端接收能力有限,主动地告诉发送端,自己的接收能力。
  • 接收能力——》接收端:接收缓冲区,剩余空间大小——》返回ack应答包,还会使用“窗口大小”字段来设置这个值
     

(5)拥塞控制机制:

背景:网络状态不明的情况下,贸然发送大量的数据报,就可能产生网络拥塞。类似于发快递,不清楚交通状况,就贸然发送大批量的货物,可能导致交通阻塞。

  • 大概的含义:发送端在发送数据前,先根据”拥塞窗口“来探探路。
  • “拥塞窗口”——》动态变化的

1.6 TCP效率机制:

滑动窗口、延迟应答机制、捎带应答机制。

(1)滑动窗口

作用:以并行的方式来发送数据报,减少等待的时间,提高效率。

  • “减少等待的时间”——》叠加等待的时间
  • “提高效率”——》提高数据传输的效率

这个过程类似于:

没有滑动窗口之前,网上购物只能收到一个再买下一个。

但是,有了滑动窗口之后:网上购物的 时候,可以同时买n个。

(2)延迟应答机制

背景:接收端返回流量窗口代表接收缓冲区的可用空间大小,如果立即返回,就不划算(立即返回的流量窗口大小就比较小);接收端可能接收速度还是比较快的,读走以后就可以设置的更大。

接收端返回的流量窗口,不是立即返回的,而是等待一定时间,这样返回的流量窗口大小就可能更大。

  • “等待一段时间”——》延迟应答的由来
  • “流量窗口”——》流量窗口的大小,是滑动窗口大小的决定因素之一;而滑动窗口的大小又是网络吞吐量的决定因素之一;所以,延迟应答是效率机制——延迟一定的时间,效率就更高。
  • 窗口越大,网络的吞吐量就越大,传输效率就越高。

(3)捎带应答机制

背景:不管是客户端还是服务端,每一端,既可以是发送端,也可以是接收端。

不管是客户端还是服务端,在某一端,接收到数据后,返回的ack应答包(作为接收端),可以和发送的数据报(作为发送端)合并在一起(捎带的方式)一起发送给对方。

二、UDP协议

UDP(User Datagram Protocol),用户数据报协议。是无连接的,基于报文的传输层协议,提供面向事务的 简单不可靠信息传送服务,UDP协议主要作用是将数据网络流量压缩成数据包的形式。

UDP的传输过程类似于“寄信”,只管发,不管是否能收到。

2.1 UDP协议的主要特点:

  1. 无连接;
  2. 不可靠。尽最大努力交付,不保证可靠性服务;
  3. 传输速度快,因为头部开销小 只有8字节;
  4. 没有拥塞控制,即使出现网络拥塞也不会降低发送速率;
  5. 支持一对一、一对多、多对多通信;
  6. 面向数据报,对应用层交下来的报文,不合并不拆分,保留原报文的边界。(不会出现粘包问题)

2.2 UDP的适用场景:

  1. 适用于对通信的质量要求不高,但实时性要求高的地方:
  2. QQ语音,QQ视频,直播,视频传输等等;
  3. 可以用于广播;

2.3 基于UDP的协议:

  • DNS(域名解析协议)
  • DHCP(动态主机配置协议)
  • TFTP(简单文件传输协议)
  • NFS(网络文件系统)
  • BOOTP(启动协议---用于无盘设备启动)

三、TCP和UDP的区别(重点)

1,连接:

  • TCP是面向连接的,而UDP是无连接的。(TCP发送前需要先建立连接,而UDP不需要)
  • TCP是面向连接的传输控制协议,而UDP提供了无连接的数据报服务。

2,可靠性:

  • TCP是可靠的,而UDP是不可靠的。
  • TCP提供可靠性服务,而UDP只是尽最大可能努力交付,不保证可靠性交付服务。

3,传输方式:

  • TCP是面向字节流的,而UDP是面向数据报的。(流模式与数据报模式)
  • TCP是流式传播的,没有边界,但保证顺序和可靠;UDP是一个包一个包发送的,有边界的,但可能会出现丢包和乱序
  • 所以TCP可能会产生粘包问题,而UDP不会。

4,逻辑信道:

  • TCP的逻辑信道是全双工的可靠信道,而UDP则是不可靠信道

5,连接对象个数:

  • TCP只能一对一通信,而UDP支持一对一、一对多、多对一和多对多的交互通信。

6,拥塞控制和流量控制:

  • TCP有拥塞控制和流量控制,保证了数据传输的安全性,而UDP没有,即使网络非常拥堵了,也不会影响UDP的发送效率。

7,接收和发送缓冲区:

  • TCP接收缓冲区和发送缓冲区都有,而UDP只有接收缓冲区 没有发送缓冲区。
  • 为什么UDP没有发送发送缓冲区?--UDP只管发,不管是否丢包。

8,首部开销:

  • 首部开销不同,TCP的首部开销最小20字节,开销大,而UDP的首部开销仅需要8字节,开销小。(所以UDP的传输速度比TCP快)

9,系统资源:

  • TCP对系统资源要求较多,UDP对系统资源要求较少。

10,传输大小限制:

  • TCP传输的大小是不限的,而UDP传输的大小是受限的。
  • TCP对数据包的大小没有限制,不需要自己切分数据包,TCP底层程序已经做好切分,而UDP是基于数据包构建,有大小限制,需要自己切割,不切割导致太大容易丢包;

11,应用场景不同

  • TCP适用于对数据传输的质量有较高的要求、但是对实时性要求不高的场景。(适用于可靠性比较高的地方)比如HTTP、HTTPS、FTP等传输文件的协议以及POP、SMTP等邮件传输的协议,应用TCP协议。
  • UDP适用于实时性要求高,允许少量丢包的场景。(只对数据传输的 实时性要求较高,但不对传输质量有要求)比如视频传输、实时通信、语音电话、直播、语音广播等场景,应用UDP协议。

12,安全性:

  • TCP传输机制多,容易被利用,例如:DOS、DDOS攻击,因此在安全性上不如UDP
  • UDP没有TCP这么多机制,被利用的机会就会少很多,但是UDP也不是绝对安全的,也会被攻击。
  • UDP比TCP更加安全。

五、TCP和UDP的优缺点:

TCP的优点:可靠、稳定。

TCP的缺点:速度慢,效率低;占用系统资源高;容易被攻击;可能出现粘包问题。

UDP的优点:快,比TCP安全,不会出现粘包问题。

UDP的缺点:不可靠;不稳定。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值