day11、1

编程入门 行业动态 更新时间:2024-10-27 03:29:08

day11、1

day11、1

一、分层思想

1.为什么要分层

  • 计算机领域中,如果双方要通信,需要使用相同的规则,若干个标准、规则组合在一起就构成了协议。即通信需求是通信双方要定义同一协议标准。但是通信是一个庞大的体系,通信过程需要一系列标准,于是就要产生了分层思想

    比如:生活中人要去超时买牛奶享用这件事,会将过程分成很多层 ---- 养奶牛挤牛奶,运输牛奶,工厂加工牛奶,最后送到超市供人购买,人最后享用。那么养奶牛需要遵循一套标准,运输牛奶的司机需要遵守交通标准,加工厂加工也要遵循一套标准,最后送到超市人来购买,人要遵循拿钱购买标准,最后享用牛奶。为了完成这一件事需,需要定义一系列的标准,将这完整的过程进行分层,养奶牛的只需要会饲养标准;司机会开车就可以;加工厂懂加工的规则等。享用牛奶的人不需要知道过程怎么样,只需要知道怎么喝牛奶就可以。各层各司其职相互独立,但是又相互配合,下层为上层提供服务

    如果不分层,人要喝奶,需要自己养奶牛、挤奶、开车、加工…工作繁琐且工作量大,那么实现会很复杂!

2.什么是分层思想

  • 将复杂的流程分解为几个功能相对单一的子过程

  • 整个流程更加清晰,复杂问题简单化;更容易发现问题并针对性的解决问题

  • 网络的分层思想宏观:需要涉及到交换机、路由器、防火墙、主机等等,

    做交换机的著名厂家:华为3Com、锐捷、Cisco

  • 用分层思想体会写信人写信给收信人的过程:

    • 写信人只需要遵循写信的标准,送给邮局;邮局需要遵循按地址分类信封的标准,不需要知道怎么写信,送往相应的运输部门;运输部门只需要会开车,按时按地址完成运输即可;运输部门再将信送给邮局,最后送到收信人,收信人读信。

    • 将这一过程分为三层,各层之间相互独立各司其职,同层使用相同协议,下层为上层提供服务(运输部门是邮局的下层,邮局是人的下层)

  • 总结:分层将复杂问题简单化,每层各司其职相互独立,同层使用相同协议,但下层为上层提供服务

二、OSI七层模型

1.OIS七层模型的诞生

  • 互联网上主机之间完成通信,也是一个复杂的过程有上百个协议,于是科学家想办法将协议分层。最早是由ISO国际标准化组织发布了OSI参考模型
  • OIS模型诞生简化了通信过程,更统一了全球计算机的生产标准,使所有人的电脑都使用同一个架构,实现通信

2.OIS七层模型图示

  • 我们现在每个人使用的电脑,其实是一个大的综合体,电脑可以识别整个七层,完成整个七层的工作,所以很昂贵。而且所有电脑都是按照这七层模型的生产的。如果计算机生产的模型不一致,规则就会完全不一致,则计算机间无法进行通信。

    比如:一个计算机按照5个字节的标准收发数据,一个计算机按照7字节的标准收发数据,那么双方就无法完成通信,因为规则使用不同,你发来的信息我收到后看不懂。

  • 同层使用相同的协议,下层为上层服务

3.OSI七层模型不足

  • OIS七层模型是科学家凭空想象的:只考虑应该有什么层,这些层应该完成什么功能,但没有考虑每一层应该有什么规则(协议)。按照这个模型,往里面填协议:IP协议、ARP协议等。但是填完以后发现,有两层虽然不能少,但是有点多余—表示层和会话层,属于这两层的协议非常少,且可以用应用层将两层包含。所以最后在实际应用中诞生了新的架构:TCP-IP五层协议栈(协议簇)。后来科学家有提出了一个四层协议:将数据链路层和物理层合并为一层名为网络接口层,但是并没有被广泛使用

    我们会重点学习TCP/IP五层模型

  • 简单介绍一下为什么合并表示层和会话层到应用层:

    • 将应用层的数据使用某种编码方式转为某种进制表示数据,再在物理层转为转为二进制;或者使用与发送方同种编码方式(同层使用相同协议)将某种进制数据转为可以看懂的字符。现在编码都是由应用层来完成
    • 会话层:总结来说就是维持通信秩序的,比如应用层开了很多软件:qq,微信,游戏等,如果大量的数据一同进入传输层,会拥塞无秩序。现在有会话层,比如qq要使用TCP传输,要占用一个数据传输通道,那么qq的会话层就会来管理qq占用的这个通道,其他的不属于qq的信息,就一律不让使用这个通道;属于qq的数据但是是发给不同的人的,此时会话层会对这些数据分类,哪些是发给谁的。这些就是会话层的功能。但是现在管理会话的功能软件自己就会做了
    • 所以现在做软件的时候就要考虑到表示层和会话层的功能----编码和管理会话,由应用层来做这两层的功能。故现在普及的就是TCP/IP五层协议

