计算机网络

  1. 概述:

网络协议:

将数据通过网络安全可靠一端传输到另一端,定义怎么做的规则,相应的组件实现对应的规则从而到达功能目的

协议分层原因:

将通信过程划分更小、更简单的部件,各部件独立的开发、设计和故障排除,

部件标准化允许各个供应商进行开发

怎么分层:

TCP/IP是一个四层协议系统。但是常用的是五层网络模型,TCP/IP网络模型中的链路层对应五层网络模型的物理层和数据链路层。

l 应用层:处理特定的应用程序细节(FTP协议)

l 传输层:负责端到端的通信,也就是俩主机进程之间的通信。TCP保证可靠;UDP不保证可靠,需要应用层保证可靠。(可靠:不丢失、不重复、按顺序、无差错)(TCP/UDP协议)

l 网络层:负责主机之间数据的传输;处理分组在网络中的活动(IP协议)

l 链路层:处理与电缆或者其他硬件传输媒介之间的物理接口细节(以太网协议)

传输过程大概:

按照各层对数据进行各种拆封,寻址到目的地址,从而在目的服务器上处理和返回

数据链路层:

    1. 是什么:

主要说明是逻辑链路,表明在链路层的协议

    1. 发送端:
      1. Mac帧格式

CRC通过一定算法对数据进行计算得到的结果,在帧中使用n位存储结果

数据:

帧:在数据的前后分配添加首部和尾部,构成一个帧

在帧的前后加上定界符,来表示一个完整的帧

若是数据部分出现了定界符,则使用ESC进行转义

  1. 目的地址:
  2. 源地址:
  3. 类型:表示上层使用的是什么协议,如ipv4(0x0800)
  4. FCS冗余码:crc校验比特流有没有失真,接收端同样算法计算是否得到相同的结果来判断

Mac帧格式,其长度最小64字节,前后共占用18字节,若数据段少于46字节就会进行填充(ip报文有记录其总长度的,因此多余的部分可认为是填充)。mac帧前面插入的8个字节是因为接收方在接收时,适配器的时钟和比特流未达成同步,所以前面可能若干位无法接收,结果导致整个帧是无效的而被丢弃。FCS最后固定的4字节也可以看作是结束符,FCS检测的字段不包括插入的8字节(封装的一层一定能区分封装的部分和真实数据部分,便于拆分)。

      1. 判断无效mac帧:
  1. 帧的长度不是整数个字节

  2. FCS校验错误

  3. 数据长度不在46-1500字节之间

  4. 整个帧长不在64-1518字节之间

    1. 接收端:
      1. 校验帧是否完整

同样使用CRC算法计算结果是否一致,校验帧中数据 比特差错

    1. 适配器:

又名"网卡",是对协议的具体实现

    1. Mac地址

具有唯一性

      1. 组成:

6个字节48位,前三位表示厂家,组合后三位表示主机地址

      1. 特性:

固化在适配器的ROM中

      1. 地址种类:
    1. 交换机:
      1. 为什么:

解决总线碰撞问题

      1. 怎么做到:
  1. 通过十几个或者更多接口与主机或者交换机相连

  2. 一般工作在全双工方式

  3. 有缓存机制(非直通方式),当某个主机接口繁忙时,会暂存某个帧数据,空闲时发出

  4. 内部的帧交换表(地址表),对mac地址和接口有映射关系

      1. 地址表生成:

保存在交换机中

  1. 初始地址表是空表

  2. A向B发送数据时,由于地址表是空的,交换机会记录A->1到地址表,并且交换机会进行广播,BCD都收到后,CD会丢弃,B就会接收数据进行处理

  3. B应答ARP报文,交换机同样记录B->3到地址表,同时直接将数据发到1接口而不用广播

  4. 经过一段时间后CD业务发送数据,就会在地址表中有所有主机的对应关系了

  5. 考虑到接口对应的主机可能会更换,交换表的记录会设置有效时间,过期就会自动删除,新的主机重复以上操作后又会记录到地址表中

  6. 以上步骤一般在arp中完成
    1.

    1. 避免广播时无限循环:
      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的允许发送列表中:

  1. 若与端口的PVID相同时,则剥离Tag发送;

  2. 若与端口的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标签后转发到服务器。

  1. 网际协议ip:

    1. 是什么:

链接网段,用以在各种异构的网络间进行转发数据到目的网段

路由器: 包含了改协议的具体实现,只会根据网络号进行转发,

    1. ip:
      1. 是什么:
        ip地址用来在网络中标识一个节点,像是现实生活的地址
      2. 作用:
        给定了ip后能够在网络中找到具体主机
        什么样的:

