目录
[IP VS Mac](#IP VS Mac)
[1. 确定目标网络地址](#1. 确定目标网络地址)
[2. 查找路由表](#2. 查找路由表)
[3. 发送数据包](#3. 发送数据包)
[4. 路由器跳转](#4. 路由器跳转)
[a. 路由器接收数据包](#a. 路由器接收数据包)
[b. 查找路由表](#b. 查找路由表)
[c. 确定下一跳](#c. 确定下一跳)
[d. 转发数据包](#d. 转发数据包)
[5. 重复过程](#5. 重复过程)
[6. 最终到达目标主机](#6. 最终到达目标主机)
[7. ARP解析](#7. ARP解析)
本文核心
了解网络发展背景, 对局域网/广域网的概念有基本认识;
了解网络协议的意义, 重点理解TCP/IP五层结构模型;
学习网络传输的基本流程, 理解封装和分用;
计算机网络背景
网络发展
独立模式: 计算机之间相互独立;
网络互联 : 多台计算机连接在一起 , 完成数据共享 ;
局域网 LAN: 计算机数量更多了 , 通过交换机和路由器连接在一起;
广域网 WAN: 将远隔千里的计算机都连在一起 ;
所谓 " 局域网 " 和 " 广域网 " 只是一个相对的概念 . 比如 , 我们有 " 天朝特色 " 的广域网 , 也可以看做一个比较大的局域网。
认识**"协议"**
" 协议 " 是一种约定 .
计算机之间的传输媒介是光信号和电信号 . 通过 " 频率 " 和 " 强弱 " 来表示 0 和 1 这样的信息 . 要想传递各种不同的信息 , 就需要约定好双方的数据格式。
计算机生产厂商有很多;
计算机操作系统, 也有很多;
计算机网络硬件设备, 还是有很多;
如何让这些不同厂商之间生产的计算机能够相互顺畅的通信? 就需要有人站出来, 约定一个共同的标准,大家都来遵守, 这就是 网络协议
网络协议初识
协议分层
分层
软件分层--继承与多态---基类虚函数---子类需要重写--解耦、分层、好维护、更好的面向对象
高内聚、低耦合
以打电话为例
在这个例子中 , 我们的协议只有两层 ; 但是实际的网络通信会更加复杂 , 需要分更多的层次 .
分层最大的好处在于 " 封装 " . 面向对象例子
OSI****七层模型
OSI (Open System Interconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型,是一个逻辑上的定义和规范;
把网络从逻辑上分为了7层.每一层都有相关、相对应的物理设备,比如路由器,交换机;
OSI 七层模型是一种框架性的设计方法,其最主要的功能使就是帮助不同类型的主机实现数据传输;
它的最大优点是将服务、接口和协议这三个概念明确地区分开来,概念清楚,理论也比较完整. 通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯;
但是, 它既复杂又不实用; 所以我们按照TCP/IP四层模型来讲解
**TCP/IP五层(或四层)**模型
TCP/IP 是一组协议的代名词,它还包括许多协议,组成了 TCP/IP 协议簇。
TCP/IP 通讯协议采用了 5 层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。
物理层: 负责光/电信号的传递方式. 比如现在以太网通用的网线(双绞 线)、早期以太网采用的的同轴电缆(现在主要用于有线电视)、光纤, 现在的wifi无线网使用电磁波等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等. 集线器(Hub)工作在物理层.
数据链路层: 负责设备之间的数据帧的传送和识别. 例如网卡设备的驱动、帧同步(就是说从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作. 有以太网、令牌环网, 无线LAN等标准. 交换机(Switch)工作在数据链路层.
网络层 : 负责地址管理和路由选择. 例如在IP协议中, **通过IP地址来标识一台主机,**并通过路由表的方式规划出两台主机之间的数据传输的线路(路由). 路由器(Router)工作在网路层.
传输层: 负责两台主机之间的数据传输. 如传输控制协议 (TCP), 能够确保数据可靠的从源主机发送到目标主机.
应用层: 负责应用程序间沟通,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等. 我们的网络编程主要就是针对应用层。
物理层我们考虑的比较少 . 因此很多时候也可以称为 TCP/IP 四层模型。
数据链路层实在各种驱动内实现的。
一 般而言
对于一台主机, 它的操作系统内核实现了从传输层到物理层的内容;
对于一台路由器, 它实现了从网络层到物理层;
对于一台交换机, 它实现了从数据链路层到物理层;
对于集线器, 它只实现了物理层;
但是并不绝对 . 很多交换机也实现了网络层的转发 ; 很多路由器也实现了部分传输层的内容 ( 比如端口转发 );
网络传输基本流程
网络传输流程图
同一个网段内的两台主机进行文件传输 .
以太网(Ethernet)协议和令牌环(Token Ring)协议都是计算机网络中用 于局域网(Local Area Network, LAN)数据传输的技术规范,但它们的工作原理和特点各有不同。
以太网协议
工作原理:
- 载波侦听多路访问/碰撞检测(CSMA/CD):以太网使用CSMA/CD作为其介质访问控制方法。在发送数据之前,设备会先侦听网络是否空闲;如果网络忙,它会等待直到网络空闲。如果在发送数据时检测到碰撞(即两个或多个设备同时发送数据),则停止发送,等待一段随机时间后重试。
特点:
- 拓扑结构:通常使用星型或总线型拓扑结构。
- 传输速率:支持多种速率,如10 Mbps、100 Mbps、1 Gbps、10 Gbps等。
- 灵活性:易于扩展和维护,可以连接多种设备。
- 成本:与其他技术相比,以太网通常更经济。
- 标准:以太网有广泛的标准,如IEEE 802.3。
令牌环协议
工作原理:
- 令牌传递:令牌环网络中,数据通过一个特殊的帧------令牌来控制传输。令牌在网络上按一定顺序从一个节点传递到另一个节点。只有获得令牌的节点才能发送数据。
特点:
- 拓扑结构:通常使用环型拓扑结构。
- 无碰撞:由于令牌机制,令牌环网络中不会发生碰撞。
- 传输速率:常见的速率有4 Mbps和16 Mbps。
- 可靠性:由于环状结构,令牌环网络在某些情况下比以太网更可靠。
- 管理:令牌环网络需要更复杂的管理和维护。
- 标准:令牌环的一个主要标准是IEEE 802.5。
对比:
- 碰撞处理:以太网使用CSMA/CD处理碰撞,而令牌环通过令牌机制避免了碰撞的发生。
- 拓扑和扩展性:以太网更适合于灵活性和扩展性要求高的环境,令牌环则更适合于节点数量固定且对可靠性要求较高的环境。
- 成本:以太网通常成本较低,而令牌环的设备和维护成本较高。
- 速率:以太网支持的速率更高,适用于更高带宽的应用。
随着技术的发展,以太网因其更高的传输速率、更好的兼容性和较低的成本,已经成为局域网中最普遍采用的技术。令牌环技术由于种种限制,已经逐渐被淘汰。
为什么交给路由器:目标主机s不在局域网
数据包封装和分用
不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报 (datagram),在链路层叫做帧(frame).
应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装
(Encapsulation).
首部信息中包含了一些类似于首部有多长, 载荷(payload)有多长, 上层协议是什么等信息.
数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部, 根据首部中的 "上层协议字段" 将数据交给对应的上层协议处理
下图为数据封装的过程
每一层新加当内容称为报头
每一层去掉报头的内容称为有效载荷
报文 = 报头 + 有效载荷
每层都有自己当报头和有效载荷(去掉报头:解包)
下图为数据分用的过程
网络中的地址管理
认识IP地址
IP协议有两个版本, IPv4和IPv6. 我们整个的课程, 凡是提到IP协议, 没有特殊说明的, 默认都是指IPv4
P地址是在IP协议中, 用来标识网络中不同主机的地址;
对于IPv4来说, IP地址是一个4字节, 32位的整数;
我们通常也使用 "点分十进制" 的字符串表示IP地址, 例如 192.168.0.1 ; 用点分割的每一个数字表示一个字节, 范围是 0 - 255;
认识MAC地址
MAC地址用来识别数据链路层中相连的节点;
长度为48位, 及6个字节. 一般用16进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19)
在网卡出厂时就确定了, 不能修改. mac地址通常是唯一的(虚拟机中的mac地址不是真实的mac地址, 可能会冲突; 也有些网卡支持用户配置mac地址)
MAC地址(Media Access Control Address)和IP地址(Internet Protocol Address)在网络通信中扮演着不同的角色,它们分别用于不同的层次和目的。
MAC地址
用途:
- 物理地址:MAC地址是网络设备的物理地址,也称为硬件地址,它是唯一标识网络接口卡(NIC)的地址。
- 局域网通信:在局域网(LAN)中,MAC地址用于设备之间的通信。例如,当一台计算机要向同一局域网内的另一台计算机发送数据时,它会使用目标设备的MAC地址。
- 数据帧传输 :在OSI模型的第二层(数据链路层),MAC地址被用于封装在以太网帧中,确保数据帧能够在物理网络上正确传输。
特点:
- 唯一性:每个网络接口卡在出厂时都会被分配一个全球唯一的MAC地址。
- 固定性:MAC地址通常被烧录在网络接口卡的ROM中,不会因为网络变化而改变。
- 范围限制:MAC地址只在局域网内部有效,不会被路由器转发到其他网络。
IP地址
用途:
- 逻辑地址:IP地址是分配给每台联网设备的逻辑地址,用于标识网络中的设备。
- 跨网络通信:IP地址用于不同网络之间的通信。例如,当你访问一个网站时,你的设备会使用该网站的IP地址来发送和接收数据。
- 路由选择:在网络层(OSI模型的第三层),IP地址帮助路由器确定如何将数据包从一个网络传输到另一个网络。
特点:
- 可变性:IP地址可以根据网络配置的变化而改变,例如,当设备移动到不同的网络时。
- 层次结构:IP地址具有层次结构,通常分为网络部分和主机部分,便于路由器进行数据包的路由。
- 全球唯一:IPv4地址(目前最广泛使用的版本)是一个32位的数字,理论上可以提供大约43亿个唯一地址。IPv6地址提供更大的地址空间。
MAC地址与IP地址的关系:
- 协同工作:在数据传输过程中,MAC地址和IP地址通常协同工作。例如,当发送数据时,数据包首先被封装在具有目标IP地址的网络层包中,然后被封装在具有目标MAC地址的数据链路层帧中。
- 地址解析:地址解析协议(ARP)用于将IP地址解析为MAC地址,以便在局域网内进行通信。
总的来说,MAC地址和IP地址都是网络通信中不可或缺的地址系统,它们在不同的层次上确保数据能够正确、高效地在网络中传输。
网络通信:无数个路由器连接局域网。
以太网通信
以太网(Ethernet)主要用于局域网(Local Area Network, LAN)通信
/*
局域网
局域网(Local Area Network,简称LAN)是一种计算机网络,它覆盖有限的地理区域,如家庭、办公室、学校或一组建筑物。
局域网的关键组件包括:
- 网络接口卡(NIC):用于将计算机或其他设备连接到局域网。
- 交换机:用于连接网络内的多个设备,并在它们之间转发数据包。
- 路由器:用于连接不同的局域网或局域网与广域网(WAN)。
- 网络电缆:如双绞线、同轴电缆或光纤,用于物理连接网络设备。
局域网为小型到中型组织提供了一个高效、可靠和安全的网络环境,是现代信息技术基础设施的重要组成部分。
连接同一个路由器的设备在一个局域网中
*/
一个人在讲台上呼喊
都收到了报文
比对张三和自己的名字
只有张三回应
原理
每个主机都有一个mac地址
mac:网卡上的唯一标识(48bite)
局域网的每个主机都会收到这个报文
在数据链路层(网卡驱动主要工作地),将报头进行对比分析,不符合就将报文丢弃,上层就不会收到
符合就去掉报头交给上层。
多个消息同时发出,由于是光电信号,容易被干扰
数据碰撞问题导致所有消息都失效。
只要不断往局域网发送垃圾信息,发生数据碰撞,就会让所有信息都是失效。
交换机:在局域网中划分碰撞域。
局域网:多台主机的一个临界资源(互斥)。
跨网段的主机的文件传输. 数据从一台计算机到另一台计算机传输过程中要经过一个或多个路由器。
MAC地址不仅仅工作在局域网中,但它们的作用通常限于数据链路层,不直接用于跨广域网的通信。在广域网中,MAC地址的作用是局部的,仅在每个网络跃点之间传输数据包时使用。
IP VS Mac
IP不变,指导路径规划,在路径规划中,上一站、下一站一直变化,这就是Mac地址。
linux中网络相关的指令
ifconfig指令
ifconfig
是一个用于配置和显示网络接口参数的命令行工具。它允许用户查看和修改网络接口的配置,如IP地址、子网掩码、广播地址以及启停网络接口等
这个就是网络接口
其中
ip地址与子网掩码
ip:每个数据当取值范围是0-255,每个字段最多8bite,因此一共32bite==4byte
子网掩码:是一个32位的二进制数字**,用于在IPv4地址中分隔网络部分和主机部分**。它与IP地址结合使用,以确定哪些位属于网络地址,哪些位属于主机地址。
子网掩码也是一个32位的数字,它用于定义IPv4地址中哪些位是网络部分,哪些位是主机部分。子网掩码中的连续的1代表网络部分,而连续的0代表主机部分。
通过子网掩码与IP的按位与,可以实现在子网中查找不同的主机。
网掩码帮助确定哪些IP地址属于同一网络,哪些属于不同网络,这个网络就是子网。
子网掩码在不同的子网是不同的。
进行网络通讯不需要知道子网掩码
网络通讯需要ip和子网掩码,但是我不需要关心子网掩码,只需要知道ip即可,子网掩码会有"负责人"去负责。
子网(Subnet)和局域网(Local Area Network,简称LAN)是网络中两个不同的概念。
局域网是指一个局部区域内的计算机网络,通常在有限的地理范围内,如一栋建筑或一个校园内,通过有线或无线方式连接各种设备,使得这些设备能够相互通信和共享资源。
子网是局域网中的一种划分方式,它是根据IP地址将一个较大的网络划分为若干较小的网络。子网通过子网掩码(Subnet Mask)来实现,它决定了IP地址中哪部分是网络地址,哪部分是主机地址。子网的划分有助于提高网络的管理效率、优化网络性能、限制广播域的大小以及增强网络的安全性。
所以,子网可以是局域网中的一个部分,但并不等同于局域网。一个局域网可以包含多个子网,也可以不进行子网划分。而子网也可以跨越多个局域网,例如在广域网(WAN)中。
子网内部可以有多个局域网
一个子网可以有多个IP地址。子网是由IP地址和子网掩码共同定义的,它代表了一组IP地址的范围。
网络地址的跳转
通过IP地址和子网掩码得到网络地址后,要实现数据包从源主机到达目标主机,涉及到网络层(第三层)的多个步骤,包括路由选择和跳转。以下是这个过程的基本步骤:
1. 确定目标网络地址
首先,源主机通过将目标IP地址与子网掩码进行按位与操作,确定目标网络地址。这个操作告诉源主机目标主机所在的网络。
2. 查找路由表
源主机检查自己的路由表,以确定如何到达目标网络。路由表包含以下信息:
- 目的网络地址
- 下一跳地址(通常是下一个路由器的IP地址)
- 出接口(源主机通过哪个网络接口发送数据包)
3. 发送数据包
源主机将数据包发送到路由表中指定的下一跳地址。如果目标网络与源主机直接相连,数据包可以直接发送到目标主机。
4. 路由器跳转
数据包到达路由器后,以下步骤重复进行,直到数据包到达目标网络:
a. 路由器接收数据包
路由器接收到数据包后,会检查数据包的目的IP地址。
b. 查找路由表
路由器在自己的路由表中查找与目的IP地址最匹配的网络地址条目。
c. 确定下一跳
路由器根据路由表确定下一跳地址和出接口。
d. 转发数据包
路由器将数据包从出接口转发到下一跳地址。
5. 重复过程
数据包在到达下一个路由器后,会重复上述步骤,直到它到达目标网络。
6. 最终到达目标主机
当数据包到达目标网络时,最后一个路由器会根据数据包的目的IP地址,将数据包直接发送到目标主机。
7. ARP解析
如果目标主机与最后一个路由器在同一局域网内,路由器会使用ARP(地址解析协议)来解析目标主机的MAC地址,并将数据包发送到该MAC地址。
总结
整个过程中,数据包通过一系列路由器的跳转,每个路由器都根据其路由表做出决策,直到数据包到达最终的目标主机。这个过程涉及到网络层的IP协议、路由选择算法(如最短路径优先、距离向量等),以及数据链路层的ARP协议。
ether:以太(以太网是局域网的一种)
用冒号分割,一个字段就是一个字节,一共6字节 == 6*8==48bite(Mac地址)
指令操作如下:
为网络接口分配IP地址和子网掩码:
ifconfig eth0 192.168.1.100 netmask 255.255.255.0
需要注意的是,ifconfig
命令在新的Linux发行版中已经被逐渐废弃,取而代之的是 ip
命令。ip
命令提供了更全面和强大的网络配置功能。
例如,使用 ip
命令来显示网络接口信息可以使用以下命令
ip addr show
ip指令
ip
是Linux系统中用于配置和管理网络接口、路由、隧道等网络参数的命令行工具。它比传统的 ifconfig
命令提供了更强大的功能和更详细的配置选项。以下是 ip
命令的一些主要功能和用法
基本语法
ip [ OPTIONS ] OBJECT { COMMAND | help }
其中 OBJECT
可以是以下几种类型之一:
address
(addr
): 管理IP地址和掩码link
(lnk
): 管理网络设备route
(rou
): 管理路由表neighbor
(neigh
): 管理ARP或ND缓存条目rule
(rul
): 管理路由策略
常用命令示例
高级用法
ip
命令还支持更高级的用法,如设置网络接口的MTU、管理多路径路由、配置IPv6等。
由于 ip
命令非常强大,它的功能和选项非常多,这里只列举了一些基本的用法。要了解更详细的信息,可以通过以下命令获取帮助:
ip help
或者针对特定的对象获取帮助:
ip OBJECT help
例如,要获取关于 ip address
对象的帮助,可以使用:
ip address help