uni-app 渲染层网络层错误_【HCIA】网络层协议

551a9aafdcdc7303e4c4d3809ebf10af.png

一、网络层协议

网络层经常被称为IP层。但网络层协议并不只是IP协议,还包括ICMP(Internet Control Message Protocol)协议、IPX(InternetPacket Exchange)协议等。

3645c470fdf4bd6f49e0e73f9b76fdcb.png

二、IP协议

IP是Internet Protocol的缩写。Internet Protocol本身是一个协议文件的名称,该协议文件的内容非常少,主要是定义并阐述了IP报文的格式。经常被提及的IP,一般不是特指Internet Protocol这个协议文件本身,而是泛指直接或间接与IP协议相关的任何内容。

4e4653b276d6ade8edc1e9c98546b926.png

IP协议有版本之分,分别是IPv4和IPv6。目前,Internet上的IP报文主要都是IPv4报文,但是逐步在向IPv6过渡。若无特别声明,本章所提及的IP均指IPv4。

IPv4(InternetProtocol Version 4)协议族是TCP/IP协议族中最为核心的协议族。它工作在TCP/IP协议栈的网络层,该层与OSI参考模型的网络层相对应。

IPv6(InternetProtocol Version 6)是网络层协议的第二代标准协议,也被称为IPng(IPNext Generation)。它是Internet工程任务组IETF(InternetEngineering Task Force)设计的一套规范,是IPv4(InternetProtocol Version 4)的升级版本。

三、数据封装

36d9b0d2a9397c2f07fa622475a7c7ac.png

应用数据需要经过TCP/IP每一层处理之后才能通过网络传输到目的端,每一层上都使用该层的协议数据单元PDU(ProtocolData Unit)彼此交换信息。不同层的PDU中包含有不同的信息,因此PDU在不同层被赋予了不同的名称。

  • 上层数据在传输层添加TCP报头后得到的PDU被称为Segment(数据段);

  • 数据段被传递给网络层,网络层添加IP报头得到的PDU被称为Packet(数据包)

  • 数据包被传递到数据链路层,封装数据链路层报头得到的PDU被称为Frame(数据帧);

  • 最后,帧被转换为比特,通过网络介质传输。

这种协议栈逐层向下传递数据,并添加报头和报尾的过程称为封装。本文我们主要讨论数据在网络层的封装,如果封装为IP协议,则被称为IPPacket(IP数据包)。

四、IP报文格式

86409a721ced6fb65e0db1c8fde3f479.png

IP Packet(IP数据包),其包头主要内容如下:

  • Version:4 bit,4:表示为IPv4;6:表示为IPv6。

  • HeaderLength:4 bit,首部长度,如果不带Option字段,则为20,最长为60。

  • Typeof Service:8 bit,服务类型。只有在有QoS差分服务要求时,这个字段才起作用。

  • TotalLength:16bit,总长度,整个IP数据包的长度。

  • Identification:16bit,标识,分片重组时会用到该字段。

  • Flags:3 bit,标志位。

  • FragmentOffset:12bit,片偏移,分片重组时会用到该字段。

  • Timeto Live:8 bit,生存时间。

  • Protocol:8 bit,协议:下一层协议。指出此数据包携带的数据使用何种协议,以便目的主机的IP层将数据部分上交给哪个进程处理。

Protocol常见值

  • 1:ICMP, Internet Control Message;

  • 2:IGMP, Internet Group Management;

  • 6:TCP , Transmission Control Protocol;

  • 17:UDP, User Datagram Protocol。

  • HeaderChecksum:16bit,首部检验和。

  • SourceIP Address:32bit,源IP地址。

  • DestinationIP Address:32bit,目的IP地址。

  • Options:可变,选项字段。

  • Padding:可变,填充字段,全填0。

五、数据包分片

将报文分割成多个片段的过程叫做分片。网络中转发的IP报文的长度可以不同,但如果报文长度超过了数据链路所支持的最大长度,则报文就需要分割成若干个较小的片段才能够在链路上传输。

a7140cffdceaa2ce4654571ffd45c08c.png

  • Identification:16bit,发送主机赋予的标识,分片重组时会用到该字段。Flags:3 bit,标志位。

  • 保留段位:0,保留。

  • 不分段位:1,表示“不能分片”;0,表示“能分片”。

  • 更多段位:1,表示“后面还有分片”;0,表示“最后一个数据片”。

  • FragmentOffset:12bit,片偏移,分片重组时会用到该字段。指出较长的分组在分片后,该片在原分组中的相对位置,与更多段位组合,帮助接收方组合分段的报文。

六、生存时间 (Time to Live, TTL)

TTL字段设置了数据包可以经过的路由器数目。一旦经过一个路由器,TTL值就会减1,当该字段值为0时,数据包将被丢弃。

238d30132d351eeadfd4d4a507c7aaea.png

Timeto Live:8 bit,生存时间。可经过的最多路由数,即数据包在网络中可通过的路由器数的最大值。

报文在网段间转发时,如果网络设备上的路由规划不合理,就可能会出现环路,导致报文在网络中无限循环,无法到达目的端。环路发生后,所有发往这个目的地的报文都会被循环转发,随着这种报文逐渐增多,网络将会发生拥塞。

为避免环路导致的网络拥塞,IP报文头中包含一个生存时间TTL(TimeTo Live)字段。报文每经过一台三层设备,TTL值减1。初始TTL值由源端设备设置。当报文中的TTL降为0时,报文会被丢弃。同时,丢弃报文的设备会根据报文头中的源IP地址向源端发送ICMP错误消息。(注意:网络设备也可被配置为不向源端发送ICMP错误消息。)

协议号

IP报文头中的协议号字段标识了将会继续处理该报文的协议。即指出此数据包携带的数据使用何种协议,以便目的主机的IP层将数据部分上报给哪个进程处理。

e9deb591b9b45be6c84dfe0a6f11ba45.png

目的端的网络层在接收并处理报文以后,需要决定下一步对报文如何处理。IP报文头中的协议字段标识了将会继续处理报文的协议。

该字段可以标识网络层协议,如ICMP(InternetControl Message Protocol,因特网控制报文协议,对应值0x01);

也可以标识上层协议,如TCP(TransmissionControl Protocol,传输控制协议,对应值0x06)、UDP(UserDatagram Protocol,用户数据包协议,对应值0x11)。

6e2d44fa9dc877447fc11132ff601ba5.png

HCIA系列文章:

1、【HCIA】数据通信网络基础

2、【HCIA】网络类型与网络拓扑

3、【HCIA】网络参考模型与协议

4、【HCIA】TCP的建立与断开

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值