三、TCP/IP五层协议栈

1.TCP/IP五层协议栈和OSI七层模型关系

  • 其实这两个笼统上是同时诞生的,TCP/IP是先有协议再有模型;OSI是先有模型再添加协议

2.TCP/IP五层协议栈说明

  • TCP/IP五层协议:将会话层和表示层归并到了应用层,即从上层到下层为:应用层、传输层、网络层、数据链路层、物理层。其中有两个协议极为重要:传输层的TCP协议,网络层的IP协议。所以最后用这两个协议命名

  • 一般称物理层为一层,数据链路层为二层,… ,应用层为五层

  • TCP/IP五层协议栈是目前使用最广的模型

    比如:我们电脑上的网卡就是按照TCP/IP模型生产的,满足TCP/IP国际标准规则

3.层与设备的关系

  • 每一层都有不同的功能,需要有相应的设备来完成相应工作。比如网线只能完成物理层的工作,所以网线工作在物理层,所以便宜;交换机工作在数据链路层,只懂数据链路层和物理层的协议(向下兼容),再上面的层的数据和协议就无法看懂了;路由器工作在网络层,且下面两层协议也可以看懂,即可以解封装MAC子层以及IP包头获取当中的信息;电脑、手机、平板,及软件都工作在应用层。防火墙可以分好多种:有工作在网络层的古老防火墙,即可以过滤指定MAC地址和IP地址传来的数据;有工作在传输层的防火墙,不仅可以根据MAC和IP过滤,还可以根据端口号来进行过滤,即可以查看TCP/UDP包头中的内容;现在有些牛逼的防火墙工作在应用层,比如客户机请求访问网页,那么服务器发来网页代码(页面)就是传输的数据,防火墙可以解封装到数据内容,如果包含黄赌毒字眼的网页就会自动过滤掉,但是这种防火墙效率还有待提高,未来的高速防火墙是主流

  • 那为什么电脑既然工作在第五层,可以有下面几层的功能,却不当路由器交换机使用?电脑可以当交换机、路由器使用,只用多装几块网卡打开相应功能配置一下即可。但默认情况下电脑把这些功能都关闭了,只是完成基本的封装和解封装。电脑被设计出来最重要的功能是发挥在应用层的,其他层的功能弱化。而专门工作在其它层的设备比如交换机路由器,又便宜而且可以将性能发挥到极致

  • 设备工作在哪一层:表示最高可以读懂哪一层的协议,它所工作的层的下层协议也可以读懂(向下兼容),即可以封装和解封装工作层及下层的数据

  • 我们一般称交换机为二层交换机,路由器为三层交换机,防火墙为四层防火墙(即根据所工作的层命名)

四、每层的设备和传输单元总结

五、TCP/IP五层模型中协议总结

  • 每一层都有对应的协议,我们称某协议工作在某一层,每一个协议都有对应的端口号

  • 应用层的每个软件在开发的时候就要考虑到用TCP还是UDP协议传输数据,所以会把端口号和TCP/UDP结合;我们又称某协议依赖于什么协议,依赖的协议指的就是传输层的两个协议,比如http协议依赖于TCP协议等

  • 网络层具有封装IP包头的协议只有IP协议;ICMP又叫网络探测协议,ping对方其实就是ICMP协议发探测包,数据没有经过两层,网络追踪也会用到此协议

  • 数据链路层有MAC子层协议,国内和国外这层上的协议可能会有区别,所以平时跨国上网要刷机。现在已经趋于统一

  • 各层的协议及协议之间的关联示意图:

六、数据封装与解封装

了解了TCP/IP五层协议后,我们要知道一个数据通过这个五层协议,是如何传输的,这个就是数据封装与解封装过程

