TCP/IP协议,你一定经常听说吧,其中TCP(Transmission Control Protocol)称为传输控制协议,IP(Internet Protocol)称为因特网互联协议,好吧,这都是什么2B名字,根本不知所云,这个时候,计算机科学对于一个没有经过深入研究的人,毫无用户体验可言。

其实TCP/IP协议,是一个协议簇,就是一大堆协议的集合,这一大套协议定义了整个互联网通信的基础,比如一次网络链接要经过哪些步骤,一块数据 传输过程中应该如何解释,这块数据该如何展示给编程者等等问题。就好比小时候玩过家家的游戏,谁负责当爸,谁负责当妈,谁负责当儿子,都有明确的指派,谁 负责买菜,买菜之后的钱交给谁来管理,如果没花了,怎么办,每天应该几点起床,起床之后应该谁叠被,都会明确指出,每个人都会默默遵从人物角色和规则。 TCP/IP整个协议集合大概做的就是这个事情,他包含了很多个不同的角色(对应于协议),并定义好了数据如何传输,不同角色之间如何协商。

理解了TCP/IP是什么,你应该可以看懂一些简单的技术博客或百度百科里面的一些描述了,时时刻刻认为,它里面包涵很多个协议,这些协议就是一整套规则,它定义了整个互联网如何连接,如何协商的最基础规则。

TCP/IP协议又分为了4层,分别为应用层,传输层,IP层,物理层。

重点介绍下传输层,也就是TCP,UDP两个协议,也是今天最想描述清楚的。TCP的英文前面抄写过了,UDP(User Datagram Protocol),也是读过之后根本不懂啥意思了。

反正这两个协议,是用来传输数据的,因为他们叫传输层嘛,那不做这个事情,毫无用处了。

我们想象一个场景,网络中任意两个端要通信,会采用什么样的传输方式呢?

想象下人类之间的通信吧。

第一种是拨电话,我拨通了你的手机号码,直到你回答“喂,你好”,我听到了这个话之后,我们之间才继续进行交谈。

第二种是发短信,我给你的手机号码发送一条短信,然后就没有然后了,有可能你没收到,有可能你收到了一会儿又给我回复。

第一种对应的就是TCP,第二种对应的是UDP,TCP是需要对方确认的,也就是传输之前需要进行“三次握手”(这里又是一个专有名词,就是传输的两端要经过三次确认,才能开始通信)。UDP是比较粗暴的,不管对方什么情况,直接发送,不需要确认过程。

很多博客和书籍中说的,TCP是可靠的链接(因为中间有个Control的单词,带上了这个单词,以为着更可靠哦),UDP是不可靠的链接就是这个 意思。可靠的链接带来的是效率的下降,比如一次网络请求很大一部分时间都是浪费在互相确认的过程当中,资源消耗比较多,但是保证了数据的传输是可靠的,并 且数据传输是有序的。不可靠的链接带来的是效率的提升,但可能服务质量有下降。

今天想写这个,主要是想摆脱一种人为的误区,不要以为UDP不可靠,就没有什么应用场景,据说QQ发送数据就是靠UDP发送的呢,虽然是不可靠的链 接,但是还是用了很多校验算法保证了数据质量的稳定,同时保证了效率。TCP虽然耗时,但是对于稳定性优先的场景,还是应该有限选用TCP,比如浏览器中 访问网页用的就是TCP。此外在一些长连接系统里面,比如微信,连接通道应该也是用TCP建立的,因为要维护一条稳定的信息传输通道。

具体协议是如何控制的,数据包是如何传输的,怎么校验数据的正确性,还有重传特性,这些都是协议中重要的控制过程,但是不做详述了,不但枯燥,而且对于实际的产品并没有什么卵用。具体选用什么样的数据传输方式,应该根据场景而定。

PS:写了4,5个小时,删了改,改了删,删了再改,不知道讲没讲清楚,如果没说清楚,欢迎给我留言,我们探讨之后,我再搞个续集:)

