《TCP/IP详解 卷一》第3章 链路层

目录

3.1 引言

3.2 以太网

3.3 全双工 省点 自动协商 流量控制

3.4 网桥和交换机

3.5 WiFi

3.6 PPP协议

3.6.1 PPP协议流程

3.7 环回

3.8 MTU和路径MTU

3.9 隧道基础

3.9.1 GRE

3.9.2 PPTP

3.9.3 L2TP

3.10 与链路层相关的攻击

3.11 总结


3.1 引言

城域网(Metropolitan Area Network,MAN):ISP有线电视,DSL。

3.2 以太网

MTU值计算不包含以太网头。

两种以太网标准:

        Ethernet II:

                DIX(DEC Inter Xerox)开发的,大多以太网数据包是该标准。

                使用场景:用于较为简单网络环境,如家庭网络、小型网络。

        IEEE 802.3:

                IEEE在Ethernet II基础上修改为IEEE 802.3。

                使用场景:用于更严格的网络环境,如企业网络、数据中心等高可靠性和灵活性场景。

早期10Mb/s以太网,即共享以太网,需检测碰撞CSMA/CD,介质是电缆。

20世纪90年代初,10Mb/s共享电缆被双绞线10BASE-T代替,共享线路被专用星型拓扑代替,即以太网交换机。

有了交换机就不需要CSMA/CD了,而是全双工工作。

链路层分为:

        逻辑链路控制LLC层:

                作用:错误检测和流量控制等功能。

                不同链路层都通用。

        介质访问控制MAC层:

                作用:地址分配、帧封装和解封装。

                不同链路层各自实现。

IEEE802.3以太网是异步的,帧格式如下:

前导:7字节,同步,确定一个帧到达时间。

帧开始符SFD:1字节,恢复时钟

长度/类型:

        值大于1536,表示类型(即网络层协议,常见)

        值不大于1500,表示长度。

Q标签帧:包含802.1p/q,属于信封帧,但信封帧不一定是Q标签帧。

FCS采用CRC算法。

最小以太网帧64B, 其中负荷最小48B。

最大以太网帧1518B, 其中负荷最大1500B=MTU。

千兆交换机可用非标准的巨型帧,高达9000B,但和传统以太网设备不兼容。

802.1Q = VLAN

vconfig命令: 添加或删除虚拟接口,设置802.1p优先级。

vconfig add eth1 2:会生成eth1.2接口。

802.1AX:以前的802.3ad 链路聚合 : 802.1AX定义LACP链路聚合控制协议,交换机,主机均可支持

多个网口绑定聚合,可提高性能和可靠性。

Linux实现:

        modprobe bonding

        ifconfig bond0 10.0.0.111 netmask 255.255.255.128

        ifenslave bond0 eth0 wlan0

ifconfig bond0显示有MASTER标志,而eth0和wlan0有SLAVE标志,bond0默认使用第一个从设备MAC。

加载bonding驱动参数指定了聚合接口发送数据的模式(模式有:循环交付,备份,源目MAC异或选择接口,全复制,负载均衡等)。

LACP:通过LACPDU确定链路成员。

当网络设备间支持LACP协议时,Bonding驱动可以通过LACP协议进行链路聚合。

3.3 全双工 省点 自动协商 流量控制

ethtool工具可查看双工。

802.3u:自动协商,在物理层通过信号发送,不影响数据收发。

ethtool -s eth0 wol umgb

        wol:局域网唤醒功能,可省电。

        umgb含义:

               指明 可触发唤醒的动作:物理层活动p, 单播帧u,组播帧m,广播帧b,ARP a,魔术分组帧g

Linux命令wol 00:08:74:93:c8:3c:

        向MAC为00:08:74:93:c8:3c的设备发送WOL魔术包。唤醒设备。