1.数据的封装过程

  • 图示:

  • 过程说明:

    • 现在应用层的软件(拿qq举例)向对方电脑上的qq发送一条消息。按回车的瞬间数据会先传输到传输层,由于电脑上的每一个运行的软件是一个进程,进程会有自己的端口,比如qq的端口号为8000,且使用qq通信,实际上不是直接与对方电脑qq通信,而是先把数据发送到qq的服务器上,服务器再发给对方电脑的qq。所以qq软件会内置qq服务器的端口号。

    • 现在数据到达传输层,在数据前面封装一段数据----TCP/UDP头,TCP/UDP头包含源端口和目标端口(应用层的软件已经规定好了使用TCP还是UDP协议传输),所以会将从应用层得知的qq的8000端口号和服务器上负责处理qq消息软件的端口号封装到数据头部。正因为有端口号信息,qq服务器的传输层收到后才知道这数据是传给某一个进程的而不是传给服务器上的ftp或者dns服务进程的,而是传给qq相关进程的。所以传输层的功能是完成进程到进程间的通信(只知道要和哪个应用进程通,具体传给哪台主机的信息还没封装到数据中)。传输层封装好的数据叫数据段(fragment)(即数据段是传输层的传输单元)

      易错:只有应用层的协议才有端口号,比如:telnet协议,ftp协议等。端口号是属于软件的;传输层只是将应用层的端口号拿下来而已

      TCP和UDP的区别:TCP提供可靠的数据传输–数据一定可以到达对方,TCP要与对方建立连接,提供数据重传机制,所以就算中途丢失或盗取了,可以不断重传,所以TCP又叫做面向连接服务。UDP是不可靠传输,没有与对方建立连接,数据在传输中丢了就丢了,不可靠,又叫无连接服务。(后面会系统学习)

    • 传输层的工作做完后传给网络层,网络层不关心数据段的内容,只是会继续在数据段前面增加IP包头,IP包头包含源IP与目标IP等信息。即网络层的功能是完成点到点的通信(网络上任何一台电脑都是互联网中的一个点)。网络层封装好的数据叫报文IP包(package)

    • 现在报文就要被传输到数据链路层了,即传给电脑的网卡。网卡收到报文后,会在报文的头部添加MAC子层,包含源MAC地址和目标MAC地址等信息。因为交换机工作在链路层,只认识MAC地址,根据MAC地址从正确的端口转发数据找到那么对方;还会在报文尾部添加FCS(4字节)。最终数据链路层封装好的数据叫(frame)

      FCS是通过对前面所有数据(帧头+报文)通过循环校验算法得出来一个值,用于验证数据完整性

    • 帧再传输到物理层,即从网卡传到网线上。通过数字信号传输出去,我们称物理层中的数据为比特流或信号流。比特流是传输的最小单元


上述数据的封装过程就结束了

网线网络中运输的都是一个一个的帧,出去以后传到交换机,再传到路由器,再到服务器或者防火墙…最终经过一系列设备,到达对方的网卡

下述到达对方的电脑后进行解封装过程


2.数据的解封装过程

  • 图示:

  • 过程说明:

    • 最终到达对方电脑的数据链路层,即网卡。同层使用相同协议,我们电脑的数据链路成和对方电脑的数据链路层也只能识别帧头和帧尾。即对方电脑的数据链路层可以查看帧头帧尾信息:看看帧头中目标MAC地址是不是我的。不吻合就丢弃(网卡就闪一下),符合就再检查一下其他帧头帧尾的信息。最后解封装将数据传给网络层
    • 网络层检查IP包头中的目标IP是不是自己的电脑,如果不是就丢弃,是就继续解封装,将数据传给传输层
    • 知道了目标电脑就是自己后,还要看看信息要发给电脑上那个软件的。所以传输层会再查看TCP或UDP头中的端口号,确定后,继续解封装将数据传给正确的进程
    • 至此应用层的qq进程才能收到信息

七、生活中比特流小常识

  1. 8bit = 1 Byte(字节)
  2. 下载软件以字节(B)为单位衡量网速:比如现在的下载速度为1MB/s,即表示每秒钟能到达电脑上的数据为1兆个字节
  3. 运营商的设备一bit(b)为单位:比如交换机的带宽最大为100Mb即百兆交换机,表示每秒从交换机的端口最大出或进的100兆个比特流/电脉冲,但是电脑上是以B为单位衡量的,即在电脑上显示的最大速度为100/8=12.5MB/s

总结:跟厂家有关系的衡量速度单位都是用bit,下载软件显示的速度单位都是用B来算

更多推荐

day11、1

本文发布于:2024-03-14 17:30:55,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1736981.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!