提示:该文章仅仅是个人面试(测试)总结的一些题目,仅供参考
一、计算机网络基础
1.OSI的七层模型分别是?各自的功能是什么?
- 物理层:利用传输介质为数据链路层提供物理连接,实现比特流的透明传输(0和1的电信号)
- 数据链路层:接收来自物理层的位流形式的数据,并封装成帧,传送到上一层
- 网络层:将网络地址翻译成对应的物理地址,并通过路由选择算法为分组通过通信子网选择最适当的路径
- 传输层:在源端与目的端之间提供可靠的透明数据传输
- 会话层:负责在网络中的两节点之间建立、维持和终止通信
- 表示层:处理用户信息的表示问题,数据的编码,压缩和解压缩,数据的加密和解密
- 应用层:为用户的应用进程提供网络通信服务
说明:一层物理层时数据被称为比特流(Bits),二层数据链路层时数据被称为帧(Frames),三层网络层数据被称为包(Packages),四层即传输层数据被称为段(Segments)
2.说一下一次完整的HTTP请求的过程包含哪些内容
域名解析 --> 发起TCP的3次握手 --> 建立TCP连接后发起http请求 --> 服务器响应http请求,浏览器得到html代码 --> 浏览器解析html代码,并请求html代码中的资源(如js、css、图片等) --> 浏览器对页面进行渲染呈现给用户。
3.HTTP长连接和短链接的区别
在HTTP/1.0中默认使用短链接,也就是说客户端和服务端每进行一次HTTP操作,就建立一次连接,任务结束就终端连接;而从HTTP/1.1起,默认使用长连接,用来保持连接特性。使用长连接的HTTP协议,会在响应头加入这行代码:Connection:keep-alive
。
在使用长连接的情况下,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,客户端再次访问这个服务器时,会继续使用这一条已经建立的连接。Keep-Alive不会永久保持连接,它也有一个保持时间,可以在不同的服务器中设定这个时间。
4.HTTP请求方法你知道多少?
5.get,post区别,你知道哪些?
- get是获取数据,post是修改数据
- get是把请求的数据放在url上,以?来分割URL和传输数据,参数之间以&相连,所以get不太安全,而post把数据放在HTTP的包体内
- get提交的数据最大是2k(限制实例取决于浏览器),post理论上没有限制
- get产生一个tcp数据包,浏览器会把http header和data一并发送出去,服务端响应200(返回数据);post产生两个数据包,浏览器先发送header,服务端响应100 continue,浏览器在发送data,服务端响应200(返回数据)。
- get请求会被浏览器主动缓存,而post不会,除非手动对浏览器设置
所以正因为有这样的区别,所以不应该且不能用get请求对数据做增删改操作
6.在浏览器中输入url地址后显示主页的过程
- 根据域名,进行DNS域名解析
- 拿到解析的IP地址,建立TCP连接
- 向IP地址,发送HTTP请求
- 服务器处理请求,返回响应结果
- 关闭TCP连接
- 浏览器解析HTML,并进行布局渲染
7.在浏览器中输入url回车后,背后有哪些技术步骤
- 查浏览器缓存,看看有没有已经缓存好的,如果没有,检查本机host文件,
- 向DNS服务器发送DNS请求,查询本地DNS服务器,这其中用的是UDP的协议
- 如果在一个子网内采用ARP地址解析协议进行ARP查询如果不在一个子网那就需要对默认网关进行DNS查询,如果还找不到会一直向上找根DNS服务器,直到最终拿到IP地址(全球400多个根DNS服务器,由13个不同的组织管理)
- 这个时候我们就有了服务器的IP地址 以及默认的端口号了,http默认是80 https是 443 端口号,会首先尝试http然后调用Socket建立TCP连接,
- 经过三次握手成功建立连接后,开始传送数据,如果正是http协议的话,就返回就完事了;如果不是http协议,服务器会返回一个5开头的的重定向消息,告诉我们用的是ht