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. zabbix监控nginx连接状态(转)

    zabbix监控nginx zabbix可以监控nginx的状态,关于一个服务的状态可以查看服务本身的状态(版本号.是否开启),还应该关注服务能力(例如以nginx的负载效果:连接数.请求数和句柄数) ...

  2. C#文件操作基础之File类和FileInfo类

    文件和I/O流的差异: 文件是一些具有永久存储及特定顺序的字节组成的一个有序的.具有名称的集合. 因此对于文件,我们经常想到文件夹路径,磁盘存储,文件和文件夹名等方面. I/O流提供一种后备存储写入字 ...

  3. WebApi异常

    WebApi异常处理解决方案   前言:上篇C#进阶系列——WebApi接口传参不再困惑:传参详解介绍了WebApi参数的传递,这篇来看看WebApi里面异常的处理.关于异常处理,作为程序员的我们肯定 ...

  4. WPF界面设计技巧(6)—玩玩数字墨水手绘涂鸦

    原文:WPF界面设计技巧(6)-玩玩数字墨水手绘涂鸦 想让你的程序支持鼠标及手写笔涂鸦吗?只要敲入“<InkCanvas/>”这几个字符,你就会领悟什么叫“很好很强大”,今天我们来做一个手 ...

  5. SDL2源码分析8:视频显示总结

    ===================================================== SDL源码分析系列文章列表: SDL2源码分析1:初始化(SDL_Init()) SDL2源 ...

  6. 高性能 TCP &amp; UDP 通信框架 HP-Socket v3.2.2 正式公布

    HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包括服务端组件.client组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#. ...

  7. C++经典面试题(二)

    近期看一些面试题,认为假设自己被问到了,并不能非常利落的回答出来. 一是从来没有这个意识,二是没有认真的梳理下. 以下对这些题做出分析,哈!个人能力有限,当中难免有疏漏,欢迎大家补充咯. 11.引用与 ...

  8. hdu1664 Different Digits

    求出n的倍数m,要求m使用的不同数字最少,且最小. 一开始不知道怎么搜,因为不知道m由多少个不同的数字组成. 然后百度了一下,看到和数论有关. m可能使用的数字的个数可能为一个或者两个 a,aa,aa ...

  9. centos在设置时区

    [root@localhost ~]# date -R     // 查看时区 Mon, 19 May 2014 10:18:46 +0000 [root@localhost ~]# tzselect ...

  10. testlink于smarty配置和使用

    于testlink于,采用smarty首先配置. 一般在过程化的编程中.创建一个smarty.inc.php的文件来配置Smarty的信息,其它文件引入就可以,目的是为了不改动smarty.class ...