IP ::={网络号,主机号}

目前ip有两个版本ipv4和ipv6,ipv4有32位,每8位用点号"."分割

ip地址分类:

A类:1-126

B类:128-191

C类:192-223

D类:224-239

E类:其他

思考:

若是只用mac地址来标志具体的位置,那卖给某个人后这个位置终生不能变,若只用ip地址

    1. 地址解析协议(ARP):
      1. 是什么:

知道了机器的ip地址,需要找到相应的硬件地址,arp就是进行此类问题

      1. 怎么做:
  1. 初始化情况下,A在局域网内广播一个arp请求报文(报文内容:本机ip、本机硬件地址,想要知道目的ip的硬件地址)

  2. 局域网内所有主机的arp进程收到此报文

  3. 主机B的ip和目的ip一直收到报文后,就会响应到A说明自己的硬件地址,并把A的ip到mac地址的映射保存到缓存中

  4. A主机收到B的相应后,就将B的ip到硬件地址的映射保存到缓存中,下次再发送时就不再需要广播了

  5. 在缓存中的映射记录都有过期时间,过期就会自动删除(避免映射改变后无法到达)

    1. Ip数据报文格式:
      1. 版本:

表示是ipv4还是ipv6

      1. 首部长度:

占4位,每一位表示4个字节,1111表示是15,最大只能是60字节。首部长度必须是4字节的整数倍,不够部分需要填充

      1. 区分服务:

暂时没有使用

      1. 总长度:

占2字节,表示首部和数据部分的总长度,但是数据字段有最大的MTU长度,不超过1500字节。长度越长传输效率会越高(首部占数据部分的比率越小),但是越短话在路由层转发越快,ip协议规定总长度必须不超过576字节的数据报。作用是需要mac判定数据部分长度,mac帧没有总长度的字段

      1. 标识:

占16位两个字节,上层的数据太大会进行分片,表示数据报的同一个分片,接收端接收所有相同分片标识的分片拼接成完整的数据报

      1. 标志:

占3位,最低位1表示还有分片,0表示最后一个分片;中间位0表示能够分片,1表示不能分片

      1. 片偏移:

占13位,表示在总数据报中的相对位置,以8个字节位单位,所以每个分片的长度需要是8的整数倍

      1. 生存时间(TTL):

为防止无法交付的报文,一直在网络中转发而设置,会设置初始值,每经过路由器转发就会对TTL减一,若路由器发现已经减为0就会丢弃该报文

      1. 协议:

表明数据报文是何种协议,以便接收者可以知道交由哪个协议处理

      1. 首部校验和:

占16位路由器对首部其他字段进行计算,接收方会进行校验,若是没有问题就继续,有问题就丢弃

      1. 源地址:

占32位,表示源地址ip

      1. 目的地址:

占32位,表示目的地址ip

      1. 可变部分:

是选项字段,根据需要进行增加

    1. 路由表:
      1. 是什么:

表示数据需要经过那些路由,到达目的网络处

      1. 字段类型:
      1. 怎么生成:

通过路由选择协议

    1. 路由类型:
      1. 特定路由:

对特定的主机指明一个路由,在特定控制场景或测试场景

      1. 默认路由:

为了节省路由表的空间和搜索路由表的时间而设置

    1. 掩码(netmask):
      1. 作用:

ip的地址前后表示网络地址和主机地址,可以通过ip和掩码的计算,从而获得网络地址。

      1. 为什么:

路由器只会关心网络部分

      1. 具体实现:
      2. 为什么需要划分子网:

1、若是通过ip地址分类来划分,像B类网络就会有2^16-2(减2是包括网络地址和广播地址)台主机,若使用不了就会产生浪费

2、两级不够灵活,新增网络需要重新申请

3、 两级的话,会给每一个物理网络分配一个网络号,会使路由表过大,导致网络性能较低

      1. 谁划分:

拥有主网络号的单位进行自由划分,对外依旧表现一个网络,单位以外看不见里面的子网。

      1. 怎么划分:

从网络借用几位主机号作为子网络号,通过子网掩码的计算得到子网信息

Ip :={网络号,子网号,主机号}

      1. 划分后怎么转发:

