晋江 网站建设 推广,科大讯飞哪些做教学资源的网站,farfetch 购物网站,南昌住房建设局网站文章目录 1. TCP和UDP的区别2. 对http接口解释3. Cookie和Session的区别4. http和https的区别5. 智能指针6.断点续传 1. TCP和UDP的区别
tcp的特点#xff1a; 面向连接#xff0c;可靠性高#xff0c;全双工#xff0c;面向字节流udp特点#xff1a;无连接#xff0c;不… 文章目录 1. TCP和UDP的区别2. 对http接口解释3. Cookie和Session的区别4. http和https的区别5. 智能指针6.断点续传 1. TCP和UDP的区别
tcp的特点 面向连接可靠性高全双工面向字节流udp特点无连接不可靠但是对实时性要求高头部开销少
主要区别连接性与可靠性 tcp是面向连接的协议提供可靠的数据传输服务 而udp是无连接的不可靠 头部开销与传输效率 tcp的头部开销大包含更多控制信息传输效率低 udp的头部开销少传输效率高 应用场景 tcp适用于可靠性的场景文件传输电子邮件等 udp适用于实时传输视频流VoipVoIP互联网电话协议是一种电话技术允许您使用互联网而不是传统电话线拨打和接听电话。等 视频音频适用于UDP协议 实时性对数据丢失不敏感避免TCP的拥塞控制对实时性的影响。视频音频对于实时性的要求很高UDP的报头只有8个字节比TCP少了12个字节这使得UDP在传输数据时的开销小效率高还不用建立连接。 如果因为建立连接重传等操作导致延迟过大会影响用户体验视频中的一帧画面的画面丢失音频的短暂杂音影响体验很小TCP拥有拥塞控制机制当网络拥塞的时候会降低发送报文的频率这样会影响实时性。让TCP去参与网络疏导
2. 对http接口解释 HTTP工作原理 HTTP协议定义Web客户端如何从Web服务器请求Web页面以及服务器如何把Web页面传送给客户端。HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求报文请求报文包含请求的方法、URL、协议版本、请求头部和请求数据。服务器以一个状态行作为响应响应的内容包括协议的版本、成功或者错误代码、服务器信息、响应头部和响应数据。
以下是 HTTP 请求/响应的步骤 客户端连接到Web服务器 一个HTTP客户端通常是浏览器与Web服务器的HTTP端口默认为80建立一个TCP套接字连接。 例如http://www.baidu.com。 发送HTTP请求 通过TCP套接字客户端向Web服务器发送一个文本的请求报文一个请求报文由请求行、请求头部、空行和请求数据4部分组成。 服务器接受请求并返回HTTP响应 Web服务器解析请求定位请求资源。服务器将资源复本写到TCP套接字由客户端读取。一个响应由状态行、响应头部、空行和响应数据4部分组成。 释放连接TCP连接 若connection 模式为close则服务器主动关闭TCP连接客户端被动关闭连接释放TCP连接;若connection 模式为keepalive则该连接会保持一段时间在该时间内可以继续接收请求; 客户端浏览器解析HTML内容 客户端浏览器首先解析状态行查看表明请求是否成功的状态代码。然后解析每一个响应头响应头告知以下为若干字节的HTML文档和文档的字符集。客户端浏览器读取响应数据HTML根据HTML的语法对其进行格式化并在浏览器窗口中显示。
例如在浏览器地址栏键入URL按下回车之后会经历以下流程
域名解析得到目标服务器的ip地址ip地址底层基于tcp要先三次握手建立连接在套接字就是connect获取成功后在应用层由浏览器构建requesthttp请求构建http请求行请求报头空行必要时有正文然后把http请求通过系统调用接口发送给对方对方收到了http请求后会对http请求进行 比如面向字节流以及粘包问题把报文解出来然后做序列化得到http相关字段以及请求url然后读取url所对应的资源都有就构建响应报头状态行正文然后把整个信息构建成一个response response通过系统调用发送给客户端客户端在对response解决粘包问题把报文和报文之间分开通过反序列化提取正文正文可以是网页或者图片由网页或图片被浏览器解释渲染
更细一点就是 在双方操作系统中发数据并不是把数据发送给对方也不是发送到网络而是拷贝到操作系统底层的tcp发送缓冲区所以tcp传输控制的时候就可以根据流量控制拥塞控制捎带应答快重传各种可靠性策略效率策略把数据发送给对方再往下谈滑动窗口每一次对应的数据段也不直接发送给对方而是交给了ip报文在这里也添加了自己的ip报头这里也有分片和组装的问题… HTTP请求方法 HTTP状态码 3. Cookie和Session的区别
cookie常存储在浏览器或者本地session只能在服务器cookie只能存储string对象session可以存储任意的jave对象session更安全但是session过多的话会造成服务器压力问题单个Cookie保存的数据不能超过4K很多浏览器都限制一个站点最多保存20个CookieSession是没有大小限制和服务器的内存大小有关。更详细看这篇文章彻底了解Cookie和Session的区别面试
4. http和https的区别
http的post和get都是没有加密的都可以被抓包软件抓到https就是在应用层和传输层进行加密SSLTLSSSL/TLS是用于在计算机网络上进行安全通信的协议。
1、HTTPS 协议需要到 CA Certificate Authority证书颁发机构申请证书一般免费证书较少因而需要一定费用。(以前的网易官网是http而网易邮箱是 https 。)
2、HTTP 是超文本传输协议信息是明文传输HTTPS 则是具有安全性的 SSL 加密传输协议。
3、HTTP 和 HTTPS 使用的是完全不同的连接方式用的端口也不一样前者是80后者是443。
4、HTTP 的连接很简单是无状态的。HTTPS 协议是由 SSLHTTP 协议构建的可进行加密传输、身份认证的网络协议比 HTTP 协议安全。(无状态的意思是其数据包的发送、传输和接收都是相互独立的。无连接的意思是指通信双方都不长久的维持对方的任何信息。)
TLS握手过程 1. 客户端和服务器商定通信所使用的TLS版本双发互发信息密码组合证书 2. 确定双方要使用的密码组合 3.客户端通过服务器的公钥和证书验证服务器身份 4. 生成会话密钥用于结束后的对称加密双方互发加密的finished信号
5. 智能指针
原理
在对象构造时获取资源在对象析构的时候释放资源利用对象的生命周期来控制程序资源即RALL特性*和 -进行重载使得该对象具有像指针一样的行为智能指针的拷贝问题 为什么要解决 SmartPtr sp1(new int); SmartPtr sp2(sp1); //拷贝构造 对内置类型浅拷贝构造sp2后会让两者管理同一片空间析构会导致空间被释放两次赋值构造也是如此 auto_ptr 最早的智能指针他只会允许统一时间只有一个智能指针指向同一个对象当发生赋值或者拷贝的话所有权就会转移就相当于该指针不在管理对象了。 所有权转移的实现是在析构和赋值构造中释放自己管理的对象然后将管理权赋值给接管自己的对象 unique_ptr防拷贝 delete 和auto_ptr一样但是他不允许赋值和拷贝操作。会将拷贝构造函数和赋值重载函数禁用。 shared_ptr 是共享所有权的一个指针他允许多个智能指针指向同一个对象他内部使用引用计数来记录个数当引用计数为0的时候才会去释放指向的对象资源。 增加一个内部成员变量int* _pcount;表明引用计数个数 不能被定义为int类型是因为不能让每个shared_ptr对象有一个自己的count的成员变量 不能为静态不能让所有对象拥有同一个count成员变量注意
存在线程安全问题多个线程可能会对同一个引用进行自增或自减操作而自增或自减操作都不是原子操作需要加锁进行保护。存在循环引用问题 有两个结点 node1-_next node2; node2-_prev node1; node1的释放取决于node2中的prev成员node2的释放取决于node1的next成员。 解决方法 将ListNode中的成员变量std::shared_ptr _next; 变为 std::weak_ptr _next;
weak_ptr 大多数是用来配合shared_ptr进行使用的解决了shared_ptr的循环引用的问题他没有对象的管理权不参与引用计数的增减。
6.断点续传 什么是断点续传 断点续传技术Resumable Downloads 或 Resume Downloads是一种在网络文件传输中常用的技术它允许在文件传输过程中如果因为某种原因如网络中断、设备故障、用户暂停等导致传输中断之后可以从上次中断的地方继续传输文件而不是从头开始重新传输整个文件。这种技术可以显著提高文件传输的效率和用户体验特别是在传输大文件或在网络条件不稳定的环境中。
断点续传技术的实现通常依赖于客户端和服务器之间的协议支持如HTTP/1.1中的Range和Content-Range头部字段。客户端会记录已经成功传输的文件部分通常是字节范围并在中断后重新发送带有Range头部的请求指定从上次中断的点开始传输。服务器则根据这个请求返回文件剩余部分的数据并在响应中包含Content-Range头部以告知客户端实际返回的数据范围。 应用场景及原理 大文件下载 视频播放在线更新远程备份.文件上传
综上所述断点续传技术广泛应用于需要高效、可靠文件传输的各种场景特别是在网络条件不稳定或文件大小较大的情况下。通过断点续传技术用户可以更好地利用网络资源提高文件传输的效率和用户体验。
关于 Range头部字段
作用Range头部字段用于HTTP请求中指定服务器应该返回文件的哪一部分。这使得客户端能够请求文件的特定片段而不是整个文件。格式Range: bytesstart-end其中start是请求的第一个字节的偏移量从0开始end是请求的最后一个字节的偏移量。如果end被省略则表示请求从start开始到文件末尾的所有字节。使用场景当客户端希望继续之前中断的下载时它会发送一个带有Range头部的请求指定从上次中断的点开始请求数据。
Content-Range头部字段
作用Content-Range头部字段用于HTTP响应中告知客户端实际返回的字节范围以及整个实体的总长度。格式Content-Range: bytes start-end/total其中start是返回的第一个字节的偏移量end是返回的最后一个字节的偏移量total是整个实体的总长度字节数。使用场景服务器在响应带有Range头部的请求时会使用Content-Range头部来告知客户端返回的数据范围以及整个文件的大小。