title: 2018.9.2 OSI七层模型及数据的传输过程
tags: 计算机网络, OSI七层模型, 数据传输, 数据解封装
---

OSI七层模型和TCP/IP五层模型


OSI七层模型

我们说的七层模型第七层都是应用层,第一层是最底下的物理层。

图中只有物理层之间的线条是实线的,可以将这条线理解为两台主机之间的网线,连接两机实现通讯

模型里的每一层都是独立的,两台主机之间通信,对应的层使用的协议相同。

应用层可以理解为最接近使用者的一层,我们可以直接使用,例如QQ、微信等软件,当我们用此类软件发出一条消息时,最终这条消息的接收方就是目的主机的应用层,但是我们无法直接将信息发送到对方的应用层。所以我们的消息会依次经过以下的每一层,通过不同的协议封装最终通过网线传输到对方电脑,然后在对方电脑一层一层解封装数据包,最后到达对方电脑的应用层软件。这里具体的封装和解封装过程我们在后面的解封装过程中详细说明。
例如下图(模型图)

TCP/IP五层模型

在实际的使用中,科学家在每一层中添加对应的协议,发现有其中的表示层和会话层的协议比较少(相对于其他层而言,但也是必不可缺的),于是将这两层合并到应用层,称为TCP/IP五层模型。

五层里面每层都有一些协议,但是由于TCP/IP协议的重要性,为了纪念这两层协议,于是命名为TCP/IP五层模型。

在互联网所使用的各种协议中, 最重要的 和最著名的就是TCP和IP两个协议。 现在人们经常提到的TCP/IP并不一定是单指TCP和IP这两个具体的协议,而往往是表示互联网所使用的整个TCP/IP协议簇。

TCP/IP五层模型中每一层对应的设备:

数据的封装和解封装过程


数据的封装与解封:
发送时将上一层交下来的数据加上首部和尾部,成为以太网的帧。接收时将以太网的帧剥去首部和尾部,然后送交上一层

数据的封装过程是自顶向下的,而解封装过程则相反。

第五层:应用层

应用层是体系结构中的最高层。 应用层的任务是通过应用进程间的交互来完成特定网络应用。应用层协议定义的是应用进程间通信和交互的规则。 这里的进程就是指主机中正在 运行的程序。


我们在软件上发出一条消息“hello”,应用层将这条消息处理为一个五层的数据包,这里我们就先认为数据包的内容为我们发出的“hello”消息。

第四层:传输层

运输层的任务就是负责向两台主机中进程之间的通信提供通用的数据传输服务。 应用 进程利用该服务传送应用层报文。

