计算机网络常见面试题总结(上)
OSI七层模型
应用层,表示层,会话层,传输层,网络层,数据链路层,物理层。每一层都为上一层提供服务
TCP/IP四层模型
应用层,传输层,网络层,网络接口层,各层相互独立,为上层提供服务
常见的网络协议
应用层:HTTP,超文本传输协议,浏览器网页使用的就是HTTP请求加载的。SMTP,简单邮件发送协议,只复制发送电子邮件,不负责接收。FTP,文件传输协议,可以传输文件,但是是一种不安全的协议
传输层:TCP(传输控制协议),面向连接的可靠的数据传输服务。UDP(用户数据协议)提供无连接的数据传输服务,不保证可靠性,简单高效
网络层:IP(网际协议)定义数据包的格式,对数据包进行路由找到正确的目的地,IPv4和IPv6都有在使用
从URL到页面展示发生了什么
在浏览器输入指定的URL ==> 浏览器通过DNS协议,获取域名对应的IP地址 ==> 浏览器通过IP地址和端口号,向目标服务器发送一个TCP连接请求 ==> 建立TCP连接后,发送HTTP请求,请求获取网页数据 ==> 服务器收到HTTP请求并处理请求,响应给浏览器HTTP报文 ==> 浏览器接收到响应之后解析响应中的HTML,同时根据HTML中的其他URL获取相应资源知道网页全部加载 ==> 浏览器不需要和服务器通信时,可以主动关闭TCP连接,或者等待服务器的关闭请求。
HTTP状态码
1XX 接收的请求正在处理。2XX 请求正常处理完毕。3XX 重定向状态码。 4XX 客户端错误状态码。 5XX服务端后端错误状态码
HTTP和HTTPS区别
端口号:HTTP默认是80,HTTP默认是443。
URL前缀:HTTP前缀是http://,HTTPS是https://。
安全:HTTP运行再TCP之上,传输内容都是明文,客户端和服务端都无法验证对方身份。SSL/TLS运行在TCP上,HTTPS是运行在SSL/TLS上的HTTP协议,传输内容都使用了对称加密,对称加密的密钥用服务器证书进行了非对称加密,HTTPS安全性更高,但会耗费更多的服务器资源。
搜索引擎优化(SEO):搜索引擎通常会在搜索结果中展示HTTPS协议的网站,因为其安全性和隐私性。
HTTP1.1和HTTP1.0区别
连接方式:HTTP/1.0为短连接,HTTP/1.1为长连接,HTTP长短连接实际上是TCP协议的长短连接
状态响应码:HTTP1.1加入了大量的状态码,比如100 请求大资源前的预热请求,410,资源已被永久转移而且没有任何已知转发的地址
缓存机制:HTTP1.1有更多的缓存控制策略
带宽:HTTP1.0存在浪费带宽,不支持断点续传,HTTP1.1引入了range头域,运行只请求资源的某个部分,方便开发,充分利用带宽
Host头:HTTP1.1允许一个IP托管多个域名,实现虚拟主机的功能。
HTTP1.1和HTTP2.0区别
多路复用:HTTP2.0在同一连接上同时传输和响应多个请求,互不干扰,HTTP/1.1使用串行方式,需要独立的连接。HTTP2.0更加高效,减少了网络延迟,提高了性能。
二进制帧:HTTP2.0使用二进制帧传输数据,而HTTP1.1使用的是文本格式的报文,二进制帧更加紧凑和高效,减少了传输数据量和带宽消耗
头部压缩:HTTP1.1仅支持body压缩,HTTP2.0提供了对Header的压缩和对其压缩的算法HPACK算法,减少了网络开销
服务器推送:HTTP2.0支持服务器推送,当请求一个资源时,将其他资源一并推送给客户端,减少了客户端的请求次数和延迟,而HTTP1.1需要客户端自己去请求相关资源,、
HTTP2.0和HTTP3.0区别
传输协议:HTTP2.0是基于TCP协议实现的,HTTP3.0是QUIC实现的,提供与TLS/SSL相当的安全性,具有较低的连接和传输延迟,可以将QUIC看作UDP的升级版本,新增了比如加密重传等功能
连接建立:HTTP2.0需要TCP三次握手,TLS还需要握手,共需要大概3个RTT,HTTP3.0只需要0,1个RTT就可以建立连接
队头阻塞:HTTP2.0多请求复用一个TCP连接,一旦发生丢包,会阻塞所有的HTTP请求,HTTP3.0一个连接建立多个数据流,多个数据流之间独立不影响,本质上是多路复用加轮询
错误传输:HTTP3.0可以更快恢复很重传,HTTP2.0则需要依赖TCP的错误恢复机制
安全性:HTTP3.0QUIC HTTP2.0TLS,3.0能提供更好的安全性
HTTP如何保存用户状态
HTTP是一种无状态协议,使用session保存用户状态
URL和URI的区别
URI:统一资源标识符,可以唯一标识一个资源。URL:统一资源定位符,用于定位一个资源。URL可以理解为一种具体的URI。
GET和POST的区别
语义:GET通常用于获取资源,POST通常用于修改资源
幂等:GET幂等,多次重复请求不改变资源,POST不幂等,每次请求产生不同结果
格式:GET请求参数放在URL中(URL长度收到限制),POST请求参数放在请求体(body)中,body没有明确限制
缓存:GET请求会被浏览器获取网关,代理缓存,POST不会,需要实时的响应
安全性:如果使用HTTP协议的话都不安全,必须使用HTTPS来加密传输协议,GET比POST更容易泄露数据,因为其数据都在URL中
什么是WebSocket
是一种基于TCP的全双工通信协议,客户端和服务端可以同时发生和接收数据,可以在浏览器,很多编程语言,框架和服务器都能使用,WebSocket是应用层的协议,仅需一次握手,即可建立持久性连接,并进行双向数据通信。
常用应用场景,视频弹幕,实时消息推送,社交聊天
WebSocket和HTTP有什么区别
都是基于TCP的应用层协议
区别如下
WebSocket是双向实时通信,HTTP是单向通信协议,HTTP通信只能由客户端发起,服务端无法主动通知客户端。
WebSocket使用 ws:// 或 wss:// HTTP使用http:// 和 https://作为协议前缀
WebSocket可以支持扩展,用户可以扩展协议,支持自定义协议
WebSocket通信数据格式轻量,协议控制数据包头部小,网络开销小,HTTP网络开销大
WebSocket工作过程
-
客户端向服务器发送一个HTTP请求,请求头中包含Upgrade:websocket等字段,表示升级协议为WebSocket
-
服务端收到请求,如果支持该协议,回复HTTP101,响应头包含一些字段,表示升级成功
-
建立了一个WebSocket连接,以帧为单位进行双向数据传输,,接收端将帧重新组装成完整消息
SSE与WebSocket有什么区别
两者都可以建立服务端和浏览器之间的通信,实现服务端向客户端的消息推送
区别
-
SSE基于HTTP,不需要特殊的服务器和协议,WebSocket需要单独的服务器处理协议
-
SSE单向通信,只能服务端给客户端,WebSocket双向通信
-
SSE无需引入组件,WebSocket传输数据需要二次解析
-
SSE支持断线重连,WebSocket断线需要自己连接
-
SSE只能传文本,二进制数据需要编码,WebSocket默认支持二进制数据
某些情况,不需要客户端发送数据,只需要服务器操作的更新,比如状态更新,股票行情,SSE更有优势,自动重新连接等
PING命令
网络诊断工具,用于测试主机间的连通性和网络延迟
ICMP Echo Request 请求报文:序列号,TTL
目标主机的域名或者IP地址
往返时间,发送请求报文到接收响应报文的时间
统计结果,丢包率,往返时间,最大,最小,平均等数据
如果无法得到正确的响应,连通性存在问题
PING命令的工作原理
基于网络层的ICMP,主要原理就是,在网络上发送和接收ICMP报文实现的
ICMP有类型字段,标识报文类型。查询报文类型:向目标主机发送请求期望响应。差错报文类型:向源主机发送错误信息,用于报告网络中的错误情况
PING用的属于查询报文类型,PING命令向目标主机发送ICMP Echo Request 类型为 8,如果连通正常,目标主机会返回ICMP Echo Reply
DNS
DNS是浏览器访问网址用到的第一个协议,用户结局域名和IP映射,浏览器DNS缓存,操作系统DNS缓存,路由器DNS缓存,如果都查询不到,就会使用到DNS,设计是分布式,层次数据库结构,是应用层协议,运行在TCP或UDP之上,端口为53
DNS服务器有哪些
自底向上分为以下几个层级
-
根DNS服务器:提供TLD服务器的IP地址
-
顶级域DNS服务器(TLD服务器):指域名后缀,如com,org,net,edu等TLD服务器提供了权威的DNS服务器IP地址
-
权威DNS服务器:在因特网上具有公共主机的组织必须提供DNS记录,用于将主机名映射为IP地址
-
本地DNS服务器:每个ISP都有本地的DNS服务器,将主机发的请求将请求转发到DNS层次结构中,严格讲不属于DNS层次结构
DNS劫持
是一种网络攻击,会修改DNS的解析结果,将用户的访问的域名指向错误的IP地址,导致用户无法访问正常的网站,或背引到恶意的网站
标签:总结,面试题,HTTP,请求,TCP,计算机网络,DNS,服务器,WebSocket From: https://www.cnblogs.com/zwmBlog/p/18191063