自学内容网 自学内容网

【网络安全】TCP和UDP

一、TCP/UDP对比

1.共同点:

都是工作在TCP/IP体系结构的传输层的协议

工作主要都是把端口号往原始数据封装

在 TCP 协议中,原始数据指的是应用程序产生的需要通过网络进行传输的数据。这些数据可以是各种类型的信息,例如文本、图像、音频、视频等。
 
原始数据通常在应用程序中生成,并被传递给 TCP 协议进行封装和传输。TCP 协议会将原始数据与其他相关信息(如端口号、序列号、校验和等)一起组成 TCP 数据包。

2.区别:

  • TCP是面向连接的协议,而UDP是无连接的协议;
  • TCP协议的传输是可靠的,而UDP协议的传输 “尽力而为”;
  • TCP协议可以实现流控,而UDP不行;

流控:流量控制

我们在发送数据的时候,有的时候发送的太快,有的时候发送的太慢,我们要想办法控制一下这个速度,这点TCP可以做到,而UDP做不到。

流控(3)应该算是传输可靠性(2)中的一环,流量发的快一点或者慢一点,主要目的是保证对方能够正常收到这些信息,能够正常地处理这些信息,并且保证传输效率。所以有流控这个机制在里面,传输也会更可靠一点。

  • TCP可以分段,而UDP不行;

分段:拆分大的数据包

我们发数据的时候,这个数据包有可能很大,因为里面的数据内容有可能很多,TCP可以分段就是可以把这些很大的数据包拆分开,拆成一个一个的小段,然后再去分别发送过去,而UDP不行,多大就多大发。

  • TCP消耗资源较大,传输效率较低。UDP耗费资源较小,速度快;

3.TCP/UDP使用场景

  • TCP协议更适用于对传输可靠性要求较高,但是对传输效率和资源占用要求较低;(网页浏览、电子邮件传输和文件传输等);
  • UDP更适用于对传输效率要求较高,可靠性要求较低的场景;(即时通实现类:语音、视频、聊天、游戏、直播等);

什么是面向连接?

我们可以通过一个小游戏来理解一下:

 TCP面向连接小游戏

在正式传输数据之前,先使用预先的协议(TCP协议),建立点到点的链接。 

A跟B说:你准备好了吗?我要开始扔球了,然后B说:我准备好了。

有了这一来一回,A就可以给B扔球了。A给B的连接就相当于建立好了。这种情况下,A就可以给B扔球了。

如果B也想给A扔球,那B也要A给B说:你准备好了吗?我也要开始扔球了,然后A说:我准备好了。 有了这一来一回,B也可以给A扔球了。

所以数据传输其实是双向的,TCP协议建立好的通信通道其实是双向的,就是A可以给B扔球,小B也可以给A仍球,这个通道就是 “会话”。

什么是会话?

A可以给B发信息,那A就生成一条指向B的会话,B可以给A发信息,那B就生成一条指向A的会话。可以发送信息的这个通道,就可以把他理解为是一个会话。

TCP协议是面向连接的协议,在发送数据之前要先建立连接,而他建立的连接就是建立的一条双向会话。

TCP建立的连接实际建立了一个双向的会话连接,即通讯双方都可以向对方发送数据。

一张很刺激的图片:

2be060e12a4146d2abb209ffb0335b90.png

这张图可以在一定程度上可以反应出来TCP和UDP这两种协议的风格。

  • TCP比较沉稳,面向连接、速度慢、可靠传输;
  • UDP比较奔放,无连接、速度快、不可靠传输;

来看一下TCP和UDP这两个协议的包头,上面的图片中写着TCP-20字节头,UDP-8字节头。

往原始数据前面加的数据称之为头部,往后面加的称之为尾部。

TCP和UDP都是只给前面加,所以他们只有头部信息。

我们看一下他们头部都要封装哪些参数,哪些内容。

TCP协议头部:

44fac022fd414fb68edb9bbab9bf2edc.png

  • 源端口号:
  • 目的端口号
  • 序号
  • 确认序号
  • 首部长度
  • 保留
  • 窗口大小
  • 校验和
  • 紧急指针
  • 选项

封装图:


原文地址:https://blog.csdn.net/m0_63636799/article/details/137171212

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!