HTTP必须执行在TCP上吗?
SSL必须执行在TCP上吗?
...
实际上HTTP并没有规定一定要执行在TCP上,甚至FTP也不一定要执行在TCP上!HTTP或者FTP仅仅是说底层信道要保证数据的按序传输以及可靠到达而已,由于传输层除了TCP之外没有别的著名的协议能够满足这个需求,所以大多数的应用都选择了TCP,可是你要知道,这并非强制的。
       SSL基于这个思想上打开了第一个洞,从而出现了DTLS。DTLS和HTTP一样,也是须要一个可靠的连接,可是它却没有使用TCP,相同OpenVPN的SSL握手更进一步,尽管SSL须要一个可靠的传输层信道,可是OpenVPN能够既不使用TCP,也不使用DTLS,而仅仅是自己实现了一个基于UDP的轻量级可靠层,事实证明,这是非常不错的。
       近期看了一本书,《枪炮,病菌与钢铁》,里面谈到了一种抢先性,即一种动植物或者技术在某地驯化或者进化之后迅速传播到其他地区,就会阻滞该地区的自主进化进程,该地区会首选传播而来的现成的东西,终于后来者居上,由于它仅仅是拿来,省去了孵化成本。TCP的侵略性也表如今此。难道你没有问过自己,为何几十年来,基于流的著名传输层协议仅仅有TCP一种,然而当初BSD套接字并非这么想的,否则它就直接把socket的第二个參数定义成TCP而不是随stream了,第三个參数也不须要了...注意,我这里仅仅是针对INET套接字而言,对于别的套接字类型,还是须要三个參数的。对于INET而言,数据报类型的就是UDP,流类型的就是TCP,著名的协议差点儿没有别的了,就算有也能够通过ioctl来设置..请恕我的无知,居然不知道socket參数的意义!
       TCP展示的就是这样的抢先性,已经有了TCP了,何必再造出其他协议呢?尽管它有点重,但还是能够用的。造成这个TCP一家独霸的局面的理由,还有技术的成熟早于标准化这一理由。对于UDP的侵略性,主要体如今带宽占用上,UDP仅仅是在IP上添加了一个应用层多路复用机制,既然IP是抢占的,UDP也是,由于它们都没有端到端的流量控制机制。尽管UDP在状态防火墙或者状态NAT上会有问题,可是问题并不在于UDP,而是在于防火墙和NAT设备为UDP强加了一个状态,UDP本身就是无状态的嘛,另外,防火墙技术或者NAT技术本身就是错误的技术,端到端安全以及VPN才是正解,否则如今全世界就全都布满了带有城墙的城市或者城堡碉堡之类的工事了。​

