精华内容
下载资源
问答
  • 网络知识
    千次阅读
    2021-12-10 11:29:16

    6G简介

    近年来,随着5G、人工智能(AI, artificial intelligence) 和大数据技术的不断革新,智能移动物联网业务的兴起和迅速发展引发了新一轮信息技术革命浪潮,“万物互联”对海量业务数据即时获得、分析和交换的需求日益增长。为支撑海量连接场景下多类型终端的差异化服务质量,5G引入了多种无线接入技术和基于服务的网络架构[1][2]。随着移动通信技术的演进,移动网络形态呈现多样化与异构化以满足各种差异化的业务需求。
    当前,全球各地陆续启动了6G研究工作,业界指出“数字孪生,智能泛在”的6G网络发展愿景,同时期望结合AI等技术的发展,满足人们日益增长的高性能网络需求,覆盖全社会的千行百业,实现社会智慧互联和行业数字化转型[3][4]。
    6G将充分利用各种频谱资源,比如太赫兹,可见光,结合超大规模天线技术,全双工技术,智能超表面,空天地一体等技术实现全覆盖。然而,6G中层出不穷的新业务对网络的要求也各不相同,这样就会造成网络运维的复杂度增加。此外,现有的商用无线网络已经拥有大量可配置无线参数,面对未来海量设备的接入和快速变化的业务需求,传统的以设备为中心的人工运维的模式难以为继、性能难以保障、用户服务质量难以满足,迫切需要一种更灵活、更简洁的智慧网络,以适配未来6G海量智能业务的高不确定性。
    AI作为大数据的重要使能技术,学术界和产业界已经针对AI内生的6G网络展开了研究,并取得了积极的成果[5]。6G期待通过AI内生增强网络架构的适变性,使网络更好地支撑多样化服务和多应用场景,实现网络与用户需求的实时互动,并使网络可以更好地满足用户需求,构建高效的可重构柔性无线网络。知识图谱是人工智能的一个重要分支,机器具有认知能力的基石,在AI领域具有非常重要的地位。知识图谱将人与知识智能地连接起来,能够对各类应用进行智能化升级,为用户带来更智能的应用体验[6]。将知识图谱应用到6G网络中,可以为6G网络提供一种快速便捷的业务和意图检索能力,并利用知识图谱中“庞大”的网络知识库针对业务场景和需求进行推理,生成满足业务需求的智能网络。然而,当前知识图谱在网络智能化方面才处于起步阶段。

    知识图谱

    知识图谱,是通过将应用数学、图形学、信息可视化技术、信息科学等学科的理论与方法与计量学引文分析、共现分析等方法结合,并利用可视化的图谱形象地展示学科的核心结构、发展历史、前沿领域以及整体知识架构达到多学科融合目的的现代理论。知识图谱以结构化的形式描述客观世界中概念、实体及其关系,将互联网的信息表达成更接近人类认知世界的形式,提供了一种更好地组织、管理和理解互联网海量信息的能力。
    知识图谱的逻辑结构可分为模式层与数据层,模式层是核心,数据层是基础。模式层在数据层之上,存储的是根据数据层提炼过的知识,包括实体、关系以及实体的类型和属性等对象之间的联系。数据层主要是由一系列的事实组成,知识以事实(fact)为单位存储在图数据库。如果以“实体-关系-实体”或者“实体-属性-性值”三元组作为事实的基本表达方式,则存储在图数据库中的所有数据将构成庞大的实体关系网络,形成“知识图谱“[6]。
    知识图谱主要技术包括知识获取、知识表示、知识存储、知识建模、知识融合、知识计算、知识运维等七个方面,尽管目前已取得了很多成就,但仍在快速演进当中。从应用的角度,知识图谱逐渐向领域或行业知识图谱应用拓展,如金融、医疗、公安、医疗、司法、电商等,同时知识图谱的标准化工作仍在进行中。
    新华三深耕网络行业三十余年,在计算、存储、网络、安全等领域有着大量的来自行业、生产、研发、运维等维度的专家和生产资料过程数据。新华三已于2021年7月份将网络通信行业知识贡献到OpenKG上,填补了该行业的空白。https://mp.weixin.qq.com/s/bov41msc-anaAa6qJ5orNA。之后,新华三以当前6G研究为契机,继续研究6G网络行业知识库,并已取得了一系列的进展。

    6G网络知识库的构建

    6G的网络知识主要包括三大类:网络架构的知识,网络运维知识,和业务知识。
    在网络架构上,相比于5G,6G网络将提供全覆盖,全频谱,全应用,强安全的普适通信,通信的维度从“二维”转向“三维”,利用全频谱将通信从当前的地面通信转向“空天地海”全维度的通信模式,以提供具有广覆盖、大连接、低时延,高可靠性和高精度定位的通信,所以6G相应的网络架构也将发生根本性的变化。
    对于网络运维,面对更加复杂的网络架构和众多新的应用场景,当前的运维知识不足以应对未来的网络,而传统的人工运维耗时耗力,所以需要在丰富的运维知识库基础上利用人工智能的方式来实现网络的运维。
    在业务和性能的角度,6G的业务将在5G的基础上进行扩展,例如进一步增强的移动宽带(feMBB)、超大规模机器类通信(umMTC)和增强的高可靠低时延通信(euRLLC),长距离高移动性通信(LDHMC)和超低功耗通信(ELPC)、、超高速低时延通信(uHSLLC)和超高数据密度(uHDD等)[4],支持更丰富的业务场景和类型,同时业务的性能也进行了相应的提升,比如feMBB的最大速率从100Mbps提高到1Gbps,euRLLC中可靠性从99.999%提升到99.99999%,时延降低到1ms以下。
    然而,网络知识库的获取存在着诸多挑战。虽然当前各标准化组织的标准化文档,比如3GPP,ETSI等的标准,各产业联盟的白皮书,如工业互联网白皮书,智慧港口白皮书等,各科研机构的研究报告和论文可以提供大量的数据,但是这些资料大部分都是基于应用场景介绍使能技术和一些所需的性能指标,不同的资料中虽然场景和性能指标都类似,但是数据结构却不统一。因此造成数据分散,数据结构化程度不高,大量有价值的知识更多是存在于非结构化的文本中。这些数据专业性强、术语繁多,从理解上来看与通用语言理解存在很深的鸿沟,从逻辑上来看场景又十分复杂。而在当时,开源的电子信息或者网络通信行业词库知识(尤其是5G、6G网络知识库)为零,常识知识为零,带标注可训练的数据为零。而要实现6G网络的知识抽取,就必须在众多琐碎的文献资料中不断的分析提炼,在困难中不断破冰。
    业务知识库构建
    知识处理一定是一个从易到难,从粗到细、从人工到自动的过程。首先,为了构建一个初始的知识库,首要的目标是数据结构化。资料管理通常是树形结构,如新华三官网,以树状结构梳理了产品类型-产品系列-规格型号的关系,在产品规格型号一页,又以表格记录了产品的各种软硬件规格描述。所以,可以使用爬虫系统收集和解析产品之间“isA”和“sameAs”的关系,以无监督+词向量的方式对齐了产品规格特性,最终以模板映射到图上三元组关系。
    对于当前的5G业务和未来的6G业务,根据业务的服务等级(SLA),其主要性能包括数据速率,时延,可靠性,抖动,定位精度等方面。5G/6G业务类型涉及多个行业,如娱乐、教育、工业生产、交通、农业等,每种行业的业务的性能各不相同。当前海量文献,如行业标准、论文、白皮书等,对各个行业的业务性能定义的数据格式不同,并且相同行业的业务性能定义也有差异。表 1和表 2分别给出了3GPP标准中定义的工厂自动化的业务性能指标和中国通信行业标准中定义的全连接工厂的业务性能指标。从中可以看出,不同资料中定义的这些业务知识均不具备结构化的性质,绝大部分都是非结构化数据。所以从海量文献中提取6G网络数据并组成网络知识三元组面临巨大的挑战。
    在这里插入图片描述

    表 2中国通信行业标准定义的全连接工厂场景通信技术要求

    为了解决以上存在的5G/6G业务知识库中无结构化数据的问题,我们采用如下步骤并构建知识库:
    首先,利用爬虫工具和关键字检索搜集互联网中各种5G/6G相关资料,如白皮书、峰会会议资料、标准文档、应用场景分析等,将其存放在候选资料库中,如图 1所示。注意:未来的候选资料库会随时进行更新。
    在这里插入图片描述
    图 1 5G/6G白皮书以及标准场景文档

    其次,利用标记的关键字和数据解析器去解析候选资料库中的文本和表格信息,并将于关键字匹配的相关信息提出来并保存,保存的信息类型是原始的文本和表格。提取的主要数据包括典型应用场景、应用场景的子场景、子场景中的典型业务、典型业务的一些网络需求和性能指标等等。如表 1和表 2中所示。
    然后,由于检索解析到的表格形式和数据类型不统一,均属于非结构化数据,并不能直接用于构建业务知识库。所以需要人工进行检查、修改、整理,使形式各样的数据规范化,形成最终的结构化数据,并将上述所有数据均保存到csv文件当中。部分典型的业务子场景如图 2所示,智能电网中场景-子场景-典型业务-性能指标的结构化数据如图 3所示。
    在这里插入图片描述

    图 2 业务子场景
    在这里插入图片描述

    图 3 智能电网业务场景以及性能指标
    最后,在业务模型和数据准备完毕之后,利用一个数据映射的文件将模型中的顶点标签,边标签与csv数据对应起来,针对具体业务,解析业务和其具体性能指标,然后将其映射成三元组关系。不同三元组根据实体与实体之间关系,共同形成的知识图谱,最后构成完整的知识图谱。
    知识图谱构建示例:知识图谱平台使用的是H3C的图引擎系统。根据上文中介绍的业务场景模型,设计出知识图谱的模型结构如图 4所示。图中模型的圆代表顶点标签,而有向箭头代表边标签,边标签和顶点标签都有其对应的名称。顶点标签共有5个,分别代表基站,网络切片,业务场景,子场景和具体业务。边标签为了便于检索,设定为一个,表示位于边标签的起点的顶点标签与末端的顶点标签是从属的关系。
    在这里插入图片描述

    图 4 知识图谱模型
    最终完成的知识图谱的部分可视化图像如图 5所示:
    在这里插入图片描述

    图 5 部分6G知识图谱
    图中红色的圆圈对应上述模型中base_stations顶点标签,绿色、蓝色、黄色和紫色分别对应slices顶点标签、scenario顶点标签、sub_scenario顶点标签和service顶点标签,边标签与模型中类似。如此,一个基础的6G业务知识图谱构建完成。
    网络知识库构建
    根据上文所述,6G网络将是一个3维的网络从而实现全维度的网络覆盖。6G的整体网络架构还处于研究阶段,业界并未一个统一的共识。但是基于当前的5G网络架构推测,未来6G网络也划分成三个层面:核心网,承载网和接入网。核心网基于SDN/NFV技术通过不同的网元实现数据的核心汇聚功能,主要执行接入管理、会话管理、数据汇聚转发、用户鉴权、网络切片管理、策略控制等功能;承载网作为连接核心网和接入网的单元,是6G网络中必不可少的一环,其主要网元包括光纤、核心路由器和交换机等网络传输设备;6G的全维度网络覆盖主要通过接入网来完成,接入网网元可以在地面(地面基站)、海上(海洋基站)、空中(无人机,卫星等)。对于不同的网络实体,其基本属性包括:资源类型、地理位置、IP地址、邻居、接口链路、具备的能力、性能规格等。
    对于网络知识库的构建,可以在组网的过程中通过人工的方式手工构建,也可以在网络建设完成并运行之后由各个网元设备自行上报进行构建。当前,我们根据网络仿真工具在网络运行过程中初步构建了接入网网络切片的知识库,其构建过程如下:
    首先,配置网络仿真文件,配置文件分为5个部分,分别为基站,切片,移动模式以及客户端以及一些预设参数,其中基站的参数包含了基站的带宽容量,覆盖范围(coverage),以及基站的三维坐标(x, y, z)。而切片参数包括时延容忍度、服务质量等级、带宽保证量、最大带宽、客户优先级等参数。这些仿真输入参数作为知识库的一部分结构化数据。基站和客户端的位置信息如图 12所示,其中橙色为基站,蓝色为客户端,基站包括地面站和空中站。

    在这里插入图片描述
    图 12 基站与客户端3D视图
    其次,根据配置的文件执行网络切片的仿真。在仿真过程中的,实时的记录和收集仿真的中间结果和最终的输出结果,包括部分网络性能数据,如客户连接率、网络切片带宽使用率、客户切换率、数据速率、时延等参数。所有的仿真结果数据均会进行搜集,保存成结构化的CSV文件。部分保存后的切片数据如图 13所示。
    在这里插入图片描述

    图 13 提取的切片参数数据
    最后,根据输入配置文件和仿真过程中搜集到的结构化数据,同样利用一个数据映射文件将模型中的顶点标签、边标签与csv数据对应起来,然后将网络切片、基站、参数、性能指标等映射成三元组关系。不同三元组根据实体与实体之间关系,共同形成的知识图谱,最后构成完整的网络知识图谱。其中基站和切片的三元组示意图如图 14所示。
    在这里插入图片描述

    图 14 基站-切片三元组
    当前搜集的知识图谱数据可以为后续探讨其他人工智能算法的应用提供网络数据,如结合强化学习测试动态的切片算法对网络性能的影响和6G网络生成等,这些目前还在研究过程中。
    对于核心网和承载网的网络知识库构建,H3C还在探索阶段,后续将在接入网知识库的基础上,构建出其他网络知识库。

    总结

    当前,5G已经逐步覆盖到了大部分的个人业务,逐渐向垂直行业进行扩展。作为下一代的移动通信系统,6G的研究和探索才刚刚起步。6G与知识图谱的结构更是处于萌芽阶段,新华三将持续在这个方向上进行探索,并期待与同行的专家一起共筑6G与知识图谱的美好未来。

    参考文献
    [1] PENG M G, LI Y, ZHAO Z Y, et al. System architecture and key technologies for 5G heterogeneous cloud radio access networks[J]. IEEE Network, 2015, 29(2): 6-14.
    [2] 3GPP TS 23.501, System Architecture for the 5G System; Stage 2, 2021.
    [3] 中国移动研究院. 2030+愿景与需求报告[S]. 2019.
    [4] YOU X H, WANG C X, HUANG J, et al. Towards 6G wireless communication networks: Vision, enabling technologies, and new paradigm shifts. Sci China Inf Sci, vol. 64, no. 1, Jan. 2021, doi: 10.1007/s11432-020-2955-6.
    [5] SUN Y H, PENG M G, ZHOU Y C, et al. Application of machine learning in wireless networks: key techniques and open issues[J]. IEEE Communications Surveys & Tutorials, 2019, 21(4): 3072-3108.
    [6] 中国电子技术标准化研究院. 知识图谱标准化白皮书, 2019.

    更多相关内容
  • 计算机网络知识汇总(超详细整理)

    万次阅读 多人点赞 2021-06-22 15:44:13
    为了准备期末考试,同时也是为了之后复习方便,特对计算机网络知识进行了整理。本篇内容大部分是来源于我们老师上课的ppt。而我根据自己的理解,将老师的PPT整理成博文的形式以便大家复习查阅,同时对于一些不是很...

    文章目录

    前言

    为了准备期末考试,同时也是为了之后复习方便,特对计算机网络的知识进行了整理。本篇内容大部分是来源于我们老师上课的ppt。而我根据自己的理解,将老师的PPT整理成博文的形式以便大家复习查阅,同时对于一些不是很清楚的地方,我去查阅了相关资料进行补充,当然也会有少部分个人看法夹带其中来帮助大家理解。


    应评论要求这里放上本文的思维导图以供大家更好的查看
    在这里插入图片描述

    一、计算机网络概述

    1 互联网的构成

    网络边缘:位于互联网边缘与互联网相连的计算机和其他设备,如桌面计算机、移动计算机、服务器、其他智能终端设备
    网络核心:由互联端系统的分组交换设备和通信链路构成的网状网络
    如:分组交换路由器、链路层交换机、通信链路(光纤、铜缆、无线电、激光链路)

    2.网络分类

    个域网PAN( Personal Area Network )

    • 能在便携式消费电器与通信设备之间进行短距离通信的网络
    • 覆盖范围一般在10米半径以内,如蓝牙耳机等

    局域网LAN(Local Area Network)

    • 局部地区形成的区域网络,如企业网络
    • 分布地区范围有限,可大可小,大到一栋建筑、小到办公室内的组网
    • 电脑WLAN接入,打印机共享等等

    城域网MAN(Metropolitan Area Network )

    • 范围覆盖一个城市的网络

    广域网WAN(Wide Area Network)

    • 覆盖很大地理区域,乃至覆盖地区和国家

    3.接入网

    接入网的用途

    • 接入网的用途是将主机连接到边缘路由器上
    • 边缘路由器是端系统Host去往任何其他远程端系统的路径上的第一台路由器

    各种异构网络通过边缘路由器接入

    接入网分类

    • 光纤到户FTTH
    • 数字用户线DSL
    • 同轴电缆
    • 无线接入
    • 企业和家庭网络

    4.网络核心的两大功能

    ①路由

    确定数据分组从源到目标所使用的路径(全局操作)

    ②转发

    路由器或交换机将接收到的数据分组转发出去(即移动到该设备的某个输出接口)(本地操作)

    5.网络分层

    ①OSI 7层模型

    在这里插入图片描述

    数据链路层 (Data Link Layer)

    • 实现相邻(Neighboring)网络实体间的数据传输
    • 成帧(Framing):从物理层的比特流中提取出完整的帧
    • 错误检测与纠正:为提供可靠数据通信提供可能
    • 物理地址(MAC address):48位,理论上唯一网络标识,烧录在网卡,不便更改
    • 流量控制,避免“淹没”(overwhelming):当快速的发送端遇上慢速的接收端,接收端缓存溢出
    • 共享信道上的访问控制(MAC):同一个信道,同时传输信号。如同:同一个Wifi热点(AP)连接着多个无线用户(手机),则多个用户同时需要发送数据,如何控制发送顺序?

    网络层 (Network Layer)

    • 将数据包跨越网络从源设备发送到目的设备(host to host)
    • 路由(Routing):在网络中选取从源端到目的端转发路径,常常会根据网络可达性动态选取最佳路径,也可以使用静态路由
    • 路由协议:路由器之间交互路由信息所遵循的协议规范,使得单个路由器能够获取网络的可达性等信息
    • 服务质量(QoS)控制:处理网络拥塞、负载均衡、准入控制、保障延迟
      异构网络互联:在异构编址和异构网络中路由寻址和转发

    传输层 (Transport Layer)

    • 将数据从源端口发送到目的端口(进程到进程)
    • 网络层定位到一台主机(host),传输层的作用域具体到主机上的某一个进程
    • 网络层的控制主要面向运营商,传输层为终端用户提供端到端的数据传输控制
    • 两类模式:可靠的传输模式,或不可靠传输模式
    • 可靠传输:可靠的端到端数据传输,适合于对通信质量有要求的应用场景,如文件传输等
    • 不可靠传输:更快捷、更轻量的端到端数据传输,适合于对通信质量要求不高,对通信响应速度要求高的应用场景,如语音对话、视频会议等

    会话层 (Session Layer)

    • 利用传输层提供的服务,在应用程序之间建立和维持会话,并能使会话获得同步

    表示层(Presentation Layer)

    • 关注所传递信息的语法和语义,管理数据的表示方法,传输的数据结构

    应用层(Application Layer)

    • 通过应用层协议,提供应用程序便捷的网络服务调用

    ②TCP/IP 4层模型

    在这里插入图片描述

    ③两种模型比较

    在这里插入图片描述

    注:我们教材的是以下分层来讲述的
    在这里插入图片描述

    二、物理层

    • 物理层考虑的是怎样才能在连接各种计算机的传输媒体上传输数据比特流,而不是指具体的传输媒体。
    • 物理层的作用是要尽可能地屏蔽掉不同传输媒体和通信手段的差异
    • 用于物理层的协议也常称为物理层规程 (procedure)。

    1.物理介质

    ①引导型介质

    信号在固体介质中传播,例如铜、光纤、同轴电缆

    光纤

    • 高速运行
      高速点对点传输(10-100 Gbps)
    • 低错误率
      中继器相距很远,对电磁噪声免疫
      在这里插入图片描述

    双绞线

    • 两根绝缘铜线互相缠绕为一对
    • 电话线为1对双绞线,网线为4对双绞线,广泛用于计算机网络(以太网)双向传输
    • 第5类:100 Mbps~1 Gbps;第6类:10Gbps
    • 传输距离一般为为100米

    在这里插入图片描述

    同轴电缆

    • 两根同心铜导线,双向传输
    • 电缆上的多个频率通道
    • 带宽可达100Mbps
    • 传输距离一般为200米

    在这里插入图片描述

    ②非引导型介质

    信号自由传播,例如无线电(陆地无线电、卫星无线电信道)

    无线电

    • 电磁频谱中各种“波段”携带的信号
    • 没有物理“电线”
    • 不依赖介质的广播
    • 半双工(发送方到接收方)

    无线链路类型

    • 无线局域网(WiFi)
      10-100 Mbps;10米
    • 广域(如3/4/5G蜂窝)
      在~10公里范围内
    • 蓝牙:短距离,有限速率
    • 地面微波:点对点;45 Mbps
    • 同步卫星:36000km高空, 280毫秒的往返时延
    • 低轨卫星:近地,但围绕地球高速运动,需要大量卫星才能覆盖地球

    2.数据交换方式

    ①分组交换

    分组交换采用把一个个小的数据包存储转发传输来实现数据交换。

    主要的一些缺点
    1、不具有实时性。
    2、存在延时。
    3、会造成通信阻塞。
    4、存在无用的重复数据。
    5、会出现丢包的情况。

    优点
    1、设计简单。
    2、资源利用率很高。

    ②电路交换

    电路连接的三个阶段

    1、建立连接。
    2、数据传输。
    3、释放连接。

    优点
    1、传输速度快、高效。
    2、实时。

    缺点
    1、资源利用率低。
    2、新建连接需要占据一定的时间,甚至比通话的时间还长。

    电路交换的多路复用
    频分多路复用FDM
    时分多路复用TDM

    在这里插入图片描述

    3.信道复用

    复用 (multiplexing) 是通信技术中的基本概念。
    它允许用户使用一个共享信道进行通信,降低成本,提高利用率。

    ①频分复用

    • 将整个带宽分为多份,用户在分配到一定的频带后,在通信过程中自始至终都占用这个频带。
    • 频分复用的所有用户在同样的时间占用不同的带宽资源(请注意,这里的“带宽”是频率带宽而不是数据的发送速率)。

    在这里插入图片描述

    ②时分复用

    时分复用则是将时间划分为一段段等长的时分复用帧(TDM 帧)。每一个时分复用的用户在每一个 TDM 帧中占用固定序号的时隙。
    在这里插入图片描述

    ③波分复用

    波分复用就是光的频分复用。使用一根光纤来同时传输多个光载波信号。
    在这里插入图片描述

    ④码分复用

    各用户使用经过特殊挑选的不同码型,因此彼此不会造成干扰。

    三、数据链路层

    1.功能(要解决的问题)

    成帧 (Framing)
    将比特流划分成“帧”的主要目的是为了检测和纠正物理层在比特传输中可能出现的错误,数据链路层功能需借助“帧”的各个域来实现
    差错控制 (Error Control)
    处理传输中出现的差错,如位错误、丢失等
    流量控制 (Flow Control)
    确保发送方的发送速率,不大于接收方的处理速率,避免接收缓冲区溢出

    2.数据链路层提供的服务

    1.无确认 无连接 服务( Unacknowledged connectionless )

    • 接收方不对收到的帧进行确认
    • 适用场景:误码率低的可靠信道;实时通信;
    • 网络实例:以太网

    2.有确认 无连接 服务( Acknowledged connectionless )

    • 每一帧都得到单独的确认
    • 适用场景:不可靠的信道(无线信道)
    • 网络实例:802.11

    3.有确认 有连接 服务( Acknowledged connection-oriented )

    • 适用场景:长延迟的不可靠信道

    3.成帧(Framing)

    3.1 要解决的关键问题:如何标识一个帧的开始?

    • 接收方必须能从物理层接收的比特流中明确区分出一帧的开始和结束,这个问题被称为帧同步或帧定界
    • 关键:选择何种定界符?定界符出现在数据部分如何处理?

    3.2 成帧(framing)的方式

    ①带比特填充的定界符法

    定界符:两个0比特之间,连续6个1比特,即01111110,0x7E
    在这里插入图片描述
    发送方检查有效载荷:若在有效载荷中出现连续5个1比特,则直接插入1个0比特
    在这里插入图片描述

    接收方的处理:
    若出现连续5个1比特,
    若下一比特为0,则为有效载荷,直接丢弃0比特;
    若下一比特为1,则连同后一比特的0,构成定界符,一帧结束

    ②物理层编码违例
    • 核心思想:选择的定界符不会在数据部分出现
    • 4B/5B编码方案
      4比特数据映射成5比特编码,剩余的一半码字(16个码字)未使用,可以用做帧定界符
      例如: 00110组合不包含在4B/5B编码中,可做帧定界符
    • 前导码
      存在很长的 前导码(preamble),可以用作定界符
      例如:传统以太网、802.11
    • 曼切斯特编码 / 差分曼切斯特编码
      正常的信号在周期中间有跳变,持续的高电平(或低电平)为违例码,可以用作定界符
      例如:802.5令牌环网

    4.差错控制

    4.1 背景

    链路层存在的一个问题:信道的噪声导致数据传输问题

    • 差错( incorrect ):数据发生错误
    • 丢失( lost ):接收方未收到
    • 乱序(out of order):先发后到,后发先到
    • 重复(repeatedly delivery):一次发送,多次接收

    解决方案:差错检测与纠正、确认重传

    • 确认:接收方校验数据(差错校验),并给发送方应答,防止差错
    • 定时器:发送方启动定时器,防止丢失
    • 顺序号:接收方检查序号,防止乱序递交、重复递交

    4.2 差错检验与纠正

    目标

    保证一定差错检测和纠错能力的前提下,如何减少冗余信息量?

    考虑的问题

    • 信道的特征和传输需求
    • 冗余信息的计算方法、携带的冗余信息量
    • 计算的复杂度等

    两种主要策略

    • 检错码(error-detecting code)

    在被发送的数据块中,包含一些冗余信息,但这些信息只能使接收方推断是否发生错误但不能推断哪位发生错误,接收方可以请求发送方重传数据主要用在高可靠、误码率较低的信道上,例如光纤链路偶尔发生的差错,可以通过重传解决差错问题

    • 纠错码(error-correcting code)

    发送方在每个数据块中加入足够的冗余信息,使得接收方能够判断接收到的数据是否有错,并能纠正错误(定位出错的位置)主要用于错误发生比较频繁的信道上,如无线链路也经常用于物理层,以及更高层(例如,实时流媒体应用和内容分发)使用纠错码的技术通常称为前向纠错(FEC,Forward Error Correction)

    常用的检错码包括:

    ①奇偶检验 (Parity Check)

    1位奇偶校验是最简单、最基础的检错码。

    1位奇偶校验:增加1位校验位,可以检查奇数位错误。
    在这里插入图片描述

    ②校验和 (Checksum)

    主要用于TCP/IP体系中的网络层和传输层
    在这里插入图片描述

    ③循环冗余校验 (Cyclic Redundancy Check,CRC)

    数据链路层广泛使用的校验方法

    CRC校验码计算方法

    • 设原始数据D为k位二进制位模式
    • 如果要产生n位CRC校验码,事先选定一个n+1位二进制位模式G (称为生成多项式,收发双方提前商定),G的最高位为1
    • 将原始数据D乘以2^n (相当于在D后面添加 n 个 0),产生k+n位二进制位模式,用G对该位模式做模2除,得到余数R(n位,不足n位前面用0补齐)即为CRC校验码

    在这里插入图片描述

    CRC校验码计算示例

    • D = 1010001101
    • n = 5
    • G = 110101 或 G = x5 + x4 + x2 + 1
    • R = 01110
    • 实际传输数据:101000110101110
      在这里插入图片描述

    ④汉明码

    目标:以奇偶校验为基础,找到出错位置,提供1位纠错能力

    • 给定n位待发送的数据,首先确定校验位的个数k(根据2^k≥k+n+1)
    • 确定校验位在码流中的位置,2^i,i=0,1,2,……,得到校验位P_1,P_2,P_4,P_8,……
    • 确定分组,即每个校验位分别负责哪些数据位
      P_1负责位置号的二进制符合XXXX1形式的数据位,即1,3,5,7,9,……
      P_2负责位置号的二进制符合XXX1X形式的数据位,即2,3,6,7,10,……
      P_3负责位置号的二进制符合XX1XX形式的数据位,即4,5,6,7,12,13,14,15,……
    • 基于偶校验确定每组的校验位(0或1)

    注: 汉明码是采用奇偶校验的码。它采用了一种非常巧妙的方式,把这串数字分了组,通过分组校验来确定哪一位出现了错误。

    实际的海明码编码的过程也并不复杂,我们通过用不同过的校验位,去匹配多个不同的数据组,确保任何一个数据位出错,都会产生一个多个校验码位出错的唯一组合。这样,在出错的时候,我们就可以反过来找到出错的数据位,并纠正过来。当只有一个校验码位出错的时候,我们就知道实际出错的是校验码位了。

    5.流量控制

    链路层存在的另一个问题:接收方的处理速率

    • 接收方的接收缓冲区溢出

    解决方案

    • 基于反馈 (feedback-based) 的流量控制
      接收方反馈,发送方调整发送速率
    • 基于速率 (rate-based) 的流量控制
      发送方根据内建机制,自行限速

    6.媒体接入控制 MAC (Medium Access Control)子层

    数据链路层分为两个子层:
    MAC子层:介质访问
    LLC子层:承上启下(弱层)
    在这里插入图片描述

    6.1 信道分配问题

    ① 时分多址接入-TDMA

    TDMA: time division multiple access

    • 按顺序依次接入并使用信道
    • 每个用户使用固定且相同长度的时隙
    • 某时隙轮到某用户使用时,该用户没有数据要发送,则该时隙被闲置

    例子: 6-user LAN, 1,3,4时隙有数据发送, 2,5,6时隙被闲置
    在这里插入图片描述

    ② 频分多址接入-FDMA

    FDMA: frequency division multiple access

    • 信道总频带被划分为多个相同宽度的子频带
    • 每个用户占用一个子频带,不管用户是否有数据发送

    例子: 6-user LAN, 1,3,4频带有数据发送, 2,5,6频带被闲置
    在这里插入图片描述

    6.2 多路访问协议

    在这里插入图片描述

    6.2.1 随机访问协议

    特点:冲突不可避免

    ①ALOHA

    纯ALOHA协议

    原理:想发就发!

    特点:

    • 冲突:两个或以上的帧
    • 随时可能冲突
    • 冲突的帧完全破坏
    • 破坏了的帧要重传

    分隙ALOHA

    • 分隙ALOHA是把时间分成时隙(时槽)
    • 时隙的长度对应一帧的传输时间。
    • 帧的发送必须在时隙的起点。
    • 冲突只发生在时隙的起点
      在这里插入图片描述
    ②载波侦听多路访问协议CSMA

    特点:“先听后发”
    改进ALOHA的侦听/发送策略分类
    在这里插入图片描述

    非持续式CSMA

    1.特点
    ①经侦听,如果介质空闲,开始发送
    ②如果介质忙,则等待一个随机分布的时间,然后重复步骤①

    2.好处
    等待一个随机时间可以减少再次碰撞冲突的可能性

    3.缺点
    等待时间内介质上如果没有数据传送,这段时间是浪费的


    持续式CSMA

    p-持续式CSMA

    1.特点

    ①经侦听,如介质空闲,那么以 p的概率 发送,以(1–p)的概率延迟一个时间单元发送
    ②如介质忙,持续侦听,一旦空闲重复①
    ③如果发送已推迟一个时间单元,再重复步骤①

    1-持续式CSMA

    1.特点
    ①经侦听,如介质空闲,则发送
    ②如介质忙,持续侦听,一旦空闲立即发送
    ③如果发生冲突,等待一个随机分布的时间再重复步骤①

    2.好处:持续式的延迟时间要少于非持续式

    3.主要问题:如果两个以上的站等待发送,一旦介质空闲就一定会发生冲突

    4.注意
    1-持续式是p-持续式的特例

    6.2.2 受控访问协议

    在这里插入图片描述

    特点:克服了冲突

    ①位图协议(预留协议)

    在这里插入图片描述

    在这里插入图片描述

    竞争期:在自己的时槽内发送竞争比特

    • 举手示意
    • 资源预留

    传输期:按序发送

    • 明确的使用权,避免了冲突
    ②令牌传递

    令牌:发送权限

    令牌的运行:发送工作站去抓取,获得发送权

    • 除了环,令牌也可以运行在其它拓扑上,如令牌总线
    • 发送的帧需要目的站或发送站将其从共享信道上去除;防止无限循环

    缺点:令牌的维护代价

    在这里插入图片描述

    ③二进制倒计数协议

    在这里插入图片描述

    站点:编序号,序号长度相同
    竞争期:有数据发送的站点从高序号到低序号排队,高者得到发送权
    特点:高序号站点优先

    6.2.3 有限竞争协议

    利用上述二者的优势

    ①自适应树搜索协议(Adaptive Tree Walk Protocol)
    • 在一次成功传输后的第一个竞争时隙,所有站点同时竞争。
    • 如果只有一个站点申请,则获得信道。
    • 否则在下一竞争时隙,有一半站点参与竞争(递归),下一时隙由另一半站点参与竞争
    • 即所有站点构成一棵完全二叉树。
      在这里插入图片描述

    6.3虚拟局域网VLAN

    广播域(Broadcasting Domain)

    • 广播域是广播帧能够到达的范围;
    • 缺省情况下,交换机所有端口同属于一个广播域,无法隔离广播域;
    • 广播帧在广播域中传播,占用资源,降低性能,且具有安全隐患。

    在这里插入图片描述

    VLAN是一个在物理网络上根据用途,工作组、应用等来逻辑划分的局域网络,与用户的物理位置没有关系。

    在这里插入图片描述

    通过路由器或三层交换机进行VLAN间路由,实现VLAN间通信。
    在这里插入图片描述
    VLAN类型

    • 基于端口的VLAN
      在这里插入图片描述

    • 基于MAC地址的VLAN
      在这里插入图片描述

    • 基于协议的VLAN
      在这里插入图片描述

    • 基于子网的VLAN
      在这里插入图片描述

    6.4无线局域网WLAN

    无线局域网(Wireless Local Area Network,WLAN):指以无线信道作为传输介质的计算机局域网

    基础架构模式(Infrastructure)
    在这里插入图片描述

    • 分布式系统(DS)
    • 访问点(AP)
    • 站点(STA)
    • 基本服务集(BSS)
    • 扩展服务集(ESS)
    • 站点之间通信通过AP转发

    自组织模式(Ad hoc)
    在这里插入图片描述

    • 站点(STA)
    • 独立基本服务集(IBSS)
    • 站点之间直接通信
    • 共享同一无线信道

    无线局域网需要解决的问题

    1.有限的无线频谱带宽资源

    • 通道划分、空间重用
    • 提高传输速率,解决传输问题
    • 提高抗干扰能力和保密性

    2.共享的无线信道

    • 介质访问控制方法(CSMA/CA)
    • 可靠性传输、安全性

    3.组网模式管理

    • BSS构建、认证、关联
    • 移动性支持(漫游)
    • 睡眠管理(节能模式)

    四、网络层

    1.网络层概述

    网络层在数据链路层提供的两个相邻端点之间的数据帧的传送功能上,进一步管理网络中的数据通信,将数据设法从源端经过若干个中间节点传送到目的端,从而向运输层提供最基本的端到端的数据传送服务。
    在这里插入图片描述

    2.网络层关键功能

    • 路由(控制面)
      • 选择数据报从源端到目的端的路径
      • 核心:路由算法与协议
    • 转发(数据面)
      • 将数据报从路由器的输入接口传送到正确的输出接口

    3.Internet网际协议

    3.1 IPv4协议及其相关技术

    3.1.1 基本概念

    IPv4协议,网际协议版本4,一种无连接的协议,是互联网的核心,也是使用最广泛的网际协议版本,其后继版本为IPv6

    internet协议执行两个基本功能

    • 寻址(addressing)
    • 分片(fragmentation)

    3.1.2 IPv4数据报格式

    在这里插入图片描述

    • 版本: 4bit ,表示采用的IP协议版本
    • 首部长度: 4bit,表示整个IP数据报首部的长度
    • 区分服务: 8bit ,该字段一般情况下不使用
    • 总长度: 16bit ,表示整个IP报文的长度,能表示的最大字节为2^16-1=65535字节
    • 标识: 16bit , IP软件通过计数器自动产生,每产生1个数据报计数器加1;在ip分片以后,用来标识同一片分片
    • 标志: 3bit,目前只有两位有意义。
      MF,置1表示后面还有分片,置0表示这是数据报片的最后1个;
      DF,不能分片标志,置0时表示允许分片
    • 片偏移: 13bit,表示IP分片后,相应的IP片在总的IP片的相对位置
    • 生存时间TTL(Time To Live) :8bit,表示数据报在网络中的生命周期,用通过路由器的数量来计量,即跳数(每经过一个路由器会减1)
    • 协议:8bit,标识上层协议(TCP/UDP/ICMP…)
    • 首部校验和:16bit ,对数据报首部进行校验,不包括数据部分
    • 源地址:32bit,标识IP片的发送源IP地址
    • 目的地址:32bit,标识IP片的目的地IP地址
    • 选项:可扩充部分,具有可变长度,定义了安全性、严格源路由、松散源路由、记录路由、时间戳等选项
    • 填充:用全0的填充字段补齐为4字节的整数倍

    3.1.3 数据报分片

    分片原因

    数据报长度大于传输链路的MTU

    MTU(Maximum Transmission Unit), 最大传输单元

    • 链路MTU
    • 路径MTU (Path MTU)

    分片策略

    • 允许途中分片:根据下一跳链路的MTU实施分片
    • 不允许途中分片:发出的数据报长度小于路径MTU(路径MTU发现机制)

    重组策略

    • 途中重组,实施难度太大
    • 目的端重组(互联网采用的策略)
    • 重组所需信息:原始数据报编号、分片偏移量、是否收集所有分片

    在这里插入图片描述

    在这里插入图片描述
    IPv4分片策略

    • IPv4分组在传输途中可以多次分片
      • 源端系统,中间路由器(可通过标志位设定是否允许路由器分片,DF标志位)
    • IPv4分片只在目的IP对应的目的端系统进行重组
    • IPv4分片、重组字段在基本IP头部
      • 标识、标志、片偏移
    • IPv6分片机制有较大变化(见IPv6部分的介绍)

    注:分组 (packet) 与 帧(frame)的关系

    在这里插入图片描述

    3.1.4 IP协议功能及报头字段总结

    网络层基本功能

    • 支持多跳寻路将IP数据报送达目的端:目的IP地址
    • 表明发送端身份:源IP地址
    • 根据IP头部协议类型,提交给不同上层协议处理:协议

    其它相关问题

    • 数据报长度大于传输链路的MTU的问题,通过分片机制解决:标识、标志、片偏移
    • 防止循环转发浪费网络资源(路由错误、设备故障…),通过跳数限制解决:生存时间TTL
    • IP报头错误导致无效传输,通过头部机校验解决:首部校验和

    3.2 IP地址

    3.2.1 概述

    • IP地址,网络上的每一台主机(或路由器)的每一个接口都会分配一个全球唯一的32位的标识符

    • 将IP地址划分为固定的类,每一类都由两个字段组成

    • 网络号相同的这块连续IP地址空间称为地址的前缀,或网络前缀

    • IP地址共分为A、B、C、D、E五类,A类、B类、C类为单播地址

    • IP地址的书写采用点分十进制记法,其中每一段取值范围为0到255

    在这里插入图片描述

    IP特殊地址
    在这里插入图片描述

    3.2.1 子网划分

    • 子网划分(subnetting),在网络内部将一个网络块进行划分以供多个内部网络使用,对外仍是一个网络
    • 子网(subnet ),一个网络进行子网划分后得到的一系列结果网络称为子网
    • 子网掩码(subnet mask ),与 IP 地址一一对应,是32 bit 的二进制数,置1表示网络位,置0表示主机位
    • 子网划分减少了 IP 地址的浪费、网络的组织更加灵活、便于维护和管理
      在这里插入图片描述

    在这里插入图片描述

    3.2.3 无类域间路由

    • 将32位的IP地址划分为前后两个部分,并采用斜线记法,即在IP地址后加上“/”,然后再写上网络前缀所占位数

    在这里插入图片描述

    • 一个 CIDR 地址块可以表示很多地址,这种地址的聚合常称为路由聚合(route aggregation),也称为构成超网 (supernet)
    • 聚合技术在Internet中大量使用,它允许前缀重叠,数据包按具体路由的方向发送,即具有最少IP地址的最长匹配前缀

    注:当路由器收到一个IP数据包时,它会将数据包的目的IP地址与自己本地路由表中的所有路由表进行逐位(Bit-By-Bit)对比,直到找到匹配度最长的条目,这就是最长前缀匹配机制。(路由比对之前会用相应路由的目的网络掩码进行逻辑与运算,再拿结果与路由路径比对)

    3.3 DHCP动态主机配置协议

    DHCP :动态主机配置协议

    • 当主机加入IP网络,允许主机从DHCP服务器动态获取IP地址
    • 可以有效利用IP地址,方便移动主机的地址获取

    工作模式:客户/服务器模式( C/S )
    基于 UDP 工作,服务器运行在 67 号端口, 客户端运行在 68 号端口

    在这里插入图片描述

    • DHCP 客户从UDP端口68以广播形式向服务器发送发现报文(DHCPDISCOVER)
    • DHCP 服务器广播发出提供报文(DHCPOFFER)
    • DHCP 客户从多个DHCP服务器中选择一个,并向其以广播形式发送DHCP请求报文(DHCPREQUEST)
    • 被选择的DHCP服务器广播发送确认报文(DHCPACK)

    3.4 ARP地址解析协议

    背景
    网络设备有数据要发送给另一台网络设备时,必须要知道对方的网络层地址(即IP地址)。IP地址由网络层来提供,但是仅有IP地址是不够的,IP数据报文必须封装成帧才能通过数据链路进行发送。数据帧必须要包含目的MAC地址,因此发送端还必须获取到目的MAC地址。通过目的IP地址二获取的MAC地址的过程是由ARP(Address Resolution Protocol)协议来实现的。

    注:因为下层协议是通过MAC地址来确定各自身份的,所以下层发送必须要MAC地址

    IP 与 MAC地址
    在这里插入图片描述

    ARP协议工作过程
    在这里插入图片描述

    • A已知B的IP地址,需要获得B的MAC地址(物理地址)
    • 如果A的ARP表中缓存有B的IP地址与MAC地址的映射关系,则直接从ARP表获取
    • 如果A的ARP表中未缓存有B的IP地址与MAC地址的映射关系,则A广播包含B的IP地址的ARP query分组
      • 在局域网上的所有节点都可以接收到ARP query
    • B接收到ARP query分组后,将自己的MAC地址发送给A
    • A在ARP表中缓存B的IP地址和MAC地址的映射关系
      • 超时时删除

    路由到另一个局域网
    在这里插入图片描述

    • A创建IP数据包(源为A、目的为E)
    • 在源主机A的路由表中找到路由器R的IP地址223.1.1.4
    • A根据R的IP地址223.1.1.4,使用ARP协议获得R的MAC地址
    • A创建数据帧(目的地址为R的MAC地址)
    • 数据帧中封装A到E的IP数据包
    • A发送数据帧,R接收数据帧

    3.5 网络地址转换(NAT)

    定义
    网络地址转换(NAT)用于解决IPv4地址不足的问题,是一种将私有(保留)地址转化为公有IP地址的转换技术

    私有IP地址:
    A类地址:10.0.0.0–10.255.255.255
    B类地址:172.16.0.0–172.31.255.555
    C类地址:192.168.0.0–192.168.255.255

    NAT工作机制
    在这里插入图片描述

    • 出数据报:外出数据报用 NAT IP地址(全局), 新port # 替代 源IP地址(私有), port #

    • NAT转换表:每个 (源IP地址, port #)到(NAT IP地址, 新port #) 映射项

    • 入数据报:对每个入数据报的地址字段用存储在NAT表中的(源IP地址, port #)替代对应的 (NAT IP地址, 新port #)

    • NAT根据不同的IP上层协议进行NAT表项管理
      TCP,UDP,ICMP

    • 传输层TCP/UDP拥有16-bit 端口号字段
      所以一个WAN侧地址可支持60,000个并行连接

    NAT的优势

    • 节省合法地址,减少地址冲突
    • 灵活连接Internet
    • 保护局域网的私密性

    3.6 ICMP: 互联网控制报文协议

    ICMP: 互联网控制报文协议

    • ICMP 允许主机或路由器报告差错情况和提供有关异常情况的报告
    • 由主机和路由器用于网络层信息的通信
    • ICMP 报文携带在IP 数据报中: IP上层协议号为1

    ICMP报文类型

    • ICMP 差错报告报文
      • 终点不可达:不可达主机、不可达网络,无效端口、协议
    • ICMP 询问报文
      • 回送请求/回答 (ping使用)

    ICMP 报文格式
    在这里插入图片描述

    • ICMP报文的前 4 个字节包含格式统一的三个字段:类型、代码、检验和
    • 相邻的后四个字节内容与ICMP的报文类型有关

    ICMP报文类型及功能
    在这里插入图片描述

    4.路由算法

    路由算法须满足的特性:

    • 正确性
    • 简单性
    • 鲁棒性
    • 稳定性
    • 公平性
    • 有效性

    根据路由算法是否随网络的通信量或拓扑自适应划分

    • 静态路由选择策略(非自适应路由选择)
    • 动态路由选择策略(自适应路由选择)

    4.1 距离向量路由

    算法基本思想

    • 每个节点周期性地向邻居发送它自己到某些节点的距离向量;

    • 当节点x接收到来自邻居的新DV估计,它使用B-F方程更新其自己的DV :
      Dx(y) ← minv{c(x,v) + Dv(y)} for each node y ∊ N

    • 上述过程迭代执行,Dx(y)收敛为实际最小费用 dx(y)

    距离向量算法特点:迭代的、分布式的

    • 每次本地迭代由下列引起: 本地链路费用改变、邻居更新报文
    • 分布式:各节点依次计算,相互依赖

    注:路由器只掌握物理相连的邻居以及链路费用

    算法过程

    • 路由器启动时初始化自己的路由表

      • 初始路由表包含所有直接相连的网络路径,距离均为0
        在这里插入图片描述
    • 路由器周期性地向其相邻路由器广播自己知道的路由信息

    • 相邻路由器可以根据收到的路由信息修改和刷新自己的路由表
      在这里插入图片描述

    • 路由器经过若干次更新后,最终都会知道到达所有网络的最短距离

    • 所有的路由器都得到正确的路由选择信息时网络进入“收敛”(convergence)状态

    在这里插入图片描述

    特殊情况考虑

    计数到无穷问题(The Count-to-Infinity Problem)

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    好消息传播快,坏消息传播慢,是距离向量路由的一个主要缺点

    4.2 链路状态路由

    注:所有路由器掌握完整的网络拓扑和链路费用信息

    算法过程

    链路状态(Link State)路由可分为五个部分:

    1. 发现邻居,了解他们的网络地址;
      在这里插入图片描述

    2. 设置到每个邻居的成本度量;

    • 开销/度量/代价:
      • 自动发现设置或人工配置
      • 度量:带宽、跳数、延迟、负载、可靠性等
    • 常用度量:链路带宽(反比)
      • 例如:1-Gbps以太网的代价为1,100-Mbps以太网的代价为10
    • 可选度量:延迟
      • 发送一个echo包,另一端立即回送一个应答
      • 通过测量往返时间RTT,可以获得一个合理的延迟估计值
    1. 构造一个分组,分组中包含刚收到的所有信息;

    构造链路状态分组(link state packet,LSP)

    • 发送方标识
    • 序列号
    • 年龄
    • 邻居列表

    在这里插入图片描述

    1. 将此分组发送给其他的路由器;
    • 每个LSP分组包含一个序列号,且递增
    • 路由器记录所收到的所有(源路由器、序列号)对
    • 当一个新分组到达时,路由器根据记录判断:
      • 如果是新分组,洪泛广播
      • 如果是重复分组,丢弃
      • 如果是过时分组,拒绝
    1. 计算到其他路由器的最短路径。

    Dijkstra算法示例
    D(k):从计算节点到目的节点k当前路径代价
    p(k):从计算节点到目的节点k的路径中k节点的前继节点

    在这里插入图片描述

    距离向量和链路状态算法比较

    网络状态信息交换的范围

    • DV:邻居间交换
    • LS:全网扩散

    网络状态信息的可靠性

    • DV:部分道听途说
    • LS:自己测量

    4.3 层次路由

    产生原因

    • 过于庞大的路由表存储、查找困难,路由信息交互开销高

    现实情况:

    • 地址分配往往是随机的,难以进行高效的地址聚合
    • 每个网络的网络管理员有自己的管理方法和思路,并不希望每个路由器都干涉本网络内部的地址分配等问题

    层次路由可以解决:

    • 网络扩展性问题:当网络扩大时,控制路由表条目和路由表存储空间的增长
    • 管理的自治问题:网络管理员可以控制和管理自己网络的路由

    基本思路

    • 互联网由大量不同的网络互连,每个管理机构控制的网络是自治的

    • 自治系统(AS,Autonomous System)

      • 一个管理机构控制之下的网络
      • 一个AS内部通常使用相同的路由算法/路由协议,使用统一的路由度量(跳数、带宽、时延 …)
      • 不同的AS可以使用不同的路由算法/路由协议
      • 每个AS有一个全球唯一的ID号:AS ID
    • 自治系统内的还可以进一步划分层次:私有自治系统或区域

    效果
    在这里插入图片描述

    4.4 广播路由

    广播(Broadcasting):源主机同时给全部目标地址发送同一个数据包

    实现方法

    ①给每个主机单独发送一个数据包

    • 效率低、浪费带宽
    • Server需要知道每个目的地址

    ②多目标路由(multi-destination routing)

    • 在需要转发的路由器线路复制一次该数据报
    • 网络利用率高
    • Server依然需要知道所有的目的地址

    注:以上方法难以实现

    ③泛洪(flooding)

    • 一种将数据包发送到所有网络节点的简单方法
    • 将每个进入数据包发送到除了进入线路外的每条出去线路

    用途

    • 保证性:一种有效广播手段,可确保数据包被传送到网络中每个节点
    • 鲁棒性:即使大量路由器被损坏,也能找到一条路径(如果存在)
    • 简单性:仅需知道自己的邻居

    无控制的泛洪

    • 实现广播最显而易见的技术
    • 环路可能导致广播风暴
    • 路由器可能收到多个副本
    • 节点需要跟踪已泛洪的数据包以阻止洪泛
    • 即使利用跳数来限制,也会出现成倍爆炸

    解决方法:受控制的泛洪(每个路由器进行有选择的泛洪)

    • 序号控制泛洪
    • 逆向路径转发

    ④生成树(spanning tree)

    • 源节点向所有属于该生成树的特定链路发送分组
    • 改进了逆向路径转发
    • 没有环路
    • 最佳使用带宽
    • 最少副本,消除了冗余分组
    • 一个路由器可以不必知道整颗树,只需要知道在一颗树中的邻居即可

    在这里插入图片描述

    5.Internet路由协议

    5.1 路由选择协议RIP

    概述

    • 路由选择协议RIP( Routing Information Protocol)是基于距离矢量算法的协议
    • 使用跳数衡量到达目的网络的距离
      • RIP 认为一个好的路由就是它通过的路由器的数目少,即“距离短
      • RIP 允许一条路径最多只能包含 15 个路由器
    • RIP协议的基本思想
      • 仅和相邻路由器交换信息
      • 路由器交换的内容是自己的路由表
      • 周期性更新:30s

    工作过程

    • 初始化

    在这里插入图片描述

    • 周期性更新
      在这里插入图片描述

    小结

    RIP协议的特点

    • 算法简单,易于实现
    • 收敛慢
    • 需要交换的信息量较大

    RIP协议的适用场合

    • 中小型网络

    RIP协议的防环路机制

    • 触发更新
    • 毒性反转
    • 水平分割
    • 其他

    5.2 BGP-外部网关路由协议

    路由协议

    • 内部网关协议 IGP: 有 RIP 和、OSPF、ISIS 等多种具体的协议
    • 外部网关协议 EGP:目前使用的协议就是 BGP

    边界网关协议BGP (Border Gateway Protocol)

    • 目前互联网中唯一实际运行的自治域间的路由协议

    BGP功能

    • eBGP:从相邻的AS获得网络可达信息
    • iBGP: 将网络可达信息传播给AS内的路由器
    • 基于网络可达信息和策略决定到其他网络的“最优”路由

    BGP会话: 两个BGP路由器通过TCP连接交换BGP报文

    • 通告到不同网络前缀的路径,即路径向量协议

    BGP路径通告
    在这里插入图片描述

    • AS2的路由器2c从AS3的路由器3a接收到路径AS3, X
    • 根据AS2的策略,AS2的路由器2c接受路径AS3, X,通过iBGP传播给AS2的所有路由器
    • 根据AS2策略,AS2的路由器2a通过eBGP向AS1的路由器1c通告从AS3的路由器3a接收到路径AS2, AS3, X

    在这里插入图片描述

    路由器可能会学到多条到达目的网络的路径:

    • AS1的路由器1c从2a学到路径AS2, AS3, X
    • AS1的路由器1c从3a学到路径AS3, X
      由策略,AS1路由器1c可能选择路径AS3, X, 并在AS1中通过iBGP通告路径

    6.路由器的工作原理

    6.1 路由器概述

    路由器是互联网最主要的网络设备,包含2个核心功能

    • 控制层:运行各种路由协议:BGP、OSPF、RIP,学习去往不同目的的转发路径:路由表
    • 数据层:根据上述路由表,将收到的IP分组转发到正确的下一跳链路

    在这里插入图片描述

    6.2 路由器控制层

    • 路由器可同时运行多个路由协议
    • 路由器也可不运行任何路由协议,只使用静态路由和直连路由
    • 路由管理根据路由优先级,选择最佳路由,形成核心路由表
    • 控制层将核心路由表下发到数据层,形成转发表(FIB)
    • 若存在多个“去往同一目的IP前缀”的不同类型路由,路由器根据优先级选择最佳路由
    • 优先级数值越小,优先级越高
      在这里插入图片描述

    6.3 路由器数据层

    路由器中IP报文转发核心功能

    • 链路层解封装,IP头部校验
    • 获取报文目的IP地址
    • 用目的IP地址,基于最长前缀匹配规则查询转发表
    • 查询失败,丢弃报文
    • 查询成功
      • 获取转发出接口和下一跳IP地址
      • IP头部“TTL”字段值减1,重新计算IP头部“校验和”
      • 重新进行链路层封装,发送报文

    注:普通IP报文转发过程中,路由器不查看传输层及以上层协议的内容

    • IP报文在路由器转发前后的变化

      • 链路层封装更新,IP头部“TTL”减1,IP头部“校验和”更新
    • 数据报在不同硬件单元的处理

      • 报文输入的接口卡
        • 链路层解封装
        • 转发表查询(该工作在输入接口卡处理)
        • 通过交换结构将报文排队发往目的接口卡(发送过快将产生拥塞)
      • 交换结构
        • 从输入接口卡发往输出接口卡
      • 报文输出的接口卡
        • 从交换结构接收报文(排队进行后续处理,到达太快将产生拥塞)
        • 链路层封装
        • 从输出接口发送报文

    3种典型的交换结构

    在这里插入图片描述

    7.拥塞控制算法

    7.1 概述

    拥塞
    网络中存在太多的数据包导致数据包传输延迟或丢失,从而导致网络吞吐量下降

    拥塞控制(congestion control)
    需要确保通信子网能够承载用户提交的通信量,是一个全局性问题,涉及主机、路由器等多种因素

    产生拥塞的原因

    • 主机发送到网络的数据包数量过多,超过了网络的承载能力
    • 突发的流量填满了路由器的缓冲区,造成某些数据包会被丢弃

    拥塞控制的基本策略

    • 开环控制----事先对通信流参数进行协商,协商后,不管网络是拥塞还是带宽充足,参数不能动态改变
      • 开环控制属于预防性拥塞控制,它竭力使网络总是处于无拥塞状态运行。开环控制的方法包括决定什么时候接受新流量,什么时候丢弃数据包和丢弃哪些数据包。其缺点是没有考虑网络的当前状态
    • 闭环控制—根据网络状态进行动态控制,包括两部分:反馈机制控制机制。闭环控制方法分为两个子类:显式反馈隐式反馈

    7.2 流量调节

    • 抑制包(Choke Packets):用于通知发送方减小发送量,路由器选择一个被拥塞的数据包,给该数据包的源主机返回一个抑制包,抑制包中的目的地址取自该拥塞数据包。源主机收到抑制包后,减少发向特定目的地址的流量
    • 逐跳的抑制包(Hop-by-Hop Choke Packets):在高速或长距离网络中,由于源主机响应太慢,抑制包算法对拥塞控制的效果并不好,可采用逐跳抑制方法;其核心思想是抑制包对它经过的每个路由器都起作用,能够迅速缓解发生拥塞处的拥塞,但要求上游路由器有更大的缓冲区
    • 显式拥塞通告(ECN,Explicit Congestion Notification),在IP包头中记录数据包是否经历了拥塞。在数据包转发过程中,路由器可以在包头中标记为经历拥塞,然后接收方在它的下一个应答数据包里显示该标记作为显式拥塞信号
    • RFC2474中重新定义TOS域为包含一个6位的区分服务码点(DSCP) 和2位未使用位;RFC3168重新定义RFC2474中TOS域未使用的两位为ECN域,包含如下值:
      00:发送主机不支持ECN
      01或者10:发送主机支持ECN
      11:路由器正在经历拥塞

    7.3 随机早期检测RED (Random Early Detection)

    • 使路由器的队列维持两个参数,即队列长度最小门限 THmin 和最大门限 THmax
    • RED 对每一个到达的数据报都先计算平均队列长度 LAV
    • 若平均队列长度小于最小门限 THmin ,则将新到达的数据报放入队列进行排队
    • 若平均队列长度超过最大门限 THmax,则将新到达的数据报丢弃
    • 若平均队列长度在最小门限 THmin 和最大门限THmax 之间,则按照某一概率 p 将新到达的数据报丢弃
    • RED 将路由器的到达队列划分成为三个区域
      在这里插入图片描述

    丢弃概率 p 与 THmin 和 Thmax 的关系

    • 当 LAV <Thmin 时,丢弃概率 p = 0
    • 当 LAV >Thmax 时,丢弃概率 p = 1
    • 当 THmin < LAV < THmax时, 0  p  1
      例如,按线性规律变化,从 0 变到 pmax

    8.服务质量

    8.1概述

    问题的提出

    • 互联网本身只能提供“尽力而为的服务”或称“尽最大努力交付的服务”
    • 当互联网越来越多的用于传输多媒体信息时,由于这些实时业务对网络的传输延时、延时抖动等特性较为敏感,这样网络的传输质量就难以保障了
    • IP网络不能保证特定业务的QoS要求,已经成为IP网络发展的巨大障碍
    • 网络的服务质量越来越多的引起人们的关注,甚至成为网络技术研究的热点问题

    什么是网络服务质量?(QoS, Quality of Service)

    QoS是网络在传输数据流时要满足一系列服务请求,具体可以量化为带宽、时延、抖动、丢包率等性能指标

    8.2 流量整形

    流量整形(traffic shaping):其作用是限制流出某一网络的某一连接的流量与突发,使这类报文以比较均匀的速度向外发送

    ①漏桶算法

    • 到达的数据包(网络层的PDU)被放置在底部具有漏孔的桶中(数据包缓存)
    • 漏桶最多可以排队b个字节,漏桶的这个尺寸受限于内存。如果数据包到达的时候漏桶已经满了,那么数据包应被丢弃
    • 数据包从漏桶中漏出,以常量速率(r字节/秒)注入网络,因此平滑了突发流量

    在这里插入图片描述

    ②令牌桶算法

    • 产生令牌:周期性的以速率r向令牌桶中增加令牌,桶中的令牌不断增多。如果桶中令牌数已到达上限,则丢弃多余令牌
    • 消耗令牌:输入数据包会消耗桶中的令牌。在网络传输中,数据包的大小通常不一致。大的数据包相较于小的数据包消耗的令牌要多
    • 判断是否通过:输入数据包经过令牌桶时存在两种可能:输出该数据包或者被丢弃。当桶中的令牌数量可以满足数据包对令牌的需求,则将数据包输出,否则将其丢弃

    注:漏桶算法和令牌桶算法的区别在于漏桶算法输出的流量永远不可能超过一定限制,而令牌桶算法可以容忍短时间内的高流量输出,对于一些突发流量的需求比较友好

    8.3 数据包调度

    在同一个流的数据包之间以及在竞争流之间分配路由器资源的算法称为包调度算法,它负责分配带宽和其他路由器资源,负责确定把缓冲区中的哪些数据包发送到输出链路上

    • 先来先服务FCFS(First-Come First-Serve)
    • 公平队列算法(Fair Queueing/Round Robin)
    • 加权公平队列算法(Weighted Fair Queueing)
    • 优先级调度(Priority Scheduling)

    9.三层交换

    9.1 三层交换的技术背景

    • 二层交换网络中的广播,限制了网络规模的扩展
      • 交换机对目标地址无法匹配的数据帧进行广播转发
      • 交换机对目标地址为广播地址的数据帧进行广播转发
      • 交换机为维护生成树状态产生大量的桥协议数据单元(Bridge Protocol Data Unit,BPDU)
      • 这些广播帧会大量消耗网络资源,并频繁影响用户的数据通信
    • VLAN虽然可以将广播的影响限定在一定范围内,但同时也隔离了正常的用户间数据通信
    • 传统路由器致力于解决VLAN间互联互通,但是其转发效率和拓扑复杂性带来的网络通信瓶颈无法有效应对规模扩展

    9.2 三层交换的动机

    • 利用第三层协议中的信息来加强第二层交换功能,形成带有路由功能的交换
    • 融合VLAN 间的二层隔离和三层互通,消除大规模网络中广播对性能的影响
    • 简化网络配置,简化网络拓扑,优化网络管理,降低网络部署成本

    在这里插入图片描述

    9.3 三层交换机的工作原理

    在这里插入图片描述

    10.虚拟专用网VPN (Virtual Private Network)

    10.1 VPN的技术背景

    • 计算机网络按用途分类
      • 专用、公用
    • 专用网络的实现方式
      • 使用专用链路:铺设、租用(费用高,不灵活)
      • 使用公共链路:不安全
    • 虚拟专用网VPN (Virtual Private Network)
      • 专用网络的经济、可靠、灵活的解决方案
      • 利用安全隧道技术将专用网络在公共网络上扩展
    • VPN的设计原则
      • 安全性、隧道与加密、数据验证、用户验证、防火墙与攻击检测

    10.2 VPN的原理

    • VPN指利用公用网络架设专用网络的远程访问技术
    • VPN通过隧道技术在公共网络上模拟出一条点到点的逻辑专线,从而达到安全数据传输的目的

    在这里插入图片描述

    在这里插入图片描述

    • VPN对数据机密性和完整性的保护
      在这里插入图片描述

    10.3 VPN的实现方式

    • 用VPN连接合作伙伴
      在这里插入图片描述

    • 用VPN实现专用网络的远程访问
      在这里插入图片描述

    11.IPv6协议

    初始动机:应付“32-bit地址空间耗尽”问题(CIDR和NAT都无法从根本上解决地址短缺问题),增加地址空间
    IPv6 地址

    • 地址长度为128bit,是IPv4地址长度的4倍
    • IPv6地址空间数量约为3*1038
    • IPv6地址表示法,冒分十六进制,x : x : x : x : x : x : x : x
      • 简化方法:每个x前面的0可省略,可把连续的值为0的x表示为“::”, 且“::”只能出现1次
      • 简化前地址,2001:0DA8:0000:0000:200C:0000:0000:00A5
      • 简化后地址,2001:DA8:0000:0000:200C::A5

    五、传输层

    1.传输层概述

    • 传输层位于应用层和网络层之间:
      • 基于网络层提供的服务,向分布式应用程序提供通信服务
    • 按照因特网的“端到端”设计原则:
      • 应用程序只运行在终端上,即不需要为网络设备编写程序
    • 站在应用程序的角度:
      • 传输层应提供进程之间本地通信的抽象:即运行在不同终端上的应用进程仿佛是直接连在一起的

    1.1 套接字

    • 设想在应用程序和网络之间存在一扇“门”:
      • 需要发送报文时:发送进程将报文推到门外
      • 门外的运输设施(因特网)将报文送到接收进程的门口
      • 需要接收报文时:接收进程打开门,即可收到报文
    • 在TCP/IP网络中,这扇“门”称为套接字(socket),是应用层和传输层的接口,也是应用程序和网络之间的API

    1.2 传输层提供的服务

    • 因特网的网络层提供“尽力而为”的服务:
      • 网络层尽最大努力在终端间交付分组,但不提供任何承诺
      • 具体来说,不保证交付,不保证按序交付,不保证数据完整,不保证延迟,不保证带宽等
    • 传输层的有所为、有所不为:
      • 传输层可以通过差错恢复、重排序等手段提供可靠、按序的交付服务
      • 但传输层无法提供延迟保证、带宽保证等服务

    1.3 因特网传输层提供的服务

    • 最低限度的传输服务:
      • 将终端-终端的数据交付扩展到进程-进程的数据交付
      • 报文检错
    • 增强服务:
      • 可靠数据传输
      • 流量控制
      • 拥塞控制
    • 因特网传输层通过UDP协议和TCP协议,向应用层提供两种不同的传输服务:
      • UDP协议:仅提供最低限度的传输服务
      • TCP协议:提供基础服务和增强服务

    2.传输层基本服务——复用和分用

    2.1 复用和分用概述

    传输层基本服务:将主机间交付扩展到进程间交付,通过复用和分用实现
    在这里插入图片描述

    • 复用
      发送方传输层将套接字标识置于报文段中,交给网络层
    • 分用
      接收方传输层根据报文段中的套接字标识,将报文段交付到正确的套接字

    2.2 套接字标识与端口号

    • 端口号是套接字标识的一部分:
      • 每个套接字在本地关联一个端口号
      • 端口号是一个16比特的数
    • 端口号的分类:
      • 熟知端口:0~1023,由公共域协议使用
      • 注册端口:1024~49151,需要向IANA注册才能使用
      • 动态和/或私有端口:49152~65535,一般程序使用
    • 报文段中有两个字段携带端口号
      • 源端口号:与发送进程关联的本地端口号
      • 目的端口号:与接收进程关联的本地端口号
        在这里插入图片描述

    2.3 TCP/UDP套接字(复用和分用)

    UDP套接字

    • 使用<IP地址,端口号>二元组标识UDP套接字
    • 服务器使用一个套接字服务所有客户
      TCP套接字
    • 使用<源IP地址,目的IP地址,源端口号,目的端口号> 四元组标识连接套接字
    • 服务器使用一个监听套接字和多个连接套接字服务多个客户,每个连接套接字服务一个客户

    3.无连接传输:UDP

    3.1 UDP报文段结构

    • UDP报文:
      • 报头:携带协议处理需要的信息
      • 载荷(payload):携带上层数据
    • 用于复用和分用的字段:
      • 源端口号
      • 目的端口号
    • 用于检测报文错误的字段:
      • 报文总长度
      • 校验和(checksum)

    在这里插入图片描述

    3.2 UDP校验和(checksum)

    校验和字段的作用: 对传输的报文段进行检错
    以下是报文段的字段

    keyhumanhex
    Source192.168.1.106c0a8 016a
    Destination11.111.111.1110b6f 6f6f
    ProtocolUDP(17)11
    Length1711
    Source Port63549f83d
    Destination Port123453039
    Length1711
    Checksum0xb12db12d
    Datahello UDP6865 6c6c 6f20 5544 5000

    将上表中所有的 16 进制数加起来,之后取反码。有一点需要注意的是,如果遇到最高位进位,那么需要对结果进行回卷,意思是

    在这里插入图片描述

    求出来的即是校验和。

    3.3 为什么需要UDP?

    为什么需要UDP?

    • 应用可以尽可能快地发送报文:
      • 无建立连接的延迟
      • 不限制发送速率(不进行拥塞控制和流量控制)
    • 报头开销小
    • 协议处理简单

    UDP适合哪些应用?

    • 容忍丢包但对延迟敏感的应用:
      如流媒体
    • 以单次请求/响应为主的应用:
      如DNS
    • 若应用要求基于UDP进行可靠传输:
      由应用层实现可靠性

    4.面向连接的传输:TCP

    4.1 可靠传输

    数据包有序、无差错到达接收端

    如何实现可靠传输,基本原则是什么?

    • 利用ACK确认
    • 重传机制
    • 差错检测

    可靠传输实现举例-Stop and Wait

    注:该实现俗称tcp的三次握手和四次挥手。三次挥手我们也常称为“请求 -> 应答 -> 应答之应答”的三个回合,主要就是为了建立连接

    建立一条TCP连接需要确定两件事:

    • 双方都同意建立连接(知晓另一方想建立连接)
    • 初始化连接参数(序号,MSS等)
      在这里插入图片描述

    四次挥手:目的就是确保断开连接时双方都是确认结束的状态

    在这里插入图片描述

    4.2 流水线技术

    由于信道上一直有数据不间断地传送,这种传输方式可获得很高的信道利用率。
    在这里插入图片描述

    ①GBN 协议(回退 N 步协议)

    发送窗口
    发送方维持的发送窗口,它的意义是:位于发送窗口内的分组都可连续发送出去,而不需要等待对方的确认。这样,信道利用率就提高了。
    发送方每收到一个确认,就把发送窗口向前滑动一个分组的位置。
    在这里插入图片描述

    累积确认

    • 接收方一般采用累积确认的方式。即不必对收到的分组逐个发送确认,而是对按序到达的最后一个分组发送确认,这样就表示:到这个分组为止的所有分组都已正确收到了
    • 优点:容易实现,即使确认丢失也不必重传。
    • 缺点:不能向发送方反映出接收方已经正确收到的所有分组的信息。

    如果发送方发送了前 5 个分组,而中间的第 3 个分组丢失了。这时接收方只能对前两个分组发出确认。发送方无法知道后面三个分组的下落,而只好把后面的三个分组都再重传一次。
    这就叫做 Go-back-N(回退 N),表示需要再退回来重传已发送过的 N 个分组
    可见当通信线路质量不好时,连续 ARQ 协议会带来负面的影响。

    ②SR 协议(选择重传协议)

    SR 协议在 GBN 协议的基础上进行了改进,它通过让发送方仅重传那些它怀疑在接收方出错(即丢失或受损)的分组而避免了不必要的重传。选择重传协议只重传真正丢失的分组。

    • 选择重传的接收窗口与发送窗口一样大
    • 选择重传协议允许与接收窗口一样多的分组失序到达,并保存这些失序到达的分组,直到连续的一组分组被交付给应用层。
    • 标记发出分组,当ACK=Sf 时,将窗口滑过所有连续的已确认的分组
      • 如果还有未确认的分组,则重发所有检测到的未被确认的分组并重启计时器
      • 如果所有分组都被确认了则停止计时器
    • 确认,确认号(ACK)只定义完好接收的那一个分组的序号,并不反馈任何其他分组的信息

    注:SR协议ack确认和GBN的累计确认不同,是一个一个确认

    计时器
    理论上选择重传协议要为每个分组使用一个计时器。当某个计时器超时后,只有相应的分组被重传。换而言之,返回N协议将所有的分组当做一个整体对待,而选择重传协议则分别对待每一个分组。但是大多数SR的运输层仅使用了一个计时器.。注意只使用一个计时器而做到跟踪所有发出去的分组的情况的做法是:标记发出分组,当ACK=Sf 时,将窗口滑过所有连续的已确认的分组,如果还有未确认的分组,则重发所有检测到的未被确认的分组并重启计时器,如果所有分组都被确认了则停止计时器。

    快速重传

    • 仅靠超时重发丢失的报文段,恢复太慢!

    • 发送方可利用重复ACK检测报文段丢失

      • 发送方通常连续发送许多报文段
      • 若仅有个别报文段丢失,发送方将收到多个重复序号的ACK
      • 多数情况下IP按序交付分组,重复ACK极有可能因丢包产生
    • TCP协议规定: 当发送方收到对同一序号的3次重复确认时,立即重发包含该序号的报文段

    • 所谓快速重传,就是在定时器到期前重发丢失的报文段

    ③TCP 可靠通信的具体实现

    • TCP 连接的每一端都必须设有两个窗口——一个发送窗口和一个接收窗口
    • TCP 的可靠传输机制用字节的序号进行控制。TCP 所有的确认都是基于序号而不是基于报文段。
    • TCP 两端的四个窗口经常处于动态变化之中。
    • TCP连接的往返时间 RTT 也不是固定不变的。需要使用特定的算法估算较为合理的重传时间

    GBN、SR和TCP小结

    Go-Back-N协议
    接收方:

    • 使用累积确认
    • 不缓存失序的分组
    • 对失序分组发送重复ACK

    发送方:

    • 超时后重传从基序号开始的所有分组

    SR
    接收方:

    • 缓存失序的分组
    • 单独确认每个正确收到的分组

    发送方:

    • 每个分组使用一个定时器
    • 仅重传未被确认的分组

    TCP协议

    接收方:

    • 使用累积确认
    • 缓存失序的报文段
    • 对失序报文段发送重复ACK
    • 增加了推迟确认

    发送方:

    • 超时后仅重传最早未确认的报文段
    • 增加了快速重传

    4.3 TCP报文段结构

    在这里插入图片描述

    • 最大段长度(MSS):
      • TCP段中可以携带的最大数据字节数
      • 建立连接时,每个主机可声明自己能够接受的MSS,缺省为536字节
    • 窗口比例因子(window scale):
      • 建立连接时,双方可以协商一个窗口比例因子
      • 实际接收窗口大小 = window size * 2^window scale
    • 选择确认(SACK):
      • 最初的TCP协议只使用累积确认
      • 改进的TCP协议引入选择确认,允许接收端指出缺失的数据字节
    • 发送序号和确认序号的含义
      在这里插入图片描述

    5.TCP流量控制

    TCP接收端

    • 使用显式的窗口通告,告知发送方可用的缓存空间大小
    • 在接收窗口较小时,推迟发送确认
    • 仅当接收窗口显著增加时,通告新的窗口大小

    TCP发送端

    • 使用Nagle算法确定发送时机
    • 使用接收窗口限制发送的数据量,已发送未确认的字节数不超过接收窗口的大小

    Nagle算法的解决方法:

    • 在新建连接上,当应用数据到来时,组成一个TCP段发送(那怕只有一个字节)
    • 在收到确认之前,后续到来的数据放在发送缓存中
    • 当数据量达到一个MSS或上一次传输的确认到来(取两者的较小时间),用一个TCP段将缓存的字节全部发走

    Nagle算法的优点:

    • 适应网络延时、MSS长度及应用速度的各种组合 常规情况下不会降低网络的吞吐量

    6.拥塞控制

    发送方根据自己感知的网络拥塞程度,限制其发送速率

    6.1 拥塞控制的类型

    • 网络辅助的拥塞控制
      • 路由器向端系统提供显式的反馈,例如:
        • 设置拥塞指示比特
        • 给出发送速率指示
      • ATM、X.25采用此类方法
    • 端到端拥塞控制
      • 网络层不向端系统提供反馈
      • 端系统通过观察丢包和延迟,自行推断拥塞的发生
      • TCP采用此类方法

    6.2 TCP拥塞控制要解决的问题

    发送方如何感知网络拥塞?

    • 发送方利用丢包事件感知拥塞:
      • 拥塞造成丢包和分组延迟增大
        -无论是丢包还是分组延迟过大,对于发送端来说都是丢包了
    • 丢包事件包括:
      -重传定时器超时
      -发送端收到3个重复的ACK

    发送方采用什么机制限制发送速率?

    • 发送方使用拥塞窗口cwnd限制已发送未确认的数据量:
      LastByteSent-LastByteAcked <= cwnd
      在这里插入图片描述

    • cwnd随发送方感知的网络拥塞程度而变化

    发送方感知到网络拥塞后,采取什么策略调节发送速率?

    ①AIMD

    • 乘性减(Multiplicative Decrease)
      • 发送方检测到丢包后,将cwnd的大小减半(但不能小于一个MSS)
      • 目的:迅速减小发送速率,缓解拥塞
    • 加性增(Additive Increase)
      • 若无丢包,每经过一个RTT,将cwnd增大一个MSS,直到检测到丢包
      • 目的:缓慢增大发送速率,避免振荡

    注:MSS是发送速率TCP建立连接时双方确定的每一个报文段所能承载的最大数据长度

    在这里插入图片描述

    ②TCP慢启动

    • 慢启动的策略:
      • 每经过一个RTT,将cwnd加倍
    • 慢启动的具体实施:
      • 每收到一个ACK段,cwnd增加一个MSS
      • 只要发送窗口允许,发送端可以立即发送下一个报文段
    • 特点:
      • 以一个很低的速率开始,按指数增大发送速率

    区分不同的丢包事件

    超时:说明网络交付能力很差
    收到3个重复的ACK:说明网络仍有一定的交付能力

    • 收到3个重复的ACK:
      • 将cwnd降至一半
      • 使用AIMD调节cwnd
    • 超时:
      • 设置门限 =cwnd/2
      • cwnd=1MSS
      • 使用慢启动增大cwnd至门限
      • 使用AIMD调节cwnd

    6.3 TCP拥塞控制的实现

    • 发送方维护变量ssthresh
    • 发生丢包时,ssthresh=cwnd/2
    • ssthresh是从慢启动转为拥塞避免的分水岭
      • cwnd低于门限时,执行慢启动
      • cwnd高于门限:执行拥塞避免
    • 拥塞避免阶段,拥塞窗口线性增长:
      • 每当收到ACK, cwnd=cwnd + MSS*(MSS/cwnd)
    • 检测到3个重复的ACK后:
      • TCP Reno实现: cwnd= ssthresh+3,线性增长
      • TCP Tahoe实现:cwnd=1 MSS,慢启动
        在这里插入图片描述

    TCP发送端的事件与动作
    在这里插入图片描述

    六、应用层

    1.应用层概述

    • 每个应用层协议都是为了解决某一应用问题,通过位于不同主机中的多个应用进程之间的通信和协同工作来完成
      • 两台主机通信实际是其对应的两个应用进程(process)在通信
      • 应用进程: 为解决具体应用问题而彼此通信的进程
    • 应用层的具体内容就是规定应用进程在通信时所遵循的协议
      • 客户/服务器(C/S, Client/Server)方式
      • 对等(P2P,Peer to Peer)方式

    1.1 应用进程通信方式

    ①客户/服务器(C/S, Client/Server)方式

    • 应用层的许多协议是基于C/S方式,例如,在移动互联网环境下,每个应用APP都是一个客户端
      • 客户(client)和服务器(server)是指通信中所涉及的2个应用进程
      • 客户/服务器方式描述的是应用进程之间服务和被服务的关系
      • 客户是服务请求方(主动请求服务,被服务)
      • 服务器是服务提供方(被动接受服务请求,提供服务)
    • C/S方式可以是面向连接的,也可以是无连接的
    • 面向连接时,C/S通信关系一旦建立,通信就是双向的,双方地位平等,都可发送和接收数据

    在这里插入图片描述

    客户进程的特点

    • 在进行通信时临时成为客户,它也可在本地进行其它的计算
    • 用户计算机上运行,在打算通信时主动向远地服务器发起通信
    • 客户方必须知道服务器进程所在主机的IP地址才能发出服务请求
    • 需要时可以与多个服务器进行通信

    服务器进程的特点

    • 专门用来提供某种服务的程序,可“同时”处理多个远地或本地客户的请求
    • 必须始终处于运行状态才有可能提供服务
    • 通信开始之前服务器进程不需要知道客户进程所在主机的IP地址,无论客户请求来自哪里,服务器进程被动等待服务请求的到来即可
    • 通常是当系统启动时即自动调用并一直运行着。某些服务器程序也可以由用户或其它进程在通信前启动
    • 被动等待并接受来自多个客户的通信请求

    ②对等(P2P,Peer to Peer)方式

    • 对等方式是指两个进程在通信时并不区分服务的请求方和服务的提供方
      • 只要两个主机都运行P2P软件,它们就可以进行平等、对等的通信
      • 双方都可以下载对方存储在硬盘中的共享文档,如果权限允许的话
    • 音频/视频应用推动了P2P对等通信方式的发展(BitTorrent)
    • 音频/视频流量已占主要比
    • P2P方式从本质上看仍然是使用了C/S方式,但强调的是通信过程中的对等,这时每一个P2P进程既是客户同时也是服务器

    在这里插入图片描述

    1.2 服务器进程工作方式

    • 循环方式(iterative mode)

      • 一次只运行一个服务进程
      • 当有多个客户进程请求服务时,服务进程就按请求的先后顺序依次做出响应 (阻塞方式)
    • 并发方式(concurrent mode)

      • 可以同时运行多个服务进程
      • 每一个服务进程都对某个特定的客户进程做出响应 (非阻塞方式)
    • 无连接循环方式服务

      • 使用无连接的UDP服务进程通常都工作在循环方式,即一个服务进程在同一时间只能向一个客户进程提供服务。(顺序服务)
      • 服务进程收到客户进程的请求后,就发送UDP用户数据报响应该客户
      • 对其他客户进程发来的请求则暂时不予理睬,这些请求都在服务端的队列中排队等候服务进程的处理
      • 当服务进程处理完毕一个请求时,就从队列中读取来自下一个客户进程的请求,然后继续处理

      在这里插入图片描述

    • 面向连接的并发方式服务

      • 面向连接的TCP服务进程通常都工作在并发服务方式,服务进程在同一时间可同时向多个客户进程提供服务。(并发服务)
      • 在TCP服务进程与多个客户进程之间必须建立多条TCP连接,每条TCP连接在其数据传送完毕后释放
      • 一个TCP连接对应一个(熟知)服务端口
      • 主服务进程在熟知端口等待客户进程发出的请求。一旦收到客户的请求,就创建一个从属服务进程,并指明从属服务进程使用临时套接字与该客户建立TCP连接,然后主服务进程继续在原来的熟知端口等待向其他客户提供服务

    在这里插入图片描述

    在这里插入图片描述

    2.域名系统

    2.1 概述

    • 域名系统(DNS,Domain Name System)是互联网重要的基础设施之一,向所有需要域名解析的应用提供服务,主要负责将可读性好的域名映射成IP地址
    • Internet采用层次结构的命名树作为主机的名字,并使用分布式的域名系统 DNS。Internet的DNS是一个联机分布式数据库系统
    • 名字到域名的解析是由若干个域名服务器程序完成的。域名服务器程序在专设的结点上运行,相应的结点也称为名字服务器(Name Server)或域名服务器(Domain Name Server)

    在这里插入图片描述

    2.2 域名系统名字空间和层次结构

    在这里插入图片描述

    在这里插入图片描述

    2.3 域名解析过程

    • 递归查询
      • 当收到查询请求报文的域名服务器不知被查询域名的IP地址时,该域名服务器就以DNS客户的身份向下一步应查询的域名服务器发出查询请求,即替本地域名字服务器继续查询
      • 较少使用
        在这里插入图片描述
    • 迭代查询
      • 当收到查询请求报文的域名服务器不知道被查询域名的IP地址时,就把自己知道的下一步应查询的域名服务器IP地址告诉本地域名字服务器,由本地域名字服务器继续向该域名服务器查询,直到得到所要解析的域名的IP地址,或者查询不到所要解析的域名的IP地址
      • 通常使用

    在这里插入图片描述

    3.电子邮件

    3.1 邮件发送的常用协议

    简单邮件传输协议SMTP(Simple Mail Transfer Protocol)——邮件服务器之间传递邮件使用的协议

    • 最终交付(邮件访问)协议::从邮件服务器的邮箱中获取邮件
      • POP3:Post Office Protocol-Version 3,第三版邮局协议
      • IMAP:Internet Message Access Protocol,Internet邮件访问协议
      • Webmail(HTTP):基于Web的电子邮件

    在这里插入图片描述

    3.2 Webmail

    Webmail——基于Web的电子邮件

    • 提供电子邮件服务的IMAP和SMTP替代方案
    • 使用Web作为界面,用户代理就是普通的浏览器
    • 用户及其远程邮箱之间的通信通过HTTP进行

    在这里插入图片描述

    4.WWW

    4.1 WWW体系结构与协议

    • WWW=World Wide Web=万维网
    • HTTP服务器和客户端,以及它们之间执行的HTTP协议

    在这里插入图片描述
    服务器

    • Web页面(HTML文档):包含多种对象或链接
    • Web对象(包括:静态对象和动态对象):可以是 HTML文档、 图像文件、视频文件、声音文件、脚本文件等
    • 对象用URL(统一资源定位符)编址:协议类型://主机名:端口//路径和文件名

    客户端

    • 发出请求、接收响应、解释HTML文档并显示
    • 有些对象需要浏览器安装插件

    在这里插入图片描述

    统一资源定位器URLs
    在这里插入图片描述

    www协议
    在这里插入图片描述

    4.2 HTTP

    概述

    • 超文本传输协议HTTP( HyperText Transfer Protocol)在传输层通常使用TCP协议,缺省使用TCP的80端口
    • HTTP为无状态协议,服务器端不保留之前请求的状态信息
      • 无状态协议:效率低、但简单
      • 有状态协议:维护状态相对复杂,需要维护历史信息,在客户端或服务器出现故障时,需要保持状态的一致性等
    • HTTP标准
      • HTTP/1.0: RFC 1945(1996年)
      • HTTP/1.1: RFC 2616(1999年)
      • HTTP/2: RFC 7540(2015年)、RFC 8740(2020年)

    HTTP发展现状

    • HTTP/1.0(1996)
      • 无状态,非持久连接
    • 与HTTP/1.1(1999)
      • 支持长连接和流水线机制
      • 缓存策略优化、部分资源请求及断点续传
    • HTTPS:HTTP+TLS(2008)
      • 增加SSL/TLS(TLS 1.2)层,在TCP之上提供安全机制
    • HTTP/2.0(2015、2020)
      • 目标:提高带宽利用率、降低延迟
      • 增加二进制格式、TCP多路复用、头压缩、服务端推送等功能

    在这里插入图片描述

    Web安全与隐私:Cookie

    HTTP 无状态协议,服务器 用cookies保持用户状态

    • HTTP在响应的首部行里使用一个关键字头set-cookie:选择的cookie号具有唯一性
    • 后继的HTTP请求中使用服务器响应分配的cookie:
    • Cookie文件保存在用户的主机中,内容是服务器返回的一些附加信息,由用户主机中的浏览器管理
    • Web服务器建立后端数据库,记录用户信息,cookie作为关键字
      例如:
      Set-Cookie: SID=31d4d96e407aad42; Path=/; Domain=example.com
      Cookie: SID=31d4d96e407aad42

    在这里插入图片描述
    在这里插入图片描述

    • Cookies一般包含5个字段
      • 域指明Cookie来自何方,每个域为每个客户分配Cookie有数量限制
      • 路径标明服务器的文件树中哪些部分可以使用该Cookie
      • 内容采用“名字=值”的形式,是Cookie存放内容的地方,可以达到4K容量,内容只是字符串,不是可执行程序
      • 安全指示浏览器只向使用安全传输连接的服务器返回Cookie

    在这里插入图片描述

    • Cookie技术是把双刃剑,能分析用户喜好,向用户进行个性化推荐
      • 用Cookie在某网站标识用户信息,查找用户以前浏览网站记录
      • 用Cookie记录用户购物清单
      • 用Cookie可以保存4K内容,跟踪用户浏览网站的喜好
      • 用Cookie跨站点跟踪用户点击广告
    • Cookie技术是把双刃剑,也能跟踪用户网络浏览痕迹,泄露用户隐私
      • Cookie跟踪用户以前浏览过哪些网站,跟踪用户频繁浏览哪类网站
      • Cookie收集用户信息,用户网络交互时关注的关键词
    • Cookie容易嵌入间谍程序,这是个误区,Cookie文件保存的只是文本串,没有可执行程序
      • 用户可以设置浏览器限制使用Cookie

    5.流媒体

    5.1 概述

    • 流媒体概念
      • 连续媒体(音视频)经压缩编码、数据打包后,经过网络发送给接收方
      • 接收方对数据进行重组、解码和播放
    • 流媒体的特性
      • 端到端时延约束
      • 时序性约束:流媒体数据必须按照一定的顺序连续播放
      • 具有一定程度的容错性:丢失部分数据包也可完成基本功能
    • 流媒体面临的挑战
      • 约束条件:网络特性(带宽有限、动态变化、延迟与抖动、丢失、异构性)
      • 目标:流媒体服务质量要素(画质、启动延迟、平滑、交互性)
      • 如何在“尽力服务”的网络传输条件下获得良好的视频质量?

    5.2 流媒体动态自适应传输

    • DASH (Dynamic Adaptive Streaming over HTTP)
      • 动态自适应流媒体传输协议DASH,由MPEG组织制定的标准
      • 类似协议:苹果HTTP Live Streaming(HLS); Adobe的HTTP Dynamic Streaming(HDS);微软的Microsoft Smooth Streaming
    • DASH 基本思想
      • 完整视频被拆分为固定时长 (2s-10s) 的视频片段(segment), 每段提供不同码率
      • 视频片段与其对应的元文件(URL)一同存放于DASH服务器
      • 客户端基于网络条件、缓冲大小等,对每个视频片段,自适应选择合适的视频码率来下

    在这里插入图片描述

    DASH中普遍使用的自适应码率ABR(Adaptive bitrate)

    6.内容分发网络CDN

    6.1 概述

    • 内容分发网络CDN
      • Content Delivery Network,or Content Distribution Network
    • 基本思想源于MIT对Web服务瞬间拥塞问题的解决(1998)
      • 一种Web缓存系统,靠近网络边缘(用户)提供内容服务
      • 目前提供更丰富的服务,包括静态内容、流媒体、用户上传视频等
    • 主要优点
      • 降低响应时延,避免网络拥塞
      • 避免原始服务器过载及防止DDoS攻击
      • 分布式架构,具有良好的可扩展性
      • 对用户透明,无需用户感知

    6.2 关键问题

    怎样将内容(如从百万的视频中选定的内容)分发给同时发起访问的数百万用户?

    6.3 机理与解决方式

    DNS重定向实现CDN

    • 将请求调度到较近或负载较轻的CDN服务器
    • HTTP重定向请求内容,服务提供者返回清单CDN
      • 原始服务器决策CDN服务器
      • HTTP响应:状态码30X,Location:指明新的位置

    DNS辅助实现CDN

    • 负载均衡DNS负责决策CDN服务器选择
    • 负载均衡DNS需要收集CDN服务器的位置和负载情况
    • 如果找不到被请求的对象,需要从原始服务器获取

    在这里插入图片描述

    7.P2P网络

    P2P文件分发协议:BitTorrent

    • 文件被划分为256Kb大小的块
    • 具有种子(torrents)的节点发送或接收文件

    在这里插入图片描述

    8.远程登录Telnet

    • Telnet协议引入网络虚拟终端NVT(Network Virtual Terminal),使用一种专门的键盘定义来屏蔽不同计算机系统对键盘输入的差异性,同时定义客户进程与远程服务器进程之间的交互过程
    • NVT是Telnet协议定义的一组通用字符集,通过这种统一的数据表示方式,来保证不同硬件、软件与数据格式的终端与主机之间通信的兼容性
    • 本地终端输入的字符首先由本地Telnet客户进程转换为NVT格式,通过网络将NVT格式的字符传输到远程主机,远程Telnet服务器进程再将NVT格式的字符转换为远程主机能够识别和处理的字符格式
    • 使用Telnet协议在网络中传输的数据都是NVT格式,不同的用户终端与服务器进程均与本地终端格式无关

    Telnet的工作过程

    • 本地Telnet客户进程与远程主机上的Telnet服务器进程建立TCP连接
    • 将本地终端上输入的用户名和口令及以后输入的任何命令或字符以网络虚拟终端NVT格式传输给远程主机
    • 将远程主机输出的NVT格式的数据转化为本地所接受的格式送回本地终端,包括输入命令回显和命令执行结果
    • 本地终端对远程主机撤销连接,从而结束 Telnet远程登录过程

    在这里插入图片描述

    9.FTP

    9.1 概述

    文件传输协议FTP(File Transfer Protocol) 是Internet上使用最广泛的应用层协议之一

    • FTP提供交互式的访问,允许用户指明文件的类型与格式,并允许文件具有存取权限
    • FTP屏蔽了各计算机系统的细节,适用于在异构网络中任意计算机之间传送文件
    • RFC 959早在1985年就已经成为Internet的正式标准
    • FTP使用C/S方式实现

    9.2 工作过程

    • 服务器主进程打开TCP21端口,等待客户进程发出的连接请求
    • 客户可以用分配的任意一个本地端口号与服务器进程的TCP21端口进行连接
    • 客户请求到来时,服务器主进程启动从属进程来处理客户进程发来的请求
    • 服务器从属进程对客户进程的请求处理完毕后即终止,但从属进程在运行期间根据需要还可能创建其他一些子进程
    • 服务器主进程返回,继续等待接收其他客户进程发来的连接请求,服务器主进程与从属进程并行工作

    FTP的两个端口与两个连接

    • 控制连接在整个会话期间一直保持,客户进程发出的文件传输请求通过控制连接发送给服务器控制进程(工作在TCP21端口),但控制连接不用来传输文件
    • 服务器控制进程在接收到客户进程发送来的文件传输请求后就创建数据传输进程(工作在TCP20端口)数据连接
    • 数据连接用来连接客户进程和服务器数据传输进程,实际完成文件的传输。服务器数据传输进程在文件传输完毕后关闭数据连接并结束运行

    在这里插入图片描述

    写在最后

    这篇知识汇总我写了好久,因为ppt的缘故,知识整理需要自己消化一遍然后挑选重要的部分整理摘录下来,同时对于某些知识点的组织结构做了相应调整,对于不太清楚的地方,我也去查阅了相关资料做了补充。但需要注意的是有些知识点并不完整,该知识点整理也只是根据我们当时考试的考点来整理的,所以不足之处请见谅。

    愿我们以梦为马,不负人生韶华!
    与君共勉

    展开全文
  • 本文结合多年来的工作实践,来详细讲述一下作为IT从业人员要掌握的一些基本网络知识

    目录

    1、概述

    2、OSI七层模型和TCP/IP四层模型

    3、数据进入TCP/IP协议栈时的封装过程

    4、端口的概念

    5、TCP建立连接时的三次握手

    5.1、TCP头的构成

    5.2、三次握手的流程说明

    5.3、为什么必须使用三次握手,不能用两次握手去建立连接 

    5.4、SYN包攻击简介

    6、TCP与UDP的区别及使用场景

    6.1、TCP与UDP的区别

    6.2、TCP与UDP的使用场景

    6.3、使用TCP和UDP的常用协议

    7、TCP的心跳检测机制与丢包重传机制

    7.1、TCP心跳检测机制

    7.2、TCP丢包重传机制

    8、常用的网络命令

    8.1、ping命令

    8.2、telnet命令

    8.3、ipconfig命令

    8.4、netstat命令

    8.5、route相关命令

    8.6、arp命令

    8.7、tracert命令

    9、在Linux和Windows两个平台中抓包

    9.1、在Windows系统中抓包

    9.2、在Linux系统中抓包


           无论是软件开发人员,还是测试人员,亦或是运维人员,都需要掌握一些常用的基础网络知识,以用于日常网络问题的排查。这些基本的网络知识与概念,不仅日常工作会用到,跳槽时的笔试面试也会用到。本文结合多年来的工作实践,来详细讲述一下作为IT从业人员要掌握的一些基本网络知识。

    1、概述

           当前的应用系统主要分两大类,一类是C/S(Client/Server)客户端/服务器架构的,一类是B/S(Browser/Server)浏览器/服务器架构的。无论是C/S架构,还是B/S架构,客户端都需要和远端的服务器进行网络通信,进行数据交互。不需要进行网络通信的纯单机版的程序已经很少了。

    PC上安装的QQ程序,就是典型的C/S架构中的客户端程序,需要和远端的服务器通信,发送和接收数据。通过在浏览器中输入淘宝的网址打开淘宝的主页,就是典型的B/S架构,浏览器通过网址向web服务器请求HTML网页在浏览器中展现出来,也是通过网络和远端的web服务器进行通信。

           不仅仅客户端和浏览器需要和远端平台侧的服务器进行网络通信,平台侧部署了多台服务器,比如web服务器、业务服务器、集群服务器、负载均衡服务器,这些服务器之间也要进行网络通信。一旦通过网络进行通信,就会不可避免地出现各种网络问题或网络故障。客户端与远端的服务器之间可能有多台服务器和网路设备,比如DNS服务器、路由器、交换机、集线器等,一旦客户端与服务器之间出现网络问题和数据交互问题,就可能是多个原因引起的,需要逐步地进行排查。

           我们这里讲的网络问题主要有两大类,一类是客户端与服务器无法建立连接的问题,一类是建立连接后有网络延时或严重丢包问题。至于建立通信连接后,客户端与服务器之间收发的数据内容不正确等问题,可能和网络有关,也可能是业务上存在的问题导致的。对于客户端无法和服务器建立连接,可能有多种原因,可能是客户端与服务器之间的网络是不通的也有可能是客户端使用了错误的地址或端口也有可能服务器侧没有开启监听端口导致的也有可能是中间的网络设备故障了或者中间网络设备启动了部分安全规则将数据包拦截了对于网络延时和丢包问题,可能是业务上的问题,也有可能是网络不稳定,也有可能是中间的网络设备拦截数据导致的。

           对于网络不稳定的场景,比如一般在家里或公司,我们尽量使用网线连接路由器,即使用有线网络,不使用无线网络。无线网络会因为距离、信号强弱等原因,会出现网络信号弱或网络不稳定,所以走无线网络可能会导致延时或丢包,与服务器频繁断链等问题。

           对于网络设备拦截数据包的场景,比如网络环境中的网络设备设置了安全规则,拦截了部分或全部数据包,再比如有些路由器会拦截SIP协议下的TCP包和UDP包。

           要排查网络通信过程中遇到的一系列网络问题,需要掌握一些基础的网络知识,了解一些常用的网络命令,必要时要使用wireshark进行抓包分析。接下来我们就来具体地讲解一下这些网络知识以及常用的网络命令。

    2、OSI七层模型和TCP/IP四层模型

            OSI七层模型TCP/IP四层模型的构成,以及它们的对应关系如下所示:

           OSI七层模型的全称为开放式系统互联通信参考模型(Open System Interconnection Reference Model),它是一种概念模型,由国际标准化组织提出,一个试图使各种计算机在世界范围内互连为网络的标准框架。OSI参考模型分为7层,分别为应用层、表示层、会话层、传输层、网络层、数据链路层和物理层。

           TCP/IP的全称为传输控制协议/网际协议(Transmission Control Protocol/Internet Protocol),它是一组用于实现网络互连的通信协议,是构建Internet互联网的基础,Internet网络体系结构是以TCP/IP为核心的。基于TCP/IP的参考模型将协议分成四个层次,分别为应用层、传输层、网络层和物理链路层。也可以将物理链路层拆为两层,一个是数据链路层,一个是物理层,这样TCPIP模型就变成了五层一般我们使用的四层模型。

           我们平时使用的都是TCP/IP四层模型。从wireshark中抓到的数据包中能看到每一层的数据信息,如下所示:

    3、数据进入TCP/IP协议栈时的封装过程

           最上面的应用层的数据,进入TCP/IP协议栈时的封装过程如下:(以TCP数据为例,与TCP/IP四层模型相对应)

    经过传输层时,会加上TCP头部;经过网络层时,会加上IP头;经过数据链路层时,会加上以太网头。对于数据接收端,会按照相反的方向,将各层的头部剥离掉,最终到上层的数据就是发送端应用层的数据。

           从数据发送到接收端的整个流程,可以用下图来说明(以QQ1给QQ2发一个“你好”的聊天内容为例):

    4、端口的概念

           

           此处讲的端口是TCP或UDP通信中数字端口号,属于传输层的概念,是软件中的端口。端口号用16位整型数据来表示,端口的范围为0-65535。要进行TCP或UDP通信时,除了要有IP,必须要有端口。

           操作系统会有很多默认端口,是留给指定的协议使用的,比如21是ftp协议的默认端口80是http协议的默认端口443是https协议的默认端口。作为接收客户端连接请求的服务器,可以设定自己的服务端口。

           对于TCP,需要先绑定目标端口(调用bind),再开启对目标端口的监听(调用listen),准备接收客户端的请求,如下所示:

           对于UDP,是无连接的,只需要绑定端口,不需要开启对端口的监听,如下所示:

    如果端口已经被绑定了,即端口被占用了,再绑定这个端口会失败,除非设置了端口复用。

           对于TCP,通信前需要先建立连接,连接发起方向指定的IP和端口发起连接请求;被连接方,必须开启对该端口的监听(程序中调用listen接口开启对目标端口的监听),才能接收别人发来的请求。如果目标端口没有开启监听,是连接不上的。对于UDP,是无连接的,直接收发数据也是需要端口的。

    有时即使程序开启了端口,可能也连接不上,可能是路由器或者防火墙禁用了该端口,导致发给该端口的数据(包括连接请求)都被拦截了,此时需要在网络环境中放行该端口,即不再拦截与该端口相关的数据。比如在一些安全级别比较高的客户系统中,默认情况下很多端口都是被禁用的,我们需要给客户提供一下软件系统中使用的端口列表(包括客户端和服务器用到的所有端口),需要客户在其网络环境中放行这些端口。只有放行了这些端口,我们的软件系统才能正常的运行。

           如何判断远端服务器的端口有没有开启监听,有个简单的方法,只要使用Telnet命令去测试即可,比如telnet 192.168.102.176 7800。如果远端的7800端口没有开启监听,就是显示连接失败。如果cmd窗口中提示找不到Telnet,需要到控制面板->程序与功能->启用和关闭Windows功能中开启Telnet客户端,如下图所示:

    5、TCP建立连接时的三次握手

           TCP建立连接时的三次握手是个重要的基础概念,同样也是面试时常问的一个知识点。

    5.1、TCP头的构成

           TCP建立连接的过程就是三次握手的过程,三次握手成功完成,TCP连接就建立了。在看三次握手的完整过程之前,我们先来看一下TCP报文中的TCP头都由哪些部分构成。TCP头的构成如下所示:

    上图中有几个字段需要重点说明一下:

    1)源端口和目标端口:源端口是该包数据发送者的端口,目标端口是这包数据要发送到的目的端口。

    2)(包)序号:当前数据包的包序号Seq序号,占4字节(32bit),用来标识从TCP源端向目的端已经发送了多少字节的数据,发起方发送数据时对此进行标记。包序号的最大值是65535,如果达到最大值,则会从0开始重新计数。

    3)确认号:Ack序号,占4字节(32bit),只有ACK标志位为1时,该确认序号字段才有效。在TCP中,接收端收到发送端发来的 数据后会给客户端回一个ACK确认包,确认收到数据了,这就是TCP的ACK机制

    当客户端给服务器发送一包数据时,假设发送该包数据时设置的序号为seq1,本包要发送的数据长度为len1,服务器收到这包数据后,会回给客户端一个ACK包,表示我服务器收到你客户端发来的这包数据了,此ACK包的ACK号等于收到的这包数据的序号seq1,加上收到这包数据的长度len1,该ACK包的ACK号表示我服务器一共收到了你客户端发来的多少字节数据了。注意,这个含义只是一种理解方式,因为包序号达到65535后会再从0开始计数。此外,此处说到的数据长度都是不包含TCP头的数据长度。

    4)标志位
    共6个,即URG、ACK、PSH、RST、SYN、FIN等,用来标记该包的类型如下:

    • URG紧急:当 URG = 1 时,表明此报文段中有紧急数据,是高优先级的数据,应尽快发送,不用在缓存中排队。
    • ACK确认:仅当 ACK = 1 时确认号字段才有效,当 ACK = 0 时确认号无效。TCP 规定,在连接建立后所有传送的报文段都必须把 ACK 置为 1。
    • PSH推送:接收方收到 PSH = 1 的报文段时,就直接发送给应用进程,而不用等到整个缓冲区都填满了后再向上传送。
    • RST复位:当 RST = 1 时,表明 TCP 连接中出现了严重错误(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立传输连接。
    • SYN同步:SYN = 1 表示这是一个连接请求或连接接受报文。当 SYN = 1 而 ACK = 0 时,表明这是一个连接请求报文段。对方若同意建立连接,则应在响应的报文段中使 SYN = 1 且 ACK = 1。
    • FIN终止:用来释放一个连接。当 FIN = 1时,表明此报文段的发送发的数据已发送完毕,并要求释放运输连接。

           在我们使用wireshark抓包并分析数据包时,可以使用这些标记位作为过滤条件过滤出对应类型的包,比如使用tcp.syn==1过滤出发起三次握手的SYN包,使用tcp.rst==1过滤出RST包。

    5.2、三次握手的流程说明

           TCP三次握手,是指建立一个TCP连接时,客户端和服务器一共发送3个包完成连接的建立。三次握手的目的是连接服务器指定端口,建立TCP连接,并同步连接双方的序列号和确认号并交换 TCP 窗口大小等信息。在socket编程中,客户端执行connect接口去连接目标IP和端口,触发三次握手。

           从wireshark的抓包来看,可以看出完整的三次握手的全过程:

    三次握手的示意图如下:

             第一次握手:

    客户端发送一个TCP的SYN标志位置1的包,指明客户打算连接的服务器的端口,并将包的序号设置1。

           第二次握手:

    服务器收到客户端发来的SYN包,给客户端回ACK确认包,包中的SYN标志位和ACK标志位设置为1,并将ACK确认号设置为1。

           第三次握手:

    客户端收到服务器的ACK包,客户端给服务器发送一个ACK确认包,包中的SYN标志位设置为0,ACK标志位设置为1,并把包中的SEQ号设置为1,把ACK号设置为1。

    服务器收到客户端发来的ACK包后,TCP连接建立了,连接就编程了established已建立状态。

           如果三次握手流程没有完成,则连接建立失败,遇到三次握手失败的情况,用wireshark抓包立马便能知道原因。比如有次我们的客户端登录后连不上某个业务服务器,我们第一反应就是先去ping一下该业务服务器地址,结果是能ping通,则说明网络是通的。于是直接使用wireshark抓包,发现当我们给业务服务器发三次握手的SYN包后,服务器直接回了一个RST

    强行将三次握手终止了,可能是业务服务器的端口有问题。经平台侧核实,业务服务器出问题了,无故退出了,这样服务器的端口也就没有处于监听状态,所以就连接不上了。一般三次握手时直接回RST包,都是由端口问题引起的。

    5.3、为什么必须使用三次握手,不能用两次握手去建立连接 

           三次握手的好处:

    • ① 三次握手目的是确认双方的接收与发送能力是否正常,同步连接双方的初始化序列号 ISN,为后面的可靠性传输做准备。而两次握手只有服务端对客户端的起始序列号做了确认,但客户端却没有对服务端的初始序列号做确认,不能保证传输的可靠性。
    • ② 三次握手可以防止已失效的连接请求报文段突然又传送到了服务端,导致服务器错误地建立连接,浪费服务端的连接资源。

           如果客户端发出的第一个连接请求报文并没有丢失,而是在某个网络结点长时间的滞留了,以致延误到连接释放以后的某个时间才到达服务器侧。本来这是一个早已失效的报文,但服务器收到此失效的连接请求报文后:

    • ① 假设不采用“三次握手”,那么只要Server发出确认,新的连接就建立了。但由于现在Client并没有发出建立连接的请求,因此不会理睬Server的确认,也不会向Server发送数据。而Server却以为新的连接已经建立,并一直等待Client发来数据,这样,Server的很多资源就白白浪费掉了
    • ② 而采用“三次握手”协议,只要Server收不到来自Client的确认,就知道Client并没有要求建立请求,就不会建立连接了。

    5.4、SYN包攻击简介

           SYN 包攻击是指利用 TCP 需要三次握手的特性,攻击者伪造 SYN 报文向服务器发起连接,服务器在收到报文后用 ACK 应答,但之后攻击者不再对该响应进行应答,造成一个半连接。假设攻击者发送大量这样的报文,那么被攻击主机就会造成大量的半连接,服务器支持的总的连接数是有限的,最终会导致服务器连接资源耗尽,导致正常的 SYN 请求因为队列满而被丢弃,使得正常用户无法访问。

           这个问题我们以前遇到过,在一个项目中客户的网络环境比较复杂,其安全系统竟然向我们的业务服务器发SYN包攻击,导致我们的业务服务器无法提供正常的连接服务。

           服务器侧有一个半连接队列和一个全连接队列。半连接队列是指,服务器第一次收到客户端的 SYN 之后,就会处于 SYN_RCVD 状态,此时双方还没有完全建立其连接,服务器会把这种状态下的请求连接放在一个队列里,我们把这种队列称之为半连接队列。对于全连接队列,完成三次握手后建立起的连接就会放在全连接队列中。

    6、TCP与UDP的区别及使用场景

           这也是面试时经常问到的点,需要搞清楚他们的区别。此处根据日常工作实践,详细地阐述一下这个话题。

    6.1、TCP与UDP的区别

    (1)TCP是可靠传输,UDP是不可靠传输       

           TCP是面向连接的,需要建立连接后才能收发数据,TCP在收发数据时有ACK机制,即数据接收方收到数据后会给数据发送方回一个ACK确认包,表示已经收到对方的数据,如果数据发送方没收到ACK包就会触发丢包重传机制,所以TCP是可靠的从网络通信的socket套接字编程上看,必须先connect去连ip和端口先建立连接,才能使用send和recv收发数据!对于接收连接的服务端,需要先使用bind函数给socket套接字绑定端口,紧接着调用listen开启端口的监听,然后调用accept接收客户端的连接。

           UDP不需要建立连接,可以直接收发数据,没有收发数据的ACK机制,所以UDP通信是不可靠的从网络通信的socket套接字编程上看,客户端直接给sendto函数设置ip和端口,不需要建立连接,直接将数据投递过去,不管数据受到与否。对于服务端,只需要使用bind绑定端口,然后调用recvfrom接收数据即可!

    (2)TCP传输的数据是有序的,UDP数据可能是乱序的

           网络层的ip协议不能保证数据的有序收发,所以数据接收端ip协议层收到的网络数据都可能是乱序的,无论是TCP数据还是UDP数据。之所以TCP能得到有序的数据,是因为数据到达传输层时TCP协议会将乱序的包按前后顺序重组,即排好顺序后再投递给应用层,所以到应用层经过TCP传输的数据都是有序的。而UDP协议没有对数据包进行排序,所以经UDP传输的数据到达应用层后还是乱序的,需要应用层自己去排序!

    (3)其他方面的区别

           此外,TCP和UDP还有一些其他方面的区别:

    • TCP首部长度是20个字节,而UDP的首部长度是8个字节,所以TCP数据传输的网络传输开销大一些,UDP数据传输的开销小一些。
    • TCP有拥塞控制和流量控制,而UDP没有拥塞控制和流量控制。
    • TCP提供全双工通信,但不提供广播或多播服务;UDP则提供广播和多播,所以要广播或多播,都使用UDP。

    6.2、TCP与UDP的使用场景

           TCP收发数据时有ACK机制,是可靠的,对要求数据准确无误地发送给对方的场景需要选择TCP,比如软件中的控制信令,控制信令要保证准确无误地被投递到目的地。但也正因为接收到数据后每次都要ACK,所以实时性要差一些。

           UDP没有数据的ACK,直接发送数据,实时性好,对实时性要求较高且对可靠性要求不太高的场景一般都要选择UDP。比如通信中的音视频数据,数据量比较大,数据接收端要实时地看到视频听到声音,所以需要保证实时性,要有较低的延时,即使有少量的丢包也是没多大问题的,所以音视频数据都是通过UDP来传输的,比如QQ和微信的音视频、视频会议中音视频、直播中的音视频。

           上面讲述了TCP与UDP区别的关键点,很多同学可以留意一下,下次面试再被问到时一定要说到关键点上!

    6.3、使用TCP和UDP的常用协议

           TCP 是可靠的,能将数据准确无误的传递给对方,一般处理文件传输的HTTP、HTTPS、FTP协议、用于发送和接收邮件的POP3、SMTP等邮件传输协议,使用的都是TCP。对实时性要求高且对可靠性要求低的协议则使用UDP。

    (1)TCP对应的协议:

    • FTP:文件传输协议,默认使用21端口。
    • Telnet:远程终端接入,默认使用23端口,用户可以以自己的身份远程连接到计算机上,可提供基于DOS模式下的通信服务。
    • SMTP:邮件传送协议,用于发送邮件,默认使用25端口。
    • POP3:邮件传送协议,P用于接收邮件,默认使用110端口。
    • HTTP:万维网超文本传输协议,是从Web服务器传输超文本到本地浏览器的传送协议,默认使用80端口。

    (2)UDP对应的协议:

    • DNS:域名解析服务,将域名地址转换为IP地址,默认使用53号端口。
    • SNMP:网络管理协议,用来管理网络设备,默认使用161号端口。
    • TFTP:简单文件传输协议,提供不复杂、开销不大的文件传输服务,默认使用 69 端口。
    • NFS:远程文件服务器。
    • RIP:路由信息协议。
    • DHCP:动态主机配置协议。
    • IGMP:网际组管理协议。

    7、TCP的心跳检测机制与丢包重传机制

           TCP心跳检测丢包重传机制是TCP的两个重要特性,其中丢包重传机制也是保证可靠传输的一种机制。这两种机制都要搞清楚,下面我们就来大概的讲述一下。

    7.1、TCP心跳检测机制

           TCP心跳检测是通过定时在链路上发心跳包保持链路的活性(keepalive),这样链路中的网络设备就不会因为链路上有段时间没有数据在跑,将链路强行断开了。

           以上是TCP/IP协议栈的心跳机制,有时我们应用层会添加一个应用层的心跳检测,比如客户端可以给服务器发心跳包,根据服务器的回应情况来判断服务器是否还活着,客户端和服务器之间的网络是否出现问题,如果心跳检测异常,客户端会主动断开与服务器的连接。

           大家经常使用的libwebsockets开源库支持设置心跳检测参数,默认情况下是不启用心跳检测的。libwebsockets内部的心跳检测,实际上使用的是TCP/IP协议栈的心跳检测,将心跳检测参数设置给对应的socket,libwebsockets内部相关的接口如下所示:(调用WSAIoctl接口给socket套接字设置心跳参数)

    LWS_VISIBLE int
    lws_plat_set_socket_options(struct lws_vhost *vhost, lws_sockfd_type fd)
    {
    	int optval = 1;
    	int optlen = sizeof(optval);
    	u_long optl = 1;
    	DWORD dwBytesRet;
    	struct tcp_keepalive alive;
    	int protonbr;
    #ifndef _WIN32_WCE
    	struct protoent *tcp_proto;
    #endif
     
    	if (vhost->ka_time) {
    		/* enable keepalive on this socket */
    		// 先调用setsockopt打开发送心跳包(设置)选项
    		optval = 1;
    		if (setsockopt(fd, SOL_SOCKET, SO_KEEPALIVE,
    					     (const char *)&optval, optlen) < 0)
    			return 1;
     
    		alive.onoff = TRUE;
    		alive.keepalivetime = vhost->ka_time*1000;
    		alive.keepaliveinterval = vhost->ka_interval*1000;
     
    		if (WSAIoctl(fd, SIO_KEEPALIVE_VALS, &alive, sizeof(alive),
    					      NULL, 0, &dwBytesRet, NULL, NULL))
    			return 1;
    	}
     
    	/* Disable Nagle */
    	optval = 1;
    #ifndef _WIN32_WCE
    	tcp_proto = getprotobyname("TCP");
    	if (!tcp_proto) {
    		lwsl_err("getprotobyname() failed with error %d\n", LWS_ERRNO);
    		return 1;
    	}
    	protonbr = tcp_proto->p_proto;
    #else
    	protonbr = 6;
    #endif
     
    	setsockopt(fd, protonbr, TCP_NODELAY, (const char *)&optval, optlen);
     
    	/* We are nonblocking... */
    	ioctlsocket(fd, FIONBIO, &optl);
     
    	return 0;
    }

    7.2、TCP丢包重传机制

           对于TCP连接,数据发送方将数据发出去后,会启动一个定时器,等待接收端回ACK确认包,如果在指定的时间内没有收到ACK确认包,就会触发TCP的丢包重传机制。如果发送重传包后还是没收到ACK,下一次的重传时间间隔会加倍,当重传次数达到系统上限(Windows默认的上限是5次,Linux默认的上限是15次)后,协议栈就认为网络出故障了,协议栈会直接将对应的连接关闭了。          

           所以当网络出现故障时有数据交互,协议栈会在数十秒内检测到网路出现异常,就会直接将连接直接关闭掉。丢包重传机制的详细描述如下所示:

    8、常用的网络命令

           这里主要介绍一下Windows系统下一些常用的网络相关命令。Linux系统也有对应的命令,后面会写一篇关于Linux命令文章,此处就不再就Linux系统的命令进行详细展开了。这些命令均是在命令行窗口中执行的,可使用“命令名 /?”去查看命令支持参数和使用上的说明,还会有使用范例。

    8.1、ping命令

           当无法连接到远端的地址及端口时,我们最先想到的是,先ping一个远端的地址,看看网络是不是通的,如下:

           如果软件系统在交互的过程中数据出现延时或抖动,可以在ping指令后面加上一个-t的参数,比如ping 192.168.0.1 -t,查看连续的ping包,看网络是否存在明显的延迟或抖动,如下:

    如果要停止持续的ping,按下Ctrl+C组合键就可以终止当前命令的执行。

    8.2、telnet命令

           telnet命令其实对应的是telnet客户端程序(telnet.exe),该程序使用的是telnet协议。telnet协议是TCP/IP协议族中的一员,是远程登陆服务的标准协议和主要方式,它为用户提供了从本地计算机远程登录远程主机的能力。

           使用该命令可以检查服务器上的端口有没有开启监听,比如telnet 192.168.100.196 7800,如果7800端口没有开启监听,则会提示连接失败。

           如果远端开启了telnet服务器,可以使用telnet命令远程登录到该telnet服务器上。如果cmd窗口中提示找不到Telnet,需要到控制面板->程序与功能->启用和关闭Windows功能中开启Telnet客户端,如下所示:

    8.3、ipconfig命令

           ipconfig命令主要用来查看网卡的配置信息,比如IP地址,子网掩码和默认网关等,一般使用ipconfig /all,如下所示:

    还有比较常用的是ipconfig /flushdns命令,用来清除系统中的DNS缓存:

    这样在发起新的域名解析请求时,会向域名服务器上去实时地查询最新的IP。比如某时某个域名对应的IP变更了,但Windows系统DNS缓存中有域名-IP对的记录,导致程序使用的还是老的IP,出现访问失败的问题。所以出现域名访问失败的时候,可以尝试使用ipconfig /flushdns命令刷新系统DNS缓存。

           经常有朋友询问使用DNS系统查询IP的完整流程,这里我们普及一下这一过程。DNS服务器大致分为三种类型:根DNS服务器、顶级域DNS服务器和权威DNS服务器,其中顶级域DNS服务器主要负责诸如com、org、net、edu、gov 等顶级域名。

          根DNS服务器存储了所有顶级域DNS服务器的 IP 地址,可以通过根服务器找到顶级域服务器,比如百度的域名www.baidu.com,根服务器会返回所有维护 com 这个顶级域服务器的 IP 地址。然后你任选其中一个顶级域服务器发送请求,该顶级域服务器拿到域名后能够给出负责当前域的权威服务器地址。以 百度的域名为例,顶级域服务器将返回所有负责百度这个域的权威服务器地址。接着任选其中一个权威服务器地址查询“www.baidu.com”的具体 IP 地址,最终权威服务器会返回给你具体的 IP 地址。此外,本地 DNS 服务器是具有缓存功能的,通常两天内的记录都会被缓存。

           所以,通过DNS系统查询域名对应的 IP 的具体步骤可以总结为:

    • ① 操作系统先查本地 hosts文件 中是否有记录,如果有,则直接返回相对应映射的IP地址。
    • ② 如果本地hosts文件中没有配置,则主机向自己的本地DNS服务器发送查询报文,如果本地DNS服务器缓存中有,将直接返回结果。
    • ③ 如果本地服务器缓存中没有,则从内置在内部的根DNS服务器列表(全球13台,固定的IP地址)中选一个发送查询报文。
    • ④ 根服务器解析域名中的后缀名,告诉本地服务器负责该后缀名的所有顶级服务器列表。
    • ⑤ 本地服务器选择其中一个顶级域服务器发送查询请求,顶级域服务器拿到域名后继续解析,返回对应域的所有权威服务器列表。
    • ⑥ 本地服务器再向返回的权威服务器发送查询报文,最终会从某一个权威服务器上得到具体的 IP 地址。
    • ⑦ 主机返回结果IP。

    8.4、netstat命令

            netstat命令用来查看本机的网络连接与端口占用情况,如下:

    netstat命令支持多个参数,具体使用netstat /?去查看详细说明:

    这里就不再赘述了。

    8.5、route相关命令

           route相关命令主要用来查看路由表、添加/删除路由等。首先来看看route print命令,该命令是将Windows系统中的路由表打印出来,如下图所示:

    route add命令可以往路由表中添加一条路由,route delete命令可以删除一条路由。命令具体怎么使用可以使用route /?命令查看一下参数的说明以及范例:

           一般在处理Windows系统中的多网卡问题时,会用到这些路由相关的命令。比如以前我们遇到的一个场景,Windows系统中有两张网卡,一张是连接局域网的内网网卡,一张是连接外网的外网网卡

    Windows系统中只能设置一个默认网关,外网网卡的IP和默认网关是从路由器自动获取的,肯定是有默认网关的,所以内网的网卡不能设置默认网关。如果要通过内网的网卡访问局域网中的地址,则需要使用route add命令添加策略路由来控制ip的访问走向,即通过策略路由让访问内网地址的都走内网的网关。给内网的网卡添加策略路由的命令为:

    route add 172.16.0.0 mask 255.255.0.0  172.16.30.186(172.16.30.186为内网中的网关)

    该命令的含义是,所以访问172.16开头的地址时,都通过内网的网关172.16.30.186走出去。
    服务器上一般都会配置多个网卡,有时也会通过添加策略路由去处理服务器之间无法访问的问题,这样的场景我们都遇到过。

    8.6、arp命令

           该arp命令主要用来显示和修改地址解析协议(ARP)使用的“IP 到物理”地址转换表:

    系统中会保存IP和MAC地址的映射表。其中ARP协议(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源

           可以使用arp -a的命令查看系统缓存的映射表,使用arp -s保存一个IP和MAC地址的映射对,使用arp -d删除符合条件的映射对,条件中支持使用通配符,比如:arp -d 192.168.*.*。

           这里我们详细介绍一下ARP协议,它是根据 IP 地址获取 MAC 地址的一种协议,核心原理就是广播发送ARP请求,单播发送ARP响应。关于ARP相关流程的说明如下:

    • ① 每个主机都在自己的ARP缓冲区中建立一个ARP列表,以表示 IP 地址和 MAC 地址之间的对应关系。
    • ② 当源主机要发送数据时,先检查ARP列表中是否有该 IP 地址对应的 MAC 地址,如果有,则直接发送数据;如果没有,就向本网段的所有主机发送ARP数据包,用于查询目的主机的MAC地址,该数据包包括的内容有:源主机IP地址,源主机MAC地址,目的主机的IP。
    • ③ 当本网络的所有主机收到该ARP数据包时,首先检查数据包中的IP地址是否是自己的IP地址,如果不是,则忽略该数据包,如果是,则首先从数据包中取出源主机的IP和MAC地址写入到ARP列表中,如果已经存在,则覆盖,然后将自己的MAC地址写入ARP响应包中,告诉源主机自己是它想要找的MAC地址。
    • ④ 源主机收到 ARP 响应包后,将目的主机的 IP 和 MAC 地址写入ARP列表,并利用此信息发送数据。如果源主机一直没有收到ARP响应数据包,表示ARP查询失败。

    8.7、tracert命令

           该命令可以追踪访问目标地址所经历的网络节点,如下所示:

    通过该命令,可以看出数据包是从那个网卡发出去的(看默认网关),也可以看出从哪个运营商线路(联通线路、移动线路、电信线路)访问到目标地址的!

    9、在Linux和Windows两个平台中抓包

           出现网络问题后,最直接最有效的办法就是抓包,对抓到的网络包进行分析,有时不仅要在客户端抓包,还要在服务器抓包,要综合分析。 服务器一般是运行在Linux系统之上的,所以此处也简单的介绍一下如何在服务器上使用tcpdump命令抓包。

    9.1、在Windows系统中抓包

           Windows上抓包很简单,只要在系统中安装wireshark即可。启动wireshark后,选择要抓包的那个网卡:

    开启抓包即可。抓完包之后,可以将抓包数据保存到文件中。接下来就是分析抓包文件,抓包文件中是抓取了整个网卡的数据包,而我们要分析的是我们软件中的数据包,所以要用过滤条件将要查看的包过滤出来。

            数据包的过滤条件很讲究,可以使用ip或端口进行过滤,也可以通过协议去过滤,比如如下的一些过滤条件:

    • ① 用ip地址过滤,比如ip.addr==192.168.2.1、ip.src==192.168.2.1、ip.dst==192.168.2.1;
    • ② 用端口来过滤,比如tcp.port==7800、tcp.srcport==7800、tcp.dstport==7800、udp.port==7800;
    • ③ 使用协议过滤,比如tcp、udp、http、websocket、xmpp、rtp等协议名称进行过滤,比如下图:

    • ④ 上面我们还说过,可以使用tcp.syn==1来过滤三次握手的SYN包;
    • ⑤  使用数据包的字符串来过滤,比如http contains "destport"、xmpp contains “123”。

    具体使用什么过滤条件,要具体问题具体分析吧。

    9.2、在Linux系统中抓包

           服务器中一般使用的是Linux操作系统,比如最常用的是CentOS系统。当然CentOS开发商Red Hat(红帽)公司已经宣布不再对CentOS进行维护更新了,对于大多数国产IT厂商是个很不好的消息。好在华为、阿里和腾讯快速地推出了CentOS的替代服务器操作系统,华为发布了欧拉系统、阿里发布了龙蜥系统、腾讯发布了TencentOS系统,这些服务器操作系统都是在开源的Linux系统演化而来的,也都开源了,大家都可以使用。鉴于华为在鸿蒙手机操作系统上的卓越表现,很多厂商都选择了使用华为的欧拉系统,有的厂商则选择继续使用国外的Linux系统,比如UbuntuDebian等。

           好像扯的有点远了,还是回到本文的主题上来。在Linux上抓包之前,我们需要使用SSH工具远程登录到Linux系统中,登录到Linux系统的命令行上,然后在Linux命令行中使用tcpdump命令启动抓包,比如使用如下的命令:

    tcpdump –i eth1 –s 0 –w dsvserver.pcap 

    该命令中使用-i指定在哪个网卡上抓包,eth1是网卡名称,如果要抓所有网卡上的包,则使用-i any;-s指定生成的抓包文件的大小,以字节为单位,0表示不限制;-w指定抓包文件的名称。

           开启该命令后,服务器上一直在抓包,可以按下Ctrl+C停止抓包命令的执行。然后使用sz命令:

    sz dsvserver.pcap

    将刚才生成的抓包下载到当前的Windows系统中,最后在Windows系统中使用WireShark打开抓包文件分析即可。

           sz命令(Send ZMODEM)通过ZMODEM协议,可将文件从远程的服务器下载到本地来。比如我们要取日志文件,也可以使用sz命令下载到本地来。关于下载的保存路径,可以在SSH工具的远程连接会话好配置选项中设置,如上图所示。

    展开全文
  • 计算机网络——计算机网络知识脑图

    千次阅读 多人点赞 2021-11-18 21:44:59
    本博文主要收集面试过程中涉及到计算机网络的面试题目与解答。以下博文的问题都来源互联网中收集的面试题目。 每一层对应的网络协议有哪些? 什么是 XSS 攻击? XSS是一种经常出现在web应用中的计算机安全漏洞...

    摘要

    本博文主要分享计算机网络相关知识脑图,帮助大家更好的深入学习计算机网络相关知识,同时也介绍博主计算机网络专栏相关博文。同时介绍计算机网络学习书籍,有需要的小伙伴请自取。如果你觉得有用的话,请关注我的博客。

    计算机网络知识脑图

    计算机网络——计算机网络知识脑图_庄小焱的博客-CSDN博客_计算机网络面试题总结

    计算机网络大厂面试问题集合

    计算机网络——大厂面试问题集合_庄小焱的博客-CSDN博客

    计算机网络基础知识

    计算机网络——网络基础知识_庄小焱的博客-CSDN博客_数据转发服务器

    IP相关基础原理

    计算机网络——IP协议基础原理_庄小焱的博客-CSDN博客_ip网络技术

    HTTP协议原理

    计算机网络——HTTP协议原理_庄小焱的博客-CSDN博客_http协议原理

    HTTP的优化方式

    计算机网络——HTTP的优化方式_庄小焱的博客-CSDN博客

    HTTPS协议原理

    计算机网络——HTTPS协议原理_庄小焱的博客-CSDN博客_https协议原理

    HTTPS的优化方式

    计算机网络——HTTPS的优化方式_庄小焱的博客-CSDN博客

    TCP可靠性传输原理

    计算机网络——TCP可靠性传输原理_庄小焱的博客-CSDN博客_tcp的可靠性是如何实现的

    TCP/IP三次握手四次挥手原理

    计算机网络——HTTP的三次握手与四次挥手原理_庄小焱的博客-CSDN博客_三次握手和四次挥手原理

    TCP的优化方式

    计算机网络——TCP的优化方式_庄小焱的博客-CSDN博客_tcp协议优化技术

    DNS协议(域名解析)原理

    计算机网络——DNS协议(域名解析)原理_庄小焱的博客-CSDN博客_计算机网络dns

    ARP协议(地址解析)原理

    计算机网络——ARP协议(地址解析)原理_庄小焱的博客-CSDN博客_地址解析协议的工作原理

    ARQ协议(自动重传请求)原理

    计算机网络——ARQ协议(自动重传请求)原理_庄小焱的博客-CSDN博客_连续arq协议的原理

    DHCP协议原理

    计算机网络——DHCP(动态获取IP)原理_庄小焱的博客-CSDN博客_计算机网络dhcp

    NAT协议原理

    计算机网络——NAT协议(网络地址转换)原理_庄小焱的博客-CSDN博客

    ICMP/IGMP协议原理

    计算机网络——ICMP/IGMP协议原理_庄小焱的博客-CSDN博客_计算机网络igmp

    HTTP网络访问全流程

    计算机网络——HTTP网络访问全流程_庄小焱的博客-CSDN博客_网络访问流程

    虚拟网路模型原理

    计算机网络——虚拟网路模型原理_庄小焱的博客-CSDN博客

    其他网络知识

    计算机网络——select/poll/epoll底层原理_庄小焱的博客-CSDN博客

    计算机网络——cookie/session/token原理_庄小焱的博客-CSDN博客

    计算机网络——网络通信加密原理_庄小焱的博客-CSDN博客_网络通信加密

    计算机网络——GRPC通信原理_庄小焱的博客-CSDN博客_grpc原理

    计算机网络——tcpdump/Wireshark抓包实战_庄小焱的博客-CSDN博客_网络抓包

    计算机网络——TCP抓包连接实战_庄小焱的博客-CSDN博客_tcp全连接和半连接

    一、计算机网络知识脑图

    二、计算机知识知识详解

    2.1 计算机网络知识脑图

    计算机网络——计算机网络知识脑图_庄小焱的博客-CSDN博客_计算机网络面试题总结

    2.2 计算机网络大厂面试问题集合

    计算机网络——大厂面试问题集合_庄小焱的博客-CSDN博客

    2.3 网络基础知识

    计算机网络——网络基础知识_庄小焱的博客-CSDN博客_数据转发服务器

    2.4  IP相关基础原理

    计算机网络——IP相关基础原理_庄小焱的博客-CSDN博客_机器ip

    2.5 HTTP协议原理

    计算机网络——HTTP协议原理_庄小焱的博客-CSDN博客_http协议原理

    2.6 HTTP的优化方式

    计算机网络——HTTP的优化方式_庄小焱的博客-CSDN博客

    2.7 HTTPS协议原理

    计算机网络——HTTPS协议原理_庄小焱的博客-CSDN博客_https协议原理

    2.8 HTTPS的优化方式

    计算机网络——HTTPS的优化方式_庄小焱的博客-CSDN博客

    2.9 TCP可靠性传输原理

    计算机网络——TCP可靠性传输原理_庄小焱的博客-CSDN博客

    2.10 TCP/IP三次握手四次挥手原理

    计算机网络——TCP/IP三次握手四次挥手原理_庄小焱的博客-CSDN博客

    2.11 TCP的优化方式

    计算机网络——TCP的优化方式_庄小焱的博客-CSDN博客_tcp协议优化技术

    2.12 DNS协议原理

    计算机网络——DNS协议原理_庄小焱的博客-CSDN博客

    2.13 ARP协议(地址解析)原理

    计算机网络——ARP协议(地址解析)原理_庄小焱的博客-CSDN博客_地址解析协议的工作原理

    2.14 ARQ协议(自动重传请求)原理

    计算机网络——ARQ协议(自动重传请求)原理_庄小焱的博客-CSDN博客_连续arq协议的原理

    2.15 DHCP协议原理

    计算机网络——DHCP协议原理_庄小焱的博客-CSDN博客_计算机网络dhcp

    2.16 NAT协议原理

    计算机网络——NAT协议原理_庄小焱的博客-CSDN博客

    2.17 ICMP/IGMP协议原理

    计算机网络——ICMP/IGMP协议原理_庄小焱的博客-CSDN博客_icmp igmp协议

    2.18 HTTP网络访问全流程

    计算机网络——HTTP网络访问全流程_庄小焱的博客-CSDN博客_网络访问流程图

    2.19 虚拟网路模型原理

    计算机网络——虚拟网路模型原理_庄小焱的博客-CSDN博客

    2.20 其他网络知识

    计算机网络——select/poll/epoll底层原理_庄小焱的博客-CSDN博客

    计算机网络——Cookie/Session/token原理_庄小焱的博客-CSDN博客

    计算机网络——加密通信原理_庄小焱的博客-CSDN博客_网络加密原理

    计算机网络——GRPC通信原理_庄小焱的博客-CSDN博客_grpc原理

    计算机网络——tcpdump/Wireshark抓包实战_庄小焱的博客-CSDN博客_网络抓包

    计算机网络——TCP抓包连接实战_庄小焱的博客-CSDN博客_tcp全连接和半连接

    三、计算机网络推荐学习资料

    如果你要入门HTTP,那就学习《图解 HTTP》,本书基本上对于小白来说没有啥难度,通过坐着的图解分析,能够帮助大家很生动形象的理解计算机网络中的一些概念。百度云网盘:

    如果要入门TCP/IP⽹络模型,你可以参考《图解 TCP/IP》来进行学习,这本书同样的也是以大量的图解的形式来帮助大家理解TCP/IP的相关原理。大家需要耐下性子好好的读完。学习完成后你会对TCP/IP有一个比较浅层的理解。百度云网盘:

    如果你想了解网络的传输的相关的模型,我推荐你学习《⽹络是怎样连接的》,本书相对⽐较全⾯的把访问⼀个⽹⻚的发⽣ 的过程讲解了⼀遍,可能有些涉及到硬件层面的,但是你大致浏览即可,做到心中有相关的概念即可。百度云网盘:

    同样的你也可以去B站和其他方面利用视频学习:B 站《计算机⽹络微课堂》视频⼀起学习,这个视频是湖南科技大学老师里面的配图和课件生动形象,值得大家观看学习。

    计算机网络微课堂(有字幕无背景音乐版)_哔哩哔哩_bilibili

    对于TCP/IP⽹络模型深⼊学习的话,推荐《计算机网络-自顶向下方法》,这个书籍是集大成之作,对于计算机网络知识讲解的非常详细。但如果要深入TCP,你需要学习赋有计算机网络圣经之说的《TCP/IP 详解 卷⼀:协议》,这本书的作者用各种实验的⽅式来细说各种协议,涵盖的内容非常全且细。百度云网盘:

    在学习书籍资料的时候,不管是 TCP、UDP、ICMP、DNS、HTTP、HTTPS 等协议,最好都可以亲⼿尝试抓数据报,接着可以用Wireshark⼯具看每⼀个数据报文的信息,这样你会觉得计算机网络没有想象中那么抽象了,因为它们被你抓出来了,并毫⽆保留地显现在你⾯前了,于是你就可以肆⽆忌惮地扒开它们,看清它们每⼀个头信息。

    博文参考

    小林coding的博客_CSDN博客-图解计算机网络,图解操作系统,C/C++领域博主

    展开全文
  • 一、计算机网络概述 1.1 计算机网络的分类 按照网络的作用范围:广域网(WAN)、城域网(MAN)、局域网(LAN);按照网络使用者:公用网络、专用网络。1.2 计算机网络的层次结构 T...
  • 家庭网络知识普及

    万次阅读 2020-12-28 16:35:14
    一、先说说现在国内主流网络结构吧,一般家庭网络是由光网络终端ont,也就是光猫接入,也是目前比较成熟的接入场景。 光猫接入统称为pon(Passive Optical Network:无源光纤网络,源即电源,指传输过程中不需要电源...
  • 前端需要掌握的网络知识(1)

    千次阅读 2018-09-06 11:16:54
    作为一个前端人员必须对网络知识有所了解,理解web请求的详细过程,这篇文章我们将会看一看关于web请求的一些网络知识 一:计算机网络的七层协议 应用层: (1)应用层是最靠近用户的OSI层。这一层为用户...
  • 什么是语义网络知识表示?给出这种表示方法的优缺点? 语义网络是一种用实体及其语义关系来表达知识的有向图。结点代表实体,表示各种事物、概念、情况、属性、状态、事件、动作等;弧代表语义关系,表示它所连结的...
  • LSTM神经网络知识---资源整理

    万次阅读 多人点赞 2018-07-05 21:33:46
    (1) 简单理解LSTM神经网络 首先推荐看一遍火贪三刀的博客,解释浅显易懂。简单总结下: 1)递归神经网络Recurrent Neural Networks(RNNs):当前时刻的输出,不仅与当前时刻的输入有关,与上一时刻的输出也有关,...
  • 计算机网络基础知识

    千次阅读 2022-01-24 21:23:09
    1.网络介绍 由通信介质将地理位置不同、相互独立的计算机连接起来,实现数据和资源共享。 2.网络分类 2.1 按照拓扑结构分类 1.总线型 (一根线上串好多计算机)特点:两端信号终结器,分叉处有T型头 2.环形 网络效率...
  • 科技情报大数据挖掘与服务系统平台AMiner是由清华大学计算机科学与技术系教授唐杰率领团队建立的,具有完全自主知识产权的新一代科技情报分析与挖掘平台 。 AMiner平台以科研人员、科技文献、学术活动三大类数据为...
  • 计算机网络基础知识大全

    万次阅读 多人点赞 2021-07-26 22:12:08
    ️️️一、计算机网络的概念 计算机网络:是一个将分散的、具有独立功能的计算机系统,通过通信设备与线路连接起来,由功能完善的软件实现资源共享和信息传递的系统。 二、计算机网络的功能 1、数据通信 2、资源...
  • 一、计算机网络概述 1.1 计算机网络的分类 按照网络的作用范围:广域网(WAN)、城域网(MAN)、局域网(LAN); 按照网络使用者:公用网络、专用网络。 1.2 计算机网络的层次结构 TCP/IP四层模型与OSI体系结构...
  • 网络空间安全 知识图谱的构建与应用(一)

    千次阅读 多人点赞 2021-09-08 08:19:55
    网络空间安全 知识图谱 首先引入知识管理的含义,在系统中建立一个技术相对成熟完善,内容相对公开透明的知识仓库,其中囊括广泛有用的知识和信息,通过大家的习得思考,创造分享,报录完备和存取更新等过程,达到...
  • 经过多方努力,我们极(sang)度(xin)克(bing)制(kuang)的发布了网络知识技能图谱(文后可下载图片后再打开更清晰)。 技能知识图谱概览: 下面为各部分的涉及到知识结构, 1、基础网络协议 2、交换技术 3...
  • 必须了解的网络运维知识

    千次阅读 2021-01-05 14:37:05
    1.1.2网络知识涉及哪些领域 路由和交换,安全(系统iptables),无线,语音,运营商网络 1.1.3网络主要是做什么的? 实现数据之间的传输通讯,在不同的主机之间。 1.1.4如何实现数据通讯? 1.要有传输介质:...
  • 网络基础知识详解(图解版)

    千次阅读 多人点赞 2021-05-10 14:16:03
    网络基础知识详解(图解版) 1.网络协议: 我们用手机连接上网的时候,会用到许多网络协议。从手机连接 WiFi 开始,使用的是 802.11 (即 WLAN )协议; 手机自动获取网络配置,使用的是 DHCP 协议。 这时手机已经连...
  • 计算机网络 1 定义 资源共享观点的定义:以能够相互共享资源的方式互联起来的自治计算机系统的集合。 利用通信线路和网络设备,将位于不同地理位置的且具有独立功能的计算机连接起来,在网络软件的支持下,实现...
  • 一、计算机网络基础模型 1.1 七层模型 1.2TCP/IP模型 1.3重要协议 模型层 协议 物理层 IEEE802.3有线局域网(以太网) IEEE802.11无线局域网标准 数据链路层 Point-to-Point Protocol 网络...
  • 计算机网络知识

    千次阅读 2022-03-23 10:44:29
    计算机网络知识
  • 计算机网络基本知识汇总

    万次阅读 多人点赞 2017-10-21 22:02:12
    物理层、数据链路层、网络层、运输层、会话层、表示层、应用层 TCP/IP分层(4层) 网络接口层、网络层、运输层、应用层 五层协议(5层) 物理层、数据链路层、网络层、运输层、应用层 五层结构的概述 应用层:通过...
  • 从语义网络知识图谱

    千次阅读 2019-01-24 17:07:16
    知识图谱,目前来说也没有一个特别明确的定义,“Exploiting Linked Data and Knowledge Graphs in Large Organisations”书中的描述如下: A knowledge graph consists of a set of interconnected typed ...
  • 数通基础-网络基础知识

    千次阅读 2020-12-10 00:39:29
    ​ OSI把网络按照层次分为七层,由下到上分别为物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。 特点: OSI模型每层都有自己的功能集; 层与层之间相互独立又相互依靠; 上层依赖于下层,下层为...
  • 作者:北邮 GAMMA Lab 博士生 杨天持来自:北邮GAMMA Lab近几年来,人工智能技术得到了飞速发展,其进展突出体现在以知识图谱(Knowledge Graph)为代表的知...
  • 异质信息网络知识图谱

    千次阅读 多人点赞 2020-10-31 11:36:00
    最近在研究异质信息网络,发现知识图谱无论是在建模方式还是下游任务都与异质信息网络有很大的相似性。 在这里简单介绍一下知识图谱的相关概念和从网上找来的知识图谱嵌入综述类的文章或者博客进行总结。 比较分析...
  • 超详细的计算机网络基础知识总结 第六章:应用层

    千次阅读 多人点赞 2021-12-09 16:32:31
    超详细的计算机网络基础知识 第四章:网络层 超详细的计算机网络基础知识 第五章:传输层 相见即是有缘,如果对你有帮助,给博主一个免费的点赞以示鼓励把QAQ☺ 1 应用层概述 应用层对应用程序的通信提供服务 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,110,105
精华内容 444,042
关键字:

网络知识

友情链接: clagsicjdiversity.zip