概述
一、跨域问题产生原因及解决方案
原因:同源策略,协议/域名/端口号不同
解决方案:①jsonp:利用<script>标签(只能获取,不能提交)
②CORS:Access-Control-Allow-Origin
③Nodejs中间件代理(两次跨域)
④通过Proxy代理来跨域
二、浏览器的缓存机制
(1)强制缓存
①不存在该缓存,则向服务器发起请求
②存在该缓存,且结果未失效,直接返回结果
③存在该缓存,但结果已失效,则使用协商缓存
(2)协商缓存
①协商缓存生效,返回304和Not Modified
②协商缓存失效,返回200和请求结果
三、get和post的区别
Get用来向服务器获取数据,传递的参数是直接暴露在url上的,大小有限制,可缓存,会保留在历史记录里,产生一个TCP数据包;
Post用来向服务器传递数据,传递的参数在请求体里,大小没有限制,不可缓存,不会保留在历史记录里,产生两个TCP数据包;
四、301和302是什么网络请求
301:永久重定向(地址发生变化)
302:临时重定向
五、进程和线程都是什么?它们之间有什么区别/它们都有什么优缺点?
进程和线程都是什么?
进程是资源(CPU、内存等)分配的基本单位,它是程序执行时的一个实例,在程序运行时创建;线程是程序执行(操作系统调度)的最小单位,是进程的一个执行流,一个进程是由多个线程组成的。
进程和线程的区别:
1.从属关系不同
进程是正在运行程序的实例,进程中包含了线程,而线程中不能包含进程。
2.描述侧重点不同
进程是操作系统分配资源的单位,而线程是操作系统调度的基本单位
3.共享资源不同
多个进程之间不能共享资源,每个进程都有自己的堆、栈、虚存空间(页表)、文件描述符等信息而线程之间可以共享进程资源文件(堆和方法区)
4.上下文切换速度不同
线程上下文切换速度更快,线程上下文是指从一个线程切换到另外一个线程。而进程的上下问切换色度较慢,每个进程都有独立的数据空间(程序上下文),进程之间的切换回有较大的开销
5.是否会相互影响
一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉
六、单线程和多线程都是什么?有什么区别?哪个更好一些?
单线程:
每个正在运行的程序(即进程),至少包括一个线程,这个线程叫主线程。主线程在程序启动时被创建,用于执行main函数。只有一个主线程的程序叫做单线程程序。主线程负责执行程序的所有代码(UI展现以及刷新,网络请求,本地存储等等),这些代码执行顺序执行,无法并发执行。
多线程:
拥有多个线程的程序,称作多线程程序。iOS允许用户自己开辟新的线程,相对于主线程来讲,这些线程,称为子线程。可以根据需要开辟若干子线程。子线程和主线程都是独立的运行单元,各自的执行互不影响,因此能够并发执行。
单线程和多线程的区别:
单线程程序:只有一个线程,代码顺序执行,容易出现代码阻塞。(页面假死)
多线程:有多个线程,线程间独立运行能有效避免代码阻塞,并提高程序的运行性能。
单线程和多线程哪个更好?
单线程和多线程相比,省去了等待I/O操作的时间,但是多了CPU上下文切换。I/O操作远比CPU上下文切换要耗费时间,所以大多情况下使用多线程会更好。但是在I/O操作很少的情况下可以使用单线程。例如redis就是使用单线程,因为他的数据存储都是基于内存的,没有I/O操作,因此它不会再获取数据的时候耗费性能。
七、TCP和UDP有什么区别
UDP(用户数据报协议):无连接,不可靠传输,不使用流量控制和拥塞控制,支持一对一、一对多、多对多交互通信,面向报文传输,首部开销小,仅8字节,所以传输数据报文时很高效,适用于实时应用(IP电话、视频会议、直播等)
TCP(传输控制协议):面向连接,可靠传输,使用流量控制和拥塞控制,只能是一对一通信,面向字节流传输,首部开销最小20字节,最大60字节,适用于要求可靠传输的应用,例如文件传输
八、HTTP、HTTP2和HTTPS的区别
HTTP和HTTPS的区别:
1.HTTP明文传输,数据都是未加密的安全性较差,HTTPS(SSL+HTTP) 数据传输过程是加密的,安全性较好。
2.使用 HTTPS 协议需要到 CA 申请证书,一般免费证书较少,因而需要一定费用。
3.HTTP 页面响应速度比 HTTPS 快,主要是因为 HTTP 使用 TCP 三次握手建立连接,客户端和服务器需要交换 3 个包,而 HTTPS除了 TCP 的三个包,还要加上 ssl 握手需要的 9 个包,所以一共是 12 个包。
4.http 和 https 使用的是完全不同的连接方式,用的端口也不一样,前者是 80,后者是 443。
5.HTTPS 其实就是建构在 SSL/TLS 之上的 HTTP 协议,所以,要比较 HTTPS 比 HTTP 要更耗费服务器资源。
HTTP和HTTP2的区别:
HTTP2相对于HTTP主要做的优化有多路复用、服务器推送、头信息压缩、二进制协议等。
九、TCP/IP协议
TCP/IP传输协议,即传输控制/网络协议,也叫网络通讯协议。TCP/IP传输协议对互联网中各部分进行通信的标准和方法进行了规定,他是保证网络数据信息及时、完整传输的两个重要协议。TCP/IP传输协议严格来说市一个四层的体系结构,应用层、传输层、网络层和数据链路层都包含在其中。
应用层的主要协议有TeInet、FTP、SMTP等,是用来接收来自传输层的数据或者按不同应用要求与方式将数据传输至传输层。传输层的主要协议有UDP、TCP,是使用者使用平台和计算机内部数据结合的通道,可以实现数据传输和数据共享。网络层的主要协议有ICMP、IP、IGMP,主要负责网络中的数据包的传送等。网络访问层,也叫网络接口层或数据链路层,主要协议有ARP、RARP,主要功能是提供链路管理错误检测,对不同通信媒介有管信息细节问题进行有效处理等。
十、浏览器地址栏输入地址按回车显示页面经过哪些过程
①DNS解析:寻找资源所在的机器的过程,返回一个IP地址。递归和迭代解析,默认和使用较多的是递归。
②TCP连接:三次握手
③发送HTTP请求:客户端向服务器发送请求,HTTP请求报文包括请求行、请求头部、请求体
④服务器响应请求:服务器返还HTTP报文,包含响应行、响应头部
响应体。
⑤浏览器解析:收到网页文件后进行解析,把资源呈现出来
⑥关闭TCP连接:四次挥手
十一、浏览器渲染机制
①在浏览器中输入URL
②浏览器向响应的服务器发送请求,接收响应
③HTML解析器自上而下的将HTML文件解析成一颗DOM树,树上的节点就是响应的元素
④CSS解析器将CSS解析成CSSOM树
⑤根据DOM树和CSSOM树构建响应的Render树(渲染树)。
⑥Layout(布局):计算出每个节点在屏幕中的位置
⑦Paint(绘制):将内容显示在屏幕上
最后
以上就是爱听歌大叔为你收集整理的计算机网络相关基础知识点的全部内容,希望文章能够帮你解决计算机网络相关基础知识点所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复