2023秋招_计算机网络准备
计算机网络
https://tobebetterjavaer.com/sidebar/sanfene/network.html
基础
1.说下计算机网络体系结构
OSI七层参考模型:应用层,表示层,会话层,传输层,网络层,数据链路层,物理层
TCP/IP四层:应用层,传输层,网际层,网络接口层
五层模型:应用层,传输层,网络层,物理链路层,物理层
2.说一下每一层对应的网络协议有哪些?
应用层:HTTP,DNS,FTP,SMTP,Telnet等
传输层:TCP,UDP
网络层:IP,ICMP
物理链路层:ARP
3.那么数据在各层之间是怎么传输的呢?
数据链路层头|网络层头|传输层头|应用层数据
网络综合
4.从浏览器地址栏输入 url 到显示主页的过程?
DNS解析URL获取IP地址
TCP三次握手建立连接
构造应用层数据包 加 传输层头 加 网络层头 加数据链路层头,发送出去
收到消息,再解包,然后浏览器渲染
TCP四次挥手断开链接
5.说说 DNS 的解析过程?
先查看本地浏览器缓存,然后本地DNS服务器,如果都没有,本地DNS服务器向根服务器请求获取顶级域名服务器的IP,然后本地DNS服务器再向顶级域名服务器请求,获取权限域名服务器的IP,然后返回给客户端
6.说说 WebSocket 与 Socket 的区别?
Socket是最底层的,Socket是一个网络编程的标准接口,是IP地址+端口+协议
Websocket不清楚
WebSocket是一个应用层协议,为了更好的实时通信
7.说一下你了解的端口及对应的服务?
HTTP: 80,HTTPS:443,FTP:21,SSH:22,TELNET:23,SMB:445,DNS:53,SMTP:25,POP3:110,3306:MySQL
HTTP
8.说说 HTTP 常用的状态码及其含义?
101:切换请求协议
200:成功
302:重定向
301:请求资源永久移动,返回新URI
302:请求资源永久移动,继续使用原有URI
400:客户端错误
500:服务器错误
9.HTTP 有哪些请求方式?
OPTION
OPTIONS:返回所有可用的方法
PUT:修改指定资源
DELETE:删除URL标记的指定资源
GET:获取资源的简单请求
POST:发送表单
HEADER
HEAD:获取URL头
TRANCE:回环测试
10.说⼀下 GET 和 POST 的区别?
GET的时候请求数据放在URL里,POST的时候请求数据放在 数据里 请求体里
GET一般是只读,下载个文件啥的,POST一般是提交表单
GET将请求数据放在URL里,不安全,GET请求可以保存为浏览器书签,绝大部分的GET请求也可以被CDN缓存起来,大大减少了Web服务器的负担
11.GET 的长度限制是多少?
2000多个字节???
GET是通过URL传递数据的,限制GET长度的是浏览器
IE浏览器对URL的最大限制是2000个字符,Chrome是8182个字符,FireFox是65535
12.HTTP 请求的过程与原理?
输入URL,先DNS解析获取IP,然后 HTTP数据+传输层TCP 80端口 + 网络层 + 数据链路层将数据发送出去
原理就是利用TCP的80端口???
每个服务器都有一个进程,它不断监听TCP的80端口,一旦检测到请求,就会建立TCP三次连接,浏览器发请求,服务器相应请求,最后释放TCP连接
13.说一下 HTTP 的报文结构?
请求报文和响应报文
请求报文:GET /index.html HTTP1.1 方法,路径,协议,然后下面空行,后面是数据
响应报文:200 success,状态码 + 解释,空行,数据 协议版本,状态码,相应的状态信息| 首部行|实体
14.URI 和 URL 有什么区别?
URI是统一资源标志符,相当于身份证
URL是同一资源定位符,相当于地址,它是用定位的方式去定位的网络上的资源
URI的范围要大
15.说下 HTTP/1.0,1.1,2.0 的区别?
HTTP/1.0 每次请求都得重新建立连接
HTTP/1.1 可以保持长连接
HTTP2.0跟HTTP1.1差不多、,具体多了啥,忘了
在一个连接里,客户端和浏览器都可以同时发送多个请求和回应,服务器推送,允许服务器未经请求,主动向客户端发送资源
16.HTTP/3 了解吗?
传输层是用的UDP协议,用的QUIC?
17.HTTP 如何实现长连接?在什么时候会超时?
通过KEEP-ALIVE字段保持长连接,一个TCP连接发送和接受多个HTTP请求
HTTP一般会有httpd守护进程,里面设置keep-alive timeout,当tcp连接闲置超过这个时间就会关闭。
18.说说 HTTP 与 HTTPS 有哪些区别?
HTTPS是在应用层和传输层之间加了一个SSL层,比HTTP更安全
HTTPS是用的TCP的443端口,HTTP是用的80端口
HTTPS 协议需要向 CA(证书权威机构)申请数字证书,来保证服务器的身份是可信的。
19.为什么要用 HTTPS?解决了哪些问题?
数据加密
防止数据篡改
认证等功能
20.HTTPS 工作流程是怎样的?
客户端——>服务器
服务器返回服务器的数字证书,客户端根据CA的公钥去验证数字证书是否合法
如果合法,则从数字证书中获取服务器的公钥,然后随机生成一个KEY,用公钥加密后发给服务器
随后用KEY进行加密通信
21.客户端怎么去校验证书的合法性?
因为证书是CA给颁发的,可以用CA的公钥去验证
用CA的公钥解密签名得到一个HASH,然后自己对证书进行一个HASH判断两个HASH是否一致
22.如何理解 HTTP 协议是无状态的?
这里的无状态其实是指服务器不知道客户端是啥状态,给服务器发消息,服务器把消息发送完之后,不会记录任何信息。
23.说说 Session 和 Cookie 有什么联系和区别?
Session一般存活时间比较短,是放在服务器端
Cookie是放在客户端
Cookie里面一般存Session的ID
存储大小不同,单Cookie保存的数据不能超过4K,Session可存储的数据远高于Cookie
一般是Cookie里存SessionID,将SessionID传过去,服务器拿到SessionID查找对应的Session信息
TCP
24.详细说一下 TCP 的三次握手机制
服务器处在监听状态,先客户端向服务器发送SYN包,请求连接,然后服务器返回ACK + SYN。然后客户端向服务器发送ACK,三次握手完成
25.TCP 握手为什么是三次,为什么不能是两次?不能是四次?
如果是两次握手,当服务器返回的ACK + SYN丢了的话,这个时候,服务器已经是ESTABLISHED的状态了,占用服务器的资源
如果是两次握手,如果第一个SYN丢了,客户端重发,结果之前的丢的那个先到,就会与服务器建立错误的连接,也是占用资源
四次握手没有必要,因此三次握手就能保证建立了连接了
26.三次握手中每一次没收到报文会发生什么情况?
超时发送呗
27.第二次握手传回了 ACK,为什么还要传回 SYN?
同步,SYN是同步的意思,就是服务器要和客户端同步
好吧,这个我也没大明白
传回SYN是为了告诉客户端,服务端响应的确实是客户端发送的报文。
28.第 3 次握手可以携带数据吗?
可以
29.说说半连接队列和 SYN Flood 攻击的关系?
SYN_RCVD的就是半连接队列(SYN队列),当ESTABLISHED之后,对应的SOCKET就从半连接队列进入全连接队列(ACCEPT队列)
SYN Flood就是攻击者疯狂向目标机器发送SYN包,然后使目标的SYN_RCVD占满,无法接受新的连接,就形成了DOS攻击
30.说说 TCP 四次挥手的过程?
31.TCP 挥手为什么需要四次呢?
因为被动关闭的那一方,可能有数据没有发送完
32.TCP 四次挥手过程中,为什么需要等待 2MSL, 才进入 CLOSED 关闭状态?
为了确保最后一个包(ACK包)到达服务器端,因为如果在2MSL内没有收到包,基本就确认服务器端收到了ACK包并且CLOSED了
33.保活计时器有什么用?
也是为了避免资源的浪费
比如客户端和服务器端已经建立了连接,但是客户端突然寄了,那么服务器显然不能一直等着,所以就用到了保活计时器,时间通常是2h,2h内没收到客户端数据,就发送探测报文段,然后过会再发一个,如果连续发多个没响应,客户端就关闭连接。
34.CLOSE-WAIT 和 TIME-WAIT 的状态和意义?
CLOSE_WAIT代表还有数据要发送
TIME_WAIT是要确保最后一个包到达了服务器端,保证连接正常关闭
35.TIME_WAIT 状态过多会导致什么问题?怎么解决?
TIME_WAIT 代表主动断开连接的,如果过多,代表端口占用的太多了,但是这些端口已经不发送数据了,就浪费资源
36.说说 TCP 报文首部的格式?
20个字节,含有源端口号,目的端口号,ACK等标志位,窗口大小,校验和什么的
37.TCP 是如何保证可靠性的?
TCP三次握手,校验和
序号验证,超时重传等机制
38.说说 TCP 的流量控制?
流量控制是基于两方来说的,为了确保对面能够以合理的速度收到信息,确保不会溢出
利用滑动窗口实现的这个流量控制
39.详细说说 TCP 的滑动窗口?
发送方有个发送窗口,接收方有个接收窗口
发送窗口的大小不能超过接收方的接收窗口
TCP头部有个字段代表窗口大小,它告诉对方我的TCP缓冲区还有多少空间,以便对方控制发送速度,从而达到流量控制的目的
40.了解 Nagle 算法和延迟确认吗?
防止数据包的数据部分 < 头部 这种情况,等
Nagle 算法是 数据积攒到一定程度再发送出去
延迟确认是延时对对面包的确认,因为不携带数据的TCP包有点浪费
41.说说 TCP 的拥塞控制?
有个拥塞窗口,拥塞窗口的大小
swnd = min(cwnd, rwnd)
快启动,快恢复???
慢启动,拥塞避免,快重传,快恢复
42.说说 TCP 的重传机制?
超时重传:发的包没有收到回包,在一定时间后重传(RTO略大于RTT)
快速重传:连续收到3个同一个包的ACK,就表示没阻塞,可以不用等待是否超时,直接重传即可
43.说说 TCP 的粘包和拆包?
包太小的情况下,就出现粘包的情况,比如数据远小于MSS,就会在缓冲区等一会,积攒到一定程度一次性发送出去
拆包咋拆?有界限啥的吗??
包太大,比如TCP报文长度-TCP头部>MSS的情况下,就会拆包
UDP
44.说说 TCP 和 UDP 的区别?
TCP可靠,面向连接,传输效率慢,首部长度20-60字节
UDP不可靠,不面向连接,传输效率快,首部长度8个字节
45.为什么 QQ 采用 UDP 协议?
即时传输,速度快,但是QQ文件传输啥的还是用的TCP
46.UDP 协议为什么不可靠?
没有一些保证可靠传输的机制,甚至没有建立连接,对接受的数据包也不用回复确认啥的
47.DNS 为什么要用 UDP?
因为DNS解析个域名传输的数据很小,而且很频繁,所以用UDP
客户端向DNS服务器查询域名的时候,一般返回的内容不会超过UDP报文的最大长度512字节
进行区域传送的时候,比如主域名服务器向辅助域名服务器传送变化的那部分数据,会用TCP,因为量大,而且得保证可靠
IP
48.IP 协议的定义和作用?
IP是网络协议,是为了将数据包从一个网络发到另外一个网络
IP协议的作用:寻址和路由,分段和重组
49.IP 地址有哪些分类?
A,B,C,D,E5类
A: 0打头 1 - 126
B: 1打头 128-191
C: 11打头 192 - 223
D: 111打头 224 - 239 组播地址,多播地址
E: 1111打头 240-255 未使用
私有IP地址:
10.0.0.0/8
192.168.0.0/16
172.11 -172.31 /16
50.域名和 IP 的关系?一个 IP 可以对应多个域名吗?
域名通过DNS解析到 IP
一个IP可以对应多个域名
51.IPV4 地址不够如何解决?
NAT网络地址转换,划分子网
IPV6
52.说下 ARP 协议的工作过程?
ARP又叫地址解析协议,是指通过IP获取到MAC的过程
先查看ARP缓存中有没有
然后判断路由,是否是外部的地址,如果是就获取网关的MAC,如果不是就获取对应的IP的MAC
往局域网发送ARP广播包,问谁的IP是XX.XX.XX.XX
对应的机器收到后,就会发送ARP回复包
53.为什么既有 IP 地址,又有 MAC 地址?
历史遗留问题,因为在历史上MAC是先出来的,后出来的IP,也是分层的因素,IP地址负责将数据从一个网络发到另外一个网络,MAC负责找到对应的机器
54.ICMP 协议的功能?
探测网络的功能,比如发送一些错误信息啥的
ICMP是一个面向无连接的协议,用于传输报文控制信息
55.说下 ping 的原理?
ping的原理是向对方发送ICMP请求包
计算RTT的话有2种方案,第一种是由本地记录发送ping包时间和接受时间,第二种是由payload去带时间
网络安全
56.说说有哪些安全攻击?
DDOS,DNS劫持 ARP欺骗等等
篡改,劫持
57.DNS 劫持了解吗?
了解,修改目标机器的HOST文件,或者攻陷其路由器,攻陷本地DNS服务器等
是通过将原域名对应的 IP 地址进行替换,从而使用户访问到错误的网站
58.什么是 CSRF 攻击?如何避免?
跨域请求伪造,比如在你登录个某个银行网址之后,又点了一个恶意的网站,而那个网站里有个链接是转账的功能,你点了之后,因为已经登录了某个银行网址,所以有COOKIE什么,就会转过去
增加Refer字段检查,CSRF-TOKEN,或者敏感操作手机验证码啥的
Cookie的SameSite属性也可以缓解一部分CSRF
59.什么是 DoS、DDoS、DRDoS 攻击?
DOS是拒绝服务攻击,就是把某个设备的服务搞坏
DDOS是分布式拒绝服务攻击,就是用大量的肉鸡去搞一个设备
DRDOS是分布式反射性拒绝服务攻击,比如可以伪造目标IP去进行DNS请求,然后DNS服务器就会向目标IP发送DNS查询结果
60.什么是 XSS 攻击,如何避免?
XSS是跨站脚本攻击,其实是CSS,但是为了与那个样式CSS区分,叫XSS
XSS分好多种,存储型,反射型,DOM型
反射型:URL中含有恶意JS,将此URL发给别人,别人打开后就会执行恶意JS
存储型:比如某个博客平台有XSS漏洞,用户的用户名可以填入恶意JS,当别人打开此人的主页时,恶意JS就会执行
DOM型:反射型和存储型都是目标服务器返回的HTML中就带有恶意JS,DOM型不是,DOM型是在客户端的JS在修改和构造当前页面的DOM节点时触发恶意代码执行。
如何避免??
用XSS过滤的形式
CSP:内容安全策略,定义了当前页面只允许加载和执行某某域的脚本
HttpOnly属性,这样JS读取不了cookie
61.对称加密与非对称加密有什么区别?
对称加密,加密和解密的KEY相同,比如AES, DES等
非对称加密:加密用公钥,解密用私钥,还可能用来拿来签名,比如RSA啥的
62.RSA 和 AES 算法有什么区别?
RSA是非对称加密算法
AES是对称加密算法