题目汇总来源 史上最全各类面试题汇总,没有之一,不接受反驳
计网抢救一下。
目录
前言
计算机网络
OSI网络体系结构与TCP/IP协议模型
TCP的3次握手和四次挥手
为什么TCP链接需要三次握手,两次不可以么,为什么?
TCP协议如何来保证传输的可靠性
TCP与UDP的区别
TCP与UDP的有哪些应用
HTTP1.0与2.0的区别
HTTP报文结构
HTTP的长连接和短连接?
HTTP与HTTPS的区别以及如何实现安全性
如何验证证书的合法性
非对称加密中,公钥和私钥谁负责加密,谁负责解密
Get与POST的区别
HTTP无状态
同域和跨域
TCP的拥塞处理
TCP是如何进行流量控制
TCP和UDP分别对应的常见应用层协议
IP地址的分类
有了唯一的Mac地址为啥还需要IP地址?
交换机、集线器与路由器有什么区别?
网桥的作用
ARP是地址解析协议,简单语言解释一下工作原理。
网络接口卡(网卡)的功能?
IO 中同步与异步,阻塞与非阻塞区别
URI和URL的区别
常见状态码及原因短语
说说Session、Cookie 与 Application
什么是分块传送
谈谈SQL 注入
DDos 攻击
什么是XSS 攻击
从输入网址到获得页面的过程
DNS服务器类型
DNS请求方式
DNS请求过程
DNS报文格式
ECS
HTTPDNS
运营商DNS劫持
socket常用方法
IPv4与IPv6对比
网络分层模型(OSI、TCP/IP)以及对应的网络协议
OSI七层协议模型、TCP/IP四层模型和五层协议体系结构之间的关系
OSI七层模型 |
TCP/IP四层模型 |
五层体系结构 |
|
---|---|---|---|
7 | 应用层 | 应用层 | 应用层 |
6 | 表示层 | ||
5 | 会话层 | ||
4 | 传输层 | 传输层 | 传输层 |
3 | 网络层 | 网络层 | 网络层 |
2 | 数据链路层 | 网络接口层 | 数据链路层 |
1 | 物理层 | 物理层 |
OSI七层模型及各层作用
TCP的三次握手与四次挥手(详解+动图)
被面试官问到“三次握手,四次挥手”时该怎么回答?
三次握手
四次挥手
详细讲解看上一题链接。
如果只有两次握手,当出现丢包时,比如第一次服务器端传给客户端的包丢失,导致服务器建立连接而客户端没有;
当出现因为延时重发等原因出现的重复包时,没有经过客户端的判断并返回消息,可能会重复建立连接。
四次挥手是因为客户端完成发送后服务器端可能还有数据发送,因此FIN要分开发。
网络基础:TCP协议-如何保证传输可靠性
详细讲解看上面的链接。继续偷懒
TCP和UDP的优缺点及区别
TCP和UDP的区别和优缺点
传输层TCP和UDP的区别分析与应用场景【转载】
TCP 用于实时性要求低,但对准确率要求高的场景。反之使用 UDP。
HTTP2.0与HTTP1.0的区别
HTTP1.0、HTTP1.1和HTTP2.0的区别
HTTP1.0的缺陷
- 每个请求都需单独建立连接(keep-alive能解决部分问题但不能交叉推送)
- 每个请求和响应都需要完整的头信息
- 数据未加密
HTTP2.0的优势
- 多路复用 —— 即可以交叉推送
- 压缩头信息
- 请求划分优先级
- 支持服务器端主动推送 —— js, css 等文件不需要客户端解析完HTLM后再请求
HTTP报文详解
HTTP的报文格式解析
请求行,请求头部,空格,请求正文
HTTP长连接、短连接究竟是什么?
短连接的操作步骤是:
建立连接——数据传输——关闭连接...建立连接——数据传输——关闭连接
长连接的操作步骤是:
建立连接——数据传输...(保持连接)...数据传输——关闭连接
HTTPS和HTTP有什么区别,到底安全在哪里?
通俗理解数字签名,数字证书和https
HTTP:A → 明文 → B
HTTPS:A → 加密 → B
HTTPS 的 TLS/SSL 保证安全性。
既然是加密,那肯定是不希望别人知道我的消息,所以只有我才能解密,所以可得出公钥负责加密,私钥负责解密;
既然是签名,那肯定是不希望有人冒充我发消息,只有我才能发布这个签名,所以可得出私钥负责签名,公钥负责验证。
GET和POST两种基本请求方法的区别
GET在浏览器回退时是无害的,而POST会再次提交请求。
GET产生的URL地址可以被Bookmark,而POST不可以。
GET请求会被浏览器主动cache,而POST不会,除非手动设置。
GET请求只能进行url编码,而POST支持多种编码方式。
GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。
GET请求在URL中传送的参数是有长度限制的,而POST么有。
对参数的数据类型,GET只接受ASCII字符,而POST没有限制。
GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。
GET参数通过URL传递,POST放在Request body中。
什么是Http无状态?Session、Cookie、Token三者之间的区别
HTTP无状态协议,是指协议对于交互性场景没有记忆能力。
域,域名,同域,跨域及解决
同域:同协议,同域名,同端口
跨域:不满足上述条件。因为JavaScript有同源策略的限制,一个域名js无法访问跨域域名下的对象。
URL | 说明 | 是否允许通信 |
---|---|---|
http://www.a.com/a.js http://www.a.com/b.js |
同一域名下 | 允许 |
http://www.a.com/lab/a.js http://www.a.com/script/b.js |
同一域名下不同文件夹 | 允许 |
http://www.a.com:8000/a.js http://www.a.com/b.js |
同一域名,不同端口 | 不允许 |
http://www.a.com/a.js https://www.a.com/b.js |
同一域名,不同协议 | 不允许 |
http://www.a.com/a.js http://70.32.92.74/b.js |
域名和域名对应ip | 不允许 |
http://www.a.com/a.js http://script.a.com/b.js |
主域相同,子域不同 | 不允许 |
http://www.a.com/a.js http://a.com/b.js |
同一域名,不同二级域名(同上) | 不允许(cookie这种情况下也不允许访问) |
http://www.cnblogs.com/a.js http://www.a.com/b.js |
不同域名 | 不允许 |
TCP的拥塞控制
慢开始与拥塞避免
快重传与快恢复
随机早期检测 RED
TCP的流量控制
TCP Nagle算法&&延迟确认机制
利用可变窗口进行流量控制
接收方接到发送方的消息后,返回确认消息要带上缓存窗口的剩余大小,若为0则停止发送。
为防止窗口大小为0的消息丢失导致的发送方等待,给发送方设置计时器。
Nagle 算法:发送方收到上一次的 ACK 后才把缓冲区里的数据一并发出去。
延迟 ACK:接收方接到数据后延时一段时间,等待是否有要发送的数据捎带回 ACK。
TCP和UDP的区别以及各自对应的各种应用层协议和应用
IP 地址分类(A、B、C、D、E类)
明明用MAC地址就可以标识电脑,为什么还要发明IP地址?
路由器、交换机、集线器的区别
集线器:连接多台设备,一部设备发送消息以广播形式传播,同时只能有一部设备发送消息。
交换机:能够记录连接设备的地址,一部设备发送消息可通过交换机直接转发到相应设备。
路由器:连接不同网段。
网桥的功能介绍
作用于数据链路层,连接多个可以是不同协议的局域网。
过滤:A 与 B 原来在同一局域网下,A 向 B 的请求会被网桥过滤。
转发:C 与 D 原来不在同一局域网下,C 向 D 的请求会被网桥转发。
泛红算法与后向学习算法。
[图解]ARP协议(一)
ARP是地址解析协议,简单语言解释一下工作原理。
地址解析协议(Adress Resolution Protocol)。在已知目的IP地址,需要知道目的硬件地址时使用。
设备 A 要与设备 B 通信,需要知道设备 B 的 IP 地址与 MAC 地址,但通常情况下高层应用只关心 IP 地址。因此需要使用 ARP。
设备 A 先发出“我是设备 A,MAC 地址 xx 和 IP 地址 xx,谁是设备 B?”这样的请求,交由交换机和路由器广播;
所有不是 B 的设备丢弃该包,设备 B 将 A 的 IP 与 MAC 记录 ARP 列表,并将自己的 IP 与 MAC 单播给 A,双方可以正常通信了。
网卡工作原理详解
网卡的功能主要有两个:
- 将电脑的数据封装为帧,并通过网线(对无线网络来说就是电磁波)将数据发送到网络上去;
- 接收网络上其它设备传过来的帧,并将帧重新组合成数据,发送到所在的电脑中。
也是个人理解。
阻塞和非阻塞 IO 都属于同步 IO。
同步 IO 表示调用者要主动向被调用者索要返回结果。阻塞 IO 调用者在等待返回结果时线程会被挂起,而非阻塞 IO 不会被挂起,而是接下去执行其他任务,但要时常回来检查是否得到返回结果。
异步 IO 调用者不会发生阻塞,被调用者得到返回结果后会主动通知调用者。
URL、URN、URI的区别?
URI:Uniform Resource Identifier,即统一资源标志符,用来唯一的标识一个资源。
URL:Uniform Resource Locator,统一资源定位符。即URL可以用来标识一个资源,而且还指明了如何locate这个资源。
URN:Uniform Resource Name,统一资源命名。即通过名字来表示资源的。
常见HTTP状态码
HTTP的请求过程
状态码 | 类别 | 原因短语 |
---|---|---|
1XX | Informational(信息状态码) | 接收的请求正在处理 |
2XX | Success(成功状态码) | 请求正常处理完毕 |
3XX | Redireection(重定向状态码) | 每次请求中使用重定向不要超过 5 次。 |
4XX | Client Error(客户端错误状态码) | 表示请求可能出错,服务器无法处理请求 |
5XX | Server Error(服务器错误状态码) | 服务器本身的错误,而不是请求出错 |
状态码 | 英文名称 | 说明 |
---|---|---|
100 | Continue | 客户必须继续发出请求 |
101 | Switching Protocols | 客户要求服务器根据请求转换HTTP协议版本 |
200 | OK | 请求成功 |
201 | Created | 服务器已经创建了文档,Location头给出了它的URL |
202 | Accepted | 接受和处理、但处理未完成 |
203 | Non-Authoriative Information | 返回信息不确定或不完整 |
204 | No Content | 服务器成功处理了请求,但没有返回任何内容 |
205 | Reset Content | 服务器完成了请求,用户代理必须复位当前已经浏览过的文件 |
206 | Partial Content | 服务器已经完成了部分用户的GET请求 |
300 | Multiple Choices | 请求的资源可在多处得到 |
301 | Moved Permanently | 删除请求数据 |
302 | Found | 在其他地址发现了请求数据 |
303 | See Other | 建议客户访问其他URL或访问方式 |
304 | Not Modified | 客户端已经执行了GET,但文件未变化 |
305 | Use Proxy | 请求的资源必须从服务器指定的地址得到 |
306 | Unused | 前一版本HTTP中使用的代码,现行版本中不再使用 |
307 | Temporary Redirect | 申明请求的资源临时性删除 |
400 | Not Found | 客服端请求的语法错误,服务器无法解析 |
401 | Unauthorized | 请求授权失败 |
402 | Payment Granted | 保留有效ChargeTo头响应 |
403 | Forbidden | 请求不允许 |
404 | Not Found | 服务器无法根据客户端的请求找到资源 |
405 | Method Not Allowed | 用户在Request-Line字段定义的方法不允许 |
406 | Not Acceptable | 根据用户发送的Accept拖,请求资源不可访问 |
407 | Proxy Authentication Required | 类似401,用户必须首先在代理服务器上得到授权 |
408 | Request Time-out | 客户端没有在用户指定的时间内完成请求 |
409 | Conflict | 对当前资源状态,请求不能完成 |
410 | Gone | 服务器上不再有此资源且无进一步的参考地址 |
411 | Length Required | 服务器拒绝用户定义的Content-Length属性请求 |
412 | Precondition Failed | 一个或多个请求头字段在当前请求中错误 |
413 | Request Entity Too Large | 请求的资源大于服务器允许的大小 |
414 | Request-URI Too Large | 请求的资源URL长于服务器允许的长度 |
415 | Unsupported Media Type | 请求资源不支持请求项目格式 |
416 | Requested range not satisfiable | 请求中包含Range请求头字段,在当前请求资源范围内没有range指示值,请求 也不包含If-Range请求头字段 |
417 | Expectation Failed | 服务器不满足请求Expect头字段指定的期望值,如果是代理服务器,可能是下 一级服务器不能满足请求 |
500 | Internal Server Error | 服务器内部错误,无法完成请求 |
501 | Not Implemented | 服务器不支持请求的函数 |
502 | Bad Gateway | 服务器暂时不可用,有时是为了防止发生系统过载 |
503 | Service Unavailable | 服务器过载或暂停维修 |
504 | Gateway Timeout | 关口过载,服务器使用另一个关口或服务来响应用户,等待时间设定值较长 |
505 | HTTP Version Not Supported | 服务器不支持或拒绝支请求头中指定的HTTP版本 |
200 OK:客户端请求成功。
301: 永久重定向, Location响应首部的值仍为当前URL,因此为隐藏重定向。
302: 临时重定向,显式重定向, Location响应首部的值为新的URL。
304:Not Modified 未修改,比如本地缓存的资源文件和服务器上比较时,发现并没有修改,服务器返回一个304状态码,告诉浏览器,你不用请求该资源,直接使用本地的资源即可。
400 Bad Request:客户端请求有语法错误,不能被服务器所理解。
401 Unauthorized:请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用。
403 Forbidden:服务器收到请求,但是拒绝提供服务。
404 Not Found:请求资源不存在,举个例子:输入了错误的URL。
500 Internal Server Error:服务器发生不可预期的错误。
502: Bad Gateway 前面代理服务器联系不到后端的服务器时出现
503 Server Unavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常,举个例子:HTTP/1.1 200 OK(CRLF)。
504:Gateway Timeout 这个是代理能联系到后端的服务器,但是后端的服务器在规定的时间内没有给代理服务器响应
APPlication,Session和Cookie的区别
方法 |
信息量大小 |
保存时间 |
应用范围 |
保存位置 |
---|---|---|---|---|
Application |
任意大小 |
整个应用程序的生命期 |
所有用户 |
服务器端 |
Session |
小量,简单的数据 |
用户活动时间+一段延迟时间(一般为20分钟) |
单个用户 |
服务器端 |
Cookie |
小量,简单的数据 |
可以根据需要设定 |
单个用户 |
客户端 |
HTTP:压缩传输、分块传输
如果 HTTP 整块传输,需要提前设置 Content-Length。
分块传输编码(Chunked transfer encoding)允许服务端在不预先给出报文长度的情况下,分块将输出发送给客户端。
输出空段表示报文结束。
sql注入,一个例子让你知道什么是sql注入
DDoS 攻击与防御:从原理到实践
分布式拒绝服务(DDoS: Distributed denial-of-service)攻击是恶意破坏目标服务器、服务或网络的正常通信量的企图,其方法是用大量Internet通信量淹没目标或其周围的基础设施。DDoS攻击通过利用多个受损的计算机系统作为攻击流量的来源来达到有效性。被利用的机器可以包括计算机和其他网络资源,如物联网设备。从高层来说,DDoS攻击就像堵塞高速公路的交通堵塞,阻止常规交通到达它想要的目的地。
xss攻击
XSS是跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。
从输入网址到获得页面的过程
(3)字节跳动面试题:从输入网址到获得页面的网络请求的过程,请详细说一下
迭代式查询:
递归式查询:
实际使用中,多是客户端到local dns servers使用递归式,其余部分使用迭代式。递归式dns服务器易被攻击。
https://cloud.tencent.com/developer/news/324975
Message Format
Header |
Question 请求查询的数据区域 |
Answer dns回答的数据区域 |
Authority 授权区域 |
Additional 附加区域 |
Header Format
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
ID 确认请求和回包是否匹配 |
|||||||||||||||
QR |
Qpcode |
AA |
TC |
RD |
RA |
z |
RCODE |
||||||||
QDCOUNT 报文请求段中的问题记录数 |
|||||||||||||||
ANCOUNT 报文回答段中的回答记录数 |
|||||||||||||||
NSCOUNT 报文授权段中的授权记录数 |
|||||||||||||||
ARCOUNT 报文附加段中的附加记录数 |
QR |
1位 |
为0表示此为查询报文 |
|
Qpcode |
4位 |
为0表示此为标准请求报文 |
|
AA |
1位 |
请求时为0,此字段在回包时使用,表明answser section可能含多个domain的别名 |
|
TC |
1位 |
Truncation位,为1时表明被截断 |
|
RD |
1位 |
一般为1,表明需要递归查询 |
|
RA |
1位 |
请求时为0,此字段在回包时使用,表示此ns是否支持递归 |
|
z |
3位 |
一般为0,是保留字段 |
|
RCODE |
4位 |
返回码 |
|
0 |
无差错 |
||
1 |
报文格式差错(Format error)服务器不能理解的请求报文 |
||
2 |
服务器失败(Server failure)因为服务器的原因导致没办法处理的请求 |
||
3 |
名字错误(Name error) 只有对授权域名解析服务器有意义,指出解析的域名不存在 |
||
4 |
没有实现(Not Implemented)域名服务器不支持的查询类型 |
||
5 |
拒绝(Refused)服务器由于设置的策略据局给出应答 |
||
6 - 15 |
保留值 |
Question Session
0~15 |
16~31 |
NAME (不定长) 以fm.qq.com为例:[2, 102, 109, 2, 113, 113, 3, 99, 111, 109, 0]第一个字节填充第一段的长度,后面跟上第一段的每个字母的byte数据,最后以0结尾。 |
|
TYPE 表示要查询什么样的记录,响应报文就返回什么类型的记录;常见的记录类型有: 1 ARecord ipv4 28 AAAARecord ipv6 5 CNameRecord |
CLASS 一般为1,表示互联网类型,即IN |
Answer/Authority/Additional Session
0~15 |
16~31 |
NAME (不定长) |
|
TYPE |
CLASS |
TTL 生存时间 |
|
DATA LENGTH |
RESOURCE DATA (不定长) |
ECS(EDNS-Client-Subnet)是DNS服务支持的新协议。该协议会在DNS请求包中附加请求域名解析的用户IP地址。这样,DNS服务器就可以根据该地址返回用户更容易访问的服务器IP地址。该技术广泛应用于CDN应用中。Nmap的dns-client-subnet-scan脚本利用该协议,通过提交不同的IP地址,获取指定域名所有的IP地址。
HTTPDNS 利用 HTTP 协议与 DNS 服务器交互,代替了传统的基于 UDP 协议的 DNS 交互,绕开了运营商的 Local DNS,有效防止了域名劫持,提高域名解析效率。另外,由于 DNS 服务器端获取的是真实客户端 IP 而非 Local DNS 的 IP,能够精确定位客户端地理位置、运营商信息,从而有效改进调度精确性。
IPv4 与 IPv6 的比较
头部对比