- 概述:
网络协议:
将数据通过网络安全可靠一端传输到另一端,定义怎么做的规则,相应的组件实现对应的规则从而到达功能目的
协议分层原因:
将通信过程划分更小、更简单的部件,各部件独立的开发、设计和故障排除,
部件标准化允许各个供应商进行开发
怎么分层:
TCP/IP是一个四层协议系统。但是常用的是五层网络模型,TCP/IP网络模型中的链路层对应五层网络模型的物理层和数据链路层。
l 应用层:处理特定的应用程序细节(FTP协议)
l 传输层:负责端到端的通信,也就是俩主机进程之间的通信。TCP保证可靠;UDP不保证可靠,需要应用层保证可靠。(可靠:不丢失、不重复、按顺序、无差错)(TCP/UDP协议)
l 网络层:负责主机之间数据的传输;处理分组在网络中的活动(IP协议)
l 链路层:处理与电缆或者其他硬件传输媒介之间的物理接口细节(以太网协议)
传输过程大概:
按照各层对数据进行各种拆封,寻址到目的地址,从而在目的服务器上处理和返回
数据链路层:
-
- 是什么:
主要说明是逻辑链路,表明在链路层的协议
-
- 发送端:
- Mac帧格式
- 发送端:
CRC通过一定算法对数据进行计算得到的结果,在帧中使用n位存储结果
数据:
帧:在数据的前后分配添加首部和尾部,构成一个帧
在帧的前后加上定界符,来表示一个完整的帧
若是数据部分出现了定界符,则使用ESC进行转义
- 目的地址:
- 源地址:
- 类型:表示上层使用的是什么协议,如ipv4(0x0800)
- FCS冗余码:crc校验比特流有没有失真,接收端同样算法计算是否得到相同的结果来判断
Mac帧格式,其长度最小64字节,前后共占用18字节,若数据段少于46字节就会进行填充(ip报文有记录其总长度的,因此多余的部分可认为是填充)。mac帧前面插入的8个字节是因为接收方在接收时,适配器的时钟和比特流未达成同步,所以前面可能若干位无法接收,结果导致整个帧是无效的而被丢弃。FCS最后固定的4字节也可以看作是结束符,FCS检测的字段不包括插入的8字节(封装的一层一定能区分封装的部分和真实数据部分,便于拆分)。
-
-
- 判断无效mac帧:
-
-
帧的长度不是整数个字节
-
FCS校验错误
-
数据长度不在46-1500字节之间
-
整个帧长不在64-1518字节之间
-
- 接收端:
- 校验帧是否完整
- 接收端:
同样使用CRC算法计算结果是否一致,校验帧中数据 比特差错
-
- 适配器:
又名"网卡",是对协议的具体实现
-
- Mac地址
具有唯一性
-
-
- 组成:
-
6个字节48位,前三位表示厂家,组合后三位表示主机地址
-
-
- 特性:
-
固化在适配器的ROM中
-
-
- 地址种类:
-
-
- 交换机:
- 为什么:
- 交换机:
解决总线碰撞问题
-
-
- 怎么做到:
-
-
通过十几个或者更多接口与主机或者交换机相连
-
一般工作在全双工方式
-
有缓存机制(非直通方式),当某个主机接口繁忙时,会暂存某个帧数据,空闲时发出
-
内部的帧交换表(地址表),对mac地址和接口有映射关系
-
-
- 地址表生成:
-
保存在交换机中
-
初始地址表是空表
-
A向B发送数据时,由于地址表是空的,交换机会记录A->1到地址表,并且交换机会进行广播,BCD都收到后,CD会丢弃,B就会接收数据进行处理
-
B应答ARP报文,交换机同样记录B->3到地址表,同时直接将数据发到1接口而不用广播
-
经过一段时间后CD业务发送数据,就会在地址表中有所有主机的对应关系了
-
考虑到接口对应的主机可能会更换,交换表的记录会设置有效时间,过期就会自动删除,新的主机重复以上操作后又会记录到地址表中
-
以上步骤一般在arp中完成
1.- 避免广播时无限循环:
-
-
- VLAN:
-
是什么:
即虚拟局域网,是将一个物理的LAN在逻辑上划分成多个广播域的通信技术。
作用:
1、减小广播域
2、可以不以物理位置形成局域网,而是根据具体需要形成虚拟的局域网
格式:
TPID:Tag Protocol Identifier,2字节,固定取值,0x8100,是IEEE定义的新类型,表明这是一个携带802.1Q标签的帧。如果不支持802.1Q的设备收到这样的帧,会将其丢弃。
TCI:Tag Control Information,2字节。帧的控制信息,详细说明如下:
Priority:3比特,表示帧的优先级,取值范围为0~7,值越大优先级越高。当交换机阻塞时,优先发送优先级高的数据帧。
CFI:Canonical Format Indicator,1比特。CFI表示MAC地址是否是经典格式。CFI为0说明是经典格式,CFI为1表示为非经典格式。用于区分以太网帧、FDDI(Fiber Distributed Digital Interface)帧和令牌环网帧。在以太网中,CFI的值为0。
VLAN Identifier:VLAN ID,12比特,在X7系列交换机中,可配置的VLAN ID取值范围为0~4095,但是0和4095在协议中规定为保留的VLAN ID,不能给用户使用。
实现方式之一:
链路类型
用户主机和交换机之间的链路为接入链路,交换机与交换机之间的链路为干道链路