目的是本单位网络的ip,先转发到本单位的路由器上,本单位的路由再根据子网信息转发到子网路由器上,最有转发到主机

      1. 路由转发算法:
  1. 通过目的地址与子网掩码计算到目的网络
  2. 目的网络地址若是此路由管辖,就直接交付(通过arp找到目的主机的mac,拼接成mac帧,通过mac地址表找到对应的接口,从而转发的主机)
  3. 非上,若目的地址是特定路由,则转发到特定路由
  4. 非上,对路由表中的每一行和子网掩码进行计算,若有到目的网路的路由则转发到目的路由
  5. 非上,若有默认路由,则转发到默认路由
  6. 非上,报告转发报错
    1.
    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这条路由

    1. ICMP:
      1. 是什么:

网际控制报文协议,一个新搭建好的网络,往往需要先进行一个简单的测试,来验证网络是否畅通;但是IP协议并不提供可靠传输。如果丢包了,IP协议并不能通知传输层是否丢包以及丢包的原因。

      1. 作用:

主机或路由器报告差错情况和提供有关异常情况的报告,它对于收集各种网络信息、诊断和排除各种网络故障具有至关重要的作用。

      1. 格式:

说明:

(1)所有报文的前4个字节都是一样的,剩下的其他字节则互不相同。

(2)类型字段可以有15个不同的值,以描述特定类型的ICMP报文。某些ICMP报文还使用代码字段的值来进一步描述不同的条件。

(3)检验和字段覆盖整个ICMP报文。使用的算法与IP首部检验和算法相同。ICMP的检验和是必需的。

种类:

差错报文数据格式:

不会产生ICMP差错报文的情况:

a) ICMP差错报文本身出错

b) 目的地址或者源地址不是单个地址的报文

c) 不是IP分片的第一片

以上这些情况不会产生ICMP差错报文是为了避免广播风暴。

询问报文种类:

应用举例:

Ping应用直接使用ICMP,它没有通过tcp或者udp,当接收端系统处理数据的速度低于发送端传送数据的速度,那么接收端可能会给发送端发送ICMP源点抑制报文

  1. 运输层:
    1. 是什么:

向上层各种应用提供服务

    1. 提供哪些服务:
  1. 类似网络层服务主机间通信,运输层服务于应用层间通信(类似单位收发室)
  2. 对报文进行差错校验,ip层只是校验了其首部
    1. 怎么实现:
  1. 通过端口号标识主机中的不同应用进程,从而能够多个进程同时运行时区分传输。端口号分类:服务端使用的端口号(0-49151),客户端使用的端口号(49152-65535)

  2. Udp校验和的计算方法和ip的校验和类似,不同是udp是将首部和数据部分,另外包含ip等信息的伪首部,一起进行校验计算的值

    1. 报文格式:
  3. 源端口号:本机应用的端口号

  4. 目的端口号:目的应用的端口号

  5. 长度:udp报文总长度(最小8字节,仅有首部)

  6. 检验和:检测数据报是否有错误,有错误就丢弃

  7. 伪首部只是在计算校验和使用,其既不会向下传递,也不会向上传递(判断ip和协议(17)信息是否有问题)

    1. Tcp和udp差别:
  1. tcp是面向链接的服务,而udp不需要建立连接,因此udp无需建立套接字

  2. udp使用尽可能交付,即不保证可靠交付

  3. udp是面向报文的,即在udp层不会对报文进行拆分和合并,应用层交下来的数据加上首部就传输到ip层,接收端从udp拆除了首部就上报到应用层进程

  4. udp没有拥塞控制

  5. udp首部开销较小,相比tcp的20字节,其只有8字节

相关推荐
锐策4 小时前
深入 RFC 793:TCP 报文头部、MSS 协商与三次握手 / 四次挥手全解析
网络·网络协议·tcp/ip
AORO20255 小时前
防爆手机是什么?2025年防爆手机哪个牌子好?
网络·5g·智能手机·制造·信息与通信
Strawberry_rabbit6 小时前
程序员工作必需之公网和私网
前端·网络协议
嫄码6 小时前
Docker部署RocketMQ时Broker IP地址问题及解决方案
tcp/ip·docker·rocketmq
噔噔君6 小时前
嵌入式模组拨号获取IP地址时,设置的ippass是什么原理,起到什么作用?
服务器·网络协议·tcp/ip·ip
SRC_BLUE_177 小时前
NSSCTF - Web | 【SWPUCTF 2021 新生赛】Do_you_know_http
网络·网络协议·http
ehiway7 小时前
国际先进!中科亿海微国产嵌入式FPGA IP核及EDA系统设计技术通过科技成果评价
网络协议·tcp/ip·fpga开发
“αβ”8 小时前
了解“网络协议”
linux·服务器·网络·c++·网络协议·tcp/ip·tcp
_dindong8 小时前
Linux网络编程:Socket编程TCP
linux·服务器·网络·笔记·学习·tcp/ip