OSI七层模型简单概念及相关面试题
1.1 概念
应用层
- 为用户提供服务,给用户一个操作界面
表示层
- 数据提供表示:计算机只能识别0101这种二进制数据,把我们输入、点击的之类的指令翻译成二进制,又把执行后的结果返回。
- 加密
- 压缩
会话层
- 确定数据是否需要进行网络传输
- 如果需要,交给下一层:传输层
- 如果不需要,比如只是保存到文档等
传输层
- 对报文进行分组(发送时)、组装(接收时)
- 提供传输协议的选择:
- TCP(传输控制协议):可靠的,面向连接的传输协议——(可靠、准确的)(慢)
- UDP(用户数据报协议):不可靠的,面向无连接的传输协议——(不可靠)(快)
- 端口封装
- 源端口
- 目标端口
- 差错校验
网络层
典型设备:路由器
- IP地址编址
- 源IP
- 目标IP
- 路由选择
- 静态路由
- 提前写好的规则,会比较麻烦
- 动态路由
- 自动选择,可能会选择最短路径,但是带宽可能不是最好的
- 静态路由
数据链路层
典型设备:交换机(switch)
- MAC地址编址
- MAC地址寻址
- MAC地址和IP找到是哪台电脑
- 通过PORT查找到对应的服务(一台电脑会有多个服务)
- 差错校验
- 差错校验一般都是采用传输层的差错校验
物理层
典型设备:网线
- 数据实际传输
- 电气特性定义
- 网线有八根线,哪根线传输数据等。。。
1.2 相关面试题
1.2.1 TCP/IP四层模型与作用?
1.2.2 TCP协议与UDP协议工作在哪一层?作用是什么?
网络接口层 = 数据链路层 + 物理层
建议改成五层协议,将数据链路层和物理层分开
网络层
- IP协议,用来确认IP地址的。
- ARP RARP:地址解析协议,反向地址解析协议
数据链路层
- PPP:点对点
- PPPOE:点对点拨号协议
1.2.3 简述TCP包头的内容?
1.2.4 简述TCP三次握手的过程?
考察点
- TCP协议的原理
- TCP协议的作用
传输层协议
- TCP(传输控制协议):可靠的,面向连接的传输协议
- UDP(用户数据报协议):不可靠的,面向无连接的传输协议
31表示从0到31个进制位,共32位。
源端口和目标端口是2^16次方个,也就是65535个
文字叙述
- 第一次握手:Client将标志位SYN置为1,随机产生一个值(序列号)
seq=j
,并将该数据包发送给Server,Client进入SYN_SENT
状态,等待Server确认。 - 第二次握手:Server收到数据包后,由标志位
SYN=1
知道Client请求建立连接,Server将标志位SYN
和ACK
都置为1,ack序号j+1
,随机产生一个值(序列号)seq=k
,并将该数据包发送给Client以确认连接请求,Server进入SYN_RCVD
状态。 - 第三次握手:Client收到确认后,检查ack序号是否为
j+1
,标志位ACK是否为1,如果正确则将标志位ACK置为1,(序号)ack=k+1
,并将该数据包发送给Server;Server检查ack序号是否为k+1
,ACK是否为1,如果正确则连接建立成功,Client和Server进入ESTABLISHED
状态,完成三次握手,随后Client与Server之间可以开始传输数据了。
1.2.5 简述TCP四次挥手的过程?
FIN_WAIT_1——>CLOSE_WAIT——>FIN_WAIT_2:客户端请求结束连接
LAST_ACK——>TIME_WAIT——>CLOSE:服务端通知客户端我也要结束连接
文字叙述
- 第一次挥手:Client发送一个标志位为FIN包,(随机序号)Seq=m,用来关闭Client到Server的数据传送,Client进入
FIN_WAIT_1
。 - 第二次挥手:Server收到标志位FIN包后,发送一个标志位ACK给Client,(确认序号)ACK=m+1,Server进入
CLOSE_WAIT
状态。 - 第三次挥手:Server发送一个标志位FIN=1,ACK=1,(序号)Seq=n,(确认号)ACK=m+1,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。
- 第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK标志给Server,(确认序号)ACK=n+1,Server进入CLOSED状态,完成四次挥手。