udp协议与tcp协议的主要区别(通俗地解释一下)(1)

首先 TCP/UDP 和 HTTP/FTP/SMTP 不属于同一层。 TCP/UDP 属于 OSI 模型的第四层传输层,HTTP/FTP/SMTP 才是属于应用层。

我就用代码组织结构来解释吧。通常我们会把可以被复用的代码封装成一个模块,这个模块提供的功能通常是业务无关的,只是用来实现一些基础功能的,比如写文件、读文件,这个模块不会关心读写的是 MP3 文件还是 TXT 文件。

不同的业务模块甚至功能完全不同的两个软件(比如一个音乐播放器和一个文本阅读器)就可以使用这个模块的『文件读写功能』,因为音乐软件需要打开 MP3 文件,而文本阅读器需要打开 TXT 文件,这两个软件使用了同一个『文件读写模块』实现了基础的文件读取功能,进而实现它们各自特有的功能:播放音乐和显示文本。

TCP 就相当于例子中『文件读写模块』,HTTP 就相当于音乐播放器/文本阅读器。

也可以这样理解整个 OSI 模型,越往下层走,数据的封装越原始、功能越单一,而这些下层的东西是实现大多数需要数据传输的应用必不可少的基础。

像其中一个答案里说的,你甚至可以基于 OSI 第二层数据链路层实现 HTTP 协议,这样你首先得自己实现所有 IP 和 TCP 已经实现的功能(数据切分、数据包re-ordering,数据包重传等等),才能够真正实现一个可用可靠的 HTTP。

网络协议是通信计算机双方必须共同遵从的一组约定。如怎么样建立连接、怎么样互相识别等。只有遵守这个约定,计算机之间才能相互通信交流。它的三要素是:语法、语义、时序。不同的协议请见对应的RFC。

TCP和UDP属于TCP/IP协议族的传输层协议,可以比喻为火车和高铁,一个可靠,一个不可靠。HTTP, FTP,SMTP属于应用层的封装协议,这些协议在传输协议有对应的端口,比如HTTP对应TCP的80端口,FTP对应TCP的21和22端口,SMTP对应TCP的25端口。

应用层协议规定了不同应用的数据的封装格式,可以理解为货物的包装以及标签等信息,当用操作应用产生数据时,用户终端内部会根据应用的不同选择对应的应用层协议对数据进行封装,然后经由对应的传输层协议进行端到端的传输,到达对端,再根据不同的应用解封装,交个对端的应用。当然应用层的数据在传输期间还要经过网络层和数据链路层的处理,这里就不多说了。

更多相关内容可点击疯猫网络官网:https://www.loscat.com/

udp协议与tcp协议的主要区别(通俗地解释一下)(2)

,