TCP 和 UDP 协议详解

news/2024/5/17 18:20:41 标签: TCP, UDP, 三次握手, 四次挥手

文章目录

  • 1 概述
  • 2 TCP 协议
  • 3 UDP 协议
    • 3.1 传输头格式
  • 4 扩展
    • 4.1 常用端口号
    • 4.2 TCPUDP 区别

1 概述

传输层协议
TCP:Transmission Control Protocol,传输控制协议,面向连接,可靠
UDP:User Datagram Protocol,用户数据报协议,无连接,不可靠
目的:在程序之间传输数据

TCP__11">2 TCP 协议

2.1 报文格式

在这里插入图片描述

在这里插入图片描述

  • 蓝色背景为重点了解部分
  • (1)源端口(16 位):数据从哪里来
  • (2)目标端口(16 位):数据到哪里去
  • (3)序号(32 位,seq):TCP 将要传输的每个字节都进行编号,序号是本报文段发送的数据组的第一个字节的编号,序号可以保证传输信息的有效性。比如:一个报文段的序号为 300,此报文段数据部分共有 100 字节,则下一个报文的序列号为 401
  • (4)确认号(32 位,ack):
    • 表明该序号之前的所有数据已经正确无误的收到
    • 指明下一个期待收到的序号(ack = seq + 1)
  • (5)首部长度(4 位):表示该 TCP 头部有多少个 32 位(有多少个 4 字节)
  • (6)保留字段(6 位):未用,所有实现必须把这个字段置全 0
  • (7)标志字段(6 位):为 1 时,有效
    • URG:紧急指针有效
    • ACK:接收序号有效
    • PSH:推进功能有效
    • RST:连接复位为初始状态,通用用于连接故障后的恢复
    • SYN:对序号同步,用于连接的建立
    • FIN:数据发送完,连接可以释放
  • (8)窗口(16 位):为流控分配的信息量
  • (9)校验和(16 位):段中所有 16 位字按模 2 16 − 1 2^{16} - 1 2161 相加的和,然后取 1 的补码
  • (10)紧急指针(16 位):从发送顺序号开始的偏置值,指向字节流的一个位置,此位置之前的数据是紧急数据
  • (11)选项:目前只有一个任选项,即建立连接时指定的最大段长

2.2 三次握手,建立连接

在这里插入图片描述

2.3 四次挥手,断开连接

在这里插入图片描述

2.4 窗口机制

在这里插入图片描述

UDP__51">3 UDP 协议

3.1 传输头格式

在这里插入图片描述

4 扩展

4.1 常用端口号

  • 0 ~ 1023:系统端口,这些端口只有系统特许的进程才能使用
  • 1024 ~ 5000:临时端口,一般的应用程序使用
  • 5001 ~ 65535:服务器(非特权)端口,用来给用户自定义端口
常用端口号应用说明
20FTPFile Transfer Protocol,文件传输协议,用于 数据传输
21FTPFile Transfer Protocol,文件传输协议,用于 控制信息和数据能够同时传输
80HTTPHyper Text Transport Protocol,超文本传输协议

TCP__UDP__67">4.2 TCPUDP 区别

TCPUDP
是否连接面向连接无连接
传输可靠性可靠的不可靠的
应用场景传输大量数据传输少量数据
速度

http://www.niftyadmin.cn/n/323356.html

相关文章

网络基本知识分享

目录 1.IP地址 2.端口号 3.协议 4.协议分层 5.Tcp/Ip五层网络模型 5.1 应用层 5.2 传输层 5.3 网络层 5.4 数据链路层 5.5 物理层 6.封装和分用 6.1 封装 6.1.1 应用层拿到数据 6.1.2 向下传递给传输层 6.1.3 继续向下传递给网络层 6.1.4 继续向下传递给数据链…

登录的两种方式

Cookie 起源:「购物车」功能需求 工作机制 1.服务器需要客户端保存的内容,放在set-cookie headers里返回,客户端会自动保存 2.客户端保存的cookies,会在之后的所有请求里都携带进cookie header里发送给服务器 3.客户端保存coo…

前端开发推荐vscode安装什么插件?

前言 可以参考一下下面我推荐的插件,注意:插件的目的是用于提高开发的效率,节约开发的时间,像类似检查一些bug、拼写错误等这些可以使用插件快速的识别,避免在查找错误上浪费过多的时间,但切记不要过度依赖…

【LeetCode: 97. 交错字符串 | 暴力递归=>记忆化搜索=>动态规划 | 位置对应】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

KubeCon EU 2023 落幕,哪些技术趋势值得关注?

KubeConCloudNativeCon 是云原生领域的技术盛会,上个月月末,在荷兰阿姆斯特丹举办的欧洲 KubeConCloudNativeCon 刚刚落下帷幕,此次大会吸引了10000多名参会者以及200多家企业,其中58%的参会者是首次参会。这不仅反映了云原生领域…

如何在项目中自定义注解实现权限数据管理案例

如何在项目中自定义注解实现权限数据管理案例 一、准备工程基本功能1. 创建工程并添加依赖2. 配置数据库信息3. Mybatis-Plus 代码生成器生成基本项目结构4. 因为项目中引入了spring-security,所有接口被保护了,所以用户实体和service分别实现UserDetail…

Linux指令运行原理和权限

Linux指令运行原理和权限 一.命名行解释器二.权限1.用户分类2.什么是权限3.增删权限4.更改权限的拥有者5.三个概念1.权限掩码2.目录权限3.粘滞位 三.权限总结 一.命名行解释器 那么命令行解释器存在的意义:1.进行命令的解释。2.保护os,对于非法的请求&am…

flink入门

flink安装 flink本地安装 demo运行 本地模式安装 | Apache Flink flink1.13.1为例: cd /opt wget https://mirrors.advancedhosters.com/apache/flink/flink-1.13.1/flink-1.13.1-bin-scala_2.12.tgz tar zxf flink* rm -rf flink*.tgz mv flink* flink vim /etc/prof…