一、前语

本系列文章旨在复习核算机网络中心常识,进一步夯实根底,为今后 参加物联网、音视频、直播、即时通讯等范畴的项目做必定的常识储备。

文章列表:

  • 01-核算机网络中心常识|核算机网络通识【核算机网络功能指标、网络协议分层的几种办法、OSI七层模型概念通识】
  • 02-核算机网络中心常识|【建立调试环境、新建Java项目、核算机通讯根底、核算机衔接办法、集线器/网桥/交换机/路由器】
  • 03-核算机网络中心常识|【MAC地址、IP地址的组成、IP地址的分类、CIDR、子网掩码、超网】
  • 04-核算机网络中心常识|【 静态路由、动态路由、数据包的传输、ISP、服务器机房、网络分类、家用无线路由器、公网IP、
  • 05-核算机网络中心常识|物理层/数据链路层【模拟信号&&数字信号、数据链路层】
  • 06-核算机网络中心常识|网络层【IP数据包Packet、网络协议、Checksum、源IP地址和方针IP地址、ping】
  • 07-核算机网络协议中心常识|【传输层-UDP】
  • 08-核算机网络协议中心常识|【传输层-TCP之可靠传输】
  • 09-核算机网络中心常识|传输层TCP2【流量操控原理、拥塞操控:slow start、congestion avoidance、快速重传、快速康复】
  • 10-核算机网络协议中心常识|【传输层-TCP衔接】
  • 11-核算机网络协议中心常识|【 运用层】
  • 12-核算机网络中心常识|【Cookie、Session(概念、生命周期、有效期、浏览器的要求等)、跨域(概念、 同源战略、跨域处理方
  • 13-核算机网络协议中心常识|【 署理/CDN/网络安全】
  • 14-核算机网络协议中心常识|【(非)对称加密/数字签名/证书】
  • 15-核算机网络协议中心常识|【HTTPS】
  • 16-核算机网络中心常识|HTTPS协议【HTTP2、HTTP3】

本文首要关注:
在不同网段之间转发数据,需求有路由器的支撑。
网络层在OSI中的比重很大,几乎一切的网络请求库都会涉及到。

二、网络层(Network

网络层数据包(IP数据包:Packet)由首部、数据2部分组成。

06-计算机网络核心知识|网络层【IP数据包Packet、网络协议、Checksum、源IP地址和目标IP地址、ping】

数据:许多时候是由传输层传递下来的数据段(Segment)。

06-计算机网络核心知识|网络层【IP数据包Packet、网络协议、Checksum、源IP地址和目标IP地址、ping】

06-计算机网络核心知识|网络层【IP数据包Packet、网络协议、Checksum、源IP地址和目标IP地址、ping】

1. 版别(Version

占4位(0b0100:IPv4,0b0110:IPv6)。

2. 首部长度(Header Length

占4位,标识该IP头部有多少个32bit字(4字节),因为4位最大能表明15,所以IP头部最长是60字节。

最小值:0b0101(5 * 4 = 20)

最大值:0b1111(15 * 4 = 60)

首部固定部分是20个字节,尽管还有可变部分,但许多时候便是20个字节。因为最大值是60个字节,所以可变部分是40个字节。

3. 区别服务(Differentiated Services Field

占8位,能够用于进步网络的服务质量(QoS:Quality of Service

包括3位优先级字段、1位保存字段和4位TOS字段。4位TOS别离表明:最小时延、最大吞吐量、最高可靠性和最小费用。其中最多有一个能置为1。

比方客户端发送数据给服务端,数据在经过路由器的时候,路由器辨认区别服务(例如,区别服务的优先级值为3)的优先级后能够让这部分数据优先经过。

4. 总长度(Total Length

占16位。指整个IP数据报的长度,以字节为单位。首部 + 数据的长度之和,最大值是65535(2^16-1)字节

06-计算机网络核心知识|网络层【IP数据包Packet、网络协议、Checksum、源IP地址和目标IP地址、ping】

可是因为MTU约束(帧的数据不能超越1500字节),长度超越MTU的数据报将会分片传输,所以实践传输的IP数据报长度远远没有到达最大值。因而过大的IP数据包,需求分成片(fragment),每一片都有自己的网络层首部(IP首部)。

标识、标志、片偏移描绘了如何分片。

5. 标识(Identification

占16位,数据包的ID。其初始值是系统随机生成,每发送一个数据包,其值加1。该值在分片时被复制到每一个分片中,因而同一个数据包的一切分片的标识都是相同的。

6. 标志(Flags

06-计算机网络核心知识|网络层【IP数据包Packet、网络协议、Checksum、源IP地址和目标IP地址、ping】

占3位。

  • 第1位(Reserved Bit):保存
  • 第2位(Don’t Fragment):表明“是否禁止分片”,1代表禁止分片,0代表允许分片
  • 第3位(More Fragments):表明“是否还有更多片”,1代表不是最终一片,0代表是最终一片。假如要分片,除了最终一个分片外,其他的分片都要置1。

7. 片偏移(Fragment Offset

占13位。是分片相对原始IP数据报开端处的偏移(仅指数据部分)。实践偏移值是该值左移3位得到的。所以除最终一个分片,其他分片的数据部分长度必须是8的整数倍(片偏移乘以8:字节偏移)。

06-计算机网络核心知识|网络层【IP数据包Packet、网络协议、Checksum、源IP地址和目标IP地址、ping】

为什么要左移3位?

除最终一个片段外,每个片段都必须包括8字节数据的倍数。因为片段偏移是按13位编码的,因而其范围在0到8191个8字节单位之间。 可是,因为“总长度”也考虑了IP标头,因而“片段偏移”最大约束实践上是8189个单位,而不是8191个单位。总长度被编码为16位,这意味着它被约束为65535个字节。 然后,因为IP标头至少为20个字节,因而导致有效载荷被约束为最大65535个字节-20个字节= 65515个字节。 将这65515个字节以8个字节为单位进行区分,成果将可能最多有8189个单位,因而分片偏移约束为最大为8189个单位。

8. 生存时间(Time to Live

占8位。设置了数据能够经过的最多的路由器数(操作系统不同TTL值也不同),每个路由器在转发之前会将TTL减1,假如该值减为0依旧没有到达意图主机,就丢弃该数据包,由这个路由器发送ICMP差错报文(方针不可达)。首要作用便是避免路由死循环(A路由跳B路由,B路由跳A路由,数据一直在往复,假如没有TTL就会发生死循环)。

06-计算机网络核心知识|网络层【IP数据包Packet、网络协议、Checksum、源IP地址和目标IP地址、ping】

观察运用ping指令后的TTL,能够推测出对方的操作系统,中间经过了多少个路由器。

9. 协议(Protocol

用于区别上层协议,表明所封装的数据运用了什么协议。

06-计算机网络核心知识|网络层【IP数据包Packet、网络协议、Checksum、源IP地址和目标IP地址、ping】

10. 首部查验和(Header Checksum

由发送端填充,检查首部是否有过错。接纳端对其运用CRC算法查验IP数据报首部在传输进程中是否损坏(只检查首部,不论数据部分)

11. 源IP地址和方针IP地址(Source Address、Destination Address

各占4个字节。用来指定发送端和接纳端的。

12. ping的几个相关用法

  • ping -h:检查ping的用法(Windows:ping /?
  • ping IP地址 -l 数据包巨细:发送指定巨细的数据包
  • ping IP地址 -f:不允许网络层分片
  • ping IP地址 -i TTL:设置TTL的值
  • 经过tracertpathping指令,能够盯梢数据包经过了哪些路由器

Mac系统初次运用ping设置网络层,可能会提示权限缺乏,需求授权sudo

专题系列文章

1. 前常识

  • 01-探求iOS底层原理|综述
  • 02-探求iOS底层原理|编译器LLVM项目【Clang、SwiftC、优化器、LLVM】
  • 03-探求iOS底层原理|LLDB
  • 04-探求iOS底层原理|ARM64汇编

2. 根据OC言语探求iOS底层原理

  • 05-探求iOS底层原理|OC的实质
  • 06-探求iOS底层原理|OC方针的实质
  • 07-探求iOS底层原理|几种OC方针【实例方针、类方针、元类】、方针的isa指针、superclass、方针的办法调用、Class的底层实质
  • 08-探求iOS底层原理|Category底层结构、App启动时Class与Category装载进程、load 和 initialize 履行、关联方针
  • 09-探求iOS底层原理|KVO
  • 10-探求iOS底层原理|KVC
  • 11-探求iOS底层原理|探求Block的实质|【Block的数据类型(实质)与内存布局、变量捕获、Block的种类、内存办理、Block的修饰符、循环引证】
  • 12-探求iOS底层原理|Runtime1【isa详解、class的结构、办法缓存cache_t】
  • 13-探求iOS底层原理|Runtime2【音讯处理(发送、转发)&&动态办法解析、super的实质】
  • 14-探求iOS底层原理|Runtime3【Runtime的相关运用】
  • 15-探求iOS底层原理|RunLoop【两种RunloopMode、RunLoopMode中的Source0、Source1、Timer、Observer】
  • 16-探求iOS底层原理|RunLoop的运用
  • 17-探求iOS底层原理|多线程技能的底层原理【GCD源码剖析1:主行列、串行行列&&并行行列、大局并发行列】
  • 18-探求iOS底层原理|多线程技能【GCD源码剖析1:dispatch_get_global_queue与dispatch_(a)sync、单例、线程死锁】
  • 19-探求iOS底层原理|多线程技能【GCD源码剖析2:栅门函数dispatch_barrier_(a)sync、信号量dispatch_semaphore】
  • 20-探求iOS底层原理|多线程技能【GCD源码剖析3:线程调度组dispatch_group、事情源dispatch Source】
  • 21-探求iOS底层原理|多线程技能【线程锁:自旋锁、互斥锁、递归锁】
  • 22-探求iOS底层原理|多线程技能【原子锁atomic、gcd Timer、NSTimer、CADisplayLink】
  • 23-探求iOS底层原理|内存办理【Mach-O文件、Tagged Pointer、方针的内存办理、copy、引证计数、weak指针、autorelease

3. 根据Swift言语探求iOS底层原理

关于函数枚举可选项结构体闭包特点办法swift多态原理StringArrayDictionary引证计数MetaData等Swift根本语法和相关的底层原理文章有如下几篇:

  • 01-Swift5常用中心语法|了解Swift【Swift简介、Swift的版别、Swift编译原理】
  • 02-Swift5常用中心语法|根底语法【Playground、常量与变量、常见数据类型、字面量、元组、流程操控、函数、枚举、可选项、guard语句、区间】
  • 03-Swift5常用中心语法|面向方针【闭包、结构体、类、枚举】
  • 04-Swift5常用中心语法|面向方针【特点、inout、类型特点、单例模式、办法、下标、承继、初始化】
  • 05-Swift5常用中心语法|高档语法【可选链、协议、过错处理、泛型、String与Array、高档运算符、扩展、访问操控、内存办理、字面量、模式匹配】
  • 06-Swift5常用中心语法|编程范式与Swift源码【从OC到Swift、函数式编程、面向协议编程、响应式编程、Swift源码剖析】

4. C++中心语法

  • 01-C++中心语法|C++概述【C++简介、C++起源、可移植性和标准、为什么C++会成功、从一个简单的程序开端认识C++】
  • 02-C++中心语法|C++对C的扩展【::作用域运算符、姓名操控、struct类型加强、C/C++中的const、引证(reference)、函数】
  • 03-C++中心语法|面向方针1【 C++编程标准、类和方针、面向方针程序设计事例、方针的构造和析构、C++面向方针模型初探】
  • 04-C++中心语法|面向方针2【友元、内部类与局部类、强化训练(数组类封装)、运算符重载、仿函数、模板、类型转化、 C++标准、过错&&反常、智能指针】
  • 05-C++中心语法|面向方针3【 承继和派生、多态、静态成员、const成员、引证类型成员、VS的内存窗口】

5. Vue全家桶

  • 01-Vue全家桶中心常识|Vue根底【Vue概述、Vue根本运用、Vue模板语法、根底事例、Vue常用特性、归纳事例】
  • 02-Vue全家桶中心常识|Vue常用特性【表单操作、自定义指令、核算特点、侦听器、过滤器、生命周期、归纳事例】
  • 03-Vue全家桶中心常识|组件化开发【组件化开发思维、组件注册、Vue调试东西用法、组件间数据交互、组件插槽、根据组件的
  • 04-Vue全家桶中心常识|多线程与网络【前后端交互模式、promise用法、fetch、axios、归纳事例】
  • 05-Vue全家桶中心常识|Vue Router【根本运用、嵌套路由、动态路由匹配、命名路由、编程式导航、根据vue-router的事例】
  • 06-Vue全家桶中心常识|前端工程化【模块化相关标准、webpack、Vue 单文件组件、Vue 脚手架、Element-UI 的根本运用】
  • 07-Vue全家桶中心常识|Vuex【Vuex的根本运用、Vuex中的中心特性、vuex事例】

6. 音视频技能中心常识

  • 01-音视频技能中心常识|了解音频技能【移动通讯技能的开展、声响的实质、深化了解音频】
  • 02-音视频技能中心常识|建立开发环境【FFmpeg与Qt、Windows开发环境建立、Mac开发环境建立、Qt开发根底】
  • 03-音视频技能中心常识|Qt开发根底【.pro文件的装备、Qt控件根底、信号与槽】
  • 04-音视频技能中心常识|音频录制【指令行、C++编程】
  • 05-音视频技能中心常识|音频播映【播映PCM、WAV、PCM转WAV、PCM转WAV、播映WAV】
  • 06-音视频技能中心常识|音频重采样【音频重采样简介、用指令行进行重采样、经过编程重采样】
  • 07-音视频技能中心常识|AAC编码【AAC编码器解码器、编译FFmpeg、AAC编码实战、AAC解码实战】
  • 08-音视频技能中心常识|成像技能【重识图片、详解YUV、视频录制、显现BMP图片、显现YUV图片】
  • 09-音视频技能中心常识|视频编码解码【了解H.264编码、H.264编码、H.264编码解码】
  • 10-音视频技能中心常识|RTMP服务器建立【流媒体、服务器环境】

7. 核算机网络中心常识

  • 01-核算机网络中心常识|核算机网络通识【核算机网络功能指标、网络协议分层的几种办法、OSI七层模型概念通识】
  • 02-核算机网络中心常识|【建立调试环境、新建Java项目、核算机通讯根底、核算机衔接办法、集线器/网桥/交换机/路由器】
  • 03-核算机网络中心常识|【MAC地址、IP地址的组成、IP地址的分类、CIDR、子网掩码、超网】
  • 04-核算机网络中心常识|【 静态路由、动态路由、数据包的传输、ISP、服务器机房、网络分类、家用无线路由器、公网IP、
  • 05-核算机网络中心常识|物理层/数据链路层【模拟信号&&数字信号、数据链路层】
  • 06-核算机网络中心常识|网络层【IP数据包Packet、网络协议、Checksum、源IP地址和方针IP地址、ping】
  • 07-核算机网络协议中心常识|【传输层-UDP】
  • 08-核算机网络协议中心常识|【传输层-TCP之可靠传输】
  • 09-核算机网络中心常识|传输层TCP2【流量操控原理、拥塞操控:slow start、congestion avoidance、快速重传、快速康复】
  • 10-核算机网络协议中心常识|【传输层-TCP衔接】
  • 11-核算机网络协议中心常识|【 运用层】
  • 12-核算机网络中心常识|【Cookie、Session(概念、生命周期、有效期、浏览器的要求等)、跨域(概念、 同源战略、跨域处理方
  • 13-核算机网络协议中心常识|【 署理/CDN/网络安全】
  • 14-核算机网络协议中心常识|【(非)对称加密/数字签名/证书】
  • 15-核算机网络协议中心常识|【HTTPS】
  • 16-核算机网络中心常识|HTTPS协议【HTTP2、HTTP3】

其它底层原理专题

1. 底层原理相关专题

  • 01-核算机原理|核算机图形烘托原理这篇文章
  • 02-核算机原理|移动终端屏幕成像与卡顿

2. iOS相关专题

  • 01-iOS底层原理|iOS的各个烘托框架以及iOS图层烘托原理
  • 02-iOS底层原理|iOS动画烘托原理
  • 03-iOS底层原理|iOS OffScreen Rendering 离屏烘托原理
  • 04-iOS底层原理|因CPU、GPU资源耗费导致卡顿的原因和处理计划

3. webApp相关专题

  • 01-Web和类RN大前端的烘托原理

4. 跨渠道开发计划相关专题

  • 01-Flutter页面烘托原理

5. 阶段性总结:Native、WebApp、跨渠道开发三种计划功能比较

  • 01-Native、WebApp、跨渠道开发三种计划功能比较

6. Android、HarmonyOS页面烘托专题

  • 01-Android页面烘托原理
  • 02-HarmonyOS页面烘托原理 (待输出)

7. 小程序页面烘托专题

  • 01-小程序框架烘托原理