前言
上一篇总结了一下浏览器输入url后的过程和tcp的三次握手和四次挥手,这篇文章总结一下tcp和udp的区别和OSI和TCP/IP模型。写的比较粗浅,也算是我学习日常的记录吧,错误和不足的地方大家还请各位大佬多多指教。
TCP和UDP的区别以及应用场景
TCP
传输控制协议(英语:Transmission Control Protocol,缩写:TCP)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能。用户数据报协议(UDP)是同一层内另一个重要的传输协议。
TCP结构如下,首部有20个字节,额外开销比较大
| 偏移 | 字节 | 0 | 1 | 2 | 3 | ||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 字节 | 比特 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
| 0 | 0 | 来源连接端口 | 目的连接端口 | ||||||||||||||||||||||||||||||
| 4 | 32 | 序列号码 | |||||||||||||||||||||||||||||||
| 8 | 64 | 确认号码(当ACK设置) | |||||||||||||||||||||||||||||||
| 12 | 96 | 资料偏移 | 保留 0 0 0 | N S | C W R | E C E | U R G | A C K | P S H | R S T | S Y N | F I N | 窗口大小 | ||||||||||||||||||||
| 16 | 128 | 校验和 | 紧急指针(当URG设置) | ||||||||||||||||||||||||||||||
| 20 ... | 160 ... | 选项(如果资料偏移 > 5,需要在结尾添加0。) |
特点
- TCP实现了数据传输时的各种控制功能,比如丢包时的重发功能,对包次顺序乱掉时的顺序控制,这些都是UDP协议实现不了的
- TCP是一种面向有连接的协议,只有在确认对端通信时才会发送数据,可以减少流量的浪费
- TCP在IP这种无连接的网络上也可以实现高可靠性的通信(主要通过校验和、序列号、确认应答、连接管理等方法)
UDP
用户数据报协议(英语:User Datagram Protocol,缩写:UDP;又称用户数据包协议)是一个简单的面向数据包的通信协议,位于OSI模型的传输层。
UDP结构如下,头部只有4个字节,额外的开销很小
| 偏移 | 字节 | 0 | 1 | 2 | 3 | ||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 字节 | 位 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
| 0 | 0 | 来源连接端口 | 目的连接端口 | ||||||||||||||||||||||||||||||
| 4 | 32 | 报文长度 | 校验和 |
特点
- UDP只提供数据的不可靠传递,它一旦把应用层传递给网络层的数据发送出去,就不保留数据备份,所以被认为是不可靠的协议
- UDP在IP数据包头部只加入了复用和数据校验字段,对应用层的报文不合并不拆分
- UDP也没有TCP的纠错功能,同时也避免了这部分的性能开销
区别
| TCP | UDP | |
|---|---|---|
| 可靠性 | 可靠 | 不可靠 |
| 双工性 | 全双工 | 一对多、一对一、多对一、多对多 |
| 连接性 | 面向连接 | 无连接 |
| 报文 | 面向字节流 | 面向报文 |
| 传输效率 | 低 | 高 |
| 流量控制 | 滑动窗口 | 无 |
| 拥塞控制 | 慢开始、拥塞避免、快恢复、快重传 | 无 |
应用场景
| 应用层协议 | 应用 | 传输层协议 |
|---|---|---|
| FTP | 文件传输 | TCP |
| HTTP | 万维网 | TCP |
| SMTP | 电子邮件 | TCP |
| SSH | TELENT的升级 | TCP |
| TELENT | 远程终端接入 | TCP |
| DNS | 域名服务器 | UDP |
| SNMP | 网络管理 | UDP |
| NFS | 远程文件服务器 | UDP |
OSI协议、TCP/IP协议
OSI协议
开放式系统互联模型(英语:Open System Interconnection Model,缩写:OSI;简称为OSI模型)是一种概念模型,由国际标准化组织提出,一个试图使各种计算机在世界范围内互连为网络的标准框架。
OSI主要划分了七层,如下图:
- 应用层: 应用层和应用程序接口结合,提供常见的网络应用服务,如DNS
- 表示层: 把数据转换成能与接收者系统兼容的格式和传输的协议,比如数据压缩、数据加密、数据解密
- 会话层: 负责设置和维护连接中的两台计算机通信,主要功能有认证、权限、会话恢复
- 传输层: 提供应用程序端对端的通信,最主要的两个传输协议就是TCP和UDP
- 网络层: 提供路由和寻址功能,使两端能互连且决定最佳路径,还有一定的流量控制和拥塞控制能力
- 数据链路层: 负责网络寻址、错误侦错和纠错
- 物理层: 在局域网上发送数据帧,负责管理电脑通信设备和网络媒体之间的通信
TCP/IP协议
互联网协议套件(英语:Internet Protocol Suite,缩写IPS)[1]是网络通信模型,以及整个网络传输协议家族,为网际网络的基础通信架构。它常通称为TCP/IP协议族
TCP/IP协议分为四层
| 4 | 应用层 application layer | 例如HTTP、FTP、DNS (如BGP和RIP这样的路由协议,尽管由于各种各样的原因它们分别运行在TCP和UDP上,仍然可以将它们看作网络层的一部分) |
|---|---|---|
| 3 | 传输层 transport layer | 例如TCP、UDP、RTP、SCTP (如OSPF这样的路由协议,尽管运行在IP上也可以看作是网络层的一部分) |
| 2 | 网络互连层 internet layer | 对于TCP/IP来说这是因特网协议(IP) (如ICMP和IGMP这样的必须协议尽管运行在IP上,也仍然可以看作是网络互连层的一部分;ARP不运行在IP上) |
| 1 | 网络访问(链接)层 Network Access (link) layer | 例如以太网、Wi-Fi、MPLS等。 |
区别
相同点:
- 都采用了分层设计
- 都提供了TCP和UDP两种连接协议
不同:
- OSI采用了七层模型,而TCP/IP采用了四层的设计
- 由于TCP/IP有一个相对较弱的会话层,由TCP和RTP下的打开和关闭连接组成,并且在TCP和UDP下的各种应用提供不同的端口号,这些功能能够由单个的应用程序(或者那些应用程序所使用的库)增加。与此相似的是,IP是按照将它下面的网络当作一个黑盒子的思想设计的,这样在讨论TCP/IP的时候就可以把它当作一个独立的层。
结语
写的不好,有错误的地方还请各位大佬多多指教,感恩家人🙏