网络编程 ———— OSI七层网络模型和TCP/IP五层网络模型
Posted 爱敲代码的三毛
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了网络编程 ———— OSI七层网络模型和TCP/IP五层网络模型相关的知识,希望对你有一定的参考价值。
文章目录
协议
协议就是一种约定,协议概念本身并不复杂,但是由于网路通信这件事,涉及到方方面面的细节,因此真实的网络通信协议,往往也并不简单。
网络通信中的五元组,两个主机之间进行通信,往往是通过一个五元组,来描述这一次通信的。
在TCP/IP协议中,用五元组来标识一个网络通信
- 源IP:标识源主机
- 源端口号:标识源主机中该次通信发送数据的进程
- 目的IP:标识目的主机
- 目的的端口号:标识目的主机中该次通信接收数据的进程
- 协议号:标识发送进程和接收进程双方约定的数据格式
当前网络中涉及到的协议,是有很多的。主要就是因为网络里面比较复杂,然后无法通过一个协议,来吧所有的功能都涵盖进去,就需要拆分出多个协议,为了更好的来组织这么多协议,就按照这些协议的定位,再进行分类,于是就有了 协议分层
这就类似于写Java代码,如果问题比较复杂,就光通过一个类来完成所有的功能,这可能就比较困难了。
为了更好的解决这个问题,就需要进行拆分,把这个复杂的代码拆成多个类
如果类太多了,就又需要创建出一些包,把一些功能定位类似的类放到一个包里。
来看下面这张图,这里这是分为语言层和通信设备层。
-
这里达到了封装的效果,把实现细节隐藏起来,降低人们使用的成本,打电话的人不需要理解电话机具体的工作原理,造电话的人。也不需要懂各种方言
-
就可以很方便的对其中某一层/某些协议进行灵活的替换。
-
这样如果对网络协议中的某个细节进行改进升级,只需要替换对应层的协议即可,不需要对其它层次的协议进行影响。
OSI七层网络模型
OSI 七层模型既复杂又不实用:所以 OSI 七层模型没有落地、实现。
实际组建网络时,只是以 OSI 七层模型设计中的部分分层,也即是以下 TCP/IP 五层(或四层)模型来实现
TCP/IP五层网络模型
程序猿主要考虑的是软件,物理层是更偏向于硬件的东西,所以往往会忽略物理层,这里也叫做TCP/IP四层模型
- 应用层:具体的应用层序
- 传输层:只关注起点和终点,不关注具体的通信细节
- 网络层:针对网络上的任意两台主机,完成一个通信路径的规划,以及具体传输
- 数据链路层:实现了两个相邻设备之间的数据通信
- 物理层:硬件设备,网络通信的基础设施(网线…)
-
比如在淘宝买了一件衣服,我就需要填写我的收件人地址和电话,卖家就发货,填写发件人地址和电话 我和卖家,只关注起点和终点。我们就相当于传输层。
-
卖家把货交给快递公司,快递公司就需要规划处一个具体路线,就相当于网络层
-
专门的快递小哥来进行送快递,这个环节就是数据链路层
-
公路,铁路,航空,这些都是物理层
下层协议给上层协议提供了一些功能支撑,上层协议要依赖下层协议
TCP传输层和IP网络层这俩协议是整个TCP/IP中最重要的协议
下面是教科书的内容
- 对于一台主机,它的操作系统内核实现了从传输层到物理层的内容,也即是TCP/IP五层模型的下四层
- 对于一台路由器,它实现了从网络层到物理层,也即是TCP/IP五层模型的下三层
- 对于一台交换机,它实现了从数据链路层到物理层,也即是TCP/IP五层模型的下两层
- 对于集线器,它只实现了物理层
上面是应对一些考题,才有这样的结论。
但是真实的情况不是这样的,路由器和交换机,现在的概念已经比较模糊,像一些好的路由器交换机,也往往会实现一些传输层以及应用层的内容
下一篇《Socket套接字》
以上是关于网络编程 ———— OSI七层网络模型和TCP/IP五层网络模型的主要内容,如果未能解决你的问题,请参考以下文章