[TOC]
## TCP报文请求头部
![](https://img.kancloud.cn/e9/90/e990d6fd5909fd3be3c6984d0ee35c55_700x289.jpg)
![](https://img.kancloud.cn/2a/fc/2afc31ad92e05f832a24acade967860a_699x336.png)![](https://img.kancloud.cn/8e/e7/8ee7b559881e1b8b3e44c79b4a33be6a_674x360.png)
## UDP报文请求头部
![](https://img.kancloud.cn/2a/52/2a527fec04505f1d7fd09b24d77c00da_892x379.png)
1. 源端口号,目的端口号:发送端和接收端的端口号
2. 长度:UDP用户数据报的长度,最小值是8字节(只有首部)
3. 校验和:检测UDP用户数据报在传输中是否出错,出错就丢弃
## TCP和UDP有啥区别?
\*\* UDP 的主要特点\*\*
* UDP 是`无连接的`,即发送数据之前不需要建立连接(发送数据结束时也没有连接可释放),减少了开销和发送数据之前的时延
* UDP 使用`尽最大努力交付`,即不保证可靠交付,主机不需要维持复杂的连接状态表
* UDP 是`面向报文`的,发送方的 UDP 对应用程序交下来的报文,在添加首部后就向下交付 IP 层。UDP 对应用层交下来的报文,既不合并,也不拆分,而是`保留这些报文的边界`
* UDP`没有拥塞控制`,网络出现的拥塞不会使源主机的发送速率降低。这对某些实时应用是很重要的
* UDP 支持一对一、一对多、多对一和多对多的交互通信
* UDP 的`首部开销小`,只有8个字节,比 TCP 的20个字节的首部要短
\*\* TCP 的主要特点\*\*
* TCP 是`面向连接的运输层协议`。应用程序在使用 TCP 协议之前,必须先建立 TCP 连接。在传送数据完毕后,必须释放已经建立的 TCP 连接
* 每一条 TCP 连接只能有两个`端点`,每一条 TCP 连接只能是`点对点`的(一对一)
* TCP 提供`可靠交付`的服务。通过 TCP 连接传送的数据,无差错、不丢失、不重复,并且按序到达
* TCP 提供`全双工通信`。TCP 允许通信双方的应用进程在任何时候都能发送数据。TCP 连接的两端都设有发送缓存和接受缓存,用来临时存放双向通信的数据
* `面向字节流`。TCP 中的“流”指的是`流入到进程或从进程流出的字节序列`
| 对比项 | UDP | TCP |
| --- | --- | --- |
| 连接性 | 无连接 | 面向连接 |
| 可靠性 | 不可靠 | 可靠 |
| 报文 | 面向报文-数据报模式 | 面向字节流-流模式 |
| 双工性 | 一对一、一对多、多对一、多对多 | 全双工 |
| 流量控制 | 无 | 有(滑动窗口) |
| 拥塞控制 | 无 | 有(慢开始、拥塞避免、快重传、快恢复) |
| 传输速度 | 快 | 慢 |
| 资源要求 | 较少 | 较多 |
| 首部开销 | 8字节 | 20字节 |
| 数据顺序 | 不保证 | 保证 |
## UDP、TCP适用场景
UDP 适用场景
面向数据报方式、网络数据大多为短消息、拥有大量 Client、对数据安全性无特殊要求、网络负担非常重,但对响应速度要求高
TCP 适用场景
文件传输(FTP HTTP 对数据准确性要求较高,速度可以相对慢)
发送或接收邮件(POP IMAP SMTP 对数据准确性要求高,非紧急应用)
远程登录(telnet SSH 对数据准确性有要求,有连接的概念)
- 消息队列
- 为什么要用消息队列
- 各种消息队列产品的对比
- 消息队列的优缺点
- 如何保证消息队列的高可用
- 如何保证消息不丢失
- 如何保证消息不会重复消费?如何保证消息的幂等性?
- 如何保证消息消费的顺序性?
- 基于MQ的分布式事务实现
- Beanstalk
- PHP
- 函数
- 基础
- 基础函数题
- OOP思想及原则
- MVC生命周期
- PHP7.X新特性
- PHP8新特性
- PHP垃圾回收机制
- php-fpm相关
- 高级
- 设计模式
- 排序算法
- 正则
- OOP代码基础
- PHP运行原理
- zavl
- 网络协议new
- 一面
- TCP和UDP
- 常见状态码和代表的意义以及解决方式
- 网络分层和各层有啥协议
- TCP
- http
- 二面
- TCP2
- DNS
- Mysql
- 锁
- 索引
- 事务
- 高可用?高并发?集群?
- 其他
- 主从复制
- 主从复制数据延迟
- SQL的语⾔分类
- mysqlQuestions
- Redis
- redis-question
- redis为什么那么快
- redis的优缺点
- redis的数据类型和使用场景
- redis的数据持久化
- 过期策略和淘汰机制
- 缓存穿透、缓存击穿、缓存雪崩
- redis的事务
- redis的主从复制
- redis集群架构的理解
- redis的事件模型
- redis的数据类型、编码、数据结构
- Redis连接时的connect与pconnect的区别是什么?
- redis的分布式锁
- 缓存一致性问题
- redis变慢的原因
- 集群情况下,节点较少时数据分布不均匀怎么办?
- redis 和 memcached 的区别?
- 基本算法
- MysqlNew
- 索引new
- 事务new
- 锁new
- 日志new
- 主从复制new
- 树结构
- mysql其他问题
- 删除
- 主从配置
- 五种IO模型
- Kafka
- Nginx
- trait
- genergtor 生成器
- 如何实现手机扫码登录功能
- laravel框架的生命周期