OSI七层模型和TCP/IP四层网络模型
写在文前,本篇文章是在学习过程抄录的笔记,需要更详细的内容可以在微信搜索javaguide公众号获取。
1、OSI划分
- 七层划分:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层
- 五层划分:应用层、传输层、网络层、数据链路层、物理层
- 四层划分:应用层、传输层、网络层、网络接口层
1.1 OSI七层模型
1.2 设备
物理层:网卡、网线、集线器、中继器、调制解调器
数据链路层:网桥、交换机
网络层:路由器
2、各层结构与功能简述
2.1 物理层
-
物理层所传送的数据单位是比特。
-
物理层的作用是实现相邻计算机结点之间的比特流透明传送,尽可能屏蔽具有传输介质和物理设备的差异,使数据链路层不必考虑网络传输的介质是什么。
2.2 数据链路层
- 两个相邻结点传送数据时,数据链路层将网络层交下来的IP数据报组装成帧,在两个相邻结点的链路上传送帧。
- 每一帧包括数据和必要的控制信息【同步信息、地址信息、差错控制等】
2.3 网络层
- 网络层的任务是选择合适的网间路由和交换结点,确保数据及时传送。
- 网络层使用IP协议,因此分组也叫IP数据报。
2.4 运输层
- 运输层的主要任务是负责向两台主机进程之间的通信提供通用的数据传输服务。
- 传输控制协议TCP和用户数据协议UDP。
2.5 应用层
- 应用层的任务是通过应用进程间的交互来完成特定网络应用。
- 域名系统DNS、超文本传输协议HTTP、简单邮件传输协议SMTP。
3、面试题
3.1 三次握手:SYN(建立联机)、seq(序列号)、ack(确认号)
为什么三次握手
三次握手的目的是建立可靠的通信信道,确认自己与对方的发送接收正常
- 第一次握手:客户端-服务端
- Service确认对方发送正常,自己接收正常
- 第二次握手:服务端-客户端
- Client确认自己发送、接收正常,对方发送接收正常;Service确认对方发送正常,自己接收正常
- 第三次握手:客户端-服务端
- Client确认自己发送、接收正常,对方发送、接收正常;Service确认自己发送、接收正常,对方发送、接收正常,
第二次握手的ack与syn
- 发送ack是为了告诉客户端我接受到的就是你发送的信号
- 发送syn是为了建立并确认服务端到客户端的通信
最后一次客户端发送确认
主要为了防止失效的连接请求突然重新传送到服务器,从而产生错误
3.2 四次挥手
断开TCP连接
- 第一次挥手:客户端-服务端
- 客户端发送fin,用来关闭客户端到服务端的数据传送
- 第二次挥手:服务端-客户端
- 服务端收到fin,并发送ACK给客户端,确认号为收到序列号+1
- 第三次挥手:服务端-客户端
- 服务器关闭与客户端的连接,并发送fin给客户端
- 第四次挥手:客户端-服务端
- 客户端发送ACK确认,确认号为收到序列号+1
为什么客户端最后还要等待2MSL
- 保证客户端最后一次发送的ACK报文能够到达服务器,因为这个ACK报文可能会丢失
- 服务器角度,发送FIN+ACK,可能是客户端没收到,就会重新发送一次。
- 防止类似于三次握手中已失效的连接请求报文段出现在本连接
为什么握手三次,挥手四次
- 因为握手的时候回复是发送ACK和SYN,而挥手第二次发送FIN仅表示对方不再发数据了,自己未必全部数据都发送给对方了。
3.3 TCP协议与UDP协议的区别
- TCP协议
- TCP是面向连接的服务,传送数据之前需要建立连接,数据传送结束后需要释放连接
- TCP提供可靠的传输服务,体现在三次握手建立连接,数据传送有确认、窗口、重传、拥塞控制机制,数据传送结束后需要释放连接
- 一系列操作协议数据单元的首部增大,占用许多处理机资源
- 用于文件传输、发送和接收邮件、远程登录等场景
- UDP协议
- UDP在传送数据之前不需要建立连接,远地主机收到UDP报文后不需要给出确认
- UDP不提供可靠交付,某些情况下确实最有效的,如QQ语音、QQ视频、直播等
3.4 TCP协议如何保证可靠传输
- 应用数据被分割成TCP认为最合适的数据块
- TCP把每一个包进行编号,排序好传送给应用层
- 校验和
- TCP将保持它的首部和数据的检验和
- 目的是检验数据传输过程中的变化,收到的数据检验和有错误,将丢弃报文段不确认收到报文段。
- 接收端丢弃重复数据
- 流量控制
- TCP的接收端只允许发送端发送缓冲区能接纳的数据
- 接收方来不及处理数据,提示发送方降低发送速率,避免包丢失
- TCP使用的流量控制协议是可变大小的滑动窗口实现流量控制
- 拥塞控制
- 当网络拥塞时,减少数据的发送
- ARQ协议(自动重传请求)
- 目的是实现可靠传输
- 基本原理是每发送完一组就停止发送,等待对方确认,收到确认后再发送下一组
- 超时重传
- 当TCP发出一个段后,会启动一个定时器,等待目的端收到这个报文段。
- 如果不能及时确认,就会重新发送这个报文段。
3.5 ARQ协议(自动重传请求)
-
是OSI模型中数据链路层和传输层的错误纠正协议之一
-
通过使用确认和超时的机制,在不可靠的服务上实现可靠的信息传输
-
如果不能及时确认,就会重新发送这个报文段。
-
停止等待ARQ协议
- 优缺点
- 优点:简单
- 缺点:信道利用率低,等待时间长
- 情况
- 无差错情况:规定时间内收到并确认
- 超时重传
- 不但要重传还有重复收,重复确认
- 确认丢失和确认迟到
- 确认消息在传输过程丢失
- 确认消息在传输过程迟到
- 优缺点
-
连续ARQ协议
- 目的是实现可靠传输
- 基本原理是每发送完一组就停止发送,等待对方确认,收到确认后再发送下一组
- 优点和缺点
- 优点:信道利用率高,容易实现,丢失也不用重传
- 缺点:不能向发送方反映已经收到所有分组的信息
3.6 滑动窗口和流量控制
- TCP使用滑动窗口实现流量控制
- 流量控制是为了控制发送方的发送速率,保证接收方来得及接收
- 接收方的确认报文段的窗口字段可以控制发送窗口大小,影响发送端的发送速率
- 窗口字段设置为0,则不能发送数据
3.7 拥塞控制
拥塞控制防止过多的数据注入到网络中导致路由器或链路过载
- 为进行拥塞控制,TCP发送方要维持一个拥塞窗口(cwnd)的状态变量
- 拥塞控制窗口的大小取决于网络的拥塞程度,并动态变化
- TCP的拥塞控制采用了四种算法
- 慢开始
- 由小到大逐渐增大拥塞窗口数值
- cwnd初始值1,每经过一轮传播轮次cwnd加倍
- 拥塞避免
- 拥塞窗口cwnd缓慢增大,每经过往返时间RTT就把发送的cwnd加1。
- 快重传和快恢复FRR
- 能快速恢复丢失的数据包
- 慢开始
3.8 浏览器访问URL
- DNS解析
- 首先在本地域名服务器中查询IP地址,如果没有找,本地域名服务器向根域名服务器发送请求
- 根域名服务器也不存在该域名时,会向com顶级域名发送请求,以此类推
- 本地域名服务器得到IP地址,并缓存到本地,供下一次查询使用
- TCP连接
- 通过ip寻址和ARP,找到服务器,利用三次握手建立TCP连接
- 发送HTTP请求
- 构建HTTP请求报文并通过TCP协议发送到服务器指定端口
- 服务器处理请求并返回HTTP报文
- 对TCP连接进行处理,对HTTP协议进行解析,按照报文格式封装Request对象返回给浏览器
- 浏览器解析渲染页面
- 浏览器解析HTML、CSS、JS文件
- 连接结束
3.9 HTTP长连接,短连接
-
HTTP1.0中默认使用短连接
- 每次客户端和服务器进行HTTP操作都要建立连接,结束后释放连接。
-
HTTP1.1起默认使用长连接
-
使用长连接,会在响应头加入代码:
Connection:keep-alive
-
使用长连接,当一个网页打开后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,客户端再次访问会使用这个已建立好的连接。
-
kepp-alive不会永久保持连接,可以根据不同服务器设定
-
实现长连接需要客户端和服务器都支持长连接
-
3.10 HTTP不是保存状态协议,如何保存用户状态
- Session的主要作用就是通过服务端记录用户的状态
- 使用内存和数据库保存Session
- 通过Cookie中附加一个Session ID来实现Session追踪
- Cookie被禁用
- 利用URL重写把Session ID直接附加到URL路径后面
3.11 Cookie的作用,与Session的区别
Cookie和Session都是用来追踪浏览器用户身份的会话方式,但使用场景不同。
- Cookie
- 数据保存在客户端
- Cookie一般用来保存用户信息
- 存放Token到Cookie中,不用重新登录
- 登录一个网站后,访问网站其他页面不用重新登陆
- Session
- 数据保存在服务器端
- Session一般用来记录用户状态
- 安全性更高
3.12 HTTP1.0和HTTP1.1的主要区别
- HTTP1.0
- 默认使用短连接
- 缓存处理
- header的If-Modified-Since等作为缓存标准判断
- HTTP1.1
- 默认使用长连接
- 新增24个错误状态响应码
- 409请求的资源与当前资源的状态发生冲突
- 410服务器上的某个资源被永久删除
- 缓存处理
- 引入Entity tag,If-Unmodified-Since等缓存头来控制缓存策略
- 带宽优化及网络连接的使用
- HTTP1.0存在浪费带宽的现象
- HTTP1.1引入range头域,允许只请求资源的某部分,以便充分利用带宽和连接
3.13 URI和URL的区别
- URI(Uniform Resource Identify)
- 统一资源标识符,可以唯一标识一个资源
- 【身份证】
- URL(Uniform Resource Locator)
- 统一资源定位符,可以提供该资源的路径
- 不仅唯一标识资源,还提供定位该资源的信息
- 【家庭住址】
3.14 HTTP和HTTPS的区别
- 端口
- HTTP的URL默认端口80
- HTTP的URL默认端口443
- 安全性和资源消耗
- HTTP协议运行在TCP之上,传输的内容是明文
- HTTPS是运行在SSL/TLS之上的HTTP协议,SSL/TLS运行在TCP之上
- HTTPS传输内容经过对称加密,使用服务器的证书对密钥进行非对称加密
- HTTP安全性没HTTPS高,HTTPS服务器资源消耗比HTTP高。
- 对称加密
- 密钥只有一个,加密解密同一个密码,解密速度快
- 加密算法有DES、AES
- 非对称加密
- 密钥成对出现,加密解密使用不同密钥,相对对称加密解密速度较慢
- 加密算法有RSA、DSA
4、计算机网络基础知识点
4.1 基本术语
-
结点(node)
- 可以是计算机、交换机、集线器、路由器
-
链路(link)
- 一个结点到另一个结点的一段物理线路,中间没有任何交点
-
主机(host)
- 连接在因特网上的计算机
-
ISP(Internet Service Provider)
- 因特网服务提供商
-
IXP(Internet eXchange Point)互联网交换点
- 主要作用是允许两个网络直接相连并交换分组,且不需要通过第三个网络来转发分组
-
RFC(Request For Comments)请求评议
- 包含了关于Internet的几乎所有重要文字资料
-
广域网WAN
- 任务是长距离运送主机发送的数据
-
城域网MAN
- 用来将多个局域网相连
-
局域网LAN
- 计算机和其他设备通过网络连接起来,学校或企业大多拥有多个互联的局域网
-
个人区域网PAN
- 在个人工作的地方把属于个人使用的电子设备用无线技术连接起来的网络
-
分组(packet)
- 因特网中传送数据的单元。
- 由首部header和数据段组成
- 又称为包
-
存储转发(store and forward)
- 路由器收到分组,检查分组是否正确,过滤冲突包错误
- 确认包后,取出目的地址,查找表发送输出端口地址,发送包
-
带宽(bandwidth)
- 表示单位时间从网络中的一个点到另一个点能通过的“最高数据率”
- 单位比特每秒:b/s
-
吞吐量(throughput)
- 表示单位时间内通过某个网络的数据量
4.2 重要知识点
-
路由器
- 路由器是实现分组交换的关键构件,其任务是转发收到的分组
- 分组交换采用存储转发技术,把一个报文分为几个分组后再进行传送
- 分组是互联网数据传送的数据单元,分组头部包含地址和源地址等重要控制信息
-
计算机同信
- 计算机中进程通信,采用客户-服务器方式(C/S)和对等连接方式(P2P)
-
计算机网络常用性能指标
- 速率、带宽、吞吐量、时延、时延带宽积、往返时间、信道利用率
-
五层体系结构
- 物理层
- 数据链路层
- 网络层
- IP协议
- 运输层
- TCP和UDP协议
- 应用层
几种常用的信道复用技术
- 频分复用
- 所有用户在同样时间占用不同的带宽资源
- 时分复用
- 所有用户在不同时间占用同样的频带宽度
- 统计时分复用
- 改进的时分复用,提高信道利用率
- 码分复用
- 用户使用不同的码型,用户之间不会造成干扰
- 波分复用
- 光的频分复用
重要知识点
-
物理层的主要任务是确定与传输媒体接口有关的一些特性
- 机械特性
- 功能特性
- 电气特性
- 过程特性
-
数据通信系统
- 源系统
- 源点和发送器
- 传输系统
- 目的系统
- 源系统
-
信号分为模拟信号和数字信号
-
传输媒体两大类
- 导引型传输媒体
- 双绞线
- 同轴光缆
- 光纤
- 非导引型传输媒体
- 无线
- 红外
- 导引型传输媒体
文末,欢迎来讨论与指出问题。本文图片来自网络,如有侵权请联系。转发请标明出处。