| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> OSI七层模型(学习笔记) -> 正文阅读 |
|
[网络协议]OSI七层模型(学习笔记) |
OSI(学习笔记:以下内容来源于我的大神老师笔记(西安欧鹏互联it教育)+自己的总结+网上一些资料。如有错误,请大神们多多指教) OSI称为开放式系统互联 OSI/RM协议是由ISO(国际标准化组织)制定的,它有三个基本的功能:提供给开发者一个必须的、通用的概念以便开发完善、可以用来解释连接不同系统的框架。在笔者看来,OSI就是一个框架,将我们日常的想传达的数据(文字,语音,视频等)通过这个OSI框架,一层一层包装成机器硬件能识别的比特流,并且能发送到其他终设备上,当我们收到人发送来的数据时,又通过这个模型我们电脑进行解析获取数据。从语言角度上讲,当我们发送数据时,通过这个模型将我们的智能语言(就是我们能直接理解的语言)转换成应用程序的逻辑语言,最后转换成机器所能识别的机器语言,再通过介质传输到其他终端上去,而我们接受到别人的数据时,通过上述逆过程,我们就能得到我们想要的数据。 它分为七层: 应用层,表示层,会话层-----控制层面 传输层,网络层,数据链路层,物理层----数据层面 ? ? 下面谈谈具体每层的大概作用: 上三层:控制层面 { 应用层:接收用户的数据,人机交互的接口,面向的应用程序。就是接收我们输入的文字,语音,视频等数据。 表示层:在上一层应用程序接收到相关数据后,app将逻辑语言(软件语言)转换为机器语言(二进制语言),翻 译 ,加密 。一般在这一层进行加密的是实时性通信 会话层:针对传输的每一种数据(流量)建立(管理:维持、终止)一条 虚连接(为了防止不同类型的数据互相影控制层面。有时当我们边听歌,边打游戏的时候,数据都在我们主机和服务器之间进行传输,那么为了不让数据紊乱,我们对每一种数据建立一个虚连接,防止它互相进行影响。 } 下四层:数据层面 { 传输层:1,区分流量 2,定义数据的传输方式 传输层通过端口号来区分流量,数据在传输过程中通过源端口号和目的端口号形成一个虚拟的通道,你可以把它当成一个私密的房间,这个房间仅仅只能有对应的程序才能使用,也就是对应的数据才能传输。 端口号:port ID 数值范围是1----65535 静态端口:又称为注明端口范围1-1023(与流量具有一一对应并绑定的关系) 动态端口:范围1024-65535(只有一一对应,没有绑定) 常见端口号: HTTP---80 TCP HTTPS ---443 TCP RIP----520 UDP Telnet---远程登录服务 23 TCP SSH ----远程登录(安全性较高 加密 认证),22 TCP DNS----域名解析 ,53 TCP和UDP 是否为可靠传输? 可靠传输具有确认和重传输机制 不可靠传输方式流量的特点:1,大流量2实时性较高3对数据丢失不敏感(像我们的视频聊天时,看电视时这种大流量一般采用不可靠传输) 然后再说俩种协议: TCP:传输控制协议,是一种面向连接的可靠传输协议 UDP:用户数据报协议,是一种非面向连接的不可靠传输协议 从上述俩种协议中,我们了解到面向连接和非免向连接,那么什么又是面向连接呢? 面向连接在笔者看来就是双方在数据传输前,建立一种连接协商双方愿意接收发数据,当然笔者说的可能不是很官方,可以这样理解,在我们家用的电视时,我们的电视是随时都能接收到来自各个频道的信息数据,并不会因为你不看了,它就不给你发了,这种连接就是非面向连接。 还有可靠和不可靠? 而我们的确认和重传输机制保证了可靠传输 TCP有一个三次握手机制:它保证了面向连接,又称为TCP的三次握手 ? 1:主机发送req(同步)+req(请求)包,主机请求服务器端口开发,主机服务器端口号为80或者443 2:服务器请求主机端端口开放,主机是随机动态端口开放 3:主机发送确认包 在上述过程当中,当①步骤和②步骤当中,都得到了一个ACK的确认,这种得到明显回复的确认方式叫做显示确认,而第三种包确认机制称为隐式确认,隐式确认在我理解看来,就是提前协商好确认机制,当服务器不回复时,就代表已经发送成功了。举个例子,当上述②发送的包里面带个1+1这样的问题,然后主机发送③中的ACK确认中有2这个答案,服务器收到2之后,就相当于得到了确认,如果没有收到,继续发送②步骤当中的包。 数据的分段传输:当传输过程中,假如有1Gb和1Kb的数据时,如果我们轮流进行传输,那么传输前者时我们花费了10分钟,而后者只需几秒就可以传输完成,那么这势必不太公平,所以我们传输较大的数据时,按照MTU值进行分段传输。 MTU:最大的传输单元,默认为1500字节,可以修改,但是不建议。 为什么不建议呢? 因为当双方最大都是1500字节时,你修改成了1400字节,当然你发给别人的数据没有问题,因为你发出来的都是1400字节的数据,别人都会收到,但是别人发送的1500字节由于你最大才1400字节,所以你会丢失100字节的数据,所以你收到的数据是不完整的。 数据分段传输优化机制:流控机制,重排序。 我们把协议中的数据单元叫做PDU 四层的PDU:segment 分段分片 三层:网络层:编址,寻址 编址协议:IPV4 IPV6 IPX apple IP地址:32个二进制,0和1 构成 用于编址 网络掩码:32个二进制,连续的1+连续的0构成,连续的1代表着网络位, 连续的0代表主机位。(便于寻址) 将32位二进制每8位为一组,转化为10进制进行书写。 ?网络位 ???????????????主机位 1101 1000.0001 0001.0000 0001.0000 0001 216.17.1.1 255.255.0.0 1111 1111.1111 1111.0000 0000.0000 0000 书写一个完整的IP地址时 :IP地址+网络掩码 ?网络位就是寻找你在哪个网段,而主机位就是寻找你在网段中的位置 地址分类: ?XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX A类地址: 第一位固定为0 0XXX XXXX ---0-127(1-126),网络掩码默认为 255.0.0.0 B类地址:前两位固定为10 10XX XXXX---128-191,网络掩码默认为255.255.0.0 C类地址:前三位固定110 110X XXXX---192-223,网络掩码默认为255.255.255.0 D类地址:前四位固定为1110 1110 XXXX---224-239,组播地址,无掩码 E类地址:前四位固定为1111 1111 XXXX---240-255,科研地址。 特殊地址: 1.0.X.X.X 无效地址(保留地址),0.0.0.0 无效地址 占位 ?2.127.0.0.1 本地测试 (127.X.X.X 测试地址) 3.网络号,网络位不变 主机位全为0 的地址(描述一个网段) ?162.1.1.1------------------162.1.0.0 255.255.0.0 255.255.0.0 4.受限广播地址,255.255.255.255 (受限的意思就是说在很多个网段中,这个数据只能在自己的网段中进行广播) 5.定向(直接)广播地址,网络位不变,主机位全为1 (向某个网段发送数据) 200.1.1.1 ---> 200.1.1.255 255.255.255.0 6.本地链路地址:link-local { 169.254.0.0 255.255.0.0 } 当申请分配ip地址时,没有得到分配,由微软系统windows分配这个地址。 公有地址:具有全球唯一性标识地址 分区公有地址:具有全球唯一性标识地址 私有地址:不具唯一性标识的地址 10.0.0.0 255.0.0.0 172.{16-31}.0.0 255.255.0.0 192.168.X(0-255).0 255.255.255.0 三层PDU:packet 包 ?A B C 类地址称为单播地址 ?单播:一对一的传输方式 ?组播:一对多的传输方式 广播:一对所有传输方式 数据链路层:局域网(以太网 Ethernet) 广域网 (PPP HDLC ATM FR ) ?二层地址:Mac地址(介质访问控制)---物理地址 硬件地址 烧录地址 ?LLC层:逻辑链路控制子层 MAC层:介质访问控制子层 Mac地址构成: 48个二进制 书写使用12个十六进制 (一个十六进制需要 使用4个二进制表示)书写方式:减分十六 进制或者点分十六进制 60-F2-62-3C-E3-53 终端(主机,手机,服务器) 60F2.623C.E353 ??连接设备上(路由器,防火墙,ASA) 前24位:厂商 ID ----OUI(统一资源标识符) 后24位:产品 ID ----interface ID (接口标识符) 二层PDU :frame 帧 物理层:关注 网络硬件的机械特性 光学特性 电学特性 一层PDU:bit 比特流 传输介质:光纤 、双绞线(RJ45) 主要功能: 双绞线: 568A线序:绿白、绿、橙白、蓝、蓝白、橙、棕白、棕 568B线序:橙白、橙、绿白、蓝、蓝白、绿、棕白、棕 平行线:又称为直通线 ,线序相同。不同层设备使用平行线。 交叉线:线序不同。同层设备使用交叉线。 全反线:又称为console线,配置线,线序相反,用于用户控制网络设备。 路由器:三层设备,识别IP地址。不同的接口在不同的网段(广播域) ?交换机(网桥):二层设备,使用MAC地址,所有的接口默认在同一个广 播域,一个接口是一个冲突域。 集线器(hub):放大器 放大信号,属于1层设备,识别bit流,hub上所有 的接口都在同一个冲突域中。 主机(服务器) 以上就是OSI模型大概介绍,接下来讨论一下数据的封装和解封装过程(封装就是产生数据的过程,解封装就是进行读取数据的过程): 由于OSI模型协议过于复杂,分层太不合理,缺乏商业驱动力等因素,OSI模型实际在网络中并未得到广泛应用,规模最大覆盖全球的因特网也并没有使用OSI标准,而是采用分层比较简单的TCP/IP模型 ? TCP/IP实际上是一组通信协议的代名词,其中最重要的协议是传输控制协议(TCP)和因特网协议(IP)。TCP和IP是俩个独立且紧密结合的协议,负责管理和引导数据报文在Internet上的传输.TCP负责和远程主机连接,IP负责寻址。 TCP/IP 模型: ?应用层(应用层 表示层 会话层) 主机到主机层(传输层) 互联网层(网络层 ) ?网络接口层(数据链路层 物理层) 数据封装和解封装 } 以上就是对OSI的学习,理解这个模型通过去思考怎样来封装数据或者解析读取数据这样的思维会更好深层次的理解,其中每一层也有对应很多功能和值得注意的地方,当然自己学习的地方还很多,今天先打卡一次。 |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 7:17:59- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |