不一定准确,just方便自己思考和总结
文章预览:
- 1、如果让你做一个视频聊天软件,你用TCP还是UDP?
- 2、TCP是怎么去保证可靠传输的
- 3、TCP三次握手
- 4、TCP拥塞控制
- 5、CDN的原理是什么
- 6、DNS过程
- 7、为什么TCP连接是可靠的
- 8、HTTP请求方法
- 9、HTTP首部字段
- 10、https的加密过程以及如何防止中间人攻击
- 11、通过什么机制处理服务端接收数据乱序丢包
- 12、http1时代,经常把很多资源部署在不同域名下,为什么
- 13、OSI七层模型,每层大致作用及相关协议
- 14、TLS握手
- 15、怎么知道数字证书的真假
- 16、cookie、session区别
- 17、session怎么保存,有多台服务器,sessionid怎么找
- 18、为什么cookie可以用来保存登录状态
- 19、http头部chunk
- 20、get发一个TCP包,post发两个,这种情况是一定的吗
- 21、一个http报文的的头和body之间有什么分隔
- 22、出现304的场景,通过什么协议头来确认
- 23、websocket原理,如何实现,和http报文结构有哪些不同
- 24、cookie,localStorage,sessionStorage使用和区别
- 25、http请求过程中怎么知道数据已经发送完毕,怎么断开
- 26、为什么连接时是三次握手,挥手时却是四次挥手
- 27、为什么TIME-WAIT需要等待2MSL才能进入CLOSED
- 28、了解轮询和websocket吗
- 29、跨域问题
1、如果让你做一个视频聊天软件,你用TCP还是UDP?
我会选择UDP,因为UDP是无连接的,不保证可靠性,传输速度快,没有拥塞控制,网络出现拥塞也不会使源主机的发送速率降低。视频聊天软件不允许数据有太大的时延,UDP正好适合。但是丢包也影响用户体验,可以考虑将TCP和UDP的特性结合起来,如HTTP/3的QUIC协议。
让你设计一个既确保准确性速度又快的协议,怎么做
2、TCP是怎么去保证可靠传输的
理想的传输条件:传输信道不发生差错;不管发送方以多快速度发送数据,接收方总是来得及处理
- 确认和重传;接收方收到报文就会确认,发送方发送一段时间后没有收到确认就重传。三次握手阶段同步的双方的“序列号+确定号+窗口大小”信息是其基础。
- 数据校验;
- 数据合理分片和排序;
- 流量控制(利用滑动窗口);当接收方来不及处理发送方的数据,能提示发送方降低发送的速率,防止包丢失
- 拥塞控制;当网络拥塞时,减少数据的发送
3、TCP三次握手
SYN同步,置1表示这是1个连接请求或连接接受的报文;seq序号,表示本报文段所发送数据的第一个字节的序号;ack确认号,期望收到对方下一个报文段的的第一个数据字节的序号。若确认号=N,则表明序号N-1为止的所有数据都已正确收到;ACK确认,ACK=1时确认号字段才有效。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pHbzhvKx-1630161834873)(assets/IMG_1.jpg)]
为什么是三次握手?两次不安全,四次没必要。TCP通信要确保双方都具有数据收发的能力。第一次客户端发送SYN,服务器接收,服务器得出客户端的发送能力和自己的接收能力正常;第二次服务器发送SYN+ACK,客户端接收,客户端得出双方的发送和接收能力都正常,但此时服务器并不能得出客户端接收能力是否正常,于是有了第三次握手:客户端发送ACK,服务器接收,得出客户端接收能力正常,自己的发送接收能力也正常。
三次握手可以携带数据吗?第一二次不可以,第三次可以。如果有人想攻击服务器。那他只需要在第一次握手中的SYN报文中放大量数据,然后重复发送大量SYN报文,这样服务器会花费大量内存空间来缓冲这些报文,服务器就很容易被攻击了。
4、TCP拥塞控制
- 慢开始,拥塞避免,快重传,快恢复
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-87n8j8KO-1630161834876)(assets/IMG_3.jpg)]
5、CDN的原理是什么
CDN 全称是Content Delivery Network,内容分发网络。CDN是构建在网络之上的内容分发网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获得所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN的关键技术主要有内容存储和分发技术。
CDN的基本原理是广泛采用各种缓存服务器,将这些缓存服务器分布到用户访问相对集中的地区或网络中,在用户访问网站时,利用全局负载技术将用户的访问指向距离最近的工作正常的缓存服务器上,由缓存服务器直接响应用户请求
6、DNS过程
(1)DNS服务:将域名解析成IP地址;
(2)8.8.8.8就是Google提供的免费DNS服务器的IP地址;
(3)域名解析过程:
- 主机向本地域名服务器进行递归查询(递归查询就是让你帮我查东西,要么你直接告诉我答案,你不知道就替我去问别人知道后再告诉我答案)
- 本地域名服务器以DNS客户机的身份进行迭代查询(迭代查询就是你告诉我下一步去问谁,我自己去问),向一个根域名服务器进行询问
- 根域名服务器告知下一步该查询的顶级域名服务器的IP地址
- 本地域名服务器向顶级域名服务器查询,又被告知下一步该查询的权限域名服务器的IP地址
- 向权限域名服务器查询,得到结果,将结果告诉主机,自己也会进行一些缓存
7、为什么TCP连接是可靠的
因为它通过确认和重传,数据分片和排序,流量控制和拥塞控制等机制,来确保传送的数据,无差错、不丢失、不重复,且按序到达
8、HTTP请求方法
- GET:获取资源,可以理解为读取或下载数据
- HEAD:获取资源的元信息。可以看作是GET的“简化版”,只传响应头(和GET完全相同)
- POST:向资源提交数据
- PUT:类似POST,但有微妙不同:POST表示新建create,PUT则是修改update
- DELETE:删除资源,危险性有点大
- CONNECT:建立特殊的连接隧道,要求服务器(充当代理角色)为客户端和另一台远程服务器建立一条特殊的连接隧道
- OPTIONS:列出可对资源实行的方法,跨域请求会用到
- TRACE:追踪请求-响应的传输路径,不安全,通常禁用
- coderh