CVTE凉经

目录

 

UDP为什么较TCP不靠谱,怎么设计UDP协议使它

UDP怎么保证传输质量

UDP应用场景

c++类的构造函数是私有的吗?

类默认的六个构造函数

HTTPS访问服务器的过程,以及对比HTTP的区别? 


  • UDP为什么较TCP不靠谱,怎么设计UDP协议使它

TCP为什么可靠:

  1. 每个Tcp socket在内核中都有一个发送缓冲区和一个接受缓冲区。tcp协议要求对端在接受到tcp数据报之后,要对其序号进行ACK,只有当接受到一个tcp数据报的ACK之后,才可以把这个tcp数据报从socket的发送缓冲区清除。
  2. 另外tcp还有一个流量控制功能,tcp的socket接受缓冲区接受到网络上来的数据缓存起来后,如果应用程序一直没有读取,socket接受缓冲区满了之后,发生的动作是:通知对端TCP协议中的窗口关闭,这便是滑动窗口的实现,保证TCP socket接受缓冲区不会溢出,因为对方不允许发送超过所通知窗口大小的数据, 这就是TCP的流量控制,如果对方无视窗口大小而发出了超过窗口大小的数据,则接收方TCP将丢弃它。这两点保证了tcp是可靠传输的。

UDP为什么不可靠:

  1. UDP只有一个socket接受缓冲区,没有socket发送缓冲区,即只要有数据就发,不管对方是否可以正确接受。
  2. 而在对方的socket接受缓冲区满了之后,新来的数据报无法进入到socket接受缓冲区,此数据报就会被丢弃,udp是没有流量控制的,故UDP的数据传输是不可靠的。
  3. UDP可靠性由上层应用实现,所以要实现udp可靠性传输,必须通过应用层来实现和控制。

  • UDP怎么保证传输质量

  1. 首先分析,TCP为什么是可靠的,因为TCP有重传机制,流量控制,确认机制
  2. 传输层无法保证数据的可靠传输。只能通过应用层来实现了。实现确认机制、重传机制、窗口确认机制。
  3. 然后自己通过抓包和发包的方式去实现可靠性传输,那么必须实现如下功能:发送:包的分片、包确认、包的重发。接收:包的调序、包的序号确认

为什么要让包分片:应用数据被分割成TCP认为最适合发送的数据块。这和UDP完全不同,应用程序产生的数据长度将保持不变。由TCP传递给IP的信息单位称为报文段或段(segment)。

为什么让包调序:TCP报文段作为IP数据报来传输,而IP数据报的到达可能会失序,因此TCP报文段的到达也可能会失序。如果必要,TCP将对收到的数据进行重新排序,将收到的数据以正确的顺序交给应用层。


  • UDP应用场景

UDP它不属于连接型协议,因而具有资源消耗小,处理速度快的优点,所以通常音频、视频和普通数据在传送时使用UDP较多,因为它们即使偶尔丢失一两个数据包,也不会对接收结果产生太大影响。


  • c++类的构造函数是私有的吗?

通常来说:构造函数是共用的。因为定义到 private,就无法用该类创建对象。

但是也可以定义为私有:但只能通过一个公有函数来进行。static A* createInstance() {return new A();}


  • 类默认的六个构造函数

构造函数,拷贝构造函数,析构函数,赋值操作符的重载,取地址操作符的重载,const修饰的取地址操作符的重载。

  1. 构造函数:是一个特殊的成员函数,名字与类名相同,创建类类型对象时,由编译器自动调用,在对象的生命周期内只且只调用一次,以保证每个数据成员都有一个合适的初值。
  2. 拷贝构造函数:只有单个形参,而且该形参是对本类类型对象的引用(常用const修饰),这样的构造函数称为拷贝构造函数。拷贝构造函数是特殊的构造函数,创建对象时使用已存在的同类对象来进行初始化,由编译器自动调用。
  3. 析构函数:
  4. a、析构函数在类名(即构造函数名)加上字符~。

    b、析构函数无参数无返回值。

    c、一个类有且只有一个析构函数。若未显示定义,系统会自动生成缺省的析构函数。

    d、对象生命周期结束时,C++编译系统系统自动调用析构函数。

    e、注意析构函数体内并不是删除对象,而是做一些清理工作。


  • HTTPS访问服务器的过程,以及对比HTTP的区别?

HTTPS是在HTTP的基础上和ssl/tls证书结合起来的一种协议,保证了传输过程中的安全性,减少了被恶意劫持的可能.很好的解决了解决了http的三个缺点(被监听、被篡改、被伪装)

过程:

建立连接

  • HTTP和HTTPS都需要在建立连接的基础上来进行数据传输,是基本操作

  • 当客户在浏览器中输入网址的并且按下回车,浏览器会在浏览器DNS缓存,本地DNS缓存,和Hosts中寻找对应的记录,如果没有获取到则会请求DNS服务来获取对应的ip

  • 当获取到ip后,tcp连接会进行三次握手建立连接

HTTP请求过程

  1. 建立连接完毕以后客户端会发送响应给服务端
  2. 服务端接受请求并且做出响应发送给客户端
  3. 客户端收到响应并且解析响应响应给客户

HTTPS请求过程


 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值