目录
一、初识网络
二、网络的分层
OSI七层模型
TCP/IP四层模型
网络与系统的关系
网络传输基本流程
数据包封装和分用
三、IP地址与MAC地址
认识IP地址
认识MAC地址
IP与MAC的关系
一、初识网络
同一台设备上的进程间通信有很多种方式 :
- 管道(Pipe):用于父子进程之间的通信。
- 命名管道(Named Pipe):也称为FIFO(First In First Out),可以在不相关的进程之间通信。
- 消息队列(Message Queue):允许进程之间通过发送和接收消息来通信。
- 信号(Signal):用于通知接收进程某个事件的发生。
- 共享内存(Shared Memory):多个进程可以访问同一块内存区域,从而进行通信。
- 信号量(Semaphore):用于同步不同进程之间的访问共享资源。
当我们考虑进程间通信时,我们实际上是在考虑如何在不同的实体(进程)之间交换信息。然而,当这些实体跨越不同的设备或系统时,我们就需要引入更高级别的通信机制,即网络。
网络是一种允许设备(如计算机、服务器、移动设备等)通过某种形式的连接(如电线、光纤、无线电波等)进行通信的系统。网络的主要目的是使这些设备能够共享资源、传输数据、协调操作等。
而跨网络通信同时也会引出一系列的问题:
1、如何保证将数据交给下一跳主机。
2、如何进行路径选择,怎样知晓下一跳去哪。
3、如何使用收到的数据。
4、如果发生了丢包和错误应该怎么处理。
.......
要解决上述问题,那么就需要制定一系列的协议来规范,而不同协议的划分其实也就是实现若干个软件层,网络结构分层是计算机网络设计中的一个重要概念,它将复杂的网络通信过程划分为若干个独立的、相对简单的层次,每个层次都有其特定的功能和协议。这样做的目的是为了简化网络设计和实现,提高网络的可维护性和可扩展性。
二、网络的分层
在软件上,大部分的解决方案都是层状的,完成了解耦合,便于维护。
OSI七层模型
物理层:传输比特流,提供物理连接。
数据链路层:在物理层上建立逻辑连接,进行帧同步、差错控制等。
网络层:负责路由和转发数据包,实现不同网络之间的通信。
传输层:提供端到端的可靠传输服务,如TCP或不可靠的数据报服务,如UDP。
会话层:建立、管理和终止会话。
表示层:确保数据在不同系统间的兼容性,如数据格式转换、加密解密等。
应用层:提供网络服务给应用程序,如HTTP、FTP、SMTP等。
TCP/IP四层模型
TCP/IP四层模型是计算机网络中广泛使用的一种分层模型,它简化了网络通信的过程,并使得不同系统之间的互操作性更加容易。
- 应用层:HTTP、FTP、SMTP、DNS
- 传输层:TCP\UDP
- 网络层:IP、IGMP、ICMP
- 数据链路层:ARP
数据链路层 : 负责设备之间的数据帧的传送和识别 . 例如网卡设备的驱动、帧同步 ( 就是说从网线上检测到什么信号算作新帧的开始) 、冲突检测 ( 如果检测到冲突就自动重发 ) 、数据差错校验等工作 . 有以太网、令牌环网, 无线 LAN 等标准 . 交换机 (Switch) 工作在数据链路层 .网络层 : 负责地址管理和路由选择 . 例如在 IP 协议中 , 通过 IP 地址来标识一台主机 , 并通过路由表的方式规划出两台主机之间的数据传输的线路( 路由 ). 路由器 (Router) 工作在网路层 .传输层 : 负责两台主机之间的数据传输 . 如传输控制协议 (TCP), 能够确保数据可靠的从源主机发送到目标主机.应用层 : 负责应用程序间沟通,如简单电子邮件传输( SMTP )、文件传输协议( FTP )、网络远程访问协议(Telnet )等 . 我们的网络编程主要就是针对应用层
网络与系统的关系
应用层也就是用户层,对应shell外壳,软件。
传输层和网络层对应系统调用接口,操作系统,在操作系统内核中。
数据链路层对应驱动程序。
物理层比如网卡,底层硬件。
网络结构与系统间的对应关系体现在它们如何通过层次化的方式协同工作,以实现信息的有效传输和处理。每一层都有其特定的功能和协议,这些功能和协议共同支持了网络结构的整体功能。同时,系统的层次结构也反映了网络结构的不同层次,使得网络与系统之间的交互更加清晰和高效。
网络传输基本流程
由于每一层使用的是一样的协议,所以每一层所看到的数据内容其实是一样的,也就相当于每一层的间接通信。
数据包封装和分用
不同的协议层对数据包有不同的称谓 , 在传输层叫做段 (segment), 在网络层叫做数据报 , 在链路层叫做帧(frame).应用层数据通过协议栈发到网络上时 , 每层协议都要加上一个数据首部 (header), 称为封装(Encapsulation).首部信息中包含了一些类似于首部有多长 , 载荷 (payload) 有多长 , 上层协议是什么等信息 .数据封装成帧后发到传输介质上 , 到达目的主机后每层协议再剥掉相应的首部 , 根据首部中的 " 上层协议字段" 将数据交给对应的上层协议处理
每个协议都必须解决两个问题:
1、将报头和有效载荷分离。
2、如何将自己的有效载荷交付给上层的协议。
如下图所示:
三、IP地址与MAC地址
认识IP地址
IP地址(Internet Protocol Address)是指互联网协议地址,用于唯一标识网络中的终端。每个连接到互联网的计算机或设备都会被分配一个或多个IP地址。
IP地址是在IP协议中, 用来标识网络中不同主机的地址;
对于IPv4来说, IP地址是一个4字节, 32位的整数;
我们通常也使用 "点分十进制" 的字符串表示IP地址, 例如 192.168.0.1 ; 用点分割的每一个数字表示一个字节, 范围是 0 - 255;
认识MAC地址
MAC地址(Media Access Control Address)也称为局域网地址或物理地址,用于唯一标识网络设备(如网卡)的物理位置。
MAC地址用来识别数据链路层中相连的节点;
长度为48位, 及6个字节. 一般用16进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19)
在网卡出厂时就确定了, 不能修改. mac地址通常是唯一的(虚拟机中的mac地址不是真实的mac地址, 可能会冲突; 也有些网卡支持用户配置mac地址).
IP与MAC的关系
IP地址和MAC地址分别在网络层和数据链路层工作,它们共同协作以确保数据包在网络中的正确路由和最终交付。
IP地址负责跨网络的寻址,而MAC地址则用于同一网络内的直接通信。ARP协议充当了这两者之间的桥梁,实现了从IP到MAC的地址转换。
IP就是当前主机到目标的起点与终点,而MAC地址就是在路程中下一跳的地址。
通俗一点来说,IP相当于你从一个地方到另一个地方的导航,而MAC则是你在途中所需要乘坐的交通工具。