文章目录
概论 / 历史
- 产生时间:计算机 -> OS ->网络
- 先进设备流入高校 -> 高效内部有数据研究的需求和沟通的需求 ,出现网络 -> 目的是为了提高效率
- 网络在哪里 --这里的网络,指的是网络协议栈,它是一个软件,贯穿体系结构的tcp/ip,属于OS的一部分
- 网络层和传输层是OS的内核的一部分
- 在学习时应用层是重要的
认识协议(感性认识)
- 协议栈和协议 就是 打电话和电话的关系
- 我们人的约定就可以理解成程序员定的约定,所谓的计算机协议,本质就是约定,约定是由编码的程序员自己根据文档,或者自己的喜好定义的协议
- 同行业的佼佼者才可以定制协议,不是人人都可以定制的
模型
OSI七层模型
- 逻辑上:没有真实存在,而是用代码 / 某种抽象技术 抽象出来的就叫逻辑上的,OSI七层网络模型就是一个逻辑上的定义和规范
TCP/IP五层(或四层)模型
- 物理层:光/电 信号的传输方式,光纤,wifi,无线…集线器就工作在物理层
- 数据链路层:硬件所匹配的驱动模块,例如网卡的驱动,同步…
- 网络层:地址管理和路由选择。路由器就是工作在网络层
- 传输层:两台主机的数据传输。如TCP,确保数据可靠传输
- 应用层:负责程序间沟通。如SMTP,FTP…
网络协议栈
理解报头
什么是报头,为什么要有报头
生活角度理解
- 需要报头中的数据,来指导当前层进行某种协议的决策
- 拿到快递里的东西,把壳子扔掉,就是解包的过程
- 将快递封装,将快递单往上面一贴,就是封包的过程
- 生活角度的例子
在计算机OS中理解报头和有效载荷
-
报头是数据吗? -是的,是一种结构化的数据
第一个√是报头,后面是有效载荷 -
几乎每一层协议的报头中,都要包含两种字段:
1 .当前报文的有效载荷要交付给上层的哪一个协议 -> 解包
2 .几乎每一个报头,都要明确报头和有效载荷的边界
这也是协议的共性 -> 分用
-
Linux OS是C语言写的,站在语言的角度,如何理解分装和解包呢? -在本质上讲:一个报头就是将一个位段拷贝进缓冲区,将有效载荷也包进去,就算一个完整的报文了
-
封装的过程
-
解包
以太网的工作原理
- 同一个局域网能通信吗? 能
- 局域网的任何一个时刻,都只能有一台主机在向局域网中发送消息 -> “互斥”
IP VS MAC
- 我们在路由的过程中,目的ip是不变的,目的MAC是一直在变的
- 例子:A->B->C的时候,源IP地址就是A->C是不变的,然后源MAC地址是从A->B,再从B->C,完成传输。
认识IP
- IP有两个版本,IPv4和IPv6
- IP地址是IP协议中用来表示网络中不同主机的位置
- 对IPv4来说,IP地址是一个4字节,32位的整数
认识MAC地址
- MAC地址用来识别数据链路层中相连的节点
- 在网卡出厂时就确定了,不能修改,通常是唯一的