TCP与UDP的侵略性的更多相关文章

  1. C++网络套接字编程TCP和UDP实例

    原文地址:C++网络套接字编程TCP和UDP实例作者:xiaojiangjiang 1.       创建一个简单的SOCKET编程流程如下 面向有连接的套接字编程 服务器: 1)  创建套接字(so ...

  2. 【校验】TCP和UDP的校验和

    一开始,私以为校验和只是简单的求和得到的结果,后来在TCP和UDP里面看到使用的校验和方式有点奇怪--二进制反码(循环进位)求和. 人类的认知过程必将从简单到复杂,看下这个二进制反码循环求和是啥子意思 ...

  3. 初入网络系列笔记(2)TCP和UDP

    一.借鉴说明,本博文借鉴以下博文 1.BlueTzar,TCP/IP四层模型, http://www.cnblogs.com/BlueTzar/articles/811160.html 2.叶剑峰,漫 ...

  4. 传输层协议TCP和UDP

    本文力图简洁,让读者对TCP和UDP有个初步的认知.闲话少说,现在开始吧.TCP和UDP都是传输层的协议.TCP通过三次握手建立可靠连接,对未送达的消息重新进行发送.UDP不建立连接而直接发送,对未送 ...

  5. 【Python网络编程】利用Python进行TCP、UDP套接字编程

    之前实现了Java版本的TCP和UDP套接字编程的例子,于是决定结合Python的学习做一个Python版本的套接字编程实验. 流程如下: 1.一台客户机从其标准输入(键盘)读入一行字符,并通过其套接 ...

  6. http、tcp、udp、OAUTH2.0网络协议区别

                    一.先来一个讲TCP.UDP和HTTP关系的 1.TCP/IP是个协议组,可分为三个层次:网络层.传输层和应用层. 在网络层有IP协议.ICMP协议.ARP协议.RAR ...

  7. TCP 三次握手四次挥手, ack 报文的大小.tcp和udp的不同之处、tcp如何保证可靠的、tcp滑动窗口解释

    一.TCP三次握手和四次挥手,ACK报文的大小 首先连接需要三次握手,释放连接需要四次挥手 然后看一下连接的具体请求: [注意]中断连接端可以是Client端,也可以是Server端. [注意] 在T ...

  8. OSI参考模型及各层功能,TCP与UDP的区别

    OSI参考模型:ISO/IEC 7498标准定义了网络互联的7层结构模型,即开放系统互连参考模型. OSI参考模型定义了开放系统的层次结构.层次之间的相互关系,以及各层所包括的可能的服务.OSI的服务 ...

  9. TCP与UDP的区别

    TCP与UDP的区别 TCP面向连接:UDP是无连接,即发送数据之前不需要建立连接 TCP提供可靠的服务,TCP连接传送的数据,无差错.不丢失.不重复,且按顺序到达:UDP尽最大努力交付,即不保证可靠 ...

随机推荐

  1. MVAPI第一个版本架构图

    MVAPI采用矢量与栅格结合的方式进行移动地图的显示. 进过几个月,目前终于可以完成基本的地图显示及操作功能.还有待实现的是各种性能及效果优化.3D地物等. 发一个1.0的架构图留存一下.(虽然目前还 ...

  2. POJ 1753 位运算+枚举

    题意: 给出4*4的棋盘,只有黑棋和白棋,问你最少几步可以使棋子的颜色一样. 游戏规则是:如果翻动一个棋子,则该棋子上下左右的棋子也会翻一面,棋子正反面颜色相反. 思路: 都是暴搜枚举. 第一种方法: ...

  3. POJ1470 Closest Common Ancestors 【Tarjan的LCA】

    非常裸的模版题,只是Tarjan要好好多拿出来玩味几次 非常有点巧妙呢,tarjan,大概就是当前结点和它儿子结点的羁绊 WA了俩小时,,,原因是,这个题是多数据的(还没告诉你T,用scanf!=EO ...

  4. Linux 远程查看tomcat控制台

    我现在只说如何看远程的tomcat控制台命令. 用远程登陆客户端登陆linux进入tomcat/logs/文件夹下键入指令:tail -f catalina.out ctrl + c  退出 这样就可 ...

  5. uvalive 2088 - Entropy(huffman编码)

    题目连接:2088 - Entropy 题目大意:给出一个字符串, 包括A~Z和_, 现在要根据字符出现的频率为他们进行编码,要求编码后字节最小, 然后输出字符均为8字节表示时的总字节数, 以及最小的 ...

  6. 3DMax的OFusion插件使用问题

    使用OFusion将3D max场景导出为Ogre的Mesh是非经常常使用的方法.这里汇总一些问题方便查阅. 1.OFusion获取: http://download.csdn.net/detail/ ...

  7. Android 访问Android Wear数据层Api——同步Data Items

    Data Items它被用来同步手机和wear数据接口,一个Date Items通常包含以下几个部分: Payload 字节数组.无论你需要设置数据类型,我们同意对象序列化和反序列化,大小不能超过10 ...

  8. Visual Assist X 快捷键

    Shift+Alt+F Find References 查找引用 Shift+Alt+S FindSynbolDialog 打开查找符号对话框 Alt+G GotoImplementation 在定义 ...

  9. ACdream原创群赛(18)のAK's dream题解

    只做了4题水题ADGI A题需要注意的就是“[...]”的输出了,何时输出,何时不输出. #include <stdio.h> int main() { int n, cur, d; ; ...

  10. Hibernate主键生成策略简单总结

    数据库表主键的知识点: Generator 为每个 POJO 的实例提供唯一标识. 一般情况,我们使用"native".class 表示采用由生成器接口net.sf.hiberna ...