网络基本的概念:
ip地址:标志网络上设备当前的位置
端口号:用来指定一个特定的应用程序
认识协议:在网络通信中,信息交互需要遵守的协议
OSI模型 (Open System Interconnection,开放系统互连)
OSI模型只是在逻辑上把网络分成了7层,但在我们实际地网络通信中,一般只拿其中的部分层来通信,通常是以TCP/IP四层/五层协议来实现
TCP/IP五层协议
TCP/IP协议并不是只代表了这两个协议,其中还包括很多协议,这是一个协议组。
五层结构模型:(可以类比于发快递的过程)
- 应用层:负责程序之间的逻辑业务沟通,由我们程序员来编写逻辑代码开发, 我们的网络编程就是主要针对于应用层
- 传输层:只关注端到端的传输,只关心起点和终点,使数据能够可靠地其起点发送到终点
- 网络层:负责传输路线的路径选择(怎么选择成本最低)
- 数据链路层:负责节点间数据传输的工具是什么(是坐车还是坐火车还是坐高铁)
- 物理层:负责光/电信号的传递方式(负责网络通信的基础硬件设施的搭建-----修路)
其中,应用层由我们程序员自己负责,传输层和网络层由操作系统内核实现,数据链路层和物理层由硬件及驱动程序实现
网络传输基本流程:(类比封快递 拆快递)
封装:
- 应用层:我在应用层程序中发送了一个自定义协议格式的数据(每个应用程序定义的格式都不一样),程序需要调用操作系统的api,将这个消息告诉给传输层
- 传输层:到传输层时,此时就已经到了操作系统内核了,此时需要将从应用层接收到的数据打成一个数据包,而在传输层最知名的协议便是udp/tcp协议了,此时我们以udp协议举例:我们需要在接收的数据的基础上给它套个udp报头,变成udp数据报格式
![]()
- 网络层:到传输层时,最知名的协议是IP协议,需要将数据封装成一个IP数据报,其拼接过程和传输层拼接过程类似,也是在数据之前拼接上一个IP报头
![]()
- 数据链路层:到达数据链路层时,其最知名的协议为-----以太网,故需要将数据打成以太网数据帧,在IP数据报之前加上一个以太网帧头,在尾部加一个以太网帧尾
![]()
5.物理层:将此时的数据转换成光/电信号,此时我们的数据,就真正地发送出去了
分用(层层解析)
当对方接收到我们发送的数据后,需要将层层包装后的数据一层层解析,拿到我们最开始应用层发送的原始数据
- 物理层:将光/电信号重新转换成二进制数据,最后轮换后的结果是一个以太网数据帧
- 数据链路层:解析数据,去掉帧头帧尾,取出中间的载荷,交给上层网络层IP协议
![]()
- 网络层:解析数据,去掉IP报头,取出中间载荷,交给上层传输层udp协议
![]()
- 传输层:解析数据,去掉UDP报头,得到原始应用层数据
![]()
- 应用层:根据应用层协议,将接收过来的数据信息以某种方式显现出来
上面部分,我们了解到了五层模型各个部分都有不同的协议,那么为什么需要协议分层呢?为什么需要协议呢?
- 协议分层:便于更好地通信,类比于有许多外国人处在一个空间,那么如何能让他们进行通信呢?将同国的人划分在一个区域,而这就是协议分层的意义,在此区域规定了说汉语,就不能说英语,要说英语的话就去你对应的区域找
- 协议:通信双方必须按照其规定的模式来交流才能正常理解数据信息,如果没有此标准的话,那么信息传递就无法进行了,例如我传递了一段文字信息,你却给我翻译成了一张图片,这咋通信呢?
小结:
- 在整个网络协议中,协议被分成了很多层,每个层都有着自己独有的作用
- 上层协议需要调用下层协议(上层协议将数据交给下层协议继续封装),下层协议为上层协议提供支持(下层协议将数据解析后交给上层协议)
- 层与层之间具有明确的层级关系,不能跨层传输,只有相邻的层之间才能交互
- 在分层模式约束下,使我们的网络传输变得清晰明了