计算机网络
一、基本概念
1.计算机之间的通信
- 需要得知对方的 地址
- 最终是根据MAC地址(网卡地址),输送数据到网卡,被网卡接收
- 如果网卡发现数据的目标MAC地址是自己,就会将数据传递给上一层进行处理
- 如果网卡发现数据的目标MAC地址不是自己,就会将数据丢弃,不会传递给上一层进行处理
2.计算机之间连接方式
(1)网线直连
直接通过网线连接。相同设备使用交叉线,不同设备之间使用直通线。
(2)同轴电缆
- 半双工通信
- 容易冲突
- 不安全
- 中间断了整个都瘫痪
(3)集线器
集线器的主要功能是对接收到的信号进行再生整形放大,以扩大网络的传输距离,同时把所有节点集中在以它为中心的节点上。
它发送数据时都是没有针对性的,而是采用广播方式发送。也就是说当它要向某节点发送数据时,不是直接把数据发送到目的节点,而是把数据包发送到与集线器相连的所有节点.集线器(HUB)属于数据通信系统中的基础设备,它和双绞线等传输介质一样,是一种不需任何软件支持或只需很少管理软件管理的硬件设备。
(4)网桥
网桥(Bridge)是早期的两端口数据链路层网络设备,用来连接不同网段的计算机网络设备同时它又可隔离冲突域.
(5)交换机
应用于统一网段内,有记忆功能,相当于更多接口的网桥,相当于更多的网桥,双全工通讯。
(6)路由器
可以在不同网段之间转发数据,隔绝广播域。路由器通过不同端口的网关不同与外界网络连接。网关和对应广播域要处于相同网段。
3.MAC地址
(1)组成
- 每一个网卡都有一个6字节的MAC地址(物理地址);
- 全球唯一,固化在了网卡的ROM中,由IEEE802标准规定;
- 前3字节:OUI,组织唯一标识符,由IEEE的注册管理机构分配给厂商;
- 后3字节:网络接口标识符,由厂商自行分配;
(2)格式
- Windows:
40-55-82-0A-8C-6D
- Linux、Android、Mac、iOS:
40:55:82:0A:8C:6D
- 当48位全为1时,代表广播地址:
FF-FF-FF-FF-FF-FF
(3)操作
- 查看MAC地址:
ipconfig /all
(4)获取
- 通过发送 广播获取对方的MAC地址 ,获取成功后,会缓存IP地址、MAC地址的映射信息,俗称:ARP缓存
- 通过ARP广播获取的MAC地址,属于动态(dynamic)缓存 ✓ 存储时间比较短(默认是2分钟),过期了就自动删除
- 查询ARP缓存:arp -a [主机地址]
- 删除ARP缓存:arp -d [主机地址]
- 增加ARP缓存:arp -s 主机地址 MAC地址
(5)ARP
ARP译为:地址解析协议
通过IP地址获取MAC地址。
(6)RARP
RARP译为:逆地址解析协议
使用与ARP相同的报头结构 ,作用与ARP相反,用于将MAC地址转换为IP地址,后来被BOOTP、DHCP所取代
(7)ICMP
ICMP译为:互联网控制消息协议
- IPv4中的ICMP被称作ICMPv4,IPv6中的ICMP则被称作ICMPv6
- 通常用于返回错误信息,比如 值过期、目的不可达
- ICMP的错误消息总是包括了源数据并返回给发送者
4.IP地址
IP地址(Internet Protocol Address):互联网上的每一个主机都有一个IP地址 ,最初是IPv4版本,32bit(4字节),2019年11月25日,全球的IP地址已经用完,后面推出了IPv6版本,128bit(16字节)
(1)组成
IP地址由2部分组成:网络标识(网络ID,网络标识一样说明在同一个网段)、主机标识(主机ID)
- 通过子网掩码(subnet mask)可以得知网络ID 、主机ID
- 主机所在的网段(网络号) = 子网掩码 & IP地址(与运算)
例如:
IP地址:130.168.1.10
子网掩码:255.255.0.0
网段:130.168.0.0
所以在该网段下可以用的IP地址:256 * 256 - 2 (个)
因为:160.168.255.255为广播IP地址,160.168.0.0表示网段
- 计算机和其他计算机通信前,会先判断目标主机和自己是否在同一网段 ;同一网段:不需要由路由器进行转发 ;不同网段:交由路由器进行转发
(2)分类
(3)子网掩码的CIDR表示方法
子网掩码的CIDR表示方法
- 192.168.1.100/24,代表子网掩码有24个1,也就是255.255.255.0
- 123.210.100.200/16,代表子网掩码有16个1,也就是255.255.0.0
(4)子网划分
子网划分:借用主机位作子网位,划分出多个子网
可用分为:
- 等长子网划分:将一个网段等分成多个子网,每个子网的可用IP地址数量是一样的
- 变长子网划分:每个子网的可用IP地址数量可以是不一样的
- 等分成2个子网
- 等分4个子网
- 等分8个子网
- 变长子网划分
(5)超网
超网:跟子网反过来,它是将多个连续的网段合并成一个更大的网段。
- 合并4个网段
5.路由
用于不同网段之间转发数据。
默认情况下,路由器只知道跟它直连的网段,非直连的网段需要通过静态路由、动态路由告诉它。
(1)静态路由
- 管理员手动添加路由信息
- 适用于小规模网络
(2)动态路由
- 路由器通过路由选择协议(比如RIP、OSPF)自动获取路由信息
- 适用于大规模网络
6.ISP
◼ ISP,Internet Service Provider,Internet服务提供商,比如移动、电信、网通、铁通等。
7.公网IP、死亡IP
(1)公网IP
Internet上的路由器中只有到达公网的路由表,没有到达私网的路由表
公网IP由因特网信息中心,统一分配和管理
ISP需要向Inter NIC 申请公网IP
(2)私网IP
主要用于局域网。下面是保留的私网网段
A类:10.0.0.0/8,1个A类网络
B类:172.16.0.0/16 ~ 172.31.0.0/16,16个B类网络
C类:192.168.0.0/24 ~ 192.168.255.0/24,256个C类网络
8.NAT
私网IP访问Internet需要进行NAT转换为公网IP
特点:节约公网IP资源、会隐藏真实IP
NAT分类:
- 静态转换
- 手动配置NAT映射表
- 一对一转换
- 动态转换
- 定义外部地址池,动态随机转换
- 一对一转换
- PAT
- 多对一转换,最大程度节约公网IP资源
- 采用多端多路复用方式,通过端口号标识不同的数据流
- 目前应用最广泛的NAT实现方式
二、网络互连模型
为了更好地促进互联网络的研究和发展,国际标准化组织 ISO 在 1985 年制定了网络互连模型。
OSI参考模型为理想模型;TCP/IP 协议为使用最多的网络互连模型;
网络分层:
# | 层 | 协议 | 数据类型 |
---|---|---|---|
5 | 应用层 | FTP,HTTP,SMTP,DNS,DHCP | 报文、用户数据 |
4 | 运输层 | TCP,UDP | 段 |
3 | 网络层 | IP,ARP,ICMP | 包 |
2 | 数据链路层 | CSMA/CD,PPP | 帧 |
1 | 物理层 | 比特流 |
1.物理层
物理层定义了接口标准、线缆标准、传输速率、传输方式等。
(1)数字信号、模拟信号
模拟信号:连续的信号,适合长距离传输;抗干扰能力差,受到干扰时波形变形很难纠正;
数字信号:离散的信号,不适合长距离传输;抗干扰能力强,受到干扰时波形失真可以修复;
(2)数据通信模型
(3)信道
信道:信息传输的通道,一条传输介质上(比如网线)上可以有多条信道
- 单工通信:信号只能往一个方向传输,任何时候都不能改变信号的传输方向 ;比如无线电广播、有线电视广播
- 半双工通信:信号可以双向传输,但必须是交替进行,同一时间只能往一个方向传输 ;比如对讲机
- 全双工通信:信号可以同时双向传输;比如手机(打电话,听说同时进行)
2.数据链路层
(1)基本概念
- 链路:从1个节点到相邻节点的一段物理线路(有线或无线),中间没有其他交换节点。
数据链路:在一条链路上传输数据时,需要有对应的通信协议来控制数据的传输。不同类型的数据链路,所用的通信协议可能是不同的。广播信道:CSMA/CD协议(比如同轴电缆、集线器等组成的网络);点对点信道:PPP协议(比如2个路由器之间的信道)
数据链路层的3个基本问题:封装成帧 ;透明传输 ;差错检验
(2)封装成帧
(3)透明传输
(4)差错检验
(5)CSMA/CD协议
CSMA/CD:载波侦听多路访问/冲突检测
使用了CSMA/CD的网络可以称为是以太网(Ethernet),它传输的是以太网帧 ;以太网帧的格式有:Ethernet V2标准、IEEE的802.3标准 ;使用最多的是:Ethernet V2标准
为了能够检测正在发送的帧是否产生了冲突,以太网的帧至少要64字节
用交换机组建的网络,已经支持全双工通信,不需要再使用CSMA/CD,但它传输的帧依然是以太网帧 ,所以,用交换机组建的网络,依然可以叫做以太网
- Ethernet V2帧格式
![image-20220601230031911](./images/Etherne v2.png)
![image-20220601230057372](./images/Ethernet v2标准.png)
(6)网卡
网卡作用于数据链路层和物理层。
(7)PPP协议
3.网络层
网络层数据包(IP数据包,Packet)由首部、数据2部分组成
数据:很多时候是由传输层传递下来的数据段(Segment)
4.传输层
传输层有2个协议:
TCP(Transmission Control Protocol),传输控制协议
UDP(User Datagram Protocol),用户数据报协议
性能 | TCP | UDP |
---|---|---|
连接性 | 面向连接 | 无连接 |
可靠性 | 可靠传输,不丢包 | 不可靠传输,尽最大努力交付,可能丢包 |
首部占用空间 | 大 | 小 |
传输速率 | 慢 | 快 |
资源消耗 | 大 | 小 |
应用场景 | 浏览器、文件传输、邮件发送 | 视频通话 |
应用层协议 | HTTP、HTTPS、FTP、SMTP、DNS | DNS |
UDP
- 数据格式
UDP是无连接的,减少了建立和释放连接的开销
UDP尽最大能力交付,不保证可靠交付
因此不需要维护一些复杂的参数,首部只有8个字节(TCP的首部至少20个字节)
- 检验和
- 端口
5.TCP
(1)检验和
跟UDP一样,TCP检验和的计算内容:伪首部 + 首部 + 数据
伪首部:占用12字节,仅在计算检验和时起作用,并不会传递给网络层
(2)标志位
- URG:当URG=1时,紧急指针字段才有效。表明当前报文段中有紧急数据,应优先尽快传送;
- ACK:当ACK=1时,确认号字段才有效;
- PSH
- RST:当RST=1时,表明连接中出现严重差错,必须释放连接,然后再重新建立连接;
- SYN:当SYN=1、ACK=0时,表明这是一个建立连接的请求 ,若对方同意建立连接,则回复SYN=1、ACK=1
- FIN:当FIN=1时,表明数据已经发送完毕,要求释放连接;
(3)序号、确认号、窗口
- 序号:占4字节 。首先,在传输过程的每一个字节都会有一个编号,在建立连接后,序号代表:这一次传给对方的TCP数据部分的第一个字节的编号;
- 确认号:占4字节,在建立连接后,确认号代表:期望对方下一次传过来的TCP数据部分的第一个字节的编号;
- 窗口:占2字节 。这个字段有流量控制功能,用以告知对方下一次允许发送的数据大小(字节为单位)
(4)可靠传输
- 为什么选择在传输层就将数据“大卸八块”分成多个段,而不是等到网络层再分片传递给数据链路层?
- 因为可以提高重传的性能
- 需要明确的是:可靠传输是在传输层进行控制的
- ✓ 如果在传输层不分段,一旦出现数据丢失,整个传输层的数据都得重传
- ✓ 如果在传输层分了段,一旦出现数据丢失,只需要重传丢失的那些段即可
(5)流量控制
如果接收方的缓存区满了,发送方还在疯狂着发送数据
接收方只能把收到的数据包丢掉,大量的丢包会极大着浪费网络资源 ,所以要进行流量控制
什么是流量控制?让发送方的发送速率不要太快,让接收方来得及接收处理
原理:
- 通过确认报文中窗口字段来控制发送方的发送速率
- 发送方的发送窗口大小不能超过接收方给出窗口大小
- 当发送方收到接收窗口的大小为0时,发送方就会停止发送数据
特殊情况:一开始,接收方给发送方发送了0窗口的报文段 ,后面,接收方又有了一些存储空间,给发送方发送的非0窗口的报文段丢失了 ,发送方的发送窗口一直为零,双方陷入僵局。
解决方案:当发送方收到0窗口通知时,这时发送方停止发送报文,并且同时开启一个定时器,隔一段时间就发个测试报文去询问接收方最新的窗口大小 ,如果接收的窗口大小还是为0,则发送方再次刷新启动定时器 。
(6)拥塞控制
拥塞控制防止过多的数据注入到网络中,避免网络中的路由器或链路过载 ,拥塞控制是一个全局性的过程 ,涉及到所有的主机、路由器,以及与降低网络传输性能有关的所有因素。相比而言,流量控制是点对点通信的控制。
(7)建立连接
- 三次握手
- 状态解读
- 疑问
(8)释放连接
- 四次挥手
- 状态解读
- 细节
6.运输层
(1)常见协议
- 超文本传输:HTTP、HTTPS
- 文件传输:FTP
- 电子邮件:SMTP、POP3、IMAP
- 动态主机配置:DHCP
- 域名系统:DNS
(2)域名
根据级别不同,域名可以分为:顶级域名(Top-level Domain,简称TLD),二级域名 ,三级域名 ,...
- 分类
(3)DNS
- DNS服务器
客户端首先会访问最近的一台DNS服务器(也就是客户端自己配置的DNS服务器)
所有的DNS服务器都记录了DNS根域名服务器的IP地址
上级DNS服务器记录了下一级DNS服务器的IP地址
全球一共13台IPv4的DNS根域名服务器、25台IPv6的DNS根域名服务器
(4)IP地址分配
- 静态IP地址
- 动态IP地址
DHCP(Dynamic Host Configuration Protocol),译为:动态主机配置协议
DHCP协议基于UDP协议,客户端是68端口,服务器是67端口
DHCP服务器会从IP地址池中,挑选一个IP地址“出租“给客户端一段时间,时间到期就回收它们
平时家里上网的路由器就可以充当DHCP服务器
- DNS分配IP地址的4个阶段
7.HTTP
HTTP(Hyper Text Transfer Protocol),译为超文本传输协议,是互联网中应用最广泛的应用层协议之一 ,设计HTTP最初的目的是:提供一种发布和接收HTML页面的方法,由URI来标识具体的资源 后面用HTTP来传递的数据格式不仅仅是HTML,应用非常广泛
(1)介绍
- 版本
- 标准
- 报文格式
- ABNF
- 报文格式
(2)请求方法
RFC 7231, section 4: Request methods:描述了8种请求方法 :GET、HEAD、POST、PUT、DELETE、CONNECT、OPTIONS、TRACE
RFC 5789, section 2: Patch method:描述了PATCH方法
- GET:常用于读取的操作,请求参数直接拼接在URL的后面(浏览器对URL是有长度限制的)
- POST:常用于添加、修改、删除的操作,请求参数可以放到请求体中(没有大小限制)
- HEAD:请求得到与GET请求相同的响应,但没有响应体。使用场景举例:在下载一个大文件前,先获取其大小,再决定是否要下载。以此可以节约带宽资源
- OPTIONS:用于获取目的资源所支持的通信选项,比如服务器支持的请求方法
- PUT:用于对已存在的资源进行整体覆盖
- PATCH:用于对资源进行部分修改(资源不存在,会创建新的资源)
- DELETE:用于删除指定的资源
- TRACE:请求服务器回显其收到的请求信息,主要用于HTTP请求的测试或诊断
- CONNECT:可以开启一个客户端与所请求资源之间的双向沟通的通道,它可以用来创建隧道(tunnel)
(3)请求头
(4)响应头字段
(5)状态码
状态码可以分为5类:
- 信息响应:100~199
- 成功响应:200~299
- 重定向:300~399
- 客户端错误:400~499
- 服务器错误 :500~599
常见状态码:
(6)form提交
8.代理服务器
代理服务器:本身不生产内容,处于中间位置转发上下游的请求和响应,面向下游的客户端:它是服务器;面向上游的服务器:它是客户端
- 正向代理:代理的对象是客户端
作用:隐藏客户端身份 ;绕过防火墙(突破访问限制); Internet访问控制;数据过滤
- 反向代理:代理的对象是服务器
作用: 隐藏服务器身份 ; 安全防护;负载均衡
- 代理服务器相关头部字段
9.CDN
CDN利用最靠近每位用户的服务器,更快更可靠地将音乐、图片、视频等资源文件(一般是静态资源)传递给用户
- CDN运营商在全国、乃至全球的各个大枢纽城市都建立了机房
- 部署了大量拥有高存储高带宽的节点,构建了一个跨运营商、跨地域的专用网络
- 内容所有者向CDN运营商支付费用,CDN将其内容交付给最终用户
三、网络安全
1.ARP欺骗
ARP欺骗(ARP spoofing),又称ARP毒化(ARP poisoning)、ARP病毒、ARP攻击 ARP欺骗可让攻击者获取局域网上的数据包甚至可篡改数据包 ;可让网络上特定电脑之间无法正常通信(例如网络执法官这样的软件);让送至特定IP地址的流量被错误送到攻击者所取代的地方
2.DoS、DDoS
防御: