• 网络基础:OSI 七层模型、TCP/IP 四层模型


    1、Internet历史

    1. 1968年由美国ARPA机构提出"资源共享计算机网络”,让ARPA的计算机互联起来,叫做阿帕网;
    2. 1974年,第一个TCP协议详细说明发布了。
    3. 一个 TCP 协议不能满足,TCP 协议分成了 TCP / IP 两个协议。
    4. TCP / IP 网络分层  ----- OSI 七层网络模型、TCP/IP四层模型;

    2、OSI七层模型(Open System Interconnect)

      OSI七层模型:是ISO (International Organization for Standardization )组织在1985年研究的网络互连模型。其目的就是推荐所有公司使用这个规范来控制网络,这样所有公司都有相同的规范,就能互联了。

      /

    3、TCP/IP 四层模型 就是 对七层模型进行了合并

    物理层

    • 物理介质,实实在在的物理链路,它的主要作用是传输比特流,就是从1/0转化为电流强弱来进行传输,到达目的之后再转化为1/0,也就是我们常说的数模转换。
    • 常见的物理介质有光纤、双绞线,以及无线电波,物理介质的不同决定了电信号的传输带宽、速率、传输距离以及抗干扰性等等。

     数据链路层

    对电信号进行分组并形成具有特定意义的数据帧,然后以广播的形式通过物理介质发送给接收方。

    1. 比特流(01)分组,8bit一组,依次帧的数据格式发送;
    2. 怎么知道是发送给我的么?---网卡--MAC地址--身份证(唯一) (目的mac+源mac地址)。--寄信(收件人:寄件人) 

    网络层

    • A -BCDE- F 如何通信?  A 如果要到 F 怎么选择最好路径? 怎么知道MAC地址?
    • 网络层解决的问题:
      • 1. 发送者如何知道接收者的MAC地址?
        • ARP协议 :地址解析协议(address resolution protocol)    
      • 2. 发送者如何知道接收者和自己同属一个子网?
        • 通过IP协议  
      • 3. 如果接收者和自己不在同一个子网,数据包如何发给对方?
        • 通过一组路由协议(route) 为了解决这些问题,网络层引入了三个协议,分别是IP协议、ARP协议、路由协议  
        • 常用的路由协议包括:
          • 静态路由、BGP路由、OSPF路由      

    传输层

    • 传输层的主要工作是定义端口,标识应用程序身份,并将数据包交给对应的应用程序实现端口到端口的通信,并且传输层引入了TCP/UDP协议。
      • 1. 如果有大量数据包、数据包大?时间很长,网络中断,怎么控制重新传输?怎么确保数据包正确完整---传输层
        • 传输层封装数据包,通过定义的 TCP、UDP 协议实现按序一个一个发送,保证数据完整正确性;    
      • 2. QQ发消息,你必须使用QQ接受消息,才可以正常通信;但是电脑中不是只运行了QQ,还有其他程序,怎么确定由谁来处理消息
        • 传输层定义端口的概念-- HTTP-tcp-80端口、https是tcp的443端口?--交给特定应用处理    

    会话层

    • 会话层提供的服务可使应用建立和维持会话,并能使会话获得同步;
      • 自动寻址,自动发送,实现断点  续传  
      • 会话层没有协议  
      • 会话层、表示层都是为应用层服务的  

    表示层

    • 表示层的主要作用之一是 为异种机通信提供一种公 共语言,以便能进行互操作
      • 翻译--实现不同系统之间的通信  
      • 会话层、表示层为应用层服务的  

    应用层

    • 定义数据格式并按照对应的格式解读数据。前面所述的三层负责处理网络通讯的相关细节,这部分需要稳定高效,因此它们是在操作系统的内核空间中,而应用层是在用户空间实现的,负责处理众多业务逻辑,如文件传输、网络管理。
    • 定义了各种协议来规范数据格式。---HTTP,FTP ,DNS ,SMTP

    数据传输过程 

    浏览器输入百度,百度给我返回了一个页面,这个过程是怎么实现的?

    右侧封装:主机A

    应用层:电脑A在浏览器里输入了一个百度 url 地址,应用层实现输入了一个网址想要去访问百度,会给到

    传输层,在数据包的前面封装一个 tcp 的头部和端口,会给到

    网络层,把 ip 头部封装到 TCP 头部的外面,IP自带 源IP地址 和 目的 IP 地址,会给到

    数据层,会给它封装一个 MAC 的地址(以太头部),接着去寻找,会给到

    物理层,会转换为比特流(010101)这样的电信号,在传给百度的服务器

    左侧解封装:百度服务器

    我们在物理层重组为帧,就可以看到 MAC 的地址,把源地址进行拆开,得到里面得IP,会传给网络层;

    网络层看到目的IP是给自己的,然后把IP头部拆开,看到TCP头部端口号,在传给传输层;

    传输层看下是哪个端口,看到是 tcp80 的端口,会交给 http 的协议,交给应用层;

    http协议来处理,http处理之后发现是访问百度的,就会返回一个百度的页面

    *******请大家尊重原创,如要转载,请注明出处:转载自:https://www.cnblogs.com/shouhu/   谢谢!!******* 

  • 相关阅读:
    IOS Charles(代理服务器软件,可以用来拦截网络请求)
    Javascript中addEventListener和attachEvent的区别
    MVC中实现Area几种方法
    Entity Framework Code First 中使用 Fluent API 笔记。
    自定义JsonResult解决 序列化类型 System.Data.Entity.DynamicProxies 的对象时检测到循环引用
    序列化类型 System.Data.Entity.DynamicProxies 的对象时检测到循环引用
    An entity object cannot be referenced by multiple instances of IEntityChangeTracker 的解决方案
    Code First :使用Entity. Framework编程(8) ----转发 收藏
    Code First :使用Entity. Framework编程(6) ----转发 收藏
    Code First :使用Entity. Framework编程(5) ----转发 收藏
  • 原文地址:https://www.cnblogs.com/shouhu/p/12162306.html
Copyright © 2020-2023  润新知