本文主要总结面试中常出现的计算机网络相关问题,仅作简要回答。

OSI七层模型,TCP/IP模型,每层是干嘛的,有什么常见的协议
应用,表示,会话,传输,网络,数据链路,物理
应用,传输,网络,网际接口
应用:http,smtp,pop3
传输:tcp,udp
网络:ip,icmp,arp,nat
http的特点
无状态,明文传输
http为什么是无状态的,有什么好处
http的报文不会保存用户的信息,减轻服务器的负担,更好处理并发
可以用什么保持状态
cookie和session有什么区别
cookie保存的数据较少,保存在浏览器,可以随报文在客户端和服务器端传递,持续时间较长
session可以基于保存在cookie中的sessionID获取用户信息,保存在服务器端,可以保存大量数据,但持续时间较短
子网掩码的作用
子网掩码是用于划分网络地址和主机地址的一个32位二进制数。
它与IP地址结合使用,用于确定一个IP地址中哪些位表示网络地址,哪些位表示主机地址。
子网掩码的作用主要有两个方面:

  1. 确定网络地址:子网掩码通过将IP地址中的网络部分与主机部分进行分隔,将网络地址和主机地址进行划分。子网掩码中的1表示网络部分,0表示主机部分。通过与IP地址进行逻辑与运算,可以得到网络地址。
  2. 确定主机地址范围:子网掩码中的0表示主机部分,确定了主机地址的范围。主机地址范围是指在同一个网络中可以分配给主机的不同IP地址。子网掩码中主机部分的位数决定了主机地址的数量,可以根据主机地址范围来分配IP地址给不同的主机。保留两个地址:网络地址(表示整个子网)和广播地址
    子网掩码的正确配置对于网络通信的正常运行非常重要。它可以帮助路由器和交换机等网络设备正确地识别网络地址和主机地址,实现数据的正确传输和路由。

