一、前语
本系列文章旨在复习核算机网络中心常识,进一步夯实根底,为今后 参加物联网、音视频、直播、即时通讯等范畴的项目做必定的常识储备。
文章列表:
- 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部分组成。
数据:许多时候是由传输层传递下来的数据段(Segment)。
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)字节
。
可是因为MTU约束(帧的数据不能超越1500字节),长度超越MTU的数据报将会分片传输,所以实践传输的IP数据报长度远远没有到达最大值。因而过大的IP数据包,需求分成片(fragment),每一片都有自己的网络层首部(IP首部)。
标识、标志、片偏移描绘了如何分片。
5. 标识(Identification)
占16位,数据包的ID。其初始值是系统随机生成,每发送一个数据包,其值加1。该值在分片时被复制到每一个分片中,因而同一个数据包的一切分片的标识都是相同的。
6. 标志(Flags)
占3位。
- 第1位(Reserved Bit):保存
- 第2位(Don’t Fragment):表明“是否禁止分片”,1代表禁止分片,0代表允许分片
- 第3位(More Fragments):表明“是否还有更多片”,1代表不是最终一片,0代表是最终一片。假如要分片,除了最终一个分片外,其他的分片都要置1。
7. 片偏移(Fragment Offset)
占13位。是分片相对原始IP数据报开端处的偏移(仅指数据部分)。实践偏移值是该值左移3位得到的。所以除最终一个分片,其他分片的数据部分长度必须是8的整数倍(片偏移乘以8:字节偏移)。
为什么要左移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就会发生死循环)。
观察运用ping指令后的TTL,能够推测出对方的操作系统,中间经过了多少个路由器。
9. 协议(Protocol)
用于区别上层协议,表明所封装的数据运用了什么协议。
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的值 - 经过
tracert
、pathping
指令,能够盯梢数据包经过了哪些路由器
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多态原理
、String
、Array
、Dictionary
、引证计数
、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-小程序框架烘托原理