zoukankan      html  css  js  c++  java
  • osi7层协议与3挥4握

    C/S B/S架构

    C/S B/S架构
    C: client端,客户端
    B: Browser,浏览器
    S: server 服务端
    C/S 客户端与服务器之间的架构: QQ,微信,游戏,App的都属于C/S架构.
         优点: 安全性高,个性化设置,功能全面.响应速度快.   
         缺点: 开发成本高,维护成本高.(基于App),面向的客户固定.
    B/S 浏览器与服务器之间的架构:它属于C/S架构,最近几年比较流行的特殊的C/S架构.
        优点: 开发维护成本低,,面向用户广泛.
        缺点: 安全性相对低,响应速度相对慢,个性化的设置单一.
    

    网络通信原理

    利用物理连接和一堆协议 osi 七层协议(5层协议)
    1,首先要通过各种物理连接介质  连接。
    2,确定对方计算机(准确到软件)的位置。
    3,通过统一的标准(一揽子协议)进行数据的收发。
    

    osi七层协议

    img

    img

    img

    物理层

    一系列的物理连接介质: 网线,光纤,电缆等等等.
    发送的数据就是010101010110比特数据流,这些数据连续不断地收发数据
    因为不知道数据代表的意义,数据要进行分组(按照一定规则), 数据分组这件事物理层做不了 所以交给了数据链路层
    

    数据链路层

    以太网协议

    mac地址| ip(双方的) |端口]dic = {flename,md5,filesize}数据
    # 用到的协议: ARP协议 以太网协议  交换机的自主学习功能
    # 常见物理设备:网桥、以太网交换机、网卡
    # 从物理层拿到数据比特流 按照一定的协议对比特流数据进行分组.
    # 以太网协议:
    # 一组电信号构成一个数据报,叫做‘帧’
    # 每一数据帧分成:报头head和数据data两部分
    # 数据头(head)
        # 固定长度18个字节.包含了    源地址,目的地址,数据类型.
        # 为什么数据头要固定?
           #固定就是一个标准,统一,为了提取源地址以及目标地址.
        #以太网协议中源目标地址如何设置唯一
            #网线直接接触的硬件就是网卡.网卡上有一个地址,mac地址,确定计算机的唯一性的物理地址
            # (mac地址12位 16进制组成的一串数字: 前六位 厂商编号: 后六位:流水线号.).
    # 数据data
        # 46字节 <= data <=1500字节
    
    # 广播: 计算机最原始的通信方式就是吼.
    # 数据的分组(源地址目标地址) + 广播: 理论上我的计算机就可以通信了.效率太低,每台计算机都需要接收广播的消息,查看是否是给自己的数据.比广播风暴还要严重.
    # 所以: 广播它是有范围的,在同一子网,局域网内是通过广播的方式,发消息.
    # 中间环节一些特殊的功能:
    # 到这里先广播 在组播 单播
    

    交换机的自主学习功能

    先要执行自己类中的eat方法,自己类没有才能执行父类中的方法。
    交换机的自主学习功能:
        交换机对照(网口与MAC地址的)表:
        1:    1C-1B-0D-DA-E8-8F
        2:    FF-FF-FF-FF-FF-FF
        3:    FF-FF-FF-FF-FF-FF
        4:    FF-FF-FF-FF-FF-FF
        5:    1C-1B-0F-4A-E8-8F
        网口1: 出来一条信息:
        # 第一次广播的形式发出去.
        网口1:源地址: 1C-1B-0D-DA-E8-8F 目标地址: 1C-1B-0F-4A-E8-8F  |   明天放假
        2,3,4,5口接收到次消息,查看目标mac地址是否是自己的,
        5口确定是自己的.
        每个网口都广播发送消息一遍之后,对照表就构建好,下次在任意的网口在发消息,就直接以单播的形式发送.
        目的: 避免局域网内每一次都广播的形式通信.以后就可以单播,提升效率.
    

    ARP协议

    #  ARP协议
    # 就是将对方的ip地址获取到对方的MAC地址  对方接受到返回  源mac 目标mac  源ip:  目标ip  此时原mac 是自己的
    # IP + ARP协议 获取对方的MAC地址
    1、arp协议是⽤来完成 根据IP地址获取物理地址的⼀个ip地址 ⼯作的,⼯作在osi协议的第 2 层
    (这⼀层的名字是 数据链路层 ),⽤到了 交换机 硬件设备,这个设备⼀共有三种⼯作
    ⽅式,分别是 ⼴播 、 单播 、 组播 ,arp协议⽤到了其中的 ⼴播 和  播 ,这⼀层还有 ⽹卡、⽹桥 物理设备。
    

    网络层

    ip(双方的) |端1 |dic = {ilename,md5,filesize}数据
    封装了ip
    # IP协议:确定对方的局域网的位置.
    # 理论上到了这一层可以找到世界上任意一台计算机.
    # 广播,mac地址,+ ip == 可以找到世界上任意一台计算机.
    # 为了与计算机软件通讯给到传输层
    

    IP协议:

    IP协议的作用主要有两个,一个是为每一台计算机分配IP地址,另一个是确定哪些地址在同一个子网络。

    # 四点分十进制(网络地址由32位2进制)网络部分:标识子网前24位  主机部分:标识主机 后8位
    # 范围0.0.0.0-255.255.255.255
    # 子网掩码(美国分的)255.255.255.0 C类子网掩码可以分配的ip数量: 254个
    # 通过iP地址与子网掩码可以确定对方计算机是否和自己的计算机在同一子网.
    # and运算
    # ip地址+子网掩码确定计算机所在网段,子网,局域网的位置.
    ip地址+子网掩码如何确定局域网的位置? and运算
    一个ip:   172.16.10.1  :  10101100.00010000.00001010.00000001
    子网掩码: 255.255.255.0 : 11111111.11111111.11111111.00000000
          从属于的局域网 网段,子网,局域网 :   172.16.10.0
    C类子网掩码 一个网段最多可以承载多个IP地址?
    172.16.10.0 被占用.
    172.16.10.255 广播地址 被占用.
    172.16.10.1 被占用.
    253台计算机.
    
    IP地址可以相同吗
    不一样。
    IP地址分为广域网和局域网。
    一般家庭或公司内部IP范围在局域网内部是唯一的,不能相同,相同的话会造成IP冲突,这时是不能上网的。不同局域网之间,IP地址可能相同,但是他们上广域网的话 ,这个局域网对外的IP只有一个。
    在广域网上IP是唯一的,也不是说就不能变 ,有变的情况和不变的情况,比如家庭上网一般用动态IP,这个IP是常变的。但是有的IP是不会变的,比如网站服务器的IP是唯一的。
    
    如何区分两个IP地址是否属于同一个子网
    子网掩码是用来判断任意两台计算机的IP地址是否属于同一子网络的根据。
    最为简单的理解就是两台计算机各自的IP地址与子网掩码进行AND运算后,如果得出的结果是相同的,则说明这两台计算机是处于同一个子网络上的,可以进行直接的通讯。就这么简单。
    
    注意:单纯的ip地址段只是标识了ip地址的种类,从网络部分或主机部分都无法辨识一个ip所处的子网
    
    例:172.16.10.1与172.16.10.2并不能确定二者处于同一子网
    
    中国可分配的ip数量
    截至2017年12月,我国IPv6地址数量为23430块/32,年增长10.6%
    全球 IPv4 地址数已于2011年2月分配完毕,全球IPv4总地址 2^32 大约40亿个,
    其中,需除去一些保留A、B、C段,如 10.0.0.0、172.16.0.0-172.31.0.0、172.168.0.0 、 192.168.0.0
    自2011年开始我国IPv4地址总数基本维持不变,截至2017年12月,共计有33870万个,全球占比 3.387/40 = 8.468%
    

    传输层

    传输层: TCP UDP:端口协议.封装 了端口
    端口1 dic = {ilename,md5,filesize}数据
    tcp udp协议
    # 广播,mac地址,+ ip + 端口 == 可以找到世界上任意一台计算机对应的软件.
    # 端口: 0~65535端口号.
    # #   1~1023系统占用的端口号.
    # #   1024~8000之内:一般的是有软件占用.
    # 传输层: 端口协议.
    TCP UDP:端口协议封装了端口
    端口|dic = {filename,md5,filesize} 数据
    
    # TCP协议,UDP协议.
    # TCP协议
    #     优点:好人协议,流式协议.稳定,安全,
    #     缺点: 效率低,
    # 建立的链接不能一直连接着.  耗内存
    # syn洪水攻击: 黑客会虚拟很多的假IP,然后访问你的服务器,  解决方式 半连接池,缓冲效果.
    # TCP的三次握手四次挥手
    # 三次握手
    # 发syn=1 seq=x 回ack=1+x
    # 4次挥手
    # 因为TCP连接是全双工的,因此每一个方向都必须单独进行关闭。
    # fin=1 seq=x 回ack=1+x
    
    # udp协议:
    #     优点: 效率高,传输快.
    #     缺点: 不安全,不是面向连接的,不可靠
    # 使用UDP的应用:域名系统 (DNS);视频流;IP语音(VoIP),微信qq。 直播等
    # 面向数据报协议  无连接协议
    

    端口协议

    65535端口
    1~1024操作系统专门使用的端口
    举例: 3306 数据库
    自己开发软件都是8080以后的端口号
    

    UDP TCP 协议

    TCP(Transmission Control Protocol)可靠的、面向连接的协议(eg:打电话)、流式协议, 传输效率低全双工通信(发送缓存&接收缓存)、面向字节流。使用TCP的应用:Web浏览器;文件传输程序。
    
    UDP(User Datagram Protocol)不可靠的、无连接的服务,传输效率高(发送前时延小),一对一、一对多、多对一、多对多、面向报文(数据包),尽最大努力服务,无拥塞控制。使用UDP的应用:域名系统 (DNS);视频流;IP语音(VoIP)。
    udp协议的特点是: 不可靠 、 ⽆连接 、 传输效率⾼ 、 ⾯向报⽂的 ,其中容易发⽣粘包现象的协议是 tcp ,原因是 tcp协议数据与数据之间没有边界 。 
    在tcp协议三次握⼿的过程中请求链接的状态码是 syn ,回复的是 ack ,在四次挥⼿的过程中请求断开的状态码是 fin 。
    

    TCP协议的三次握手和四次挥手

    # 三次握手
    # 发syn=1 seq=x 回ack=1+x
    # 4次挥手
    # 因为TCP连接是全双工的,因此每一个方向都必须单独进行关闭。
    # fin=1 seq=x 回ack=1+x
    

    抽象层

    socket(抽象层)
    

    应用层

    # 软件自己定义的协议. FTP
    自己定义报头 md5等等
    

    各层用到的工具

    # 服务器
    # 大黑盒子, 机房声音很大,对温度,湿度,等环境都有要求,双电源,双网卡,系统linux
    # 交换机(自主学习功能)
    # 数据经过以太网协议封装后,先要从局域网内进行吼.每次发消息,每次都要吼,这样效率也是很低的.(数据给交换机,交换机在分发出去.)
    
    应⽤层 ⽹络服务与最终⽤户的⼀个接⼝。
    常⻅协议:HTTP FTP TFTP SMTP SNMP DNS TELNET HTTPS POP3 DHCP
    表示层 数据的表示、安全、压缩。(在五层模型⾥⾯已经合并到了应⽤层)
    格式有,JPEG、ASCll、DECOIC、加密格式等
    会话层 建⽴、管理、终⽌会话。(在五层模型⾥⾯已经合并到了应⽤层)
    对应主机进程,指本地主机与远程主机正在进⾏的会话
    传输层 定义传输数据的协议端⼝号,以及流控和差错校验。
    常⻅协议:TCP UDP,数据包⼀旦离开⽹卡即进⼊⽹络传输层
    常⻅的物理设备 :四层路由器、四层交换机
    ⽹络层 进⾏逻辑地址寻址,实现不同⽹络之间的路径选择。
    常⻅协议:ICMP IGMP IP(IPV4 IPV6) ARP RARP
    常⻅物理设备:路由器、三层交换机
    数据链路层 建⽴逻辑连接、进⾏硬件地址寻址、差错校验 [2] 等功能。(由底层⽹络定义协议)
    将⽐特组合成字节进⽽组合成帧,⽤MAC地址访问介质,错误发现但不能纠正。
    常⻅协议:ARP协议
    常⻅物理设备:⽹桥、以太⽹交换机、⽹卡
    物理层 建⽴、维护、断开物理连接。(由底层⽹络定义协议)
    常⻅物理设备:中继器、集线器、双绞线
    
  • 相关阅读:
    c#結合正則表達式驗證輸入的字符串
    [SQL]数据库设计说明书模板
    如何在网页中插入Flv视频文件
    JAVASCRIPT常用检验代码
    Javascript知识精华
    提高Remoting的DataSet传输的性能
    如何快速的在SharePoint里构建一个Blog站点
    可爱的 Python,可爱的.NET
    郁闷的Xml Serialization BUG
    初试Zope(1)
  • 原文地址:https://www.cnblogs.com/saoqiang/p/12388411.html
Copyright © 2011-2022 走看看