• [转]TCP与UDP的特点与区别


    http://songchao.blog.51cto.com/133022/37651

            网络编程主要是用到了两个协议:TCP和UDP

             TCP编程的特点:
                  对于TCP,要记住的最重要的事情是它是一个面向链接的协议。两个设备之间一旦已经存在链接,就会形成一个可靠的数据流,保证数据从一个设备准确的移送到 另一个设备。虽然使用TCP的用户不用担心数据的丢失和错位。但是,使用TCP编程的时候,需要的考虑的大问题是:缓冲区。
                 由于TCP必须保证数据的完整性,所以,在从远程设备收到“已收到数据”的肯定的应答信息之前,它一直把所有发送的数据都存放在一个本地缓冲器中。同样 地,当从网络接收数据的时候,TCP也必须有一个接收数据的本地缓冲器,以保证在把数据递送给应用程序之前所有的数据块是按顺序接收的。由于这个单独的 TCP缓冲器,在用户程序与远程主机上目的程序之间移动数据操作起来显得比预期的困难一些。所以,无论是发送方还是接收方数据在发送或者接收的时候都会先 放在缓冲区中。但是,TCP不保留数据消息的界线(数据块之间的边界),即缓冲区中的数据块被作为一个包发送。所以编程者必须在自己的网络程序中加以弥 补。
            UDP编程的特点:
                  创建UDP就是为了解决TCP的消息边界问题。UDP保留了从应用程序发送到网络上的所有消息的数据边界。由于 UDP的特殊设计,不担心可靠数据的传输问题,它不需要使用本地缓冲器保留发送的或接收的数据。代替的做法是,当从应用程序接收到消息时,每条消息都作为 一个单独的包转发。同样,从网络上收到的每条消息也作为一个单独的包转发给应用程序。UDP在网络包中保留了消息的边界。但是,由于UDP不保证数据的传 递,所以如果涉及到数据到达目的地的问题,用户应用程序必须执行那种功能。因为一台设备发出了UDP数据包并不一定意味着接收设备收到数据包,所以用户必 须保证用户的程序能够处理丢失包的问题。
            当程序需要分清服务器和客户机的时候,最好使用TCP协议,而UDP一般是在主次不是分的很清楚(即关系平等)的时候用到。
    本文出自 “自由漂泊-宋超” 博客
  • 相关阅读:
    素数
    Java日期时间使用(转)
    mysql中函数(转)
    java环境配置
    volley三种基本请求图片的方式与Lru的基本使用:正常的加载+含有Lru缓存的加载+Volley控件networkImageview的使用
    Volley的三种基本用法StringRequest的Get和post用法以及JsonObjectRequest
    DOM生成&解析
    Pull生成&解析
    HDU.2503 a/b + c/d (分式化简)
    HDU.2503 a/b + c/d (分式化简)
  • 原文地址:https://www.cnblogs.com/lauer0246/p/1383001.html
Copyright © 2020-2023  润新知