PAUSE帧:

        一种链路层流量控制,802.3x定义,以太网type=0x8808,目的MAC总是01:80:C2:00:00:01,表明发送方暂停多久再次发送。PAUSE帧是唯一一种使用MAC控制帧的帧类型,有副作用,目前使用少。

3.4 网桥和交换机

IEEE802.1d 生成树协议

Windows可以像Linux一样桥接多个网口。

Linux实现桥接方法:

        brctl addbr br0

        brctl addif br0 eth0

        brctl addif br0 eth1

brctl showmacs br0 查看网桥的MAC地址表,信息包括: port no MAC aging timer,该表老化时间默认5分钟

生成树协议(Spanning Tree Protocol,STP):通过禁止或阻塞一些交换机端口,创建一个无环路的网络拓扑。

STP端口状态:阻塞,侦听,学习,转发,禁用。

根端口:指向根网桥的端口。

指定端口:处于转发的端口,与根路径成本最小的端口

备用端口:不处于转发,路径成本更高。

备份端口:接管失效的指定端口。

STP被快速生成树协议RSTP代替,收敛速度更快。

BPDU= Bridge PDU,BPDU固定组播目的MAC:01:80:C2:00:00:00

STP相关命令:

        brctl stp br0 on

        brctl showstp br0        可查看br0桥的bridge id

如上图bridge id = 优先级.MAC=标识符

如上图bridge id格式是:优先级.MAC,bridge id是桥设备的标识符。

STP工作流程:

        1. 选择根桥:根桥是网络中转点,所有数据包都通过根桥转发。交换机比较彼此bridge id,最终选择最小bridge id的交换机为根桥。

        2. 计算最短路径:一旦根桥被选定,每个交换机都计算到根桥的最短路径,这通常是通过比较各个端口收到的BPDU的路径代价完成的。路径代价根据链路带宽计算的,带宽低的链路具有较高路径代价。

        3. 选择设计端口(Designated Port):交换机选择连接着最短路径的端口作为设计端口,这些端口用于将数据包发送到根桥。

        4. 禁用冗余路径:每个交换机中,除了根据最短路径选择的设计端口外,其他端口都会被禁用或阻塞。从而避免网络中的环路。

        5. 监测拓扑变化: STP监测链路故障或拓扑结构改变。当拓扑变化时,重新计算路径。

        6. 收敛: STP确保网络在收敛时间内从一个拓扑状态转换到另一个拓扑状态,以确保网络拓扑稳定可靠。

RSTP(Rapid STP):监视每个端口状态,在故障时主动发送一个拓扑变化通知。端口状态由5个减少为3个 (丢弃,学习,转发)

MSTP(Multi-STP):多生成树,为每个VLAN生成一个树。

3.5 WiFi

Infrastructure Mode:

        即基础设施模式。

        Infrastructure Mode中,所有无线客户端都连接到一个或多个AP上,而AP则连接到有线网络上。

        BSS(基本服务集) = AP+STAs。

        AP间通过有线分布式服务DS形成ESS(拓展服务集)。

Ad hoc(自组织模式)

        无AP无DS,而是P2P,是mesh前身。

        IBSS(Independent Basic Service Set,独立基本服务集)= Ad hoc网络 + STA。

     

SSID:服务集标识符

ESSID:拓展服务集标识符

WiFi共有三种802.11 帧类型:

        1. 管理帧:

                Beacon,Probe Request/Response,Association Request/Response,

                Reassociation,Disassociation,Authentication

        2. 控制帧

                RTS(Request to Send)帧:

                CTS(Clear to Send)帧: RTS帧的响应

                Block ACK、ACK

                PS-Poll:设备唤醒时,可发送PS-Poll帧以获取待接收数据

        3. 数据帧

iwlist wlan0 scan:用于扫描周围WiFi。

iwconfig wlan0 rts 250:当要发送数据帧长度大于250B时,设备将使用RTS/CTS机制来发送数据。

数据帧可分片或聚合。

通过设置很高的分片阈值,从而不使用分片。

iwconfig wlan0 frag 1500:设置分片阈值。

802.11n 帧聚合: A-MSDU A-MPDU

A-MSDU A-MPDU区别如图所示:

省电模式:PSM

APSD(Automatic Power Save Delivery):旨在延长无线设备的电池寿命。

        传统Wi-Fi中,设备空闲时仍需保持与AP的连接以接收任何传入数据。这种持续的连接会导致设备电池消耗较快。

        APSD允许无线设备在不需要时进入低功耗模式。

APSD实现:

        TIM:AP周期向STA发送Traffic Indication Map(TIM),其中包含是否有待传数据的通知。设备收到TIM后,决定是否进入低功耗模式。

        Trigger帧: 当AP有数据要发送给设备时,先发送一个Trigger帧,通知设备有数据待接收。设备在收到Trigger帧后,退出低功耗模式并与AP建立连接,以接收数据。

几种WiFi MAC(媒体访问控制)协议:

        PCF(点协调功能):使用少

        DCF(分布式协调功能):强制实现

        HCF(混合协调功能):PCF和DCF的混合形式

DCF:

        采用CSMA/CA,发送数据前,检测信道是否占用,若空闲则发送,否则随机等待一段时间再尝试发送。 是Wi-Fi中最常见的访问机制,适用于大多数无线局域网环境。

PCF:

        通过由AP控制发送帧的机会,允许AP一定程度上优先访问无线介质,从而提供了一定QoS。

HCF:

        允许AP在需要时通过PCF来控制媒体访问,同时仍然允许STA使用DCF来进行分布式访问。

分布式帧间间隔(Distributed Inter-Frame Space,DIFS):

        WiFi用于碰撞检测的时间间隔,实现CSMA/CA(冲突避免)。

NAV网络分配向量计数器:NAV用于指示设备必须等待的时间间隔,

        作用:避免冲突,隐藏节点问题。

CCA:检测信道是否空闲。

NAV:指示设备在接收到帧后的等待时间间隔。

DIFS:是两个数据帧之间必须等待的时间间隔。

WiFi三种加密方式:

        WEP(RC4加密算法)

        WPA(TKIP协议:RC4加密算法+更长IV+MIC哈希完整性保护)

        WAP2(AES加密算法+CCMP完整性保护)

1. WEP工作原理:

        初始化向量(IV): 设备生成随机初始化向量(IV)。IV是一个短随机数,通常与WEP密钥一起使用。

        加密过程: 发送方使用WEP密钥和IV加密传输数据。数据先被分割成固定大小数据包,然后对每个数据包应用加密算法(通常是RC4),加密数据。

        解密过程: 接收方使用相同WEP密钥和IV来解密数据包。

        

        WEP为什么不安全?

                同一AP,所有STA使用相同的密钥加解密数据。

                密钥短。

                IV生成不是真正随机生成。

                没有数据完整性保护机制。

2. WPA(Wi-Fi Protected Access)

        取代WEP,提供更强大加密和认证机制。

        使用TKIP(Temporal Key Integrity Protocol,临时密钥完整性协议)对数据加密。

        WPA支持动态密钥更新。

        WPA通过使用MIC(Message Integrity Code,消息完整性代码),进行完整性保护,防止数据被篡改。

        

        TKIP:

                从预共享密钥(PSK)中派生出一个临时密钥,来加密数据。

                依然使用RC4流密码算法,但使用更长的初始化向量(IV),以及对密钥进行更多次混合和扩展。

                引入MIC进行完整性保护。

                定期更换密钥、动态密钥生成和密钥混合等。

3. WPA2

        WPA2加密套件是AES-CCMP,这表示数据加密使用AES对称加密算法,完整性保护则使用CCMP协议。

        使用4-Way Handshake协议进行密钥交换和管理

        CCMP是一种数据加密和完整性保护的协议,它基于AES算法。

PSK:计算生成的密钥,用于加密数据。

        AP会将PSK密钥分发给STA。

       EAPOL:用于在WiFi中传输EAP消息的协议,从而进行用户认证和密钥协商。

802.1X:提供了认证框架,用于在网络接入时对用户进行身份验证和授权。

在WiFi中,802.1X通常与EAP协议结合使用,以提供认证和密钥管理功能。

802.11s:mesh

3.6 PPP协议

PPP最初设计用于替代SLIP,可封装多协议如TCP/IP、IPX等。

PPP:点对点协议,在串行链路上传输IP报文,被DSL ISP部署。

PPP协议组成:

        LCP,PAP/CHAP,NCP

PPP无需处理链路共享资源竞争问题,即无需CSMA/CD等。

LCP:基于HDLC报文格式(是位级别帧,即使用位填充)

HDLC:高级链路控制,一种数据链路层协议

PPP即可是同步,也可是异步,具体取决于物理介质和传输方式。

        同步链路:

                基于时钟信号传输数据

                使用传输介质为同轴电缆、光纤等。传输速率通常较高。

        异步链路:

                基于起始位和停止位的异步传输。

                使用传输介质为电话线、RS-232串口等,数据传输速率通常较低。

                位填充:

                        若帧中出现0x7E,则用两个0x7D5E替换。

                        若帧中出现0x7D,则接收方用0x7D5D替换。

标志:0x7E,帧开始,结束。

地址:0xFF,哪个站处理。

控制:0x03,帧序列和重传行为。

协议:

        LCP (可配置BCP桥接控制协议)

        PAP,CHAP

        NCP

地址和控制字段在PPP是常数,可通过ACFC压缩选项来省略。

协议字段可通过PFC (协议字段压缩)选项协商,压缩为1字节。

LCP操作

        标识:序列号,递增。

        代码:配置请求,配置ACK,配置NACK,配置REJECT,终止ACK,回送请求,回送应答,协议REJECT,代码REJECT。

        长度:小于链路MRU。

广域网数据链路层的协议HDLC,已被PPP取代,PPP可同步传输也可异步传输,而HDLC只能用在同步网上。

LCP协商哪些参数:

        MRU最大接收单元:默认1500B。

        认证方式: PAP还是CHAP。

        协商magic:用于检测环路。如有相同则有环路。

        异步控制字符映射选项:哪些控制字符需要被转义。

        链路质量报告LQR:报告频率,报告内容,报告方式(PPP扩展字段或独立的LCP消息)。

PPPMux:多协议载荷的聚合帧。

以太帧中没有认证字段,使用以太网方式无法接入互联网,所以以太网和PPP结合,形成PPPoE。

多WAN链路可提高网络带宽、冗余备份,负载均衡。

常见多WAN链路聚合方式:

        1. LACP(Link Aggregation Control Protocol):将多个物理连接聚合成一个逻辑连接。在交换机和路由器上使用。

        2. MLPPP(Multilink Point-to-Point Protocol):聚合多个PPP物理链路。通常PPPoE上使用

        3. SD-WAN:可集中管理多个WAN链路,并根据实时网络状况动态调整分流策略。

        4. Policy-Based Routing:策略路由实现多WAN链路分流。

MP:多链路PPP,通过LACP协议将多个PPP链路聚合成一条链路。

        典型方法:PPP分组轮流在各个成员链路上传输。

        复杂方法: 带宽分配协议,带宽分配控制协议,可以基于源IP、目标IP、协议等策略路由实现流量分流和负载均衡。

压缩控制协议CCP:

        PPP较慢,分为:modem硬件压缩,协议头部压缩。

        MPPE:微软点对点加密。

两种PPP认证:

        PAP:1. 客户端发送用户名和密码明文。2. 服务器与存储匹配,判断是否认证成功。

        CHAP:1. 服务器发送随机挑战字符串。2. 客户端加密挑战字符串,发送回服务器。3. 服务器解密并比较。

        EAP认证框架

网络控制协议NCP

        IPv4

        IPv6

头部压缩

        TCP/UDP头压缩

        IP头压缩

        鲁棒性头部压缩ROHC:减小IP和UDP/TCP协议头大小。使用场景:VoIP,移动通信,拥塞网络。

MPPE:微软点对点加密,用来加密PPP,已有更安全的加密协议替代MPPE。

MPPC:微软点对点压缩

3.6.1 PPP协议流程

PPP分为三部分:

        LCP:约定封装格式,MTU协商,认证方式、压缩算法,链路监测和维护(LCP Echo-Request)等。

        认证:非强制部分(PAP或CHAP)

        NCP:IP分配

LCP报文分为三类:

        建立和配置链路:(Configure-Request, Configure-Ack,Configure-Nak,Configure-Reject)

        终止链路:(Terminate-Request,Terminate-Ack)

        管理和维护链路:(Code-Reject,Protocol-Reject,Echo-Request,Echo-Reply,Discard-Request)

LCP报文包含code字段,表明LCP报文类型。

3.7 环回

作用:检测协议栈是否正常工作。

IP4:127.0.0.1/8

IPv6:::1/128

3.8 MTU和路径MTU

以太网有效负荷最大字节为1500=MTU,IP数据报大于MTU则分片。

路径MTU: PMTU,整条网络路径最小MTU,当路径中链路故障,路由器故障,路径MTU可能改变。

PMTUD:路径MTU发现。

PMTUD实现方法:

        ICMP探测:当收到报文大于MTU且IP头设置禁止分片,则发送ICMP分片必须禁止的错误消息,通知发送方报文不超过某个特定值。发送端据此逐渐降低包大小,直到找到适合PMTU。

        TCP MSS选项:TCP握手时通过TCP的MSS 选项告知对端其所支持的最大TCP段大小。

3.9 隧道基础

只能高层携带低层或同等层数据:

        IPv6携带IPv4

        UDP携带以太网

        IPv6携带以太网

        IPv4携带以太网

GRE (取代IP in IP)

PPTP (微软)

L2TP (常结合IPsec)

ip命令可以配置任意合理的隧道组合。

报文源IP地址在网络中默认不会更改,但NAT,代理服务器,负载均衡器等例外。

3.9.1 GRE

GRE报文格式:

C: 是否存在校验和

K: 是否存在密钥

S: 是否存在序列号

GRE解决的问题:

        跨Internet的私网互通:私网中使用的是私有地址,而在Internet传输的报文须使用公网地址。

        跨Internet的异种网络互通:IP与IPX网络无法通信。

使用场景:

        ISP间,企业总部和分部之间。通常没有必要IPsec加密,没有客户端服务器,类似对等。

封装格式:

        以太网 IP头 GRE头 IP头 IP报文

3.9.2 PPTP

使用场景:

        用户和ISP,用户与企业总部间,需要加密(MPPE)。

PPTP头部如下:

R: Recur回溯。

PPTP实现需要:pppd进程,pptpd进程。

3.9.3 L2TP

L2TP (常结合IPsec)更安全。

3.10 与链路层相关的攻击

3.11 总结

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/487933.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

文件操作IO

文件操作IO .认识文件树型结构组织 和 目录文件路径(Path)其他知识Java 中操作文件构造方法方法 创建文件删除文件创建目录重命名文件内容的读写 —— 数据流Reader/Writer(字符流)InputStream/OutputStreadm(字节流)scanner 例题1.扫描指定目录&#xf…

Unity 2021.3发布WebGL设置以及nginx的配置

使用unity2021.3发布webgl 使用Unity制作好项目之后建议进行代码清理,这样会即将不用的命名空间去除,不然一会在发布的时候有些命名空间webgl会报错。 平台转换 将平台设置为webgl 设置色彩空间压缩方式 Compression Format 设置为DisabledDecompre…

