学无先后,达者为师

网站首页 编程语言 正文

TCP协议和UDP协议

作者:MM呦 更新时间: 2022-09-25 编程语言

文章目录

    • @[TOC](文章目录)
  • 一、TCP协议
    • 1.TCP协议组成
    • 2.连接管理
      • 三次握手
      • 四次挥手
  • 二、UDP协议
    • 1.UDP协议组成
    • 2.使用场景
  • TCP协议和UDP协议的区别

一、TCP协议

1.TCP协议组成

在了解TCP协议时,先了解TCP协议由哪几部分组成。TCP协议由:报文首部、数据部分组成,那么在协议中我们关心的则是报文首部。首部有几下组成:

  • 固定首部
    • 源端口
      • 发送方的端口号
    • 目的端口
      • 接收方的端口号
    • 序号
      • 表明发送哪部分数据
    • 确认号
      • 确认前面的数据已收到并希望接下来接收的数据部分
    • 数据偏移
      • 表明报文首部的大小,从哪开始是数据部分
    • 报留
      - 未利用,作为备用
    • 控制位
      • URG:表明紧急字段有效
      • ACK:用于确认数据是否收到
      • PSH:需要尽快交接,不用等待缓存池满后在交接
      • RST:表明需要重新建立连接
      • SYN:建立连接时,SYN=1表明请求连接
      • FIN:用于断开连接,FIN=1表明断开连接
    • 窗口
      • 告知发送方,接收方可接收数据的大小
    • 检验和
      • 确保数据数量是否正确
    • 紧急指针
      • 表明是紧急报文,需要加急无需等待
  • 可变首部
    在这里插入图片描述

2.连接管理

三次握手

TCP协议的三次握手才正式建立客户端和服务器端的连接,那么是如何实现的呢?通过报文首部的控制位,上文提到SYN和ACK两个状态位来建立连接。

  • 首先客户端向服务器端发起建立连接的请求,则报文首部的控制位为SYN=1,ACK=0;
  • 服务器接收到请求后同意连接请求,则报文首部的控制位为SYN=1,ACK=1;
  • 客户端收到服务器发送的同意连接后,再发送报文表明已经知道可以连接,则控制位为SYN=0,ACK=1;

四次挥手

既然建立连接都有仪式感,那么断开时依旧存在仪式感通过四次挥手表明正式断开连接。通过报文首部的控制位的FIN和ACK来实现。

  • 客户端向服务器端发起断开连接的请求,则报文首部的控制位为FIN=1,ACK=0;
  • 服务器接收请求后确认收到,则报文首部的控制位为FIN=0,ACK=1;
  • 服务器同意断开连接,则报文首部的控制位为FIN=1,ACK=1;
  • 客户端收到服务器端的断开连接后会再一次向服务器发送表明收到同意断开连接的请求,则报文首部的控制位为FIN=0,ACK=1;

二、UDP协议

1.UDP协议组成

UDP协议依旧是由两部分组成:UDP首部、数据部分。UDP的首部由:源端口、目的端口、长度、检验和组成。相比较TCP协议的首部,UDP协议的首部尤为显的简单,因此UDP协议的传输速度要快于TCP协议的传输。

2.使用场景

  • 可适用于音频,视频通话,直播等场景
  • 适用于发送的数据包较少的情况下
  • 可适用于一对多的情况下(广播机制)

TCP协议和UDP协议的区别

  • 可靠性
    • TCP协议具有面向连接且具有可靠性的传输
    • UDP协议是无连接不具备可靠性的传输
  • 资源消耗
    • TCP协议占用的系统资源多于UDP协议,从上文所提及的首部组成就可以看出。TCP协议首部最小占用20字节,最多占用60字节,二UDP协议的首部只有8字节。
  • 传播形式
    • TCP协议只支持单播传输,而UDP协议支持单播,多播,广播机制的传输
  • 传输速度
    • 当然UDP协议的传输速度快于TCP协议的传输
  • 传输形式
    • TCP协议是面向字节流,UDP协议是面向数据报
  • 使用场景
    • TCP协议多用于文件传输、邮件传输、远程登录等场景
    • UDP协议多用于音频,视频,直播等场景
  • 其他特性
    • TCP协议还提供拥塞控制、流量控制,全双工通信等都是来维护TCP协议的可靠性

原文链接:https://blog.csdn.net/qq_55135629/article/details/126996687

栏目分类
最近更新