计算机网络相关常见面试题

我可能是鱼的记忆,看过就忘了。
需要找工作复习的时候感觉很烦躁,因为有很多很多知识需要再重新去看去记忆。
所以在这里分类写下知识点,方便以后查阅。
 
一、介绍一下cookie, session 和token的区别
因为http请求是无状态的,服务器无法从网络连接上识别访问者的身份,为了解决这个问题,就有了cookie
 
cookie:客户端请求服务器,如果服务器需要记录该用户的状态,就向客户端发送一个cookie,客户端会把这个cookie保存下来,当下次访问服务器时,把请求的网址连同cookie信息,一起发送给服务器,服务器根据接收到的cookie来辨别用户信息。cookie存放在客户端中
session:session是另一种存放会话的机制,主要存放在服务端。当客户端访问浏览器的时候,服务器把客户端信息以某种形式存放在服务器中,这就是session;当程序需要为某个客户端的请求创建session时,先检查客户端的请求中有没有sessionId(用户首次登录服务器创建,并返回给客户端的信息),如果有sessionId,服务器就根据sessionId把这个用户的相关session信息检索出来并使用;如果请求不包含sessionId,则根据session为该用户新创建一个sessionId。session信息譬如:用户账户余额、购物车等信息
token:token的意思是“令牌”,是用户身份的验证方式,最简单的token组成:uid(用户唯一的身份标识)、time(当前时间的时间戳)、sign(签名,由token的前几位+以哈希算法压缩成一定长的十六进制字符串,可以防止恶意第三方拼接token请求服务器)。还可以把不变的参数也放进token,避免多次查库(个人理解,主要是避免不合法)
使用token进行身份验证的流程:
①客户端使用用户名跟密码请求登录
②服务端收到请求,去验证用户名与密码
③验证成功后,服务端会签发一个 Token,再把这个 Token 发送给客户端
④客户端收到 Token 以后可以把它存储起来,比如放在 Cookie 里或者数据库里
⑤客户端每次向服务端请求资源的时候需要带着服务端签发的 Token
⑥服务端收到请求,然后去验证客户端请求里面带着的 Token,如果验证成功,就向客户端返回请求的数据
 
二、输入url后到加载网页的整个过程是怎么样的?
1、根据域名解析获取到对应的IP地址;
2、浏览器获取到域名对应的IP地址后,向IP地址发送请求连接,进行TCP三次握手;
3、连接建立后,浏览器向服务器发送http请求;
4、服务器接收到这个请求后,根据路径参数映射到特定的请求服务器进行处理,并将结果以及相应的视图返回给浏览器
5、浏览器解析并渲染视图,如果遇到js、css文件、图片资源的使用,需要重复以上步骤请求资源
6、浏览器根据请求到的资源进行页面渲染
 
三、DNS域名解析过程
1、浏览器检查缓存中有没有域名对应的ip地址
2、如果浏览器缓存中没有就检查操作系统的hosts文件
3、如果本地没有的话就调用域名解析程序
4、把待解析的域名放在DNS请求报文中,以UDP用户数据报方式发送给本地域名服务器
5、本地域名服务器根据域名查找到ip地址后,把对应的IP地址放在回答报文中返回
6、获取到ip地址后进行TCP三次握手等
 
四、DNS使用TCP还是UDP协议?
DNS在进行区域传输时使用TCP协议,在域名解析时使用UDP协议
 
五、TCP三次握手和四次挥手
1、三次握手:是指在建立一个TCP连接时,需要client和server总共发送三个包来确认连接的建立:
(1)client向服务端发送请求,标志位SYN=1,随机生成seq=X发送给server;
(2)server接受到SYN=1,知道客户端要建立连接,则将SYN和ACK都置为1,ack=X+1,随机生成seq=Y发送给客户端;
(3)客户端接收到请求后,判断ACK=1,ack=X+1,则将ACK置为1,ack=Y+1,发送给服务端,服务端收到后检查是否正确,正确的话则可以建立连接
2、四次挥手:是指断开TCP连接时,需要客户端和服务端总共发送四个包来确认断开连接:
(1)客户端向服务端发送FIN=M,要求断开客户端到服务器的数据传送;
(2)服务器接受到FIN值后,发送一个ACK=M+1发送给客户端。此时TCP连接处于半连接状态,客户端已经无法向服务端发送数据,但是服务端向客户端发送数据塔需要接受;
(3)服务端向客户端发送一个FIN=N,要求关闭服务端向客户端的数据传送;
(4)客户端接受到FIN值后,向服务端发送ACK=1,ack=N+1,服务端接受到确认正确后TCP连接关闭,完成四次挥手
 
