互联网的本质就是一系列的网络协议,这个协议就叫OSI协议(一系列协议),按照功能不同,分工不同,人为的分层七层。实际上这个七层是不存在的。没有这七层的概念,只是人为的划分而已。区分出来的目的只是让你明白哪一层是干什么用的。
每一层都运行不同的协议。协议是干什么的,协议就是标准。
实际上还有人把它划成五层、四层。
七层划分为:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。
五层划分为:应用层、传输层、网络层、数据链路层、物理层。
四层划分为:应用层、传输层、网络层、网络接口层。
物理层:
字面意思解释:物理传输、硬件、物理特性。在深圳的你与北京的朋友聊天,你的电脑必须要能上网,物理体现是什么?是不是接一根网线,插个路由器,北京的朋友那边是不是也有根网线,也得插个路由器。也就是说计算机与计算机之间的通信,必须要有底层物理层方面的连通,就类似于你打电话,中间是不是必须得连电话线。
中间的物理链接可以是光缆、电缆、双绞线、无线电波。中间传的是电信号,即010101...这些二进制位。
要让这些010010101001...有意思,人为的分组再适合不过了,8位一组,发送及接收都按照8位一组来划分。接收到8位为一组的话,那么就可以按照这8位数来做运算。如果没有分组,对方接收的计算机根本就不知道从哪一位开始来做计算,也解析不了收到的数据。我发了16位你就按照16位来做计算吗?我发100位你就按照100位做计算吗?没什么意义是吧。因此要想让底层的电信号有意义,必须要把底层的电信号做分组。我做好8位一组,那么我收到数据,我就知道这几个8位做一组,这几个8位做一组。那么每个8位就可以得到一个确定的数。分组是谁干的活呢?物理层干不了,这个是数据链路层干的。
数据链路层
早期的时候,数据链路层就是来对电信号来做分组的。以前每个公司都有自己的分组方式,非常的乱,后来形成了统一的标准(标准就是协议),即以太网协议Ethernet。
Ethernet规定
一组电信号称之为一个数据包,或者叫做一个“帧”
每一数据帧分成:报头head和数据data两部分
head包含:(固定18个字节)
发送者(源地址,6个字节)
 接收者(目标地址,6个字节)
 数据类型(6个字节)
data包含:(最短46字节,最长1500字节)
数据包的具体内容
head长度+data长度=最短64字节,最长1518字节,超过最大限制就分片发送。
这就像写信,发送者的地址(源地址)就是你家的地址,接收者地址(目标地址)就是对方的收信地址,你家的路由器就相当于邮局。其实在计算机通信中的源地址和目标地址指的是mac地址。
Mac地址的由来:
head中包含的源和目标地址由来:Ethernet规定接入Internet的设备都必须具备网卡,发送端的和接收端的地址便是指网卡的地址,即Mac地址。
每块网卡出厂时都被烧录上一个实际上唯一的Mac地址,长度为48位2进制,通常由12位16进制数表示,(前六位是厂商编码,后六位是流水线号)

广播出去以后,所有人都听得见,所有人都会拆开这个包,读发送者是谁,接收者是谁,只要接收者不是自己就丢弃掉。对计算机来说,它会看自己的Mac地址,飞哥收到以后,他就会把片发给我,发送回来同样采用广播的方式了,靠吼。
同一个教室(同一个局域网)的计算机靠吼来通信,那不同教室的计算机又如何?
比如说局域网1的pc1与局域网2的pc10如何通信?你在教室1(局域网1)吼,教室2(局域网2)的人肯定是听不见的。这就是跨网络进行通信,数据链路层就解决不了这个问题了,这就得靠网络层出面了。
在讲网络层之前,其实基于广播的这种通信就可以实现全世界通信了,你吼一声,如果全世界是一个局域网,全世界的计算机肯定可以听得见,从理论上似乎行得通,如果全世界的计算机都在吼,你想一想,这是不是一个灾难。因此,全世界不能是一个局域网。于是就有了网络层。
网络层:
网络层定义了一个IP协议,
你想,我是这个教室的一个学生,我想找隔壁教室一个叫老王的学生,我也不认识老王,那怎么办,我吼?老王在另外一个教室肯定是听不到的。找教室的负责人,这个教室的负责人就负责和隔壁教室的负责人说话,说我们教室的有个学生要找你们教室的老王。往外传的东西交给负责人就可以了,内部的话上面已经提到,通过广播的方式,对外的东西广播失效。教室的负责人就是网关,网关即网络关口的意思。
Mac地址是用来标识你这个教室的某个位置,IP地址是用来标识你在哪个教室(哪个局域网)。你要跨网络发包你是不是要知道对方的IP地址,比如你要访问百度,你肯定得知道百度服务器的IP地址。计算机在发包前,会判断你在哪个教室,对方在哪个教室,如果在一个教室,基于mac地址的广播发包就OK了;如果不在一个教室,即跨网络发包,那么就会把你的包交给教室负责人(网关)来转发。Mac地址及IP地址唯一标识了你在互联网中的位置。
数据链路层中会把网络层的数据包封装到数数据链路层的数据位置,然后再添加上自己的包头,再发给物理层,物理层发给网关,网关再发给对方教室的网关,对方教室的网关收到后在那个教室做广播。
在数据链路层看,数据封装了两层,跟玩俄罗斯套娃有点类似,一层套了一层。

