IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> TCP与UDP的区别 -> 正文阅读

[网络协议]TCP与UDP的区别

TCP协议概述

  • TCP协议全称Transmission Control Protocol(传输控制协议),它是传输层协议。
  • TCP协议是一个点对点的协议、每一个TCP连接都有一个发送方和一个接收方,在每次进行数据传输之前都需要建立TCP连接。
  • TCP是面向字节流的协议。我们要传输的数据最终都要被转换成字节流,才能完成传输。
  • TCP协议具备可靠性传输、拥塞控制、流量控制等功能。

TCP协议的首部格式

TCP协议的首部格式为:固定长度的20字节+选项(长度可变),其大致分配如下:

端口和目的端口源

分别表示发送方端口和接受方端口

序号

表示数据部分的第一个字节的序号

确认号

表示当接受方收到发送方的数据后,希望发送方下一次发送数据的第一个字节的序号

数据偏移

是一个4位的二进制值,表示的是TCP首部的大小,单位是4个字节。四位二进制表示的最大值是1111,也就是TCP首部最大为60字节,出去固定长度的20字节外,长度可变的选项最大为40字节。

保留

保留为今后使用,一般设置为0

控制位

控制位表示的是一个个的状态值。URG如果为1,说明这是一个紧急数据包,那么这个数据包的优先级高,无需排队,直接发送。ACK如果为1表示确认收到,SYN=1表示这是一个建立请求的数据包。如果对方同意,那么恢复的数据包中SYN=1,ACK=1。RST=1表示TCP连接出现了严重错误。FIN=1表示数据传输完毕,断开连接。

窗口

窗口值是作为让对方设置其发送窗口的大小的数值,因为对方的接收缓存是有限的。所以要根据其就收数据的能力来设置发送方窗口的大小。

检验和

检验和检验的区域包括首部和数据部分

紧急指针

选项?

填充

三次握手

第一次握手,客户端发送一个SYN=1,ACK=0,seq = x的请求连接数据包给服务器。

第二次握手,当客户端发现这是一个请求连接的数据包,同意连接就像客户端发送一个SYN=1,ACK=1,ack=x+1,seq = y的数据包

第三次握手,客户端收到服务器发送的同意连接的数据包后,发送一个SYN = 0,ACK=1,seq = x+1,ack = y+1的数据包,如此三次握手完成,客户端与服务器成功建立连接,发送数据。

四次挥手

第一次挥手,客户端发送FIN=1,ACK=0,seq = x表示客户端希望断开连接。

第二次挥手,服务器发送FIN=0,ACK=1,ack=x+1,seq=u;表示服务器同意将连接断开,然后服务器继续发送它为发送完的数据。

第三次挥手,服务器发送FIN=1,ACK=1,ack=u+1,seq=w;表示所有的数据已经发送完毕,正式断开连接。

第四次挥手,客户端发送FIN= 0,ACK=1;表示同意服务器断开连接,正式断开。

重传机制

重传超时

发送方在重新发送数据之前,等待接收方发送确认收到之间的时间间隔,如果超过了这个时间间隔,就会进行超时重传。

超时重传

在重传超时的时间间隔内,没有收到接收端确认收到的数据包,就会分为之前的数据包丢失,如此发送端就会重新发送数据包。

快速重传

发送端一次发送多个数据包,如果连续三次收到接收端发送的相同的确认收到数据包,发送端就会就知道那个数据包丢失了,就会对该数据包进行重传,但是缺点是,不知道重传一个,还是之后的多个。

SACK方法


SACK方法在选项里加入一个SACK的东西,把缓存的“地图”(记录着哪些收到,哪些没有收到)发送给对方,这样对方就会根据这个地图把没有收到的数据包进行重传。

拥塞控制的四个算法

慢开始

发送端最开始执行慢开始,一开始只发送一个数据包,收到接受反的确认后,发送两个,再收到对方的确认后,发送4个,依次递增;

避免拥塞

给慢开始设置一个门限值ssthresh,当达到这个门限值是,数据包的数量不在以2倍增加,而是依次加1,如果出现了超时,就另ssthresh=当前数据包数量/2然后进入快开始

快重传

一旦发送方收到接收方发送三个相同的确认数据包,说明有数据包出现了丢失,发送端就会快速对这个数据包进行重传。

快恢复

一旦发送端收到接收端发送三个相同的确认数据包。说明出现了数据包丢失,这是将每次发送的数据包数量减半,同时把ssthresh的值也设置为这个,然后执行避免拥塞算法(加法当大),每次对发送的数据包数量加1。

UDP协议概述?

UDP协议全称User Datagram Protocol,它不提供复杂的控制机制,在出现网络拥堵的情况下,UDP协议也不进行流量监控等避免网络拥堵的行为。即使出现了数据丢包,也不进行重传,当数据包的顺序出现了混乱,也没有纠正功能,但它的优点是效率高。性能开销小。

UDP协议的特点

面向报文传输,不具备可靠性,也不使用拥塞控制,适合多媒体通信的要求。

支持一对一,一对多,多对一,多对多。

UDP首部小,占8个字节。

TCP协议与UDP协议的区别

  • TCP协议是面向连接的而UDP协议无连接;
  • TCP协议安全可靠,UDP协议不可靠;
  • TCP以字节流的形式传输,UDP协议按照数据报文段的形式传输;
  • TCP的传输效率低,UDP的传输效率高;
  • TCP所需要的的资源多;UDP协议需要的资源少;
  • TCP的首部大小为20-60字节,UDP的首部为8字节;
  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-09-24 21:27:49  更:2022-09-24 21:29:49 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 13:17:49-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码