VLAN链路分为两种类型:Access链路和Trunk链路。
接入链路(Access Link):连接用户主机和交换机的链路称为接入链路。如本例所示,图中主机和交换机之间的链路都是接入链路。
干道链路(Trunk Link):连接交换机和交换机的链路称为干道链路。如本例所示,图中交换机之间的链路都是干道链路。干道链路上通过的帧一般为带Tag的VLAN帧。
PVID
PVID表示端口在缺省情况下所属的VLAN。
缺省情况下,X7系列交换机每个端口的PVID都是1。
PVID即Port VLAN ID,代表端口的缺省VLAN。
交换机从对端设备收到的帧有可能是Untagged的数据帧,但所有以太网帧在交换机中都是以Tagged的形式来被处理和转发的,因此交换机必须给端口收到的Untagged数据帧添加上Tag。为了实现此目的,必须为交换机配置端口的缺省VLAN。当该端口收到Untagged数据帧时,交换机将给它加上该缺省VLAN的VLAN Tag。
端口类型
Access 端口
Access端口在收到数据后会添加VLAN Tag,VLAN ID和端口的PVID相同。
Access端口在转发数据前会移除VLAN Tag。
Access端口是交换机上用来连接用户主机的端口,它只能连接接入链路,并且只能允许唯一的VLAN ID通过本端口。
Access端口收发数据帧的规则如下:
如果该端口收到对端设备发送的帧是untagged(不带VLAN标签),交换机将强制加上该端口的PVID。
如果该端口收到对端设备发送的帧是tagged(带VLAN标签),交换机会检查该标签内的VLAN ID。当VLAN ID与该端口的PVID相同时,接收该报文。当VLAN ID与该端口的PVID不同时,丢弃该报文。
Access端口发送数据帧时,总是先剥离帧的Tag,然后再发送。Access端口发往对端设备的以太网帧永远是不带标签的帧。
在本示例中,交换机的G0/0/1,G0/0/2,G0/0/3端口分别连接三台主机,都配置为Access端口。主机A把数据帧(未加标签)发送到交换机的G0/0/1端口,再由交换机发往其他目的地。
收到数据帧之后,交换机根据端口的PVID给数据帧打上VLAN标签10,然后决定从G0/0/3端口转发数据帧。G0/0/3端口的PVID也是10,与VLAN标签中的VLAN ID相同,交换机移除标签,把数据帧发送到主机C。
连接主机B的端口的PVID是2,与VLAN10不属于同一个VLAN,因此此端口不会接收到VLAN10的数据帧。
Trunk 端口
当Trunk端口收到帧时,如果该帧不包含Tag,将添加上端口的PVID;如果该帧包含Tag,则不改变。
当Trunk端口发送帧时,该帧的VLAN ID在Trunk的允许发送列表中:
-
若与端口的PVID相同时,则剥离Tag发送;
-
若与端口的PVID不同时,则直接发送。
Trunk端口是交换机上用来和其他交换机连接的端口,它只能连接干道链路。Trunk端口允许多个VLAN的帧(带Tag标记)通过。
Trunk端口收发数据帧的规则如下:
1、当接收到对端设备发送的不带Tag的数据帧时,会添加该端口的PVID,如果PVID在允许通过的VLAN ID列表中,则接收该报文,否则丢弃该报文。当接收到对端设备发送的带Tag的数据帧时,检查VLAN ID是否在允许通过的VLAN ID列表中。如果VLAN ID在接口允许通过的VLAN ID列表中,则接收该报文。否则丢弃该报文。
2、端口发送数据帧时,当VLAN ID与端口的PVID相同,且是该端口允许通过的VLAN ID时,去掉Tag,发送该报文(SWB交换机的端口会重新打上标签,后面在其pvid1那边会去掉标签)。当VLAN ID与端口的PVID不同,且是该端口允许通过的VLAN ID时,保持原有Tag,发送该报文。
在本示例中,SWA和SWB连接主机的端口为Access端口,PVID如图所示。SWA和SWB互连的端口为Trunk端口,PVID都为1,此Trunk链路允许所有VLAN的流量通过。当SWA转发VLAN1的数据帧时会剥离VLAN标签,然后发送到Trunk链路上。而在转发VLAN20的数据帧时,不剥离VLAN标签直接转发到Trunk链路上。
Hybrid 端口
Hybrid端口既可以连接主机,又可以连接交换机。
Hybrid端口可以以Tagged 或Untagged方式加入VLAN 。
Access端口发往其他设备的报文,都是Untagged数据帧,而Trunk端口仅在一种特定情况下才能发出untagged数据帧(当VLAN ID与端口的PVID相同,且是该端口允许通过的VLAN ID时),其它情况发出的都是Tagged数据帧。
Hybrid端口是交换机上既可以连接用户主机,又可以连接其他交换机的端口。Hybrid端口既可以连接接入链路又可以连接干道链路。Hybrid端口允许多个VLAN的帧通过,并可以在出端口方向将某些VLAN帧的Tag剥掉。华为设备默认的端口类型是Hybrid。
在本示例中,要求主机A和主机B都能访问服务器,但是它们之间不能互相访问。此时交换机连接主机和服务器的端口,以及交换机互连的端口都配置为Hybrid类型。交换机连接主机A的端口的PVID是2,连接主机B的端口的PVID是3,连接服务器的端口的PVID是100。
Hybrid端口收发数据帧的规则如下:
当接收到对端设备发送的不带Tag的数据帧时,会添加该端口的PVID,如果PVID在允许通过的VLAN ID列表中,则接收该报文,否则丢弃该报文。
当接收到对端设备发送的带Tag的数据帧时,检查VLAN ID是否在允许通过的VLAN ID列表中。如果VLAN ID在接口允许通过的VLAN ID列表中,则接收该报文,否则丢弃该报文。
Hybrid端口发送数据帧时,将检查该接口是否允许该VLAN数据帧通过。如果允许通过,则可以通过命令配置发送时是否携带Tag。
配置port hybrid tagged vlan vlan-id命令后,接口发送该vlan-id的数据帧时,不剥离帧中的VLAN Tag,直接发送。该命令一般配置在连接交换机的端口上。
配置port hybrid untagged vlan vlan-id命令后,接口在发送vlan-id的数据帧时,会将帧中的VLAN Tag剥离掉再发送出去。该命令一般配置在连接主机的端口上。
本例介绍了主机A和主机B发送数据给服务器的情况。在SWA和SWB互连的端口上配置了port hybrid tagged vlan 2 3 100命令后,SWA和SWB之间的链路上传输的都是带Tag标签的数据帧。在SWB连接服务器的端口上配置了port hybrid untagged vlan 2 3,主机A和主机B发送的数据会被剥离VLAN标签后转发到服务器。
-
网际协议ip:
-
- 是什么:
链接网段,用以在各种异构的网络间进行转发数据到目的网段
路由器: 包含了改协议的具体实现,只会根据网络号进行转发,
-
- ip:
- 是什么:
ip地址用来在网络中标识一个节点,像是现实生活的地址 - 作用:
给定了ip后能够在网络中找到具体主机
什么样的:
- 是什么:
- ip:
IP ::={网络号,主机号}
目前ip有两个版本ipv4和ipv6,ipv4有32位,每8位用点号"."分割
ip地址分类:
A类:1-126
B类:128-191
C类:192-223
D类:224-239
E类:其他
思考:
若是只用mac地址来标志具体的位置,那卖给某个人后这个位置终生不能变,若只用ip地址
-
- 地址解析协议(ARP):
- 是什么:
- 地址解析协议(ARP):
知道了机器的ip地址,需要找到相应的硬件地址,arp就是进行此类问题
-
-
- 怎么做:
-
-
初始化情况下,A在局域网内广播一个arp请求报文(报文内容:本机ip、本机硬件地址,想要知道目的ip的硬件地址)
-
局域网内所有主机的arp进程收到此报文
-
主机B的ip和目的ip一直收到报文后,就会响应到A说明自己的硬件地址,并把A的ip到mac地址的映射保存到缓存中
-
A主机收到B的相应后,就将B的ip到硬件地址的映射保存到缓存中,下次再发送时就不再需要广播了
-
在缓存中的映射记录都有过期时间,过期就会自动删除(避免映射改变后无法到达)
- Ip数据报文格式:
-
-
- 版本:
-
表示是ipv4还是ipv6
-
-
- 首部长度:
-
占4位,每一位表示4个字节,1111表示是15,最大只能是60字节。首部长度必须是4字节的整数倍,不够部分需要填充
-
-
- 区分服务:
-
暂时没有使用
-
-
- 总长度:
-
占2字节,表示首部和数据部分的总长度,但是数据字段有最大的MTU长度,不超过1500字节。长度越长传输效率会越高(首部占数据部分的比率越小),但是越短话在路由层转发越快,ip协议规定总长度必须不超过576字节的数据报。作用是需要mac判定数据部分长度,mac帧没有总长度的字段
-
-
- 标识:
-
占16位两个字节,上层的数据太大会进行分片,表示数据报的同一个分片,接收端接收所有相同分片标识的分片拼接成完整的数据报
-
-
- 标志:
-
占3位,最低位1表示还有分片,0表示最后一个分片;中间位0表示能够分片,1表示不能分片
-
-
- 片偏移:
-
占13位,表示在总数据报中的相对位置,以8个字节位单位,所以每个分片的长度需要是8的整数倍
-
-
- 生存时间(TTL):
-
为防止无法交付的报文,一直在网络中转发而设置,会设置初始值,每经过路由器转发就会对TTL减一,若路由器发现已经减为0就会丢弃该报文
-
-
- 协议:
-
表明数据报文是何种协议,以便接收者可以知道交由哪个协议处理
-
-
- 首部校验和:
-
占16位路由器对首部其他字段进行计算,接收方会进行校验,若是没有问题就继续,有问题就丢弃
-
-
- 源地址:
-
占32位,表示源地址ip
-
-
- 目的地址:
-
占32位,表示目的地址ip
-
-
- 可变部分:
-
是选项字段,根据需要进行增加
-
- 路由表:
-
-
- 是什么:
-
表示数据需要经过那些路由,到达目的网络处
-
-
- 字段类型:
-
-
-
- 怎么生成:
-
通过路由选择协议
-
- 路由类型:
- 特定路由:
- 路由类型:
对特定的主机指明一个路由,在特定控制场景或测试场景
-
-
- 默认路由:
-
为了节省路由表的空间和搜索路由表的时间而设置
-
- 掩码(netmask):
- 作用:
- 掩码(netmask):
ip的地址前后表示网络地址和主机地址,可以通过ip和掩码的计算,从而获得网络地址。
-
-
- 为什么:
-
路由器只会关心网络部分
-
-
- 具体实现:
- 为什么需要划分子网:
-
1、若是通过ip地址分类来划分,像B类网络就会有2^16-2(减2是包括网络地址和广播地址)台主机,若使用不了就会产生浪费
2、两级不够灵活,新增网络需要重新申请
3、 两级的话,会给每一个物理网络分配一个网络号,会使路由表过大,导致网络性能较低
-
-
- 谁划分:
-
拥有主网络号的单位进行自由划分,对外依旧表现一个网络,单位以外看不见里面的子网。
-
-
- 怎么划分:
-
从网络借用几位主机号作为子网络号,通过子网掩码的计算得到子网信息
Ip :={网络号,子网号,主机号}
-
-
- 划分后怎么转发:
-
目的是本单位网络的ip,先转发到本单位的路由器上,本单位的路由再根据子网信息转发到子网路由器上,最有转发到主机
-
-
- 路由转发算法:
-
- 通过目的地址与子网掩码计算到目的网络
- 目的网络地址若是此路由管辖,就直接交付(通过arp找到目的主机的mac,拼接成mac帧,通过mac地址表找到对应的接口,从而转发的主机)
- 非上,若目的地址是特定路由,则转发到特定路由
- 非上,对路由表中的每一行和子网掩码进行计算,若有到目的网路的路由则转发到目的路由
- 非上,若有默认路由,则转发到默认路由
- 非上,报告转发报错
1.- 无分类编码CIDR(超网):
问题:
1、ipv4将会分完
2、主干上路由表的项目数急剧增加
解决:
更高的提效ip的利用率
取消了A\B\C划分子网的概念
IP := {网络前缀,主机号}
"斜线记法",通过在ip后以"/"分割,后面表明网络前缀占位数
如:198.168.32.25/20
怎么匹配路由:
使用最长路由的策略进行匹配
当同时有206.0.68.0/22和206.0.71.128/25都匹配时,优先使用206.0.71.128/25这条路由
-
- ICMP:
- 是什么:
- ICMP:
网际控制报文协议,一个新搭建好的网络,往往需要先进行一个简单的测试,来验证网络是否畅通;但是IP协议并不提供可靠传输。如果丢包了,IP协议并不能通知传输层是否丢包以及丢包的原因。
-
-
- 作用:
-
主机或路由器报告差错情况和提供有关异常情况的报告,它对于收集各种网络信息、诊断和排除各种网络故障具有至关重要的作用。
-
-
- 格式:
-
说明:
(1)所有报文的前4个字节都是一样的,剩下的其他字节则互不相同。
(2)类型字段可以有15个不同的值,以描述特定类型的ICMP报文。某些ICMP报文还使用代码字段的值来进一步描述不同的条件。
(3)检验和字段覆盖整个ICMP报文。使用的算法与IP首部检验和算法相同。ICMP的检验和是必需的。
种类:

差错报文数据格式:
不会产生ICMP差错报文的情况:
a) ICMP差错报文本身出错
b) 目的地址或者源地址不是单个地址的报文
c) 不是IP分片的第一片
以上这些情况不会产生ICMP差错报文是为了避免广播风暴。
询问报文种类:
应用举例:
Ping应用直接使用ICMP,它没有通过tcp或者udp,当接收端系统处理数据的速度低于发送端传送数据的速度,那么接收端可能会给发送端发送ICMP源点抑制报文
- 运输层:
- 是什么:
向上层各种应用提供服务
-
- 提供哪些服务:
- 类似网络层服务主机间通信,运输层服务于应用层间通信(类似单位收发室)
- 对报文进行差错校验,ip层只是校验了其首部
- 怎么实现:
-
通过端口号标识主机中的不同应用进程,从而能够多个进程同时运行时区分传输。端口号分类:服务端使用的端口号(0-49151),客户端使用的端口号(49152-65535)
-
Udp校验和的计算方法和ip的校验和类似,不同是udp是将首部和数据部分,另外包含ip等信息的伪首部,一起进行校验计算的值
-
- 报文格式:
-
源端口号:本机应用的端口号
-
目的端口号:目的应用的端口号
-
长度:udp报文总长度(最小8字节,仅有首部)
-
检验和:检测数据报是否有错误,有错误就丢弃
-
伪首部只是在计算校验和使用,其既不会向下传递,也不会向上传递(判断ip和协议(17)信息是否有问题)
- Tcp和udp差别:
-
tcp是面向链接的服务,而udp不需要建立连接,因此udp无需建立套接字
-
udp使用尽可能交付,即不保证可靠交付
-
udp是面向报文的,即在udp层不会对报文进行拆分和合并,应用层交下来的数据加上首部就传输到ip层,接收端从udp拆除了首部就上报到应用层进程
-
udp没有拥塞控制
-
udp首部开销较小,相比tcp的20字节,其只有8字节