- 1 . 计算机网络概述
- 1.1. 计算机网络的定义
- 1.2. 计算机网络的基本功能
- 1.3. 计算机网络的演进
- 1.4. 计算机网络的中的基本概念
- 1.4.1. 局域网,城域网,广域网
- 1.4.2. 网络的拓扑结构
- 1.4.3. 电交换与分组管理
- 1.5. 衡量计算机网络的主要指标
- 1.6. 网络标准化组织
- 2 . OSI参考模型与TCP/IP模型
- 2.1. OSI参考模型
- 2.2. OSI参考模型层次间的关系以及数据封装
- 2.3. TCP/IP模型
- 3 . 局域网基本原理
- 4 . IP基本原理
- 5 . TCP和UDP的基本原理
1. 计算机网络概述
1.1. 计算机网络的定义
指的是计算机组成的网络系统,根据IEEE的坦尼鲍姆博士定义为:一种自治计算机互联的集合
1.2. 计算机网络的基本功能
- 资源共享:资源分为软件和硬件资源
- 分布式处理与负载均衡
- 综合信息服务
1.3. 计算机网络的演进
- 主机互连:二十世纪60年代初期,基于主键之间的低速串行连接的
- 局域网(LAN--Local Area Network):二十世纪70年代,当今主流的局域网技术是--以太网(Ethernet)也是这个时期
- 互联网(internet):二十世纪70年代后期,单一的局域网无法满足需求,广域网技术逐渐发展起来,1983年,ARPANET采纳TCP和IP协议作为主要的协议簇
- 因特网:20世纪80年代到90年代是网络互联发展时期,1990年ARENET被internet取代
1.4. 计算机网络的中的基本概念
1.4.1. 局域网,城域网,广域网
- 局域网(LAN--Local Area Network):由用户自行建设,使用私有地址组建的网络
- 城域网(MAN--Metropolitan Area Network):由运行商或大规模企业建设,连接城市范围的网络
- 广域网(WAN--Wide Area Network):由运行商建设,连接城域范围的网络
局域网与其他网络的区别主要体现在:
- 网络所覆盖的物理范围
- 网络的拓扑结构
- 网络所使用的传输技术
1.4.2. 网络的拓扑结构
网络拓扑指的是计算机网络的物理布局,就是指将一组设备以什么样的结构捡起来,也成为了拓扑结构,基本拓扑模型主要有:
- 总线型(Bus)拓扑:将各个节点的设备用一根总线连接起来,缺点--存在单点故障,线路中断会导致所有设备中断通信
- 星型(Star)拓扑:是一种以中央节点(如交换机)为中线,把若干个外围节点连接起来的辐射性互联结构,中央节点对各设备间的通信和信息交换进行集中控制和管理
- 主要特点是系统的可靠性较高
- 某条线路故障时不会影响网络中的其他主机
- 中央节点故障会导致全部断网
- 其他节点都与中央节点互通
- 树形拓扑:星型拓扑的进一步发散型
- 优点:结构简单,组网成本低,维护管理容易
- 缺点:中央节点压力大,可靠性差
- 环型(Ring)拓扑:是将各节点通过一条首尾相连的通信线路连接起来的一个缝补的环型网
- 每个设备都只能和它的一个或两个相邻节点直接通信,如果要和其他节点通信,信息必须依次经过两者之间的每一个设备
- 环型网络可以是单向的,也可以是双向的
- 所有设备共享一条环型总线
- 有一定冗余性
- 网状(Mesh)拓扑:可分为全网状(Full Mesh)和部分网状(Partial Mesh)节点之间有多条线路可达
- 优点:可靠性高
- 缺点:组网成本高,维护管理复杂
1.4.3. 电交换与分组管理
- 电路交换:基于电话网的电路交换
- 优点:延迟小,透明传输
- 缺点:带宽固定,网络资源利用率低,初始连接建立慢
- 分组交换:以分组为单位存储转发
- 优点:多路复用,网络资源利用率搞
- 缺点:延迟打,实时性差。设备功能复杂
电路交换(Circcuit Switching)和分组交换(Packet Switching)是通信中的一对重要概念
1.5. 衡量计算机网络的主要指标
带宽(bandswidth):单位时间内能够传输的数据总量,带宽越大,网络质量越好
- 带宽分为模拟带宽和数字带宽
- 单位是bps-bit per second
- 目前常见的网络带宽有
- 常用以太网技术的带宽可以为1000Mpbs,10Gbps,40Gpbs等
- 家庭带宽接入上网带宽可以为100Mbps,500Mbps,1000Mbps等
延迟(delay):数据从一个节点到达另一个节点消耗的时间,延迟越低,网络质量越好
- 网络延迟主要由传播延迟(proagation delay),交换延迟(switching delay),介质访问延迟(access delay)和队列延迟(queuing delay)等组成
- 网络中产生的延迟的因素有很多,既受网络设备的影响也受传输介质,网络协议标准的影响;既受硬件的制约,也受软件制约
- 由于物理规律的限制,延迟是不可能完全消除的
1.6. 网络标准化组织
2. OSI参考模型与TCP/IP模型
产生背景: 网络设备大部分厂商按自己的标准生产,不能兼容,很难相互间进行通信
国际标准化组织ISO与1984年提出了开放系统互连参考模型(Open System Interconnrction Reference Model,OSI/RM)很快就成为计算机网络通信的基础模型
2.1. OSI参考模型
OSI参考模型定义了网络中设备所遵守的层次结构
分层结构的优点
- 开放的标准化结构
- 多厂商兼容性
- 易于理解,学习和更新协议标准
- 实现模块化工程,降低开发实现的复杂度
- 便于故障排除
2.2. OSI参考模型层次间的关系以及数据封装
- 物理层:涉及到通信信道上的传输的原始比特流,它定义了传输数据所需要的机械,电器,功能及规程的特性,包括电压,接口,线缆标准,传输距离,传输介质等物理参数
- 数据链路层:主要任务是提供对物理层的控制,检测并纠正可能出现的错误,并且进行流量控制,数据链路层与物理地址、网络拓扑、线缆规划、错误校验和流量控制等有关
- 网络层:决定传输包的最佳路由,其关键问题是确定数据包从源端到目的端如何选择路由,网络层通过路由选择协议来计算路由,地址寻址,路由
- 传输层:基本功能是从会话层接受数据,并且在必要的时候吧它分成较小的单元,传递给网络层,并确保到达对方的各段信息正确无误,传输层建立,维护虚电路、进行差错校验和流量控制
- 会话层:允许不同及其上的用户建立、管理和终止应用程序间的会话关系,在协调不同应用程序之间的通信时要涉及会话层,该层使没分应用程序知道其他应用程序的状态,同时会话层也提供双工(Dulex)协商、会话同步
- 表示层:关注所传输的信息的语法和语义,它吧来自应用层与计算机有关的数据格式处理成与计算机无关的格式,以保证对端设备能够准确无误地理解发送端数据,同时表示层也负责数据加密等,定义数据格式、结构;数据加密、压缩
- 应用层:是OSI模型中最接近用户的一层,负责为应用程序需提供网络服务,包括文件传输、文件管理和电子邮件的信息处理等
对等通信
应用层数据:称为APDU(Application Protocol Data Unit--应用层协议数据单元)
表示层数据:称为PPDU(Presentation Protocol Data Unit--表示层协议数据单元)
会话层数据:称为SPDU(Session Protocol Data Unit--会话层协议数据单元)
传输层数据:称为段(segment)
网络层数据:称为数据包(packet)
数据链路层:称为帧(frame)
物理层数据:称为比特(bit)
数据封装与解封装
封装:在原始数据的基础上加入一些额外信息形成新的格式
解封装:拆除掉封装的额外信息,还原成原始数据
2.3. TCP/IP模型
两种划分模式
- 四层划分
- 网络接口层:物理层,数据链路层
- 网络层
- 传输层
- 应用层:会话层,表示层,应用层
- 五层划分
- 物理层
- 数据链路层
- 网络层
- 应用层:会话层,表示层,应用层
TCP/IP分层封装
- 物理层:比特流
- 数据链路层:数据帧
- 网络层:数据包
- 传输层:数据段
- 应用层:数据
3. 局域网基本原理
3.1. 使用的线缆及协议
- 物理层:双绞线、同轴电缆、光纤、无线电
- 数据链路层
- 以太网:唯一的事实标准
- 令牌环:淘汰
- FDDI:光纤分布式接口,淘汰
- 网络层
- IP:唯一事实标准
- IPX、Apple talk:淘汰
3.2. 局域网设备
集线器:
- 内部为总线型拓扑
- 任意时间只能由一台主机占用主线,连接所有的设备位于同一冲突域
- 工作在物理层,没有寻址功能,所有的数据都是泛洪式攻击
交换机: - 内部每两个接口都有一条独立线路,每个接口都是独立的冲突域
- 工作在数据链路层,基于mac寻址,数据可单点转发
冲突域:设备发送数据会产生冲突的网络范围
CSMA/CD:带冲突检测的载波侦听多路访问
3.3. 以太网
3.3.1. 以太网单播和广播
以太帧中包含两个mac地址:发送者(源mac地址),接收者(目的mac地址)
- 目的单一站点的发送称为单播(Unicast)
- 目的为全部站点的发送称为广播(Broadcast)
- 目的为某一组特定站点的发送称为组播(Multicast)
以太网卡具有过滤(filltering)功能,不过有些网卡处于混杂模式(promiscuous mode),既可以接受任意帧,而不考虑这些帧是否发送给自己,这类网卡通常用于Sniffer等网络监视工具
3.4. 局域网线缆
双绞线:UTP(Unshielded Twisted Pair 无屏蔽双绞线)和STP(Shielded Twisted Pair 屏蔽双绞线)
- 线型
- 直连线:异类直连
- 交叉线:两段线序不一致
- 线序
- T568A:白绿,绿,白橙,蓝,白蓝,橙,白棕,棕
- T568B:白橙,橙,白绿,蓝,白蓝,绿,白棕,棕
- 接口类型:RJ-45,RJ-11
光纤
- 多模光纤:纤芯较粗,可传递多种光源,传输距离短,成本低
- 单模光纤:纤芯较细,只能传递单一光源,传输距离远,成本高
3.5. MAC地址
3.6. 快速以太网和千兆以太网
3.7. 万兆以太网
3.8. 超高带宽以太网
4. IP基本原理
TCP/IP协议栈的网络层位于网络接口层和传输层之间,主要协议包括
- IP(Internet Protocol-互联网协议):负责网络层寻址、路由选择、分段及包重组
- ARP(Address Resolution Protocol-地址解析协议):负责把网络层地址解析成物理地址
- RARP(Reverse Address Resoultion Protocol-反地址解析协议):负责把物理地址解析成网络层地址
- ICMP(Internet Control Message Protocol-互联网控制信息协议):定义了网络层控制和传递信息的功能,可以报告ip数据包传递过程中发生的错、失败等信息,提供网络诊断功能
- IGMP(Internet Group Management Prrotocol-互联网组管理协议)负责管理IP组播组
等,其中IP是整个网络层的核心协议
4.1. IP主要作用
- 标识节点和链路:每个链路有且仅有一个网络号以标识每个网络,节点有且仅有一个32为IP地址标识每一个节点
- 用唯一的IP地址标识每一个节点
- 用唯一的IP网络号标识每一个链路
- 寻址和转发:IP路由器根据已有路由信息,先确定节点大概位置,再具体,进而根据适合路径转发到节点
- 确定节点所在网络的位置,进而确定节点所在的位置
- IP路由器选择适当的路径将IP包转发到目的节点
- 适应各种数据链路:由于多样化的链路和介质,IP须具有适应能力,如根据链路的MTU对IP包处理,然后建立映射来传递
- 根据链路的MTU对IP包进行分片和重组
- 为了通过实际的数据链路传递信息,须建立IP地址到数据链路层地址的映射
4.2. IP封装
4.3. IP头格式
IP头选项不经常使用,因此普通的IP头部长度为20字节
name | name | 含义 |
Version | 版本 | 标明了Ip协议的版本 |
IHL(INternet Header Length) | 头长度 | 指IP包头部长度,占4位 |
Type of Service(ToS) | 服务类型 | 用于标志IP包期望获得的服务等级,用于标识DSCP或IP优先级,常用与QoS(Quality Of Service--服务质量)中 |
Total Length | 总长度 | 整个IP包的长度,包括数据部分 |
Identification | 标识符 | 唯一地址标识主机发送的每一个IP包,通常每发送一个包其值就会加1 |
Flages | 标志 | 标识数据包是否允许分片 |
Fragment offset | 分片偏移 | 用于描述分片在数据包中的位置 |
Time to Live(TTL) | 生存时间 | 设置了数据包可以经过的路由数目,一旦经过一个路由器TTL值就会减1,该字段为0,丢弃 |
Protocol | 协议 | 表述数据包内传送的数据所属的上层协议,IP用协议号区分上层协议,TCP协议的协议号为6,UDP的协议号为17 |
Head Checksum | 头校验和 | IP头部的校验和,用于检查包头的完整性 |
Source Address | 源地址 | |
Detination Address | 目的地址 | |
Options | 可选项 |
4.4. IP地址和地址映射
连接Internet上的设备有且仅有一个IP地址,与链路类型、设备硬件无关,而是管理员直接分配的,也叫逻辑地址
IP地址的格式
- 二进制32位,点分十进制(即每个ip地址被表示为以小数点隔开的4个进制证书,每个整数对应一个字节,如192.168.1.123)
- 由网络位+主机位组成
- 网络长度和数字完全一致的地址属于统一网段
网络号和主机号
理论上共有\(2^{32}\)个ip地址,也就是约43亿个IP地址
4.5. IP地址分类
各个网段内具有的IP节点数各不相同,所以IP地址被分为五类
地址范围 | 网络位划分 | 数量 | |
A类 | 1.0.0.0~126.255.255.255 | 前8位为网络位(取值范围1-126,127留作它用),后24位为主机位 | A类网络有224个IP地址 |
B类 | 128.0.0.0~191.255.255.255 | 前16位为网络位,后16位为主机位 | B类网络有216个IP地址 |
C类 | 192.0.0.0~223.255.255.255 | 前24位为网络位,后8位为主机位 | C类网络有28个IP地址 |
D类地址 | 224.0.0.0~239.255.255.255 | 第一个八段以1110开头 | D类地址通常为组播地址 |
E类 | 240.0.0.0~255.255.255.255 | 第一个八段以11110开头 | 保留用于研究,不公开 |
4.5.1. 特殊的IP地址
IP地址用于唯一的标识一台网络设备,但并不是每一个IP地址都用于这个目的,一些特殊的IP地址被用于各种各样的其他用途
- 网络地址:主机部分全0的地址,用来标识一个网段
- 网段广播地址:主机部分全为1的地址,用来标识一个网络内所有的主机
- 用来测试环路:127为网络号的IP,例如127.0.0.1通常为本机
- IP地址0.0.0.0代表所有网络,通常用于指定默认路由
- IP地址为255.255.255.255的是全网广播地址,代表所有主机,用于向网络所有节点发送数据包
如上所述,每个网段都会有一个网络地址和一个网段广播地址,因此实际可用于主机的地址数等于网段内的全部地址数减2
4.5.2. ARP
定义:地址解析解析,把IP地址解析为MAC地址
工作原理:
- A主机以广播的形式发送ARP查询请求,询问B主机的IP对应的MAC地址
- B主机以单播形式回复A主机本机MAC地址
- A主机吧B主机的IP地址和MAC地址的映射写入ARP缓存表
相关指令 - 查询ARP缓存
arp -a
- 清空ARP缓存
arp -d
4.6. IP包转发
4.6.1. 主机单播IP包发送
主机发送IP包时,先判断主机所处的位置
- 二者相等,处于同个网络地址中
- 主机可以与其直接通信
- 主机先解析目的主机IP地址对应的硬件地址
- 之后将IP包以硬件地址为目的地址封装成帧
- 直接连接此网段的接口发送给目的主机
- 二者不相等,不处于同个网段
- 先将IP包交给默认网关的路由器,由路由器转发给目的主机
- 主机根据默认网关的IP地址解析出默认网关的硬件地址
- 将IP包以此硬件地址为目的地址封装成帧
- 直接连接此网段的接口发送给默认网关
4.6.2. 路由器单播IP包转发
路由器接收到一个IP包后,先检测其目的地址
- 如果目的地址为本机,则接收此包并将其解封装,所得数据提交上层协议处理
- 如果目的地址并非本机,而处于某个接口直连的网段,路由器可以与其直接通信,先解析目的主机IP地址对应的硬件地址,随后将IP包以此硬件地址为目的地址封装成帧,由直接连接此网段的接口发送给目的主机
- 如果目的与路由器处于不同网段,需将IP包交给下一跳路由器,由下一跳转发,此时主机根据路由表中的路由信息查出下一跳IP地址,解析出下一跳的硬件地址,随后将IP包以此硬件地址为目的地址封装成帧,由直接连接此网段的接口发送给下一跳路由器
4.6.3. 主机接受IP包
4.7. 广播风暴
4.8. ICMP
ICMP(Internet Control Message Protocol--互联网控制信息协议)是一个网络层协议,基于IP运行
ICMP通常为IP层或者更高层协议使用,其中ping是常见的一个应用
用户运行ping时
- 主机向目的主机发送ICMP Echo Requese信息
- Echo Requese信息封装在IP包内,其目的地址为目的主机的IP地址
- 目的主机受到Echo Requests信息后,向源主机回送一个ICMP Echo Reply
- 源主机如果收到Echo Reply信息,即可获知该目的主机是可达的
- 假定某个中间路由器没有到达目的网络的路由,便会想源主机段返回一条ICMP Destination Unreachable信息,告知源主机目的不可达
5. TCP和UDP的基本原理
TCP/IP协议族的传输层协议主要包括TCP(Transfer Control Protocol--传输层控制协议)和UDP(User Datagram Protocol--用户数据报协议)
TCP是面向连接的可靠的传输层协议,支持在并不可靠的网络上实现面向连接的可靠的数据传输
UDP是无连接的传输协议,主要用于支持在较可靠的链路上的数据传输或用于对延迟较敏感的应用
5.1. TCP/IP传输层的作用
TCP/IP的传输层位于应用层和网络层之间,为主机提供端到端的连接
TCP和UDP都基于相同的网络层协议IP,传输层协议的主要作用包括:
5.2. TCP协议基本原理
5.2.1. 特点
5.2.2. TCP封装
TCP段的头个事如上,其协议头最少20个字节
Source Port | 源端口 | 16位的源端口字段包括初始化通信的端口号,源端口和源IP地址的作用是表示报文的返回地址 |
Destination Port | 目的端口 | 16位的目的端口字段定义传输的目的,这个端口指明接收方计算机上的应用程序接口 |
Sequence Number | 序列号 | 用来标识TCP源端设备向目的端设备发送的字节流,标识在这个报文段中的第一个数据字节。如果将字节流看做在两个程序间的单向流动,则TCP用序列号对每个字节进行计数。序列号是一个32位的数 |
Acknowledgement Number | 确认号 | TCP使用32位的确认号字段标识期望收到的下一段的第一个字节,并声明此前所有数据都已经正确无误的收到,因此确认号是上次已经收到的数据字节序列号+1。确认号的字段只在ACK标志被设置时才有效 |
Data Offset | 数据偏移 | 标识数据分段在完整数据中的位置。这个4位字段包括TCP头大小,以32位数据结构(字)为单位 |
Reserved | 保留 | 为将来定义新的用途保留 |
Control Bits ↓ | 控制位 ↓ | ↓ 共6位,每一位标志都可以打开一个控制功能,这个六个标识依次往下是 |
URG(Urgent Pointer field signfifcant) | 紧急开关 | 紧急指针字段标志 |
ACK(Accknowledgment field significant) | 确认开关 | 确认字段标志 |
PSH(Push Function) | 推功能 | |
RST(Reset the connection) | 重置连接 | 强行中断TCP开关 |
SYN(Synchronize sequence munbers) | 握手开关 | 同步序列号 |
FIN(No more data from sender) | 结束开关 | 数据传输完毕 |
Window | 窗口 | 目的主机使用16位的窗口字段告诉源主机它期望每次接受到的数字节数 |
Checksum | 校验和 | TCP头包括16位的校验和字段用于错误检查。源主机和目的主机计算基于部分IP头信息、TCP头和数据内容,一致,则数据有效 |
Urgent Pointer | 紧急指针 | 紧急指针字段是一个可选的16位指针,指向段内的最后一个字节,这个字段只在URG标志被设置时才有效 |
Optinos | 选项 | • 至少1字节的可变长字段,标识哪个选项(如果有的话)有效
• 如果没有选项,这个字节等于0,说明选项字段的结束 • 这个字节等于1表示无需再有操作 • 等于2表示下四个字节包括源机器的最大段长度(Maximum Segment Size,MSS) • MSS是数据字段中可包含的最大数据量,源和目的机器要对此达成一致 • 当一个TCP连接建立时,连接的双方都要通告各自的MSS,协商可以传输的最大段长度 • 常见的MSS有1024字节,以太网可达1460字节 |
Data | 数据 | 技术上讲,并不是TCP头的一部分,但是数据字段为与紧急指针和/或选项字段之后,填充字段前。字段大小是最大的MSS,MSS在源和目的机器之间协商。数据段可能比MSS小,但不能大 |
Padding | 填充 | 这个字段加入额外的0,保证TCP头是32位的整数倍 |
5.3. TCP/UDP端口号
在IP网络中,一个IP地址可以唯一的表示一个主机
- 一个主机上却可能同时有多个程序访问网络,要标识这些程序,只用IP地址就不够了
- 因此TCP/UDP采用端口号来标识这些上层的应用程序,从而使这些程序可以复用网络通道
- IP用协议号16表示TCP,用协议号17表示UDP
TCP/UDP的端口号是一个16位的二进制数,即端口范围可以为0~65535
- 端口:0~1023由IANA(Internet Assigned Numbers Authority,Internet号码分配机构)统一管理,也就是一些服务固定端口,如ssh,http等
- 1024以上随意用,详情参考RFC1700
5.4. TCP建立连接
5.5. TCP连接的拆除
5.6. TCP可靠传输机制
但是这样消耗的网络资源较多,为了提高通信效率,TCP采取了一些提高效率的方法
- TCP并不要求对每个段一对一地发送确认,接收端可以用一个ACK确认之前收到的所有数据
- TCP并不要求必须单独发送确认,而是允许将确认发送在传输给对方的TCP数据断中,收到一个段后会等待一个微小的延时,希望将确认与后续的数据段合并发出
- 每个段都有唯一的编号,重复时容易发现,丢失后容易定位,乱序后可以重新排列
5.6.1. 超时重传
上述一个简化的TCP重传过程
- seq=1025传输失败,HostB发送已接收到的seq+len=1025发送确认
- HostA收到之后,不确定第二个段是否收到,也不能立即重传,只有第二个段发出RTT而仍为收到确认时,才认为已丢失,于是重传
- HostB接收到之后,按序无误收到最后一个的seq=3073,向HostA发送ack=4079,表示之前的数据均无误
5.7. 滑动窗口
TCP使用大小可变的滑动窗口,并定义了窗口尺寸的通告机制,以增强流量控制功能,为TCP提供了在终端系统之间调整流量的动态方法