计算机网络|整理
一. 概述·
1. 分层模型·
OSI模型:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层
TCP/IP模型:网络接口层、网际层、传输层、应用层
应用层:为特定应用程序提供数据传输服务,数据单位为报文
表示层:对数据进行加密、压缩和转换,将不同计算机系统中的数据转换为一致的格式
会话层:控制通信会话的建立、管理和终止
传输层:负责主机中的两个进程通信,提供端到端的可靠传输、流量控制、差错控制等
网络层:为分组交换网上的不同主机提供数据传输服务,把传输层产生的报文段或用户数据报封装成分组
数据链路层:为相邻节点提供数据传输服务,把网络层传下来的分组封装成帧
物理层:考虑的是怎样在传输媒体上传输数据比特流,尽可能屏蔽传输媒体和通信手段的差异
微信消息是怎么发出去?从计算机网络层次模型的角度回答
- 应用层:微信客户端将消息封装成应用层的数据包,比如使用HTTP协议或者微信自己的应用层协议。
- 表示层:对消息进行加密。
- 会话层:建立一个会话。
- 传输层:应用层数据包被传输层进一步封装。传输层主要使用TCP或UDP协议。
- 网络层:传输层数据包会被封装成IP数据包,包含源IP地址和目的IP地址,并通过互联网路由到目的地。
- 数据链路层:IP数据包在这一层加上头部尾部,封装成帧。
- 物理层:数据链路层的帧在物理层被转换成电信号,通过物理媒介实际传输。
2. 性能指标·
速率:数据的传输速率,单位是b/s
带宽:单位时间内信道能传输的数据量,单位是b/s
吞吐量:单位时间通过网络的实际数据量,单位是b/s
时延:数据从网络的一端传送到另一端所需的时间,包括发送时延、传播时延、排队时延、处理时延
时延带宽积:信道可以容纳的比特数,等于传播时延*带宽
往返时间:双向交互一次所需的时间
利用率:信道利用率指出某信道有百分之几的时间是被利用的,网络利用率则是全网络的信道利用率的加权平均值,利用率过高就会产生非常大的时延
3. 通信方式·
客户-服务器(C/S):客户是服务请求方,服务器是服务提供方
对等连接(P2P):不区分客户和服务器
4. 交换技术·
电路交换:在通信双方之间建立一条专用的物理通路,数据在两个终端之间连续传输,直到通信结束释放连接。最典型的电路交换网络是传统电话网络,优点是传输速度快且稳定,缺点是信道利用率较低。
优点:通信时延小;有序传输没有冲突;控制简单。
缺点:建立连接时间长;效率低,灵活性差。
报文交换:交换节点接收并存储整个报文,然后转发到下一个节点,直至目的地,是存储-转发类型的交换方式。优点是信道利用率高,缺点是传输效率较低。
优点:无需建立连接。提高线路的利用率。
缺点:引起了转发时延。需要较大的存储缓存空间。
分组交换:交换节点接收并存储报文分组,然后转发到下一个节点,直至目的地,是存储-转发类型的交换方式。优点是信道利用率和传输效率高,缺点是不稳定性较高。
优点:无需建立连接。线路利用率高。
缺点:引起了转发时延。可能会出现失序、丢失、或重复分组
二、物理层·
1. 信道复用技术·
频分复用(FDM):每个信号被分配一个特定的频率范围,所有用户在相同时间内占用不同频带
时分复用(TDM):将时间分割成多个时隙,每个信号在特定的时隙内传输,所有用户在不同时间内占用相同频带
波分复用(WDM):用于光纤通信,将不同波长的光信号复用到一根光纤中传送
码分复用(CDM):每个信号使用唯一的编码序列,使其共存并互不干扰,所有用户可以在相同时间内使用相同频带进行通信
码分多址(CDMA):将每一个比特时间划分为m个短的间隔,称为码片
- 为每个站分配一个唯一的m bit码片序列,如果要发送比特1,则发送它自己的码片序列,如果要发送比特0,则发送该码片序列的二进制反码,总的发送信号为每个站的发送信号之和。
- 每个站分配的码片序列各不相同且互相正交,任意一个码片序列与自身的内积为1,与反码的内积为-1。
- 接收站将发送站的码片序列与收到的信号求内积,结果为1说明发送了1,结果为-1说明发送了0,结果为0说明没有发送数据。
三. 数据链路层·
1. 三个基本问题·
封装成帧:在一段数据的前后分别添加首部和尾部
透明传输:无论什么样的比特组合的数据,都能够按照原样没有差错地通过
差错检测:在发送的比特序列中加入适当的冗余度,使得接收端能够发现传输中是否发生差错
- 循环冗余检验:发送端在数据后面添加n个0,再除以n+1位的除数,将n位余数作为冗余码添加在数据后面。接收端把收到的每一个帧都除以同样的除数,检查得到的余数是否为0。
2. 点对点协议PPP·
组成:IP数据报的封装方法,链路控制协议LCP,网络控制协议NCP
过程:建立物理层连接,LCP配置协商,鉴别身份,NCP配置协商,链路打开,链路终止
3. CSMA/CD协议·
多点接入:许多计算机以多点接入的方式连接在一根总线上
载波监听:在发送数据之前和发送数据之中,每个站都必须不停的检测信道
碰撞检测:适配器边发送数据边检测信道上的信号电压的变化情况
- 争用期:总线的端到端往返传播时延
- 截断二进制指数退避算法:令,从集合中随机取出一个数r,重传应推后的时间为r倍的争用期
局域网中的数据采用 CSMA/CD 协议。
WIFI 无线网中采用 CSMA/CA 协议。
4. 虚拟局域网VLAN·
定义:由一些局域网网段构成的与物理位置无关的逻辑组
作用:缩小局域网的广播域范围,提高局域网的安全性
5. 自动重传请求ARQ·
停止等待协议(SW):发送方每次只能发送一帧数据,必须等到接收方的确认信息才能发送下一帧,超时则重传这一帧。
后退N帧协议(GBN):采用窗口机制,发送方每次可以发送N帧数据,接收方采用累积确认的方式,对按序到达的最后一个分组发送确认,失序或超时则重传所有未被确认的数据。
选择重传协议(SR):采用窗口机制,发送方每次可以发送N帧数据,接收方逐帧发送确认并缓存失序的帧,超时则重传未被确认的数据。
6. 设备·
中继器,集线器,双绞线:物理层
网桥:数据链路层
交换机:通常是数据链路层,根据功能也可以在网络层,传输层。
网卡:一半物理层,一半数据链路层
路由器:网络层
网关:应用层
防火墙:网络层,会话层,应用层。
VPN:数据链路层,网络层(IPSec)
IDS:应用层,网络层
四、网络层·
1. 两种服务·
虚电路服务(Virtual circuit):当两台计算机进行通信时,应当先建立连接,双方沿着已建立的虚电路发送分组
数据报服务:每个分组独立发送,选择路由进行转发,在分组传送的过程中有丢失的可能
2. 两个层面·
数据层面:路由器根据生成的转发表,把收到的分组从查找到的对应端口转发出去
控制层面:路由器和相邻的路由器交换路由信息,创建出本路由器的路由表
软件定义网络SDN:分离数据层面和控制层面,使用集中控制器来进行路由决策和网络管理,路由器只负责转发分组
3. 中间设备·
集线器:工作在物理层,半双工模式。每个端口仅仅简单地转发比特,不进行碰撞检测,使用集线器的以太网在逻辑上仍是总线网
交换机:工作在数据链路层,全双工模式。每个端口直接与一台主机或另一台交换机相连,交换机能同时连通许多对端口,使每一对相互通信的主机都能像独占通信媒体那样,无碰撞地传输数据。
路由器:工作在网络层,具有路由选择和分组转发功能
网关:工作在网络层以上,需要在高层进行协议的转换
4. IP地址·
格式:网络号+主机号=32位
- 网络号全0表示本网络,网络号127保留作为本地软件环回测试
- 主机号全0表示网络地址,主机号全1表示该网络上的所有主机
分类:A类(网络号8位,0开头)、B类(网络号16位,10开头)、C类(网络号24位,110开头)、D类(多播地址,1110开头)、E类(保留地址,1111开头)
CIDR:使用斜杠后跟一个数字来表示子网掩码,可以更加有效地分配IP地址空间
路由聚合:在路由器的转发表中,把许多前缀相同的地址块用一个较大地址块来代替
IPv6:地址长度128位,内置IPsec,首部长度固定,定义了许多可选的扩展首部。
ipv4与ipv6的区别
- 地址类型:IPv4具有三种不同类型的地址:多播,广播和单播。IPv6还具有三种不同类型的地址:任播,单播和多播。
- 地址长度: 32;128
- IP 报头:ipv4报头有20-60 个字节的可变长度;ipv6报头长度为固定的40字节。
为什么有了MAC地址还要有IP地址?
只拥有MAC地址的话,只有在同一网络区域内,才能进行数据传输,不能跨网络区域。两点不在一个网络内,这时就需要IP地址了。
5. 地址解析协议ARP·
工作在网络层
工作过程:
- 主机检查ARP表,查看是否已经有目标IP地址对应的MAC地址
- 如果没有,主机在本网段上广播发送一个ARP请求数据包,包含源主机的IP地址、MAC地址及目标主机的IP地址
- 其他主机检查目标IP地址字段是否与自己的IP地址一致,如果是,则将源主机的地址映射存储到ARP表中,并向源主机发送一个ARP响应数据包,包含自己的IP地址和MAC地址
- 源主机收到ARP响应数据包后,将目标主机的地址映射存储到ARP表中
6. 路由选择协议·
路由信息协议(RIP):基于距离向量算法,每个路由器维护自己到其他网络的最短距离,每隔固定时间和相邻路由器交换信息,交换的信息是自己现在的路由表。缺点是坏消息传播得慢
开放最短路径优先(OSPF):基于链路状态算法,每个路由器向自治系统中所有路由器发送信息,发送的信息是相邻路由器的链路状态,构建一个完整的链路状态数据库。使用Dijkstra计算最短路径。
区别:
- RIP适用于小型互联网,收敛速度慢;OSPF适用于大型互联网,收敛速度快
- RIP按固定时间间隔交换信息,OSPF只在链路状态发生变化时交换信息
- RIP通过跳数来确定最佳路径,OSPF允许管理员给每条路由指派不同的代价
- RIP分组使用UDP用户数据报传送,OSPF分组使用IP数据报传送
边界网关协议(BGP):基于路径向量算法,和其他自治系统的边界路由器交换网络可达性信息,用于在不同自治系统之间进行路由选择
7. 分组转发·
工作过程:
- 从收到的分组的首部提取目的主机的IP地址
- 若查找到特定主机路由,则按照这条路由的下一跳转发分组
- 从转发表中网络前缀最长的一行开始依次检查,将这一行的子网掩码与目的地址进行按位与运算,若结果与前缀匹配,则按照这条路由的下一跳转发分组
- 若转发表中有一个默认路由,则把分组传送到指明的默认路由器,否则报告转发分组出错
- 在得到下一跳的IP地址后,将其送交数据链路层转换为MAC地址,写入帧首部传送到下一跳的数据链路层,再取出数据部分交给网络层
8. 网际控制报文协议ICMP·
功能:允许主机或路由器报告差错情况和提供有关异常情况的报告
分类:ICMP差错报告报文(终点不可达,时间超过,改变路由)、ICMP询问报文(回送请求/回答,时间戳请求/回答)
应用:
- PING:用来测试两台主机之间的连通性
- tracert:跟踪一个分组从源点到终点的路径
9. 虚拟专用网VPN·
定义:在公用网络上建立专用网络,进行加密通讯
分类:内联网VPN、外联网VPN、远程接入VPN
VPN工作在网络层
10. 网络地址转换NAT·
定义:通过路由器将本地IP地址转换为外部IP地址
工作在传输层
NAPT:利用端口号,使多个主机可以共用一个外部IP地址
五、传输层·
1. 端口·
硬件端口:不同硬件设备进行交互的接口
软件端口:应用层的各种协议进程与运输实体进行层间交互的地点
2. 用户数据报协议UDP·
定义:一种无连接、不可靠的通信协议,数据单位为用户数据报
特点:
- 支持一对一、一对多、多对一和多对多的通信服务
- 一次交付一个完整的报文,对应用层交下来的报文添加首部后直接向下交付IP层
- 计算检验和时需要添加伪首部,把首部和数据部分一起检验
3. 传输控制协议TCP·
定义:一种面向连接、可靠的通信协议,数据单位为报文段
特点:
- 只支持一对一的通信服务,提供全双工通信
- 将应用程序交下来的数据看成无结构的字节流,不保证发送和接收的数据块具有对应大小关系
- 连接的端点为套接字,即(IP地址:端口号)
TCP 实现可靠传输的实现方法:停止-等待协议、TCP连接管理、确认机制、超时重传、流量控制以及拥塞控制等
停止等待协议:
发送方发送一个数据包后,就会停止发送并等待接收方的确认,只有在收到接收方的确认后,才会发送下一个数据包。
TCP 和 UDP 的区别:
- TCP向上层提供面向连接的可靠服务 ,UDP向上层提供无连接不可靠服务。
- TCP面向字节流,UDP面向数据报
- TCP 没有UDP速率快、实时性高
- TCP 通常一对一通信,UDP可以一对多通信。
- TCP 的首部开销大,首部最小 20 字节,最大 60 字节;UDP 的首部开销小,只有 8 字节
4. TCP流量控制·
定义:让发送方的发送速率不要太快,要让接收方来得及接收
方法:滑动窗口机制
- 发送窗口:在没有收到确认的情况下,可以连续把窗口内的数据都发送出去
- 接收窗口:临时存储不按序到达的数据,等缺少的数据收到后,再按序交付上层的应用进程
- 累积确认:对按序收到的数据中的最高序号给出确认
- 超时重传:重传所有未被确认的数据
5. TCP拥塞控制·
定义:防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不至于过载
方法:发送方维持拥塞窗口
- 慢开始:每经过一个传输轮次,拥塞窗口的大小加倍,直至达到门限值
- 拥塞避免:每经过一个传输轮次,拥塞窗口的大小加1,超时则调整门限值为拥塞窗口的一半,执行慢开始算法
- 快重传:当发送方连续收到三个重复确认时,立即重传丢失的报文段
- 快恢复:在快重传之后,调整门限值为拥塞窗口的一半,执行拥塞避免算法
6. TCP连接管理·
三次握手:
- 客户端选择初始序列号,发送一个的连接请求报文段给服务端
- 服务端收到报文,如果同意建立连接,则选择初始序列号,发送一个的确认报文段给客户端
- 客户端收到报文,发送一个的确认报文段给服务端,此时连接成功建立
四次挥手:
- 客户端选择初始序列号,发送一个的连接释放报文段给服务端
- 服务端收到报文,选择初始序列号,发送一个的确认报文段给客户端。此时客户端到服务端的连接已经释放,但服务端仍可以发送数据
- 服务端的数据发送完毕,选择初始序列号,发送一个的连接释放报文段给客户端
- 客户端收到报文,发送一个的确认报文段给服务端
- 服务端收到报文后立即释放连接,客户端等待(最长报文段寿命)后释放连接
常见问题:
-
为什么不采用“两次握手”建立连接?
防止已失效的连接请求报文段突然又传送到服务端。例如服务端收到了客户端已失效的连接请求,在发送报文后就为其分配了资源,造成了服务端资源的浪费。
-
为什么不采用“三次挥手”释放连接?
TCP是全双工通信,每个方向上的连接都需要单独关闭
防止已失效的连接释放报文段突然又传送到服务端。例如服务端收到了客户端已失效的释放请求,在发送报文后就立即断开连接,影响当前的通信。
-
为什么建立连接是三次握手,关闭连接却是四次挥手呢?
建立连接时,服务端可以将放在一个报文里。释放连接时,服务端收到报文时,只代表客户端不会再发送数据,而服务端还有可能继续发送数据,所以此时服务端的与不能同时发给接收方。
-
为什么客户端最后还要等待?
保证客户端发送的最后一个确认报文段能够到达服务端。如果客户端发送的报文丢失,服务端会重发报文,往返的最长时间是。
使本连接持续的时间内产生的所有报文段都从网络中消失,使下一个新的连接中不会出现旧的连接请求报文段。
-
如果已经建立了连接,但客户端突然出现故障了怎么办?
TCP设有一个保活计时器,服务器每收到一次客户端的请求都会复位这个计时器,若客户端长时间没有反应,服务器就认为客户端出现故障,关闭连接。
六、应用层·
1. 域名系统DNS·
域名服务器:
- 根域名服务器:负责管理顶级域名服务器的域名和IP地址
- 顶级域名服务器:负责管理特定顶级域名下的二级域名
- 权威域名服务器:负责管理一个区的域名
- 本地域名服务器:缓存特定域名与IP地址的映射信息
查询过程:
- 用户在浏览器中输入一个域名
- 浏览器或操作系统检查本地域名缓存
- 浏览器向配置的本地域名服务器发送查询请求
- 向根域名服务器发送查询请求,返回相应顶级域名服务器的IP地址
- 向顶级域名服务器发送查询请求,返回相应权威域名服务器的IP地址
- 向权威域名服务器发送查询请求,最终获取域名对应的IP地址,将其保存并返回给发起查询的客户端
递归查询:域名服务器收到查询请求,向其他域名服务器继续发出请求,最终返回查询结果,查询工作由域名服务器完成
迭代查询:域名服务器收到查询请求,返回另一台域名服务器地址,客户端再向这台域名服务器发出请求,查询工作由客户端完成
DNS 根服务器只有 13 台,亚洲唯一在日本
2. 超文本传送协议HTTP·
统一资源定位符(URL):协议 : // 主机名 : 端口 / 路径
从输入url到显示页面的过程:DNS解析,TCP连接,客户端发送HTTP请求报文,服务器返回HTTP响应报文,浏览器解析渲染页面
HTTP请求:
- GET方法:用来从服务器获取资源,请求数据附加在URL后面,传输的数据量较小
- POST方法:用来更新服务器的资源,请求数据位于HTTP报文的请求体中,可以传输更大的数据量,安全性较高
Cookie:在HTTP服务器和客户端之间传递的状态信息
- HTTP1.0:(非持续性连接)
- HTTP1.1:(持续性连接)(默认流水线)先来先服务(FCFS)
- HTTP2:划分成帧,多路复用,调度帧以减轻阻塞,根据优先级来传输数据而不是 FCFS
- HTTP2 之前还是 TCP 服务,TCP 连接没有安全性;
- HTTP3 是基于 QUIC 协议,出现了 UDP 服务,增加了安全性
HTTP 和 HTTPS 的区别
HTTPS 是基于 HTTP 的加密传输协议,使用 SSL 或 TLS 协议对 HTTP 进行加密,使得传输过程更加安全可靠。过使用公钥加密和私钥解密的方式,对客户端和服务器之间的通信进行加密保护,使得第三方无法轻易获取和篡改传输的数据。
主要区别如下:
(1)安全性:HTTP 不进行数据加密,数据以明文形式传输,容易被拦截、窃取和篡改;而 HTTPS 通过加密技术对数据进行加密,通信过程更加安全。
(2)协议端口:HTTP 默认使用 80 端口进行通信,而 HTTPS 默认使用 443 端口进行通信。
(3)证书认证:HTTPS 使用数字证书来验证网站的身份,确保通信的安全性和可信度,防止中间人攻击等安全问题;而 HTTP 不需要进行证书认证。
(4)网络性能:由于 HTTPS 需要进行数据加密和解密操作,相比 HTTP 会增加一定的计算和传输开销,因此可能会稍微降低网络性能。
3. DHCP动态主机配置协议·
Dynamic Host Configuration Protocol
DHCP位于OSI参考模型的应用层,使用UDP协议进行通信。
工作过程:
- DHCP Discover:客户端广播一个 Discover 消息,寻找网络上的 DHCP 服务器。
- DHCP Offer:一个或多个 DHCP 服务器响应客户端的请求,提供 Offer 消息,包含 IP 地址和其他网络配置信息。
- DHCP Request:客户端选择一个 DHCP 服务器的 Offer,并发送 Request 消息,请求该服务器提供的配置。
- DHCP Ack:被选中的 DHCP 服务器确认客户端的请求,并发送 Ack 消息,正式分配 IP 地址和网络配置。