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


博客链接——> 万字详解TCP

协议

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

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

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

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

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

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

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

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

在这里插入图片描述

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

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

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

OSI七层网络模型

在这里插入图片描述

1. 应用层

  • 应用层是计算机用户,以及各种应用程序和网络之间的接口,其功能是直接向用户提供服务,完成用户希望在网络上完成的各种工作
  • 应用层为用户提供的服务和协议:文件传输服务(FTP)、远程登录服务(ssh)、网络管理服等。
  • 上述的各种网络服务由该层的不同应用协议和程序完成
  • 应用层的主要功能如下:
    • 用户接口:应用层是用户与网络,以及应用程序与网络间的直接接口,使得用户能够与网络进行交互式联系
    • 实现各种服务:该层具有的各种应用程序可以完成和实现用户请求的各种服务

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

2. 表示层

  • 表示层是对来自应用层的命令和数据进行解释,对各种语法赋予相应的含义,并按照一定的格式传送给会话

  • 其主要功能是处理用户信息的表示问题,如编码、数据格式转换和加密解密等

  • 表示层的具体功能如下:

    • 数据格式处理:协商和建立数据交换的格式,解决各应用程序之间在数据格式表示上的差异
    • 数据的编码:处理字符集和数字的转换
    • 压缩和解压缩:为了减少数据的传输量,这一层还负责数据的压缩与解压缩
    • 数据的加密和解密:可以提高网络的安全性

3. 会话层

  • 会话层是用户应用程序和网络之间的接口,主要任务是:组织和协调两个会话进程之间的通信,并对数据交换进行管理
  • 当建立会话时,用户必须提供他们想要连接的远程地址。

4. 传输层

  • OSI上3层:应用层、表示层、会话层的主要任务是数据处理——资源子网
  • OSI下3层:网络层、数据链路层、物理层的主要任务是数据通讯——通讯子网
  • 传输层是OSI模型的第4层,它是通信子网和资源子网的接口和桥梁,起到承上启下的作用
  • 传输层的主要任务是:向用户提供可靠的端到端的差错和流量控制,保证报文的正确传输

报文:报文(message)是网络中交换与传输的 1
报文段:组成报文的每个分组。我们将运输层分组称为报文段(segment)

5.网络层

  • 主要任务是:数据链路层的数据在这一层被转换为 2 ,然后通过路径选择、分段组合、顺序、进/出路由等控制,将信息从一个网络设备传送到另一个网络设备
  • 一般情况下,数据链路层是解决同一网络(局域网)内节点之间的通信,而网络层主要解决不同子网间的通信

6. 数据链路层

在计算机网络中由于各种干扰的存在,物理链路是不可靠的。因此,这一层的主要功能是:

  • 在物理层提供的比特流的基础上,通过差错控制、流量控制方法,使有差错的物理线路变为无差错的数据链路,即向网络层提供可靠的通过物理介质传输数据的方法
  • 具体工作是:接收来自物理层的位流(比特流)形式的数据,通过差错控制等方法传到网络层;同样,也将来自上层的数据,封装成 3 转发到物理层;并且,还负责处理接收端发回的确认帧的信息,以便提供可靠的数据传输

:帧(frame)是数据链路层的传输单元。将上层传入的数据添加一个头部和尾部,组成了帧

7. 物理层

  • 主要功能是:利用传输介质为数据链路层提供物理连接,实现比特流的透明传输。尽可能屏蔽掉具体传输介质和物理设备的差异

总结

  • 在7层模型中,每一层都提供一个特殊的网络功能
  • 从网络功能的角度观察
    • 物理层、数据链路层、网络层:主要提供数据传输和交换功能,即节点到节点之间通信为主
    • 传输层(第4层):作为上下两部分的桥梁,是整个网络体系结构中最关键的部分;
    • 会话层、表示层和应用层:以提供用户与应用程序之间的信息和数据处理功能为主;

TCP/IP五层网络模型

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

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

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

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

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

ARP😗*(地址解析协议IP-MAC)RARP(逆地址解析协议MAC-IP)**是某些网络接口(如以太网)使用的特殊协议,用来转换IP层和网络接口层使用的地址下层协议给上层协议提供了一些功能支撑,上层协议要依赖下层协议

网络层协议

在TCP/IP协议族中,网络层协议包括IP协议(网际协议),ICMP协议(Internet互联网控制报文协议),以及IGMP协议(Internet组管理协议)。

  • IP是一种网络层协议,提供的是一种不可靠的服务,它只是尽可能快地把分组从源结点送到目的结点,但是并不提供任何可靠性保证。同时被TCP和UDP使用。
    TCP和UDP的每组数据都通过端系统和每个中间路由器中的IP层在互联网中进行传输。
  • ICMP是IP协议的附属协议。IP层用它来与其他主机或路由器交换错误报文和其他重要信息。它主要是用来提供有关通向目的地址的路径信息。Ping和Traceroute工具,它们都使用了ICMP协议
  • IGMP是Internet组管理协议。它用来把一个UDP数据报多播到多个主机。该协议运行在主机和组播路由器
    之间。

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

下面是教科书的内容

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

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

数据封装过程

1.数据格式

TCP数据信息:TCP头部+实际数据 (TCP头包括源和目标主机端口号、顺序号、确认号、校验字等)
IP数据包:IP头部+TCP数据信息(IP头包括源和目标主机IP地址、类型、生存期等)
数据帧:帧头+IP数据包+帧尾 (帧头包括源和目标主机MAC初步地址及类型,帧尾是校验字)

2. 数据的封装与解封装

封装:数据要通过网络进行传输,要从高层一层一层的向下传送,如果一个主机要传送
数据到别的主机,先把数据装到一个特殊协议报头中,这个过程叫-----封装。 解封装:上述的逆向过程
当数据以TCP/IP协议传输时的封装与街封装过程如下图:
在这里插入图片描述

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


下一篇《Socket套接字》

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱敲代码的三毛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值