模板注入 [WesternCTF2018]shrine1

打开题目 直接查看源代码 发现注册了一个名为FLAG的config,这里可能有flag, 存在flask-jinja2模板注入, 并且存在黑名单过滤 输入shrine/{{7*7}}验证成功 通过url_for()与globals()函数,绕过黑名单 /shrine/{{url_for.__globa…

基于stm32单片机智能矿井救援小车系统设计

作为一个矿产资源丰富的国家势必需要通过矿井来进行开采,而随着开采的深入在很多地质构造不同矿井中极易因为各种原因而造成事故,但由于危险的存在使得很多时候都无法第一时间派遣救援人员下到矿井施以救援。科学技术的进步和机器人技术的成熟彻底改变了…

零样本带解释性的医学大模型

带解释性的医学大模型 提出背景解法拆解方法的原因对比以前解法 零样本带解释性的医学大模型如何使用CLIP模型和ChatGPT来进行零样本医学图像分类用特定提示查询ChatGPT所生成的医学视觉特征描述相似性得分在不同症状上的可视化,用于解释模型的预测注意力图的可视化…

挑战杯 基于大数据的时间序列股价预测分析与可视化 - lstm

文章目录 1 前言2 时间序列的由来2.1 四种模型的名称: 3 数据预览4 理论公式4.1 协方差4.2 相关系数4.3 scikit-learn计算相关性 5 金融数据的时序分析5.1 数据概况5.2 序列变化情况计算 最后 1 前言 🔥 优质竞赛项目系列,今天要分享的是 &…

kafka为什么性能这么高?

Kafka系统架构 Kafka是一个分布式流处理平台,具有高性能和可伸缩性的特点。它使用了一些关键的设计原则和技术,以实现其高性能。 上图是Kafka的架构图,Producer生产消息,以Partition的维度,按照一定的路由策略&#x…

二手货wordpress企业网站主题模板

二手车wordpress主题模板 简洁的二手车wordpress主题模板,适合做二手车业务的公司官方网站使用。 https://www.jianzhanpress.com/?p3473 wordpress二手物资回收主题 绿色wordpress二手物资回收主题,用于二手物资回收公司WP建站使用。 https://www.…

07 MyBatis之高级映射 + 懒加载(延迟加载)+缓存

1. 高级映射 例如有两张表, 分别为班级表和学生表 自然, 一个班级对应多个学生 像这种数据 , 应该如果如何映射到Java的实体类上呢? 这就是高级映射解决的问题 以班级和学生为例子 , 因为一个班级对应多个学生 , 因此学生表中必定有一个班级编号字段cid 但我们在学生的实体…

MIT-BEVFusion系列九--CUDA-BEVFusion部署4 c++解析pytorch导出的tensor数据

目录 创建流打印 engine 信息打印结果内部流程 启动计时功能加载变换矩阵并更新数据(重要)内部实现 该系列文章与qwe一同创作,喜欢的话不妨点个赞。 在create_core方法结束后,我们的视角回到了main.cpp中。继续来看接下来的流程。…

【MySQL系列 04】深入浅出索引

一、索引介绍 提到数据库索引,相信大家都不陌生,在日常工作中会经常接触到。比如某一个 SQL 查询比较慢,分析完原因之后,你可能就会说“给某个字段加个索引吧”之类的解决方案。 但到底什么是索引,索引又是如何工作的…

自动化操作读写Excel —— xlrd 和 xlwt 模块参数说明与代码实战【第95篇—自动化操作读写Excel 】

自动化操作读写Excel —— xlrd 和 xlwt 模块参数说明与代码实战 在日常工作中,Excel表格是不可或缺的数据处理工具。为了提高工作效率,Python中的xlrd和xlwt模块为我们提供了强大的功能,使得自动化操作Excel变得更加简便。本文将介绍xlrd和…