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. ConditonHelper

    在网上其实已经有很多类似这种拼接sql条件的类,但是没有看到一个让我感觉完全满意的这样的类.最近看到 http://www.cnblogs.com/xtdhb/p/3811956.html 这博客,觉 ...

  2. iText操作word文档总结

    操作word文档的工具有很多,除了iText之外还有POI,但是POI擅长的功能是操作excel,虽然也可以操作word,但是能力有限,而且还有很多的bug,技术并不成熟,下面就重点介绍一种操作wor ...

  3. java读写文件

    对于任何文件,不管有没有扩展名,都可以读写.切记,最后要.close();,否则效果出不来. 读操作: package com.wjy.read; import java.io.BufferedRea ...

  4. (40)JS运动之右下角悬浮框

    <!DOCTYPE HTML> <!-- --> <html> <head> <meta charset="utf-8"> ...

  5. 简单fcgi程序

    1.头文件 #include <fcgi_stdio.h> 2.while(FCGI_Accept()>=0)//这里进入循环,前台每请求一次fcgi服务,就循环一次 循环内处理: ...

  6. Android中TextView中内容不换行的解决方法

    问题 如果新建的Android项目采用的Android 3.0以上的SDK,同时采用了 <style name="AppTheme" parent="@androi ...

  7. 【NIO】dawn在buffer用法

    网络编程,buffer它用于数据传输到网络上的集线器应用程序,不用说,一个重要的线.提到buffer我不能说什么零拷贝,buffer什么内存管理,在dawn在,基于directbuffer再次能够实现 ...

  8. MySQL Windows ZIP 免费安装和启动设置

    MySQL Windows ZIP免安装版,设置和启动的过程事实上挺麻烦的.以下一步一步介绍使用的过程: 1.下载Windows (x86, 64-bit), ZIP Archive: 2.解压zip ...

  9. Android4.0设置接口变更摘要(四)

    为了与你之前,你已经设置了共享Tab风格和Item实现圆角.希望能给有须要的朋友一点点帮助,今天再和大家分享一下用ViewPager实现设置分页,小米和OPPO就是这种设置,先来看看效果图: wate ...

  10. Swift基础--使用TableViewController自己定义列表

    首先建立一个swift项目,把storyboard的内容删掉,加入一个Navigation Controller.然后设置storyboard相应界面的class,在Navigation Contro ...