https和http有什么区别
https端口443,http80
https在http基础上采用了ssl/tls加密,数据在网络中不再明文传递,更加安全
https由于加密需要申请证书,并且消耗更多cpu和内存资源
http的常见状态码
1xx中间状态
2xx成功:200OK一切顺利,204NoContent处理成功但不返回任何数据
3xx:301Moved Permanently 永久重定向,302found临时重定向
4xx:客户端错误400badRequest:http请求有问题,401unauthorized未认证,403forbidden请求被禁止,404notFound请求的资源没找到
5xx:服务器状态异常:500internetServerError服务器出问题bug,502badGateway服务器返回错误响应
http1.0短连接,http1.1长连接
短连接:每次发送请求都进行一次TCP连接
长连接:一次TCP连接可以处理多次请求
流水线:不用等到服务器返回响应就可以继续发送下一次请求,有可能造成队头阻塞
https的加密方式
对称加密和非对称加密
在进行身份验证时进行非对称加密,后续数据传输进行对称加密
对称加密:加密方和解密方使用同一密钥,互相加解密
非对称加密:分为公钥和私钥,公钥可以随意发放,私钥自己留用,公钥可以解密私钥加密的数据,私钥可以解密公钥加密的数据
https怎么保证对方可信
服务器需要向CA机构获取认证证书,证书上有用机构的私钥加密的电子签名
认证阶段向对方发送认证证书,对方通过电子签名的公钥解析电子签名,确保对方被认证过
http的常见请求方法
GET:请求指定的资源
POST:向指定资源提交数据,进行处理
DELETE:请求服务器删除指定的资源
PUT:向指定资源位置上传最新内容
GET和POST的区别
GET用于获取资源,POST用于修改资源
GET请求参数位于url路径,明文显示,长度有限制,只支持askii编码
POST请求参数位于请求体,相对安全,理论上没有长度限制,支持多种编码形式(字段定义)
GET请求为什么参数需要编码
参数用的是key=value的形式,如果不编码,要是key或者value里面有类似=这样会引起歧义的字符,会无法解析或解析错误
从输入网址到获得页面的过程
浏览器解析url,通过dns解析获取ip
浏览器与服务器建立tcp
浏览器构建并发送http请求
服务器接收请求并处理
服务器返回响应
客户端解析获取相应的资源,解析并渲染获取页面
关闭tcp连接
DNS协议,过程
dns是基于udp,将域名解析获取对应服务器的ip的一种协议
通过dns服务器进行,分为根,顶级,权威,本地
dns解析式,依次查询浏览器缓存,本地dns服务器,如果找不到,
可以采用迭代或递归的方式访问根
迭代就是指路,依次访问根,顶级,权威返回给本地
递归就是根去访问顶级,权威,再逐级向上返回最后回到根再返回给本地
本地缓存后返回给浏览器ip
IP地址和MAC地址
IP地址是逻辑地址,是可以变化的;MAC地址是网卡制造商制造时赋予的全球唯一标记
IP地址32位,MAC地址48位(前24位由IEEE管理,后24位由网卡制造商分配保证不会重复)
ARP
地址解析协议:ARP 表、广播问询、单播响应
查询分组和响应分组,包含发送和接收的 IP 地址、发送和接收的 MAC 地址
(发送查询分组不知道对方的MAC地址,采用广播地址)
每台网络设备维护一个ARP表,A需要获取某台网络设备B的MAC地址时
先解析ip地址判断其是否与自己处在同一局域网下,如果是则直接采用广播地址向局域网中每一台设备发送查询分组,B收到该分组后会构造ARP响应分组定向发送给A,并在自己的ARP表中增加一条记录<ip,mac,ttl>(ttl一般是20分钟)
A收到后可以进行解析获取B的MAC地址,向自己的ARP表中增加一条记录
如果不在同一局域网下,则要先获取当前局域网中对方局域网的本子网接口路由器
通过该路由器中转一下,基本流程同上(路由器也是网络设备,有MAC)
TCP,UDP区别
TCP面向连接,保证可靠性,面向字节流,头部20字节,只支持一对一连接,有拥塞控制
UDP面向无连接,不保证可靠性,面向报文,头部8字节,支持各种连接
TCP怎么保证可靠性
数据包校验,失序数据包重排序,丢弃重复数据,应答机制,超时重发,流量控制
TCP拥塞控制
防止过多的数据注入网络,使网络中的路由器或链路过载
慢启动,拥塞避免,快重传,快恢复
从1开始指数增长,加法增大,收到三个重复确认时立即进行重传,并将拥塞窗口减小一半
TCP流量控制
发送方和接收方各自维护一个流量窗口,接收方的窗口大小取决于应用,系统,硬件的控制,发送方的窗口大小则取决于接收窗口。接收方可以通过发送含有window字段的确认报文来控制发送窗口的大小,影响发送的速率,防止发送和接收的速度不匹配导致数据丢失
三次握手,四次挥手
三次握手:
1.客户端发起连接请求生成随机起始序列号seq,标志位SYN=1,CLOSE—>SYN_SENT
2.服务端生成确认号ack=seq+1,随机起始序列号seq,标志位SYN=1,ACK=1,LISTEN—>SYN_RCVD
3.客户端收到响应,返回ACK=1,seq=ack,ack=seq+1,双方都进入ESTABLISHED
四次挥手:
1.A向B发送连接释放报文(FIN=1,seq),停止发送数据,进入FIN_WAIT_1
2.B收到后发送确认报文(ACK=1,ack,seq),进入CLOSED_WAIT,A—>B连接释放
3.A收到B的确认报文,进入FIN_WAIT_2
4.B发送完数据,发送连接释放报文(FIN=1,ACK=1,seq,ack),进入LAST_ACK
5.A发送确认报文(ACK=1,seq,ack),进入TIME_WAIT,等待2MSL后关闭进入CLOSED
B收到确认报文后关闭,否则重传连接释放报文段
为什么要等2MSL,MSL具体是多少
保证A发送的最后一个ACK报文段一定能被B接收到
防止已失效的连接请求报文段重新出现在新的连接中(使本次请求产生的所有数据都消失在网络中)
为什么不是两次握手
防止已失效的连接请求报文段重新被接收到,导致服务器端一直处于连接无法关闭状态
IP地址分类
ABCDE:五类
0,10,110,1110,11110