转载于:https://www.cnblogs.com/yrfcxy/p/11325621.html

OSI七层协议完美解读相关推荐

  1. 软件开发架构介绍||OSI七层协议之物理层、数据链路层、网络层、传输层(mac地址、ip协议、断开协议、tcp协议之三次握手四次挥手)

    阅读目录 一.网络编程 一.网络编程 软件开发架构 C/S架构 C:客户端 想体验服务的时候才会去找服务端体验服务 S:服务端 24小时不间断的提供服务,即时监听,随时待命 B/S架构 B:浏览器 想 ...

  2. 网络编程之网络架构及其演变过程、互联网与互联网的组成、OSI七层协议、socket抽象层...

    目录 网络架构及其演变过程 单机架构 CS架构 BS架构 BS架构和CS架构的区别 C/S架构的优缺点: B/S架构的优缺点: 互联网与互联网的组成 互联网的组成(教科书版) 互联网的组成(科普版) ...

  3. Day09: socket网络编程-OSI七层协议,tcp/udp套接字,tcp粘包问题,socketserver

    今日内容:socket网络编程     1.OSI七层协议     2.基于tcp协议的套接字通信     3.模拟ssh远程执行命令     4.tcp的粘包问题及解决方案     5.基于udp协 ...

  4. 网络编程之OSI七层协议略析

    OSI七层协议 1 物理连接层 用高低电平模拟二进制数0101 2 数据链路层 以太网协议,Ethernet,要求连入网络的计算机必要要有一块网卡,并且规定全球每一块网卡的mac 地址都不一样,用12 ...

  5. 网络编程之 osi七层协议

    内容目录: 1.软件开发架构 2.OSI七层协议 3.每层协议介绍 1.软件开发架构 c/s架构:c:客户端s:服务端 b/s架构:b:浏览器s:服务器 本质:b/s其实也是c/s 2.OSI七层协议 ...

  6. 网络编程 之osi七层协议

    osi 七层协议 : 应用层: 应用层功能:规定应用程序的数据格式 传输层:tcp协议可靠传输 tcp协议不可靠传输 设定端口,端口即应用程序与网卡关联的编号. 网络层: ip协议 网络部分:标识子网 ...

  7. 如何记住OSI七层协议模型,脑洞大开有木有?

    学过计算机网络的各位,一定知道OSI七层协议模型.OSI七层协议模型(或简称OSI七层模型),是一个定义得非常好的协议规范,被认为是现代开放性通信系统互连互通的标准参考模型.OSI模型有7层结构,每层 ...

  8. 网络七层协议:OSI七层协议大白话解读

    互联网的本质就是一系列的网络协议,这个协议就叫OSI协议(一系列协议),按照功能不同,分工不同,人为的分层七层.实际上这个七层是不存在的.没有这七层的概念,只是人为的划分而已.区分出来的目的只是让你明 ...

  9. 【网络编程】一、如何记住OSI七层协议模型,看完还记不住的来打我。

    学过计算机网络这门课的童鞋,一定都知道OSI七层协议模型. 那么现在闭上眼,能按顺序说出来的童鞋麻烦右上角点个赞,让博主看看有多少? 哇,0个赞,不是吧. 没关系,下面跟着博主的思路,看完本篇之后,我 ...

  10. OSI七层协议模型、TCP/IP四层模型和五层协议体系结构之间的关系

    OSI七层协议模型.TCP/IP四层模型和五层协议体系结构之间的关系 一.OSI七层模型 OSI七层协议模型主要是:应用层(Application).表示层(Presentation).会话层(Ses ...

最新文章

  1. IBM X3100 M4安装centos6.5(RHEL 6.5)说明
  2. javascript向表中添加行--浏览器兼容性问题
  3. 小人大作战v0.02原型(单机)发布
  4. nginx编译安装,nginx静态资源访问和负载均衡的使用!
  5. 再转弯曲评论上的一篇关于SOC的文章
  6. 分享字符串右移的算法
  7. 外挂学习之路(11)--- 背包数据的遍历
  8. 【Java设计模式】GOF32 - 单例模式
  9. 大二上学期数据结构课程设计
  10. MVC5 Action的view()直接输出字符串方式
  11. 如何使用CORS解决跨域问题
  12. 华为数通设备配置导出
  13. SAPscript Forms 教程
  14. 使用PS制作背景透明的png图片
  15. java ckfinder 图片重命名,CKEditor CKFinder图片上传
  16. 06、Flutter FFI 类
  17. 信息与计算机科学丛书,信息与计算科学丛书: 典藏版
  18. 夜神模拟器连接Android Studio
  19. android 三星 蓝牙sco,android – 来电后蓝牙SCO失败
  20. WPF之触发器Triggers

热门文章

  1. 拓端tecdat|R语言小数定律的保险业应用:泊松分布模拟索赔次数
  2. 拓端tecdat|R语言中不同类型的聚类方法比较
  3. 模型退火的投资组合优化
  4. sklearn.ensemble.RandomForestRegressor参数含义
  5. java 字符串长度_ava练习实例:java字符串长度与Java String charAt() 方法 (建议收藏)...
  6. Machine Learning Basics(要点)
  7. 一路波折----记我的win10环境下scala安装之路,解决命令窗口报错问题
  8. Shell总结(整理)
  9. linux 查看文件开头几行、末尾几行、中间几行
  10. linux getopt_long函数,新手疑问:getopt_long()重入问题