Axıs
目录

计网

计算机网络

1.2网络协议基础

协议的概念=>协议由标准化组织管理=>常见的标准化组织=>协议标准=>TCP/IP OSI IPX等 => 均为分层模型 => 分层的目的 原因 =>每一层的原因 原理 机制(封装与解封装)

  • 协议

    • 解释:协议就是一套规则,一个约定——实现达成一个详细的约定,并遵循同一套约定标准,以此进行后续处理
    • 存在形式:程序
  • 数据通信标准

    • 事实标准/协议——未被组织承认,但都在用

    • 法定标准——法律规定

      ISO        国际标准化组织              制定各行各业的标准
      IEEE    电子电器工程师协会        802.3 有限通信协议集  802.11无线通信协议集(WIFI就是采用这个协议)
      IETF    INTERNET工程任务委员会
          产生两种文件:“互联网草案 Internet draft”(任何人都可提交,相当于idea) 和 RFC(request for comments)历史存档(如802.1Q Vlan协议)
      ANSI    美国国家标准局
      EIA/TIA 电子工业协会
      ITU        国际电信联盟
      
  • 世界公认的互联网之父们

    罗伯特·泰勒 && 拉里·罗伯茨——ARPA NET
    
    蒂姆·伯纳斯·李——HTTP(WWW——World wide web)
    
    温顿·瑟夫&&罗伯特·卡恩——TCP / IP     This is for everyone
    
    罗伯特·梅特卡夫——以太网(局域网)
    伦纳德·克兰罗克——分组交换 && 第一个网络数据
    
  • TCP/IP模型

    TCP/IP
        Transmission Control Protocol and Internet Protocol      1969年提出,拥有实际实用价值,也是唯一幸存者
        (五层 或者 四层)
        应用层
            应用层:软件
            表示层
                解决不同操作系统间的通信和语法问题
                解决的需求:转化为标准格式
            会话层:建立和管理应用程序之间的通信
                解决的需求:会话通信
    
    
        传输层
            原因:网络间数据发送会出现丢包的问题,数据传输是不可靠的
            实现:保证数据报文正确传输
            功能:
                1、面向链接
                2、面向无连接
            解决的需求:不同的网络节点数据传输中保证数据可靠
        
        网络层
            实现:不同局域网之间发送数据,让数据从一个网络到另一个网络
            功能:
                1、寻找最佳路径(路由)
                2、寻址(IP地址)
            解决的需求:不同网络之间如何选择路径,并连通数据
        数据链路层    解决内部网络的通信——保证硬件间数据正确
        
            原因:传输时会有数据损耗,数据可能错误
            目的:扩展不同介质之间的传输。确保传输的比特流正确,并且针对错误有纠错功能
            实现:将有差错的物理信道变为无差错的、能可靠传输数据帧的数据链路
              功能:
                  1:确保数据正确
                  2:寻址(MAC)
              解决的需求:
                  使物理信号无差错传递
        物理层
            解释:硬件间的通信(接口类型,传输介质的速率)
            目的:传输比特流(数模转换与模数转换:1,0=>电流的强弱=>1,0)
            解决的需求:物理信号之间的传递,使物理线路通畅
    
    
    其它同时代模型:
        OSI
            解决网络间兼容性的问题。将服务,接口,协议独立出来。            1984年提出,并不实用,只有理论价值
        IPX/SPX
        SNA
    
  • 思考:为什么要分层

    网络通信非常复杂:
        1、数据传输本身 —— 以010101001010二进制传输
        2、网络传输本身 —— 降低复杂度
    应用要求
        相互独立于不同的应用需求
    标准化
        促进标准化
    厂商兼容性
        简化网络操作
    学习成本/操作性
        便于学习与操作
    模块化————————高内聚 低耦合
        内聚:
        耦合:层与层之间相互独立,上下层之间彼此耦合度低,互不干扰
    
  • 思考:分层模型的原理

    封装与解封装——套娃
        发送时:不停加入外层封装
        接收时:不停拆除外层封装
    
    发生在互联网的任何一次通信都是封装与解封装的过程
    

1.3 (TCP/IP)应用层

  • 软件与硬件

    应用层
    ---------↑软件方向(软件开发)   ↓硬件方向(通信、传输)
    传输层
    网络层
    接口层
    
  • 应用层协议(application layer protocol)

    • 解决的需求:运行在不同端系统上的应用程序进程如何相互传递报文
  • Part1 工作原理

    • 协议 != 程序
      • 程序调用应用层的协议,而不是每一个程序都有一个协议
      • 如:网易邮箱、QQ邮箱 调用POP3协议
    • 特点:数量在所有层里最多
    • 目的:根据不同的应用层协议产生应用层数据
    • 软件服务模式:
      • 客户机/浏览器 CS架构 或者 BS架构(client-server / browser-server)
        • 客户端请求服务器
        • 服务器相应客户端
        • (浏览器是CS架构,浏览器本身也是客户端)
      • P2P(对等体结构)
        • 每个人的电脑都可以当服务器,也可以当客户端
        • 每个人的计算机都可以访问其他人计算机的内容,同样自己的计算机都可以相应其他人的访问,达到共享
        • (下载是典型的p2p应用)
      • 混合模式
        • 根服务器 + 主机
        • 以下载为例:主机=>访问根服务器=>返回最佳P2P下载路径=>主机同时对N个主机进行访问,获取下载资源
  • Part2 HTTP && HTTPS

    • HTTP——超文本传输协议(HyperText Transfer Protocol )

    • 架构:CS架构 (User - Web) 被动式服务(不请求,无资源)

    • 基础:TCP

    • 前提:

      • 位置(信息资源在服务器的位置)——URL(统一资源定位符)
      • 规则(CS之间如何沟通)——HTTP
      • 呈现(返回的信息如何组织起来)——HTML
    • 资源请求:

    • 功能状态码

    • HTTP特点

      • 无状态——对客户端无状态储存(访问一个web需要反复进行登录——每次都要进行同服务器的三次握手四次挥手建立连接)
      • 无连接——因为无状态,所以无法储存链接
      • 基于请求与相应——客户机-服务器模式
      • 明文通信——请求与相应不会同通信方进行确认,无法保证数据完整性
    • HTTPS特点

      • 基于HTTP,通过SSL或者TLS进行加密处理——提供身份验证和数据完整性保护

      • 过程:

        (C)请求下载服务器CA证书/根证书(CA中有公钥)=>(C)使用公钥加密数据传递服务器=>(S)使用私钥解密,返回数据                即SSR
        ```
    
  • Part3 DNS协议

    • 域名解析协议(Domain Name System)

    • 架构:CS

    • 功能:域名=>IP地址

    • (多用UDP,主服务器同备用服务器之间同步数据时,使用TCP)

    • 查询流程:

      1、查看本地的hosts文件,如果host文件里有直接使用host文件里的记录——/system32/etc/host
      2、启动DNS客户端——查询DNS服务器地址=>查询本地DNS服务器
      3、如果本地均无,向前一个DNS服务器查找,直到查找到根服务器
      
  • Part4 其它协议

    • FTP(File Transfer Protocol)
    • SMTP(Simple Mail Transfer Protocol) && POP3(Post Office Protocol 第三版邮局协议)
    • Telnet——远程登录协议

1.4 (TCP/IP)传输层

传输层位于TCP/IP协议的第四层,为App提供服务。定义了APP之间端到端的连通性。

  • Part1 端到端通信

    • “地址”的概念在所有层中,所有计算机语言,编程中都存在。

    • 传输层的“地址”,即端口号——也即程序地址

    • 功能:用来识别同一计算机中进行通信的不同应用层服务,实现指定应用程序到指定应用程序之间的通信

    • 每一个协议拥有一个端口号

    • 源端口号是随机的,且必须大于1023

      请求包:源端口>1023
              Source Port:5002
              Destination Port:443
      
      相应包:源端口<1023
              Source Port:443
              Destination Port:5002
      
    • 会话

      A向B通信
      A发送数据,源端口号(随机)2000,目标端口号80
      B收到数据
      B返回数据时,源端口号为80,目标端口号为2000
      
      • 通过五个参数甄别一个通信

        IP(源IP、目标Ip)
        协议号
        端口号(源端口号,目标端口号)
        
    • 端口号

      长度:16位,共65536个
      范围:0-65535
      
      • 指派方式

        熟知端口:0-1023   IANA占用,公共协议
        注册端口:1024-49151   IANA不指派、不控制。在IANA注册以防重复
        动态端口(临时端口):49152-65535  可以通过任意进程来使用
        
        • Windows下查看端口号占用情况——windows端口表

          netstat -aon
          
  • Part2 TCP可靠性

    • TCP提供面向链接(通信时双方都可确保对方均接受了链接) 、可靠的服务。

    • UDP提供面向无连接服务(A对B发送信息,不考虑是否真的收到)。

    • 可靠性(通过TCP首段报文说明文件来实现以下功能)

      • 面向链接(体现在链接的建立与拆除上)
      • 最大报文肠长度
      • 确认传输机制
      • 流量控制
      • 首部数据校验和
    • TCP报文

    • 三次握手*建立链接)与四次挥手(拆除链接)

      SYN:请求建立链接
      FIN:Finish
      
      为什么是四次才能拆除链接:
          拆除时Server端需要先把数据全部发送完毕,再去请求断开链接
          如果直接请求断开链接,数据就会被腰斩
          TCP半关闭状态
      
    • 分段与重组

      分段后,潜在的包丢失的成本会将至最小,重发时的工作量也小;若不分段,丢包会导致整个包都丢,导致整个包重传,效率过低;
      
      为什么要分段,重组:
          目的:提升数据传输效率,降低故障率
      
      流程:
          1、确定最大报文长度——通过MSS
          2、确定重组的依据——通过序列号
      
      
      MTU:物理链路上最大承担的数据链路量(数据联络层的概念)
      MSS(Max Segment Size)最大报文尺寸=MTU-网络层数据包头-传输层数据包头 = 1500 - 20 - 20 = 1460字节
          在三次握手时,确定MSS值
      
      拆分时,会在数据中添加统一标识符:序列号
          A ----------B-------------C
      0-1460       1461-...        ...-...
      
    • 确认与重传

      确认:基于序列号
      重传:
          时间间隔(三次握手时定义)——根据C/S网络环境动态生成
      
    • 流量控制

      滑动窗口:
          为什么有滑动窗口——提高吞吐量,减少排队与等待,
      
      慢启动:
          避免启动时,高并发导致的网络高峰
      
  • Part3 TCP与UDP区别

    • 代表:微信、短信

    • 不需要建立链接、不需要维护状态

    • TCP——数据流协议,TCP会对数据进行分段,而UDP不会

    • UDP——数据报协议


1.5 (TCP/IP)网络层

实现终端节点到节点之间的通信(个人主机)

核心包括: IP(编址)寻址、路由、分包与组包

数据 = 传输层head + 应用层head + 应用层数据
  • Part1 点到点通信 && Part2 IP地址

    IP地址使得异构网络之间得以连通,让不同的网络在同一个规则下通信

    • 点分十进制

    • V4地址总数:43亿个

    • 五类地址:

      • ABC类的私有地址
        
        A类私有 10.0.0.0        -   10.255.255.255            10网段
        B类私有 172.16.0.0        -   172.31.255.255              172.16-172.32网段(不包含)
        C类私有 192.168.0.0     -   192.168.255.255          192.168网段
        
    • 掩码

      1的部分为网络,0的部分为主机
      
  • Part3 路由

    • 路径=>路由=>路由器=>路由表

    • 告诉数据包怎么到达目的网络

    • 解决的三个问题

      1、目标是什么     目的地址+子网掩码
      2、从哪个方向走    输出接口
      3、下一站在哪        下一跳
      
    • 类型

      直连
      静态
      动态(ARP、OSPF、IS-IS、BGP)
      
  • Part4 Ip分片

    • 为什么要在网络层还要分片?

      主要是对传输层UDP的补充,UDP是整个发过来的。
      
      MTU在Internet中为1500,在FDDI中是4352,在ATM中为9180。上一层可能传输比MTU更多的数据量。
      
    • IP报文中专门用来分片的字段

      标识位、标志位、片偏移
      
      标识位:
          被分片后被打上统一表示
      标志位:
          DF——不分片位
          MF——更多分片位
      片偏移:
          类似于TCP中的序列号,对分片进行重组
      

1.6 (TCP/IP) 接口层

  • Part1: 数据链路层

    • 数据链路层实现的是逐跳传递,确保物理信道可以正常发送数据

    • 功能:帧发送与帧接收、用户数据帧的组装与分解、物理层信息监测、信道闲忙、数据链路的收发管理

    • 地址:MAC地址

    • (不同操作系统表示的MAC地址方式不同,但都是十六进制)

    • 48位十六进制数
      
      第一位:确定单播地址还是多播地址   0:单播  1:多播
      第二位:确定是全局地址还是本地地址 0:全局  1:本地
      3-24位:厂商识别码    IEEE管理,保证厂家之间不重复
      25-48位:厂商内识别码 厂商管理,保证产品之间不重复
      
    • 链路类型

      共享介质型网络:
          所有PC共用一条线:争用,令牌传递。
          争用/CSMA(载波监听多路访问):边听边发 冲突停发 随机延迟等待
      非共享介质型网络:
          交换式以太网——通过交换机进行通讯
          (有线)两种格式:
              802.3  IEEE
              Ethernet2
          (无线)以太网 IEEE802.11系列协议