六、 TCP是全双工的还是半双工的?
TCP是全双工
全双工:发送数据的同时也可以接收数据
半双工:同一时间只能有一件事情进行
 
七、TCP和UDP的区别, 和它们各自的应用场景
区别:
1、TCP是面向连接的,UDP是无连接的;
2、TCP是可靠地,UDP是不可靠的;
3、TCP只支持点对点通信,UDP支持一对一、一对多、多对一、多对多的通信方式;
4、TCP是面向字节流的,UDP是面对报文的;
5、TCP有拥塞控制机制,UDP没有拥塞控制机制
应用场景:
1、UDP适用于实时应用,譬如视频会议、直播、IP电话等
2、TCP适用于要求可靠传输的应用,譬如文件传输
 
八、http与https的区别:
1、http是运行在TCP上,明文传输,而https是运行在SSL上,SSL又运行在TCP上,相对比http而言添加了加密和认证机制,更加安全;
2、http默认端口:80,https默认端口:443;
3、https相对与http来说需要进行加密解密过程更加消耗CPU和内存资源
4、https一般需要证书认证
 
九、GET和POST的区别
1、GET一般用来从服务器获取资源,POST一般用来更新资源
2、GET请求参数一般放在url地址中,明文传输不安全,POST提交的数据一般放在请求体中
3、GET请求长度收到URL的限制,发送的数据比较少,而POST请求数据放在请求体中不受限制
 
十、http长连接&短连接
实际是TCP的长连接、短连接
原来http使用短连接,连接完成任务结束后自动中断连接
长连接是指进行tcp三次握手后,不进行四次挥手,响应头中会有标记 Connection:keep-alive,但是这个keep-alive并不是永久的,会有保持的时间(服务器设置),并且有最大限制连接数
当前http1.1默认是长连接
长连接
(1)优点:可以省去较多的TCP连接和关闭的过程,对于请求资源比较频繁的客户端适合使用长连接
(2)缺点:在长连接的应用场景下,client端一般不会主动关闭连接,当client与server之间的连接一直不关闭,随着客户端连接越来越多,server会保持过多连接
(3)适用:数据库
短连接
(1)优点:短连接对于服务器来说管理较为简单,存在的连接都是有用的连接,不需要额外的控制手段。
(2)缺点:如果客户请求频繁,将在TCP的建立和关闭操作上浪费较多时间和带宽。
(3)适用:web网站
 
十一、http请求类型
get、post、put、delete、head等
 
十二、http请求包含哪些部分?
请求行:①请求方法:GET、POST、PUT、DELETE等;②请求url;③HTTP协议以及版本
请求头:HTTP的报文头,报文头包含若干个属性,格式为“属性名:属性值”,例如:Cookie、UA、Accept-Language等
请求体:POST请求时传递的信息;GET请求没有请求体
空一行
 
十三、HTTP响应状态码
(1)200--服务器响应成功
(2)302--请求被重定向
(3)304--已被缓存
(4)400--请求有语法问题
(5)401--请求未经过授权
(6)403--拒绝请求
(7)404--请求的资源不存在(通常是请求的url错误)
(8)500--服务器内部错误
(9)502--作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应
(10)503--服务器当前不能处理客户端的请求,一段时间后可能恢复正常
 
十四、OSI七层模型以及其协议名称
(1)应用层:http/FTP/pop3
(2)表示层:JPEG/MPEG
(3)会话层:RPC/ASP/NFS
(4)传输层:TCP/UDP
(5)网络层:IP
(6)数据链路层:HDLC/PPP,将比特流进行分组处理,8位一组(字节)依次发送数据(帧),
(7)物理层:互联物理链路,用物理介质:网线、光纤、无线电波,以01101形式存在(比特流)
 
十五、TCP/IP四层协议
(1)应用层
(2)传输层
(3)网络层
(4)网络接口层
 
十六、IP地址,由网络标识和主机标识两部分组成
(1)A类地址:0.0.0.0-127.255.255.255,其中网络标识长度为8位,主机标识长度为24位,子网掩码为255.0.0.0
(2)B类地址:128.0.0.0-191.255.255.255,其中网络标识长度为16位,主机标识长度为16位,子网掩码为255.255.0.0
(3)C类地址:192.0.0.0-223.255.255.255,其中网络标识长度为24位,主机标识长度为8位,子网掩码为255.255.255.010
posted @ 2021-06-23 08:56  aronge  阅读(109)  评论(0编辑  收藏  举报