浏览器和网络(五)

131 阅读6分钟

前言

上一篇总结了一下浏览器输入url后的过程tcp的三次握手和四次挥手,这篇文章总结一下tcp和udp的区别OSI和TCP/IP模型。写的比较粗浅,也算是我学习日常的记录吧,错误和不足的地方大家还请各位大佬多多指教。

TCP和UDP的区别以及应用场景

TCP

传输控制协议(英语:Transmission Control Protocol,缩写:TCP)是一种面向连接的、可靠的、基于字节流传输层通信协议,由IETFRFC 793定义。在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能。用户数据报协议(UDP)是同一层内另一个重要的传输协议。

TCP结构如下,首部有20个字节,额外开销比较大

偏移字节0123
字节比特 0 1 2 3 4 5 6 7 8 910111213141516171819202122232425262728293031
00来源连接端口目的连接端口
432序列号码
864确认号码(当ACK设置)
1296资料偏移保留 0 0 0N SC W RE C EU R GA C KP S HR S TS Y NF I N窗口大小
16128校验和紧急指针(当URG设置)
20 ...160 ...选项(如果资料偏移 > 5,需要在结尾添加0。)

特点

  • TCP实现了数据传输时的各种控制功能,比如丢包时的重发功能,对包次顺序乱掉时的顺序控制,这些都是UDP协议实现不了的
  • TCP是一种面向有连接的协议,只有在确认对端通信时才会发送数据,可以减少流量的浪费
  • TCP在IP这种无连接的网络上也可以实现高可靠性的通信(主要通过校验和、序列号、确认应答、连接管理等方法)

UDP

用户数据报协议(英语:User Datagram Protocol,缩写:UDP;又称用户数据包协议)是一个简单的面向数据包通信协议,位于OSI模型传输层

UDP结构如下,头部只有4个字节,额外的开销很小

偏移字节0123
字节 0 1 2 3 4 5 6 7 8 910111213141516171819202122232425262728293031
00来源连接端口目的连接端口
432报文长度校验和

特点

  • UDP只提供数据的不可靠传递,它一旦把应用层传递给网络层的数据发送出去,就不保留数据备份,所以被认为是不可靠的协议
  • UDP在IP数据包头部只加入了复用和数据校验字段,对应用层的报文不合并不拆分
  • UDP也没有TCP的纠错功能,同时也避免了这部分的性能开销

区别

TCPUDP
可靠性可靠不可靠
双工性全双工一对多、一对一、多对一、多对多
连接性面向连接无连接
报文面向字节流面向报文
传输效率
流量控制滑动窗口
拥塞控制慢开始、拥塞避免、快恢复、快重传

应用场景

应用层协议应用传输层协议
FTP文件传输TCP
HTTP万维网TCP
SMTP电子邮件TCP
SSHTELENT的升级TCP
TELENT远程终端接入TCP
DNS域名服务器UDP
SNMP网络管理UDP
NFS远程文件服务器UDP

OSI协议、TCP/IP协议

OSI协议

开放式系统互联模型(英语:Open System Interconnection Model,缩写:OSI;简称为OSI模型)是一种概念模型,由国际标准化组织提出,一个试图使各种计算机在世界范围内互连为网络的标准框架。

OSI主要划分了七层,如下图:

image.png

- 应用层: 应用层和应用程序接口结合,提供常见的网络应用服务,如DNS

- 表示层: 把数据转换成能与接收者系统兼容的格式和传输的协议,比如数据压缩、数据加密、数据解密

- 会话层: 负责设置和维护连接中的两台计算机通信,主要功能有认证、权限、会话恢复

- 传输层: 提供应用程序端对端的通信,最主要的两个传输协议就是TCP和UDP

- 网络层: 提供路由和寻址功能,使两端能互连且决定最佳路径,还有一定的流量控制和拥塞控制能力

- 数据链路层: 负责网络寻址、错误侦错和纠错

- 物理层: 在局域网上发送数据帧,负责管理电脑通信设备和网络媒体之间的通信

TCP/IP协议

互联网协议套件(英语:Internet Protocol Suite,缩写IPS)[1]是网络通信模型,以及整个网络传输协议家族,为网际网络的基础通信架构。它常通称为TCP/IP协议族

TCP/IP协议分为四层

4应用层 application layer例如HTTPFTPDNS (如BGPRIP这样的路由协议,尽管由于各种各样的原因它们分别运行在TCP和UDP上,仍然可以将它们看作网络层的一部分)
3传输层 transport layer例如TCPUDPRTPSCTP (如OSPF这样的路由协议,尽管运行在IP上也可以看作是网络层的一部分)
2网络互连层 internet layer对于TCP/IP来说这是因特网协议(IP) (如ICMPIGMP这样的必须协议尽管运行在IP上,也仍然可以看作是网络互连层的一部分;ARP不运行在IP上)
1网络访问(链接)层 Network Access (link) layer例如以太网Wi-FiMPLS等。

区别

相同点:

- 都采用了分层设计

- 都提供了TCP和UDP两种连接协议

不同:

- OSI采用了七层模型,而TCP/IP采用了四层的设计

- 由于TCP/IP有一个相对较弱的会话层,由TCP和RTP下的打开和关闭连接组成,并且在TCP和UDP下的各种应用提供不同的端口号,这些功能能够由单个的应用程序(或者那些应用程序所使用的库)增加。与此相似的是,IP是按照将它下面的网络当作一个黑盒子的思想设计的,这样在讨论TCP/IP的时候就可以把它当作一个独立的层。

结语

写的不好,有错误的地方还请各位大佬多多指教,感恩家人🙏