[传输层封装]!(https://images2018.cnblogs.com/blog/1449724/201809/1449724-20180908001823712-506775068.png)
应用层将消息封装成数据包后将数据包传递到传输层,传输层会对五层数据包进行进一步的封装,为该数据包添加一个TCP/UDP头部(TCP或者UDP二者其中一个,具体取决于软件选择那个协议),其中含有源端口号和目的端口号,源端口号即为软件使用的上一层协议的端口号,目的端口号为接收数据方接收该数据的端口号。例如当我们用IE访问一个http开头的网页时,实际上我们时在访问对方的80端口。

这个过程中系统会为IE浏览器随机生成一个端口号,假如是1000,我们的数据到了传输层,包头中的源端口号为1000,目的端口号为80。

这里对端口号做一个解释,我们将两方进行数据传输时,应用层软件需要使用应用层的协议,使用的协议有其对应着端口号,当有数据发送出去时,数据是从这个端口号发送出去的,而接收方接受数据时,也是根据传输层包头中的目的端口号对数据进行接收。

就像两个水桶之间转移水,A水桶需要开一个口让水流出来,B水桶需要开一个口让水进去,这里开的口就是上面的端口,端口号就是对这些端口的编号。

第三层:网络层

网络层负责为分组交换网上的不同主机提供通信服务。在发送数据时,网络层把运输层产生的报文段或用户数据报封装成分组或包进行传送。

在传输层中,TCP/UDP包头为五层数据包提供了目的端口号,但是一个网络里有那么多主机,数据包怎么才能成功的传输到我们指定的主机上呢?所以这里就需要网络层开始自己的工作了!
类似于传输层,网络层也有一个很重要的协议——IP协议,当四层数据包到网络层时,网络层会对该数据包添加一个IP包头,其中含有数据包的源IP和目标IP,数据传输的过程中就是根据这层的目标IP找到需要通信的主机。


前三层的数据包很重要,在一个包中称为上三层数据,是最有价值的包,不能被别人篡改,一旦被篡改就有可能造成通信出错或者信息泄露。(例如本来A发给B的数据,上三层数据被篡改后发给了C)

接下来的两层在网络中也是必不可少的,虽然上三层在数据包中指明了传输的路线,但是上三层数据包是无法通过介质进行传播的(例如网线、WiFi、光纤),那如果数据包想过介质进行传播的话怎么办呢,这就需要用到下面的两层了。


第二层:数据链路层

数据链路层主要功能是如何在不可靠的物理线路上进行数据的可靠传递。为了保证传输,从网络层接收到的数据被分割成特定的可被物理层传输的帧。帧是用来移动数据的结构包,它不仅包括原始数据,还包括发送方和接收方的物理地址以及检错和控制信息。

当上三层的数据包到了数据链路层,就意味着这个信息已经成功到达计算机的网卡,下一步就可以通过网线传输了,这时我们的信息就需要一个载体来进行传输,于是在第二层会给上三层数据包加上一个二层头部(MAC子层)和二层尾部(FCS)。

如同从上海到北京,我们作为乘客,期间可能会换乘很多趟列车,每到一个站点换乘的时候,乘客是不会变的,但是列车变了。在数据链路层中也是这样,在传输的过程中,二层的头部和尾部就相当于列车头和列车尾,中间的信息就是乘客,乘客不会变化,但在换车的过程中,列车头和列车尾是会变化的。

MAC子层头部:
含有源MAC地址和目标MAC地址字段,关于这一块的内容我们在后面的整理中再学习,这里我们只需要知道每一台主机的MAC地址是唯一固定的。

FCS:帧校验序列
上三层加上帧头之后,对中间的信息数据会使用一个循环校验算法,最终得到一个固定的值,我们可以利用这个值和FCS得出这个数据包的内容是否缺失。

第一层:物理层

在物理层上所传数据的单位是比特。发送方发送1(或0)时,接收方应当收到1(或0)而不是 0 (或1)。 因此物理层要考虑用多大的电压代表 “ 1 ” 或 “ 0飞以及接收方如何识别出发送方所发送的比特。 物理层还要确定连接电缆的插头应当有多少根引脚以及各引脚应 如何连接。

[物理层]
在物理层,相当于网卡二层数据帧包送到网线上,这时候二层的数据帧包会被转化成一段连续的比特流,然后以电脉冲的形式传输到交换机,最后到达目标主机物理层。

物理层的协议产生并检测电压以便发送和接收携带数据的信号。在你的PC上插入网络接口卡,你就建立了计算机连网的基础。换言之,你提供了一个物理层。尽管物理层不提供纠错服务,但它能够设定数据传输速率并监测数据出错率。网络物理问题,如电线断开,将影响物理层。

以上便是对TCP/IP中各层功能和传输数据过程中封装数据包的的一些说明,而当数据包到达目标主机后,目标主机会对数据包进行一个解封装,其中过程如下:

实际就是对封装过程的一个逆操作,至于其中具体的一些知识点我们在后面的整理中再进行学习。

网络学习day02_OSI七层模型及数据的传输过程的更多相关文章

  1. osi七层模型和两主机传输过程:

    osi七层模型和两主机传输过程: http://www.zhihu.com/question/24002080/answer/31817536  注:笔记部分可能参考其他作者内容的一个记录,仅为加深自 ...

  2. 如何生动形象、切中要点地讲解 OSI 七层模型和两主机传输过程

    作者:繁星亮与鲍包包链接:https://www.zhihu.com/question/24002080/answer/31817536来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转 ...

  3. 1.关于OSI七层模型和两主机传输过程

    先回顾一下OSI七层模型有啥内容 (OSI模型与TCP/IP模型类似,这里只针对OSI模型展开) OSI参考模型为什么弃用呢?它的分层过于细致了,以至于使网络的体系结构变得复杂臃肿,有使用重叠的嫌疑, ...

  4. python网络编程-OSI七层模型详解

    OSI 七层模型通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯,因此其最主要的功能就是帮助不同类型的主机实现数据传输 . 完成中继功能的节点通常称为中继系统.在OSI七层模型中,处于 ...

  5. 网络 、osi 七层模型、tcp/ip 五层参考

    网络 网络的本质就是通讯,比特传输 网络拓扑 物理布局pc -- 交换机 -- 路由器逻辑布局pc -- 路由器 交换机的产生 网络之初,是通过网线互相连通到各个主机,存在的问题就是2个pc都要与服务 ...

  6. 网络之OSI七层模型

    1.  物理层:设备之间的比特流的传输,物理接口,电气特性等 2.  数据链路层:成帧,用MAC地址访问媒介,错误检测与修正 3.  网络层:提供逻辑地址(IP),选路 4.  传输层:可靠与不可靠的 ...

  7. TCP/IP 网络精讲:OSI七层模型(第二课)

    内容简介 1.前言 2.第一部分第二课:互联网的创立,OSI七层模型 3.第一部分第三课预告:OSI第一层,连接你的机器 前言 PS:昨天做了课程大纲之后,发现这个坑挖得有点大.不过既然挖了,岂有不跳 ...

  8. OSI七层模型学习笔记

    1.简介 什么是OSI模型呢? OSI模型全名Open System InterConnect 即开放式系统互联,是国际标准化组织(ISO)提出的一个试图使各种计算机在世界范围内互连为网络的标准框架, ...

  9. 网络--OSI七层模型详解

    OSI 七层模型通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯,因此其最主要的功能就是帮助不同类型的主机实现数据传输 . 完成中继功能的节点通常称为中继系统.在OSI七层模型中,处于 ...

随机推荐

  1. 第一本Docker书读书笔记

    日常使用命令 1.停止所有的container,这样才能够删除其中的images: docker stop $(docker ps -a -q) 如果想要删除所有container的话再加一个指令: ...

  2. Golang 入门系列(五)GO语言中的面向对象

    前面讲了很多Go 语言的基础知识,包括go环境的安装,go语言的语法等,感兴趣的朋友可以先看看之前的文章.https://www.cnblogs.com/zhangweizhong/category/ ...

  3. LeetCode 613. Shortest Distance in a Line

    Table point holds the x coordinate of some points on x-axis in a plane, which are all integers. Writ ...

  4. Mysql完整约束性

    一.介绍 约束条件与数据类型的宽度一样,都是可选参数 作用:用于保证数据的完整性和一致性主要分为: PRIMARY KEY (PK) 标识该字段为该表的主键,可以唯一的标识记录 FOREIGN KEY ...

  5. 如何查杀stopped进程

    在Linux系统下面,top命令可以查看查看stopped进程.但是不能查看stopped进程的详细信息.那么如何查看stopped 进程,并且杀掉这些stopped进程呢? ps -e j | gr ...

  6. JVM调优:HotSpot JVM垃圾收集器

    HotSpot JVM垃圾收集器 - Snooper - 博客园https://www.cnblogs.com/snooper/p/8718478.html

  7. 其他综合-fdisk一键分区操作-无需脚本

    fdisk一键操作分区-无需脚本(根据自己的实际环境操作) 为了让在系统里能够显示新添加的硬盘已知有两种操作方法 : 1.重启 2.输入echo "- - -" > /sys ...

  8. Python——sys模块

    七.sys模块 sys模块的常见函数列表 sys.argv: 实现从程序外部向程序传递参数. sys.exit([arg]): 程序中间的退出,arg=0为正常退出. sys.getdefaulten ...

  9. P1137 旅行计划

    /*拓扑排序去寻找点的拓扑序 便于DP,那么怎么去找 首先邻接表存边,然后dfs搜寻每一个点 最后进行拓扑排序,找到拓扑序*/ #include<bits/stdc++.h> ; ; us ...

  10. Codeforces1102F Elongated Matrix 【状压DP】

    题目分析: 这题瞎搞一个哈密尔顿路,对于起点不同的分开跑就可以过了. $O(n^3*2^n)$ #include<bits/stdc++.h> using namespace std; ; ...