计算机网络基础|第四节|网络层
网络层(重点掌握)网络层的任务
实现网络互连,进而实现数据包在各网络之间传输
网络层需要解决的问题
提供运输层的服务
网络层寻址
路由选择问题
因特网(Internet)使用的是TCP/IP协议栈
网络层也常被称为网际层
面向连接的虚电路服务
必须建立网络层连接 虚电路VC(Virtual Circuit)
可靠性由网络来保证
分组按序,走虚电路到达
在通信结束需要释放之前建立的虚电路
无连接的数据报服务
可靠通行应当由用户主机来保证
不需要建立网络层连接
首部必须携带目的主机的完整地址
可以走不同的路由
容易出现误码,乱序等问题
在TCP/IP全栈体系中
网际层提供的简单灵活的,无连接的,尽最大努力交付的数据报服务
基本概念IPV4地址全世界范围内唯一的 32比特的标识符(每一台主机或路由器的每一个接口)
IP地址由因特网名字和数字分配机构ICANN进行分配
2011 IANA(互联网号码分配管理局)宣布IPv4分配完毕
2014~2015 我国逐渐停止分配IPv4,同时开始全面部署IPv6
这里由时间发展,解释IPv4的编址方法的三个历史阶段
1981年 ...
C++复健1(未整理)
C++复健(侯捷)overloading (重载)
重载的条件:
同名
同作用域
不同的返回值
或者不同的参数(形参)
同名:其实在编译器来看是不同名的
作用域:一个类内,一个全局域内,一个函数域内
当构造函数放在私有中:
设计模式:Singleton
外界不能创建这个类
但是我们可以通过这个类提供的外界接口。
示例:
12345678910111213141516171819class A{ public: static A& getInstance(); //关键点在 static setup(){...} private: A(); A(const A& rhs); ...};A& A::getInstance(){ static A a; return a;}void test(){ A::getInstance().setup();//调用方式}
成员函数,内联(inline)定义,调用是最快的
但内联是编译器决定的,写 ...
C++复健2(未整理)
conversion function
转换函数
non-explicit-one-argument ctor
1234567891011121314151617181920212223242526272829303132#include <iostream>using namespace std;class Fraction{ private: int m_numer; int m_denom; public: Fraction(int num, int den = 1) : m_numer(num), m_denom(den) {} operator double() const { return (double)(m_numer / m_denom); } Fraction operator+(const Fraction& f) { return Fraction((f.m_numer + 1) * this->m_denom, f.m_denom * this->m_ ...
C++复健3(未整理)
不会用标准库与其他语言没什么区别
C++11的标准库的体系结构与内核分析
C++标准库
C++标准模板库
先明白头文件引用
新式headers
无.h后缀名
旧式headers
带.h后缀名
而新式的headers内的组件都封装与namespace “std”中
旧式的std就不被封装于namespace “std”
标准库属于新式的headres中
STL的六大部件
容器Container
分配器Allocators
算法Algorithms
迭代器Iterators
泛化的指针
适配器Adapters(转换器)
容器的适配器
迭代器的适配器
仿函数的适配器等等
仿函数Functors
可以发现OOP的思想跟STL的设计思想是不大一样的
算法的复杂度
当前的常见的Big-oh
$O(1)$
$O(n)$
$O(log_2n)$
$O(n^2)$
$O(n^3)$
$O(2^n)$
$O(nlog_2n)$
容器大部分都是前闭后开区间,而且不一定是连续空间
一般分三类
Sequence Container
顺序容器
Associative Container
...
C++复健4(未整理)
C++11特性很多以前存在的组件已经放入了STL
比如regex,tuple等
需要注意的比较重要的特性
模板多函数参数
123456789101112131415#include <iostream>using namespace std;void print() {}template <typename T, typename... Types>void print(const T& fristArg, const Types&... args) { cout << fristArg << endl; cout << "当前还没执行的参数" << sizeof...(args) << endl; print(args...);}int main() { print(12, "hellp", "skdjskd"); return 0;}
这三个点实际上就是一 ...
计算机网络基础ISO
ISO7层网络结构体系图
计算机网络基础|第三节|数据链路层
数据链路层有些部分内容也是相当的抽象,了解即可
重点部分
数据链路层的互联设备
网络编程的主要研究在网络层中
封装成帧给上一层交付的协议数据单元进行先添加帧尾和帧头使其成为帧
ppp帧(点对点信道的帧)
帧头帧尾作用之一是帧定界标志
透明传输指的是对上层交付的传输数据没有任何限制,数据链路层的封装好像就是理所应当的,看不见的,不存在的(可以理解为你经常会忽视,你习以为常的事物)
面对字节的物理链路使用字节填充在发送帧之前检测定界标志,检测到定界符flag或者转义字符就前插入一个esc转义字符
如图所示:
注意转义字符只有一个字节,10进制为27,是一个控制字符
面向比特的物理链路使用比特填充对数据部分进行每五个连续的比特1添加一个比特0,确保帧定界的标志成为唯一的值
在接收方时按照改规则去除比特0即可
注意提高帧的传输效率,应当使数据部分的长度更大一些
但是考虑到差错控制等多种因素,每一种数据链路层的协议都规定的帧的数据部分的最大上限
我们称其为最大传送单元MTU(Maximum Transfer Unit)
mac帧是没有定界符的,取代而之的是物理层加入一个前导码,有着相同 ...
计算机网络基础|第二节|物理层
物理层前言本章了解个概念,不深究,比较抽象
物理层的主要任务明确:考虑怎么链接各种计算机之间传输比特流数据
四个特性
机械
接口类型
电气
电压
功能
传输1/0编码
过程
时种顺序
传输介质注意传输介质实际上不属于物理层
导引型传输媒体
双绞线
两根,按一定规则双绞,抗干扰
同轴电缆
光纤
单模光纤:波导,就是贵,对光信号要求高
多模光纤:全反射
优点:带宽大,损耗低
电力线
适合短距离
非导引型传输媒体(自由空间)
微波
直线,电离层无折射,需要中继站,典型5G通信
无线电波
电离层折射,距离远
可见光
应用:lifi
传输方式串行传输一条数据传输线路
并行传输多条数据传输线路
计算机内部常用并行传输
同步传输时钟同步连续无间隔
外同步
多加一条单独的时钟信号线
内同步
市中心号线与发送数据曼彻斯特编码
异步传输异步的体现:字节之间的时间间隔不固定
需要字节需要加上起始位和结束位
但各比特的持续时间是相同的
字节异步,比特同步
单工单向
半双工双向不同时
全双工同时双向
编码与调制关于编码与调制我们需要了解:
信息->数据(二进制 ...