我们平常经常说UDP是不可靠连接,TCP是可靠连接,然而TCP为什么是可靠的呢

1. TCP和UDP的优缺点
TCP

缺点:
[1] 三次握手四次挥手,传输更多包,浪费一些带宽
[2] 为了进行可靠通信,双方都要维持在线,通信过程中服务器server可能出现非常大的并发连接,浪费了系统资源,甚至会出现宕机
[3] 确认重传也会浪费一些带宽,且在不好的网络中,会不断的断开和连接,降低了传输效率
UDP

优点:
[1] 没有握手,起步快延时小
[2] 不需要维持双方在线,server不用维护巨量并发连接,节省了系统资源
[3] 没有重传机制,在不影响使用的情况下,能更高效的利用网络带宽

2. TCP相比UDP为什么是可靠的
[1] 确认和重传机制

建立连接时三次握手同步双方的“序列号 + 确认号 + 窗口大小信息”,是确认重传、流控的基础
传输过程中,如果Checksum校验失败、丢包或延时,发送端重传
[2] 数据排序

TCP有专门的序列号SN字段,可提供数据re-order
[3] 流量控制

窗口和计时器的使用。TCP窗口中会指明双方能够发送接收的最大数据量
[4] 拥塞控制

TCP的拥塞控制由4个核心算法组成。

“慢启动”(Slow Start)

“拥塞避免”(Congestion avoidance)

“快速重传 ”(Fast Retransmit)

“快速恢复”(Fast Recovery)

以上就是TCP比UDP传输更可靠的原因。

TCP/IP协议-为什么说TCP是可靠连接的更多相关文章

  1. TCP/IP协议(二)tcp/ip基础知识

    今天凌晨时候看书,突然想到一个问题:怎样做到持续学习?然后得出这样一个结论:放弃不必要的社交,控制欲望,克服懒惰... 然后又有了新的问题:学习效率时高时低,状态不好怎么解决?这也是我最近在思考的问题 ...

  2. TCP/IP协议握手过程详解

    1,建立连接 在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接,如图1所示. (1)第一次握手:建立连接时,客户端A发送SYN包(SYN=j)到服务器B,并进入SYN_SE ...

  3. 七、TCP/IP协议

    1.定义: TCP/IP模型也被称作DoD模型(Department of Defense Model).TCP/IP字面上代表了两个协议:TCP(传输控制协议)和IP(网际协议). TCP/IP协议 ...

  4. 【温故而知新】Tcp/Ip协议——总览

    Tcp/Ip协议 一.概念 “三网”:即电信网络.有线电视网络和计算机网络 标准(Standards) 描述了协议的规定,设定了最简的性能集. 协议(Protocol) 网络设备用于交换信息的系列规则 ...

  5. TCP/IP协议头部结构体(网摘小结)(转)

    源:TCP/IP协议头部结构体(网摘小结) TCP/IP协议头部结构体(转) 网络协议结构体定义 // i386 is little_endian. #ifndef LITTLE_ENDIAN #de ...

  6. 简单聊聊HTTP/TCP/IP协议

    经过几天的面试,有很多公司的面试官都会问到是否了解HTTP/TCP/IP协议? 一遇到这个问题,就一脸懵逼,虽然是计算机基层的东西,看来是必须得了解的,回到家之后,就查找了一些资料,整理了一篇博客,简 ...

  7. 浅析TCP/IP 协议

    TCP/IP协议不是TCP和IP这两个协议的合称,而是指因特网整个TCP/IP协议族. TCP/IP协议模块关系 从协议分层模型方面来讲,TCP/IP由四个层次组成:网络接口层.网络层.传输层.应用层 ...

  8. 【转】TCP/IP协议中TCP和UDP的区别

    TCP协议与UDP协议的区别    首先咱们弄清楚,TCP协议和UCP协议与TCP/IP协议的联系,很多人犯糊涂了,一直都是说TCP/IP协议与UDP协议的区别,我觉得这是没有从本质上弄清楚网络通信! ...

  9. TCP/IP协议、UDP协议、 Http协议

    开放式系统互联通信参考模型(Open System Interconnection Reference Model,缩写为 OSI),简称为OSI模型(OSI model),一种概念模型,由国际标准化 ...

随机推荐

  1. Chocolaty

    原文是用markdown格式写的,稍微改了下发了博客,格式可能会很奇怪.. Chocolaty官网 Chocolaty是一款Windows平台的包管理工具,类似于centos的yum或ubuntu的a ...

  2. 查看whl包名是否满足系统的条件的命令,以此解决whl包出现“is not a supported wheel on this platform”错误提示的问题

    在Ubuntu系统中,使用pip安装whl包时,常常会报如下错误: tensorflow_gpu-1.11.0-cp35-cp35m-manylinux1_x86_64.whl is not a su ...

  3. ASP.NET常用内置对象(二)Response

    response翻译为中文:响应. 将数据作为请求的结果从服务器发送到客户浏览器中,并提供有关响应的消息.它可用来在页面中输出数据,在页面中跳转,还可以传递各个页面的参数. Response对象是Sy ...

  4. RabbitMQ的五种工作方式详细

    在了解之前得先有个RabbitMQ客户端.官网: https://www.rabbitmq.com/getstarted.html connections:无论生产者还是消费者,都需要与RabbitM ...

  5. Genymotion下载及安装(安卓虚拟机)

    Genymotion下载及安装   一.注册\登录 打开Genymotion官网,https://www.genymotion.com/ ,首先点击右上角的Sign in进行登录操作.如何登录就不细讲 ...

  6. Dubbo-服务注册中心之AbstractRegistry

    在dubbo中,关于注册中心Registry的有关实现封装在了dubbo-registry模块中.提供者(Provider)个消费者(Consumer)都是通过注册中心进行资源的调度.当服务启动时,p ...

  7. upload-labs打关详解

    1-19关 00x01 JS检查 方法一.修改javascript代码,将.php添加到允许上传的类型中 3.上传成功 方法二:绕过前端,通过burpsuit抓包,上传一张info.jpg图片,然后抓 ...

  8. 一个简单的java web项目 仅实现添加

    连接数据库已经进行判断 要求: 1登录账号:要求由6到12位字母.数字.下划线组成,只有字母可以开头:(1分) 2登录密码:要求显示“• ”或“*”表示输入位数,密码要求八位以上字母.数字组成.(1分 ...

  9. linux下载phantomjs记录

    step1:建目录: cd /root mkdir PhantomJS step2:下载phantomjs安装包 可以直接进网址下载到本地后,再传到linux路径,例如phantomjs-1.9.7- ...

  10. C++——动态内存分配2-创建对象数组

    //创建对象数组 #include<iostream> using namespace std; class Point { public:        Point()       {  ...