网络原理
用户态与内核态
操作系统将对进程在内存空间上的分配分为用户态和内核态。内核态的执行权限高于用户态。
-
不同主机上的进程与进程之间的通信主要是想传输用户态的数据。 主机1上的进程A要先经过【用户态 -> 内核态】的数据复制,内核态再将此数据交由网卡实现【数字信号 -> 物理信号】的转换,由光纤等物理传输介质负责传输物理信号,到达主机2的网卡,再由主机2的网卡实现【物理信号 -> 数字信号】的转换,将数据向上交给内核态,最终由内核态将数据返回给用户态。 -
当数据到达时,会产生一个中断信号,让CPU中断当前正在执行的任务,而去执行一段提前准备好的代码(中断处理程序),将数据从网卡复制到内核态的内存区中。
状态转换
由于用户态的权限不够,不足以完成某些任务时,需切换至内核态。以下是 【用户态 -> 内核态】 的三种方式:
- 系统调用:用户态进程主动要求切换到内核态。用户进程通过系统调用申请使用操作系统提供的服务程序完成工作。
- CPU中断:当外设完成用户请求的操作后,会向CPU发出相应的中断信号,使CPU暂停执行下一条即将要执行的指令,转而去执行中断信号相应的中断处理程序。若CPU中断前执行的指令是用户态下的程序,则这个过程自然就发生了由用户态到内核态的切换。如硬盘读写的操作完成后,系统会切换到硬盘读写的中断处理程序中执行后续操作。
- 异常:CPU在执行用户态程序时,发生了某些事先不可知的异常,如缺页异常,此时会触发进程的切换,由当前运行进程切换到处理此异常的相关内核程序,也就从用户态切换到了内核态。
网络拓扑结构
采用集线器连接的以太网,网络逻辑拓扑结构为总线型为主,星型为辅。
网络标准分层协议
OSI 七层网络协议。TCP/IP 五层网络协议。前者较后者多了表示层和会话层。
物理层
集线器工作在物理层,主要解决数据在物理网络介质中传输的问题。
集线器
集线器负责的工作主要包括:1. 复制数据 2.信号放大。
冲突域
由于多个主机共用一个信道,而信道一次只能传输有限的信号,故当过多主机都想占用信道传输信号时,超出信道的容量范围,则会导致冲突。发生冲突的主机之间就形成一个冲突域。
物理层的集线器组网天然导致的冲突域问题,需要由数据链路层来解决。
数据链路层常用的一种冲突避免算法:发生冲突后,静默随机时间,等待再次发送。
冲突避免算法虽然能避免冲突的发送,保证同一个冲突域内的主机都可以进行数据传输,但若主机太多,会降低信号的传输效率。 ==> 1. 冲突域内的主机不要太多 2. 尽可能减少冲突域的出现。
数据链路层
交换机工作在数据链路层,主要解决了局域网LAN内主机与主机的通信问题。
交换机
物理层的集线器是傻瓜,只进行数据的复制和信号的放大 ,并不能解析数据(不知道数据长啥样),也不负责数据发生的方向和目标地址。而数据链路层的交换机能够解析数据链路层协议,根据数据指定的目标地址进行发送,只发送给目标主机。
通过集线器组建的局域网天然存在冲突域问题,而通过交换机组建的局域网可以划分冲突域,划分同一冲突域内的不同主机。 实际中常见的局域网组建结构:交换机+集线器
单播和广播
单播的目标地址是一台主机。
广播的目标地址是一个特殊地址。广播地址:FF-FF-FF-FF-FF-FF。
在一个广播域中,一个主机向外发送的数据,会被此广播域内的其他所有主机接收到。发送的目标地址为特殊的广播地址,并不指定发送到哪个主机。
MAC地址
数据链路层的地址指的是MAC地址(物理地址)。
MAC地址是在网卡被生产时就被写死的,不会发生重复冲突。
MAC地址的长度为48位(6字节),通常表示为12个4位16进制数。
网络层
路由器工作在网络层,主要解决跨局域网LAN的主机与主机间的通信问题。
路由器
路由器横跨在多个局域网LAN之间,对于每个局域网来说,都像是属于当前局域网内部的。
路由(route)即负责寻路工作,遵循网络层的协议,在能够送达数据的多条路线中找到最合适的一条,将数据从当前LAN的一台主机传送到另一LAN的另一主机上。
IP地址
网络层的地址指的是IP地址。IP地址属于软件地址。
IP地址是随时变化的,并不是写死固定不变的。同一个网络内部的IP地址不应该重复。
IP地址的长度为32位(4字节),通常表示为4个8位二进制数。
常见的IP地址
本机:127.0.0.1 (对应域名localhost)
长期目标与短期目标
长期目标:路由器传输数据的整条路线的起点和终点。(固定不变)
短期目标:路由器传输数据的近期要到达的目的地。即下一步要走的一段路。(动态计算)
数据通过路由器在不同的LAN之间进行传输时,路由器能够解析网络协议,看得懂长期目标,而根据当前传输的进度动态计算短期目标。
传输层
主要解决进程与进程间的通信。
端口
端口号的范围:0~65535,两个字节的无符号数。
一个端口号标识一个进程。而一个进程可以对外与多个端口(进程)进行通信。
传输层协议五元组
应用层
主要处理业务逻辑。对应内存空间的用户态。
TCP/IP五层网络模型总结
数据的封装和解包
发送方进程将数据从应用层开始往下逐层进行封装(添加首部),传递到物理层将数字信号转为物理信号后,在物理传输介质中进行传播到接收方主机,由接收方从物理层开始向上进行解包(去除首部),并根据具体的控制信息进行分用处理,选择每层使用的协议。
首部信息主要包括:(控制信息)源地址、目标地址、分用信息等。
传输层:源端口、目标端口、…
网络层:源IP地址、目标IP地址、…
数据链路层:源MAC地址、目标MAC地址、…
通过封装+解包实现的数据传输,对于每层来说都好像是单独通信交流的,传输数据时不同的层次之间感受不到彼此的存在。
且各层可以根据各层自己添加的控制信息进行一些必要的操作。
ISP 网络服务提供商
|