RUDP的实现原理是什么?有何用处?TCP和UDP的优缺点有什么?

先来考虑,TCP和UDP的优缺点是什么?

网络上一搜一大把,总结起来就是:

一,TCP的优点
可靠,稳定
二,UPD的优点
快快快
对比而言对比而言
1.TCP基于连接UDP无连接;
2.TCP对系统资源需求较多,UDP相反;
3.TCP程序结构较为复杂,UDP则相对简单;
4.TCP采用流,UDP采用数据报 ;
5.TCP保证数据按序、正确、完整、不重复,UDP仅是尽最大努力交付,可能丢包;
6.TCP信道是全双工的可靠信道,UDP是不可靠信道;
7.TCP是点到点的,UDP是一对多、多对多、一对一、多对一可交互。

这次考虑RUDP的实现原理是什么?

一, RUDP的实现原理?

RUDP(RELIABLE UDP)是基于UDP之上而实现的可靠性UDP传输,在应用层中实现安全控制机制,主要采用请求回应机制,实现了UDP的可靠传输,即接收方检查是否丢失数据,然后向发送方请求丢失的数据,因此发送方必须保留已经发送过的数据一定时间来回应数据丢失。为了减小发送方数据保留量,在每收到n个包时通知发送方n之前的包已经收到可以清除了,另外超过设定的包超时时间后也会清除。

打个比方,我是发送方,现在有1、2、3、4、5发送给接收端,然后接收方接收到了1、2、4、5,告诉我1OK、2OK、3不OK,3在传输中丢掉了,然后接收方就喊我,喂,你他娘的在3没了,我听到了接收端的呼喊,然后我就又发送了一次3,然后接收端又捋了一遍一看12345都全了,数据接收完毕。
在这个过程中接收端每响应一个OK我就会删除掉对应的数据,或者发送后接收端超过保留时间我也会删除掉超时的数据。

RUDP有何用处?

在要求实时传输性中RUDP更像是一个性价比以及平衡性高的产品。
TCP属于是通过增大延迟和传输成本来保证质量的通信方式,UDP是通过牺牲质量来保证时延和成本的通信方式,所以在一些特定场景下RUDP更容易找到这样的平衡点,兼顾全局

面向连接的传输控制协议—TCP(未完待续)

概述

  1. TCP是一个点对点的通讯机制,只有一个发送端和一个接收端(点对点)。
  2. TCP是一个可靠的、按顺序的字节流。
  3. TCP在发送方和接收方缓存。
  4. TCP是同一连接能够双向传输数据流(全双工)。
  5. TCP通信双方必须在发送数据之前建立连接,连接的状态在两端中维护,沿途节点中不维护状态(面向连接)。
  6. TCP拥塞控制和流量控制机制,设置窗口尺寸(流水线机制)。
    7.TCP在传输层中的段结构是由32bits组成。

继续阅读“面向连接的传输控制协议—TCP(未完待续)”

PHP SOCKET 基础的TCP 服务端和客户端

首先大概了解下计算机网络原理中 TCP 的一些概述

  1. TCP是一个点对点的通讯机制,只有一个发送端和一个接收端(点对点)。
  2. TCP是一个可靠的、按顺序的字节流。
  3. TCP在发送方和接收方缓存。
  4. TCP是同一连接能够双向传输数据流(全双工)。
  5. TCP通信双方必须在发送数据之前建立连接,连接的状态在两端中维护,沿途节点中不维护状态(面向连接)。
  6. TCP拥塞控制和流量控制机制,设置窗口尺寸(流水线机制)。
  7. TCP在传输层中的段结构是由32bits组成。

继续阅读“PHP SOCKET 基础的TCP 服务端和客户端”

php-fpm提前结束一个响应,但继续执行代码

函数 ignore_user_abort 在PHP官方手册里说明是

设置客户端断开连接时是否中断脚本的执行
PHP 以命令行脚本执行时,当脚本终端结束,脚本不会被立即中止
除非设置 value 为 TRUE,否则脚本输出任意字符时会被中止

大白话就是,设置了这个值,你离开了我也照样活着照样过
不设置就是你离开我我就和你同归于尽。

继续阅读“php-fpm提前结束一个响应,但继续执行代码”