<del id="DPidM"><noscript id="DPidM"></noscript></del>
  • <ins id="DPidM"></ins>

          • <samp id="DPidM"></samp>
            |
            |
            |
            |
            公众号矩阵

            如何通俗地解释一下 TCP/UDP 协议和 HTTP、FTP、SMTP 等协议之间的区别?

            先来假设没有TCP,甚至没有IP层,只有MAC对应的数据链路层,HTTP等协议能跑多远!

            作者:车小胖谈网络来源:车小胖谈网络|2021-04-21 11:22

            先来假设没有TCP,甚至没有IP层,只有MAC对应的数据链路层,HTTP等协议能跑多远!

            直接把HTTP封装在Ethernet Frame 里,可以吗?

            当然可以,在同一个二层广播域里,通过MAC地址来识别对方,然后HTTP的数据通过网卡接口函数完成发送和接收。

            第二个问题:如何保证数据万无一失地到达对方?

            让网卡来保证数据的可靠传输吗?网卡只对Ethernet 帧头做解释,以太网头14个字节也没有哪个字段可以胜任这个可靠传输的任务,那HTTP是不是要自己实现数据传输得可靠机制,比如发送一段1000字节的数据,要等待对方给自己确认收到,然后再来发送,这样是可以保证数据可靠传输。

            同样FTP,STMP,POP3,BGP都是要保证数据可靠的传输,那他们是不是也要自己实现这些可靠的机制呢?

            必须的!

            换句话说,只要有一个应用,要可靠传输,必须由 application protocol 来实现!是不是很笨啊???这所有application protocol 的可靠传输机制是同样的实现,代码都应该类似,如果我们把这些被重用的代码封装起来,即接口函数API,让他实现数据的可靠传输,同时用一个标识符来表明这是哪个application protocol,是不是可行呢?

            当然可行了,快递公司不就是这样操作的嘛!

            这就是伟大TCP/IP协议的***所高度抽象出来的流量调度员:TCP!

            TCP

            它把可靠传输机制代码封装成了接口函数API,即socket , 同时用TCP Port来辨别其服务的application Protocol。而application protocol 只需要对自己的协议本身和协议数据做解释,完成端对端的会话。

            第二个问题:现在 Ethernet + TCP + application protocol ,这个包能跑多远?

            也就是一个广播域那么大的范围了吧?小样再怎么得瑟也逃不出广播域的圈圈!

            IP层就是来解决这个问题的,有了IP层可以让Internet 成为可能,一句广告词:impossible is nothing! 要知道IP就是 Internet Protocol 的缩写。

            你可能要问了, 我想要IP层,不想要TCP层,直接把数据封装在IP层可以吗?

            太可以了!不光可以,而且好多协议也是这么做的,OSPF,EIGRP,GRE,ESP,AH等协议都是这么做的,如果他们想保证可靠传输,他们自己用代码来实现,这当然可以。

            问题是IP只用一个字节来表示协议号,理论上只能辨识255种上层协议,资源非常紧张,而且都被知名的大牌协议所霸占着,比如TCP,ICMP,IGMP,包括上面提到的,哪里轮的上你哦!

            为了解决这个资源紧张问题,于是就有了另外一个小发明,只用来辨别application protocol 的小傀儡:UDP!

            UDP

            其实UDP除了提供一个Port来分辨application protocol , 确实没干点别的,但是Port 号占用2个字节,理论上可以分辨65535种 application protocol ,就这一条就可以让其功德圆满了,正是因为它不像TCP,是完全无状态协议,所以也深得一些应用程序的青睐,因为UDP无状态,IP也无状态,会话所有的状态都由application protocol 来进行控制,这也是一种选择。

            另外UDP-based 的应用可以实现可靠传输,比如TFTP,那就由TFTP自己来实现可靠传输;也可以把数据交给UDP,让其发送出去即可,对发送出去的数据不需要确认,同学们会问:这是哪种应用啊?语音流量,丢了就丢了,对方听不见大不了再说一遍。

            综述

            TCP提供一种可靠传输机制,有状态。

            UDP提供更多的门牌号来辨别上层的协议,无状态。

            【编辑推荐】

            1. HTTP请求的整个过程
            2. HTTPS学习总结拿走不谢
            3. 下一代 HTTP/3 协议将弃用 TCP 改用 QUIC
            4. 即将标准化的 HTTP/3 协议杂谈
            5. 你一定要知道,关于HTTPS的五大误区
            【责任编辑:武晓燕 TEL:(010)68476606】

            点赞 0
            分享:
            大家都在看
            猜你喜欢

            订阅专栏+更多

            16招轻松掌握PPT技巧

            16招轻松掌握PPT技巧

            GET职场加薪技能
            共16章 | 晒书包

            289人订阅学习

            20个局域网建设改造案例

            20个局域网建设改造案例

            网络搭建技巧
            共20章 | 捷哥CCIE

            645人订阅学习

            WOT2019全球人工智能技术峰会

            WOT2019全球人工智能技术峰会

            通用技术、应用领域、企业赋能三大章节,13大技术专场,60+国内外一线人工智能精英大咖站台,分享人工智能的平台工具、算法模型、语音视觉等技术主题,助力人工智能落地。
            共50章 | WOT峰会

            0人订阅学习

            视频课程+更多

            2019年软考网络工程师--基础知识精讲视频培训(第五版教程)

            2019年软考网络工程师--基础知识精讲视频培训

            讲师:小任老师1584628人学习过

            小白轻松学Spring Cloud

            小白轻松学Spring Cloud

            讲师:齐毅67108人学习过

            2020信息安全工程师精品视频教程

            2020信息安全工程师精品视频教程

            讲师:张建群71546人学习过

            读 书 +更多

            C#入门经典(第3版)

            本书将全面介绍C#编程的所有知识,共分为5篇:第1篇是C#语言:介绍了C#语言的所有内容,从基础知识到面向对象的技术,应有尽有。第2篇是Win...

            订阅51CTO邮刊

            点击这里查看样刊

            订阅51CTO邮刊

            51CTO服务号

            51CTO播客