网络编程 ———— OSI七层网络模型和TCP/IP五层网络模型

Posted 爱敲代码的三毛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了网络编程 ———— OSI七层网络模型和TCP/IP五层网络模型相关的知识,希望对你有一定的参考价值。

文章目录


协议

协议就是一种约定,协议概念本身并不复杂,但是由于网路通信这件事,涉及到方方面面的细节,因此真实的网络通信协议,往往也并不简单。

网络通信中的五元组,两个主机之间进行通信,往往是通过一个五元组,来描述这一次通信的。

在TCP/IP协议中,用五元组来标识一个网络通信

  1. 源IP:标识源主机
  2. 源端口号:标识源主机中该次通信发送数据的进程
  3. 目的IP:标识目的主机
  4. 目的的端口号:标识目的主机中该次通信接收数据的进程
  5. 协议号:标识发送进程和接收进程双方约定的数据格式

当前网络中涉及到的协议,是有很多的。主要就是因为网络里面比较复杂,然后无法通过一个协议,来吧所有的功能都涵盖进去,就需要拆分出多个协议,为了更好的来组织这么多协议,就按照这些协议的定位,再进行分类,于是就有了 协议分层

这就类似于写Java代码,如果问题比较复杂,就光通过一个类来完成所有的功能,这可能就比较困难了。

为了更好的解决这个问题,就需要进行拆分,把这个复杂的代码拆成多个类
如果类太多了,就又需要创建出一些包,把一些功能定位类似的类放到一个包里。

来看下面这张图,这里这是分为语言层和通信设备层。

  • 这里达到了封装的效果,把实现细节隐藏起来,降低人们使用的成本,打电话的人不需要理解电话机具体的工作原理,造电话的人。也不需要懂各种方言

  • 就可以很方便的对其中某一层/某些协议进行灵活的替换。

  • 这样如果对网络协议中的某个细节进行改进升级,只需要替换对应层的协议即可,不需要对其它层次的协议进行影响。

OSI七层网络模型


OSI 七层模型既复杂又不实用:所以 OSI 七层模型没有落地、实现。
实际组建网络时,只是以 OSI 七层模型设计中的部分分层,也即是以下 TCP/IP 五层(或四层)模型来实现

TCP/IP五层网络模型


程序猿主要考虑的是软件,物理层是更偏向于硬件的东西,所以往往会忽略物理层,这里也叫做TCP/IP四层模型

  1. 应用层:具体的应用层序
  2. 传输层:只关注起点和终点,不关注具体的通信细节
  3. 网络层:针对网络上的任意两台主机,完成一个通信路径的规划,以及具体传输
  4. 数据链路层:实现了两个相邻设备之间的数据通信
  5. 物理层:硬件设备,网络通信的基础设施(网线…)
  • 比如在淘宝买了一件衣服,我就需要填写我的收件人地址和电话,卖家就发货,填写发件人地址和电话 我和卖家,只关注起点和终点。我们就相当于传输层。

  • 卖家把货交给快递公司,快递公司就需要规划处一个具体路线,就相当于网络层

  • 专门的快递小哥来进行送快递,这个环节就是数据链路层

  • 公路,铁路,航空,这些都是物理层

下层协议给上层协议提供了一些功能支撑,上层协议要依赖下层协议

TCP传输层和IP网络层这俩协议是整个TCP/IP中最重要的协议

下面是教科书的内容

  • 对于一台主机,它的操作系统内核实现了从传输层到物理层的内容,也即是TCP/IP五层模型的下四层
  • 对于一台路由器,它实现了从网络层到物理层,也即是TCP/IP五层模型的下三层
  • 对于一台交换机,它实现了从数据链路层到物理层,也即是TCP/IP五层模型的下两层
  • 对于集线器,它只实现了物理层

上面是应对一些考题,才有这样的结论。

但是真实的情况不是这样的,路由器和交换机,现在的概念已经比较模糊,像一些好的路由器交换机,也往往会实现一些传输层以及应用层的内容


下一篇《Socket套接字》

以上是关于网络编程 ———— OSI七层网络模型和TCP/IP五层网络模型的主要内容,如果未能解决你的问题,请参考以下文章

OSI七层网络模型

OSI七层模型中各层分别都有哪些协议?

思唯网络学院OSI七层网络模型

图解七层网络模型

计算机网络基础——OSI七层网络模型

Java网络编程:OSI七层模型和TCP/IP模型介绍