给产品经理讲技术,不得不懂的TCP和UDP的更多相关文章

  1. 3星|《给产品经理讲技术》:APP开发技术介绍,没有技术背景的话恐怕只能看懂书中的比喻和结论

    基本是APP开发涉及到的相关技术的入门级介绍.涉及到的知识点与技术细节比较多,不少技术相关的内容并没有像标题暗示的那样没有技术背景也可以看懂,而是涉及到许多专业的术语.原理.也有一些内容是用比喻的方法 ...

  2. 「给产品经理讲JVM」:垃圾收集算法

    纠结的我,给我的JVM系列终于起了第三个名字,害,我真是太难了.从 JVM 到 每日五分钟,玩转 JVM 再到现在的给产品经理讲 JVM ,虽然内容为王,但是标题可以让更多的人看到我的文章,所以,历经 ...

  3. 💕《给产品经理讲JVM》:垃圾收集器

    前言 在上篇中,我们把 JVM 中的垃圾收集算法有了一个大概的了解,又是一个阴雨连绵的周末,宅在家里的我们又开始了新一轮的学习: 产品大大:上周末我们说了垃圾收集算法,下面是不是要讲一下这些算法的应用 ...

  4. 产品 | What's产品经理

    如果想知道什么是产品,首先需要知道什么是缔造者.其名曰:"产品经理". PS:产品经理一词在国内大多时候泛指"互联网产品经理". 对于产品经理这一职位,说实在很 ...

  5. 【产品经理】产品经理不懂API接口是什么,怎么和程序员做朋友?

    接口不是技术经理来写吗?没接过它,一脸不清楚地节奏 开放即共享,是互联网的一个重要属性和精神.它是一种服务模式,一个特殊的产品,目前较大规模的互联网企业都有自己的开放平台. 如果把自己局限为一个功能产 ...

  6. 上海洋码头(www.ymatou.com)急招技术人才(职位:互联网软件开发工程师,.NET网站架构师,Web前端开发工程师,高级测试工程师,产品经理)

    对公司招聘职位有兴趣的童鞋可以把简历发送到zhangzhiqiang@ymatou.com,我们HR会快速给你答复. 互联网软件开发工程师 岗位职责: 1.参与洋码头各个平台(www.ymatou.c ...

  7. 产品经理如何赢得开发人员的尊重和支持?-摘自infoq

    对于产品经理来说,赢得开发人员的尊重和支持,从某种意义上讲,是产品迈向成功的坚实一步.最近,知乎社区上的开发人员和管理者在前.后两个帖子中对此展开了激烈的讨论,其中不乏真知灼见. 林志霖Cray认为产 ...

  8. 从程序猿到SAP产品经理,我是如何转型的?

    文章作者:Jason Xia(夏建军) Jerry: 今天的文章来自Jason Xia, 我的老同事,和我一样从2007年进入SAP成都研究院工作至今.这篇文章讲述了Jason是如何从一名SAP资深开 ...

  9. 看完你也能独立负责项目!产品经理做APP从头到尾的所有工作流程详解!

    (一)项目启动前 从事产品的工作一年多,但自己一直苦于这样或者那样的困惑,很多人想要从事产品,或者老板自己创业要亲自承担产品一职,但他们对产品这个岗位的认识却不明晰,有的以为是纯粹的画原型,有的是以为 ...

随机推荐

  1. hdu 3094 A tree game 博弈论

    思路: 叶子节点的SG值为0:中间节点的SG值为它的所有子节点的SG值加1 后的异或和. 详见贾志豪神牛的论文:组合游戏略述 ——浅谈SG游戏的若干拓展及变形 代码如下: #include<cs ...

  2. hdu 4618(最大回文子矩阵)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4618 昨天多校的一道题,说多了都是泪啊,为了一道图论题,磨了那么久,结果是别的题都没看,没办法,补呗. ...

  3. js 异步请求封装

    1. function ajax(url, onsuccess) { var xmlhttp = window.XMLHttpRequest ? new XMLHttpRequest() : new ...

  4. SQL server 为多个表添加新的列

    作为一名.NET未入门的程序员,第一次发随笔. 前不久参与写的公司业务程序,目前这个程序的后期维护修复漏洞工作由我来负责.由于业务关系重大,每一步对程序代码的操作都非常谨慎,一旦操作失误,造成的损失和 ...

  5. 545C. Woodcutters

    题目链接 题意: n个树,在x1,x2,...,xn的位置,树的高度依次是h1,h2,...,hn 求的是当把树砍倒时候,不占用相邻树的位置,最大砍树个数 可向左 向右砍,即树向左向右倒,很显然 当树 ...

  6. three.js 简介

    What is Three.js? Let's try to describe it briefly: Three.js is a library that makes WebGL - 3D in t ...

  7. Android核心分析之二十六Android GDI之SurfaceFlinger

    Android GDI之SurfaceFlinger SurfaceFinger按英文翻译过来就是Surface投递者.SufaceFlinger的构成并不是太复杂,复杂的是他的客户端建构.Sufac ...

  8. SQL Server ->> GROUPING SETS, CUBE, ROLLUP, GROUPING, GROUPING_ID

    在我们制作报表的时候常常需要分组聚合.多组聚合和总合.如果通过另外的T-SQL语句来聚合难免性能太差.如果通过报表工具的聚合功能虽说比使用额外的T-SQL语句性能上要好很多,不过不够干脆,还是需要先生 ...

  9. dojo 六 使用query dojo/query

    要使用query,就要引入dojo/query包.query可以根据Dom里节点的标签名.id名.class名来检索一个或多个节点.---------------------------------- ...

  10. 《OD学hive》第四周0717

    一.Hive基本概念.安装部署与初步使用 1. 后续课程 Hive 项目:hadoop hive sqoop flume hbase 电商离线数据分析 CDH Storm:分布式实时计算框架 Spar ...