zoukankan      html  css  js  c++  java
  • 计算机网络概述

    本文转载自计算机网络概述

    基本概念

    • 计算机网络协议:语法,语义,时序

      • 语法:描述实体间信息交换格式
      • 语义:控制信息的具体含义
      • 时序:交换信息的顺序以及速度配合
    • 功能:硬件,软件,信息

    • 分类:覆盖范围,拓扑结构,交换方式,用户属性

      • 树形,星形拓扑:易于管理,中心节点是网络的关键,线路较多成本较高

      • 环形,总线拓扑:成本效率不高,排错,增删,不便于管理

      • 网状拓扑:节点间通信多路径选择,结构复杂成本高

        计算机网络结构

        网络边缘

        接入网络方式

    • 电话拨号

    • 数字线ADSL,使用电话的物理线路,但不同信道传输

    • 混合光纤同轴电缆HFC

    • 局域网

    • 移动接入网络(移动设备)

    网络核心

    • 网络核心是交换节点和传输介质的集合,实现网络边缘中主机数据的中继与转发。
    • 网络核心(通信子网)不对数据进行处理,不提供网络服务。这些功能由网络边缘(资源子网)提供

    数据交换技术

    电路交换

    • 主机间建立专用的通信线路,通信结束后通道拆除
    • 实时性高,时延与时延抖动小
    • 突发性数据传输(网页浏览)中,信道利用率低,传输速率单一

    电报交换

    • 无需建立连接
    • 只有报文被转发(传输数据)时才会占用信道,不会独占信道
    • 以存储-转发形式传送。交换节点需要缓冲储存,报文需要排队,增加时延

    分组交换

    • 拆分报文为若干分组,在进存储转发
    • 存储设备容量要求低,速率效率高
    • 更加公平,第一个报文为全部传完,可以先开始下一个报文
    • 延迟时间,误码率

    网络性能

    带宽(频带宽度)

    • 单位赫兹,频率极差
    • 带宽越大,速率越大,故带宽有时候用来代替速率描述网络性能

    时延

    • 数据从一节点到另一节点所需时间
    • 延迟分类:
      • 处理时延
      • 排队时延
      • 传输时延,数据传输到线路上所需时间
      • 传播时延,数据在线路上的传播时间

    时延带宽积

    链路上可以容纳的数据位数

    丢包率

    • 网络可靠性,反映拥塞程度
    • 丢包率 = 丢失分组数/发送分组数

    吞吐率

    度量数据传送能力

    计算机网络分层体系结构

    各层次封装各自的头部信息后传递下一层次处理

    • OSI参考模型(七层)
    • TCP/IP参考模型
    • 五层模型:应用层(报文),传输层(段),网络层(数据报),链路层(帧,若干比特组织的数据处理单元),物理层(比特流)

    网络应用

    网络应用体系结构

    • 三种类型
      • 客户端/用户(C/S)结构,两端角色固定,且用户之间不通信
      • P2P(Peer To Peer)结构 客户端与服务端的结合体,客户端与服务端的地位只是在一次通信过程中不变
      • 混合结构 中心服务器+对等客户端直接通信
    • 网络应用基本原理
      • 本质都是CS结构
      • 服务器端被动等待请求,客户端主动发起通信请求服务
      • 应用进程遵循应用层协议

    域名系统DNS

    用IP地址唯一的标识通信双方,但IP不方便记忆使用。使用域名,再由系统解析为IP地址

    • 顶级域名命名方法:
      1 国家域名nTLD; [cn中国 …]
      2 通用顶级域名gTLD(组织); [com企业 net网络组织 org非营利性组织 edu教育机构 gov政府 …]
      3 基础结构域名
      三级域名一般代表企业内部的主机名,使用时由叶节点级级往上
      层次树状结构

    • 目前存在13个DNS根域名服务器,a.root-server.net为一台根域名服务器域名

    • 大部分根域服务器由多台独立物理服务器构成的服务器集群,而有的是由分布在不同位置的多台镜像服务器

    • 域名服务器

      • 建立分布式数据库储存域名,根据用户请求将域名映射为IP地址
      • 服务器分类:根域名,顶级域名,权威域名,本地域名服务器
    • 域名解析

      • 递归查询,服务器代替主机进行查询

      • 迭代查询。服务器返回下一服务器,由主机自行查询

        万维网应用

    • web服务器,发送超文本,再由浏览器解析

    • 浏览器,网页超链接,包含URL(统一资源定位符),URL包含服务器域名。

    • TCP连接(保证传输可靠性)

    • 超文本传输协议HTTP(由HTML编写)

      • 非持久连接 首次建立TCP连接,请求HTML页面,连接断开。解析页面后,需要再向服务器获取若干资源对象。
        • 串行连接:每次只向服务器请求一个对象,且每次都要重新建立TCP连接。
        • 并行连接:一次向服务器同时发送若干请求,建立若干连接
          要求对方服务器允许建立三条连接
      • 持久连接
        • 非流水方式持久连接 建立TCP,请求html,再依次请求资源,直到所有资源请求完毕再释放连接
        • 流水方式持久连接 获取html后,同时发出三个TCP连接。对服务器压力较大
      • HTTP报文 请求报文 & 响应报文
        • 典型的请求方法:GET, HEAD, POST, OPTION, PUT等。
          HTTP报文
          请求报文和响应报文
          (状态码的短语是对状态码的简单描述)
    状态码
    1×× 信息提示,需进一步交互
    2×× 成功
    3×× 重定向,资源已转移
    4×× 客户端错误
    5×× 服务端器错误
    • Cookie 小型文本文件,弥补了http无状态性的不足,有利于对用户进行跟踪或进行针对性服务

    • 首次访问,服务器给用户编号并设置ID,将带编号的Cookie发送回给用户

    • 用户浏览器保存该Cookie文件,并在下一次访问时一并发送给服务端
      Cookie工作原理

    Internet电子邮件

    • 电子邮件系统包括邮件服务器,简单邮件传输协议(SMTP),用户代理,邮件读取协议等。

    • SMTP是Internet电子邮件中核心应用层协议,实现邮件服务器之间或用户代理到邮件服务器的传输,默认端口为25。使用传输层TCP协议进行可靠信息传输

    • 应用层交互阶段:握手阶段,邮件传输阶段,关闭阶段

      SMTP协议示例
      C: telent SMTP.163.com 25 //以telenet方式连接163邮件服务器
      S: 220 163.com Anti-spam GT for Coremail System //220为响应数字,其后为欢迎信息
      C: HELO SMTP.163.com //HELO发出握手请求。除此之外,HELO主要用来查询服务器支持的扩充功能
      S: 250-mail
      S: 250-AUTH LOGIN PLAIN
      S: 250 8BITMIME //最后一个响应数字应答码之后跟的是一个空格,而不是’-‘
      C: AUTH LOGIN //请求认证
      S: 334 dxNlcm5hbWU6 //服务器的响应——经过base64编码了的“Username”=
      C: Y29zdGFAYW1heGl0Lm5ldA== //发送经过BASE64编码了的用户名
      S: 334 UGFzc3dvcmQ6 //经过BASE64编码了的”Password:”=
      C: MTk4MjIxNA== //客户端发送的经过BASE64编码了的密码
      S: 235 auth successfully //认证成功
      // 进入邮件传输阶段
      C: MAIL FROM: bripengandre@163.com //发送者邮箱
      S: 250 bripengandre@163.com … Sender ok //“…”代表省略了一些可读信息
      C: RCPT TO: bripengandre@smail.hust.edu.cn //接收者邮箱
      S: 250 bripengandre@163.com … Recipient ok
      C: DATA //请求发送数据
      S: 354 Enter mail, end with “.” on a line by itself
      C: Enjoy Protocol Studing // 邮件内容
      C: .
      S: 250 Message sent
      C: QUIT //退出连接
      S: 221 Bye // closing connection

    • 电子邮件格式:首部,空白行,主体。To, Subject, Cc, From, Date, Reply-To等关键字。

    • MIME 多用途互联网邮件扩展。将非AScII转换为ASCII,再利用SMTP进行传输。邮件首部增加MIME,说明主体原本数据类型及编码标准

    • 邮件读取协议

      • 邮局协议 POP3(将邮件下载到本地操作,不会同步,下载后无需联网后)。默认端口号110
      • 互联网邮件访问协议 IMAP(直接操作邮件服务器)
      • HTTP(通过服务器网址访问)

    FTP文件传输协议

    互联网中实现两主机间文件传输的 应用层 协议。利用传输层TCP协议。
    CS模式。但不同于其他服务,需要采用两种连接。控制连接(21端口)传输控制命令,数据连接(20端口)传输文件内容
    适用于传输较大文件。使控制命令更好更快传输

    P2P应用

    • 充分聚集端系统的计算能力及网络传输带宽,对服务器依赖很小
    • 可以请求对等的端系统进行数据获取。同时也可以请求服务器,各获取一部分数据在组合

    Socket接口模型

    网络应用进程通信通过API接口请求的底层协议的服务。根据实际使用传输层的TCP或UDP传输。
    创建相应提供的接口调用不同的传输协议

    • 数据报类型Sock_dgram对应UDP服务
      • 客户端通过临时端口直接向服务器发送数据。服务器通过绑定固定端口号,无需建立连接,直接监听等待客户端数据
    • 流式套接字Sock_stream对应TCP服务
      • 服务端通过绑定固定的端口号,监听请求。客户端无需绑定端口,通过socket()临时获取端口号
      • 建立TCP连接,开始数据交互
      • 交互结束,客户端关闭接口;服务端关闭连接,最后在关闭端口
    • 原始套接字Sock_raw直接调用网络层的服务,直接构建IP包访问。不再依赖传输层的服务

    传输层

    传输层基本服务

    核心任务是为应用进程之间提供端到端的逻辑通信服务。
    网络层实现的是主机到主机的传输服务。传输层端点指的是主机中运行的应用进程。
    传输层功能:传输层协议提供逻辑通信服务,只需在端系统中实现。中间的节点如路由器交换机无需实现传输层功能,提高效率
    主要功能:

    • 传输层寻址

      • 通过 端口号 找到对应应用程序。在全网范围内利用 IP+端口号 唯一的标示一个通信端点(应用程序)
      • 传输层端口号为16位二进制。分为三类:
      1. 熟知端口号:1~1023。如http:80
      2. 登记端口:1024~49151。为无熟知端口号的程序使用,需要在IANA登记以防重复
      3. 客户端口号/短暂端口号:49152~65535。用于临时申请分配按使用。不固定。
    • 应用层报文的分段和寻址

    • 报文的差错检测

    • 进程间端到端的可靠数据传输控制(是否收到)

    • 面向应用层的复用和分解

    • 端到端的流量控制

    • 拥塞控制

    • 无连接服务UDP:数据交互之前无需对端进行任何信息交换(握手),直接构造传输层报文段并向接收端发送

    • 面向连接的服务TCP:传输前双方交换控制信息,建立逻辑连接,在传输数据,最后拆除连接

    传输层的复用与分解

    支持众多进程使用通过同一协议进行传输

    • 多路复用:从每个应用中获取是数据进行封装发送
    • 多路分解:从数据中通过端口号分各个应用

    无连接的多路复用与多路分解

    • UDP套接字:<目的IP, 目的端口号>
    • 端口号是UDP实现多路复用的重要依据

    面向连接的多路复用与多路分解

    • TCP套接字标示一条TCP连接:<源IP, 源端口,目的IP, 目的端口号>
    • 一段TCP报文到达主机时,根据此将报文分解到相应套接字(同一连接)

    停-等协议与滑动窗口协议

    实现可靠传输的措施:

    1. 差错检测:利用差错编码实现数据包检测
    2. 确认:向发送方反馈接受状态
    3. 重传
    4. 序号:确保数据按序提交
    5. 计时器:解决数据丢失问题

    停等协议

    每发送一个报文后就停下等待接收方确认

    • 发送经过差错编码与编号的报文段
    • 确认接收则发送ACK,否则丢弃报文发送NCK
    • 根据反馈状态选择重发或者继续

    滑动窗口协议

    性能问题:停等机制降低信道利用率。
    解决方案:流水线协议/管道协议:允许发送方在未收到确认前不断发送多个(后续)分组。
    继续改进:增加分组序号范围;发,收方必须可以缓存多个分组(对未收到确认的数据进行缓存)
    两种有代表性的滑动窗口协议:

    • 回退N步协议(Go-Back-N, GBN):接收窗口大小为1,只接收1个按按序到达的分组。出错分组以后的全部丢弃重传
    • 选择重传协议(Selective RePeat, SR):接收窗口>1,缓存正确但失序的分组

    用户数据报协议 UDP

    UDP数据报结构

    • 源和目的端口号:用于UDP复用分解

    • 长度字段:UDP报文段中的字节数

    • 校验和:接收方检测报文段是否出错

      校验和计算

      1. 对所有参加运算的内容按16位对齐求和
      2. 求和过程中遇到溢出(进位)都会被回卷(进位与和的最低位再加)
      3. 得到的和取反码

    传输控制协议 TCP

    TCP报文首部结构

    • 源与目的端口号
    • 序号 标示该报文在整个分组中的序号
    • 确认号 反馈某分组发送状态
    • 数据偏移 同序号的报文再拆分后的数据位置
    • URG,标示紧急指针位是否有效
    • ACK 确认位,标示确认号是否有效
    • PSH 通知可以很快对数据进行提交
    • RST 复位,出现错误,需要重置连接
    • SYN 同步请求,协商序号等信息
    • FIN 通知拆除连接
    • 窗口 流量控制,窗口大小可有双方控制
    • 校验和
      // 以上为 TCP的固定首部,20字节
    • 选项
    • 填充 首部大小需为4字节的倍数
      TCP报文结构

    TCP连接

    TCP传输机制包括差错编码,确认,序号,重传,计时器(实现重传)等
    TCP的可靠数据传输基于滑动窗口协议,发送窗口动态变化(流量控制)

    连接建立-三次握手

    1. SYN连接请求 syn = 1, seq = x(同步请求,且初始序号为x)【客户端状态为SYN-SENT】

    2. SYNACK确认 syn = 1, ACK = 1, seq = y, ack = x+1(x已收到请求x+1,告知服务端初始序号)【服务端状态SYN-RVD】

    3. ACK确认

      ACK = 1, seq = x+1, ack = y+1

      TCP断开-四次挥手

    4. 任意一方发起断开请求 FIN = 1, seq = u

    5. 返回确认 ACK = 1, seq = v, ack = u+1。请求方停止发送数据。另一方继续发送数据。

    6. 发送请求释放连接 FIN = 1, ACK = 1, seq = w, ack = u+1

    7. 接收方返回确认 ACK = 1, seq = u+1, ack = w+1。接收端接收到以后关闭连接,发送端进入TIME-WAIT阶段,一段时间后关闭连接

    • 封装TCP报文段
    • 发出一个报文段后启动一个计时器
    • 校验和发现数据差错
    • 重排序,丢弃重复
    • 流量控制

    TCP流量控制

    • TCP利用窗口机制实现流量控制,但不是简单的滑动窗口协议(窗口动态变换)
    • TCP连接建立时双方分配固定大小的缓冲空间,发送数据必须在缓冲区接纳的大小
      • 接收端给发送方发送确认时通知接收窗口大小
      • 发送端发送数据时,保证未确认段应用层数据不超过接收端窗口大小,使对方窗口不会产生溢出

    TCP拥塞控制

    • 窗口机制 通过调节窗口大小实现发送速率调节
    • 窗口调节基本策略 AIMD
      • 加性增加 网络未拥堵,逐渐增加
      • 乘性减小 网络拥堵,逐渐减小
    • TCP拥塞控制算法
      • 慢启动
      • 拥塞避免
      • 快速重传
      • 快速恢复

    网络层

    传输层主要保证数据传输的可靠性,网络层负责数据的转发和发送
    网络层的主要作用是将网络数据报从源主机发送到目标主机
    主要功能:

    • 分组转发:分组从传输接口转移到输出接口

    • 路由选择

      :决定分组经过的路由或路径

      路由器内部结构

    • 路由选择处理机:路由选择协议 ->路由表(记录下一跳的路由器)

    • 输入端口进来的数据通过 转发表 记录的输出端口

    • 通过路由表记录成转发表

    数据报网络

    按照目的主机的地址进行路由选择的网络(本质上不可靠,但效率与成本好。互联网依赖此技术建立)

    • 无连接
    • 每个分组作为独立的数据报进行选路传输,路径可能不同
    • 分组可能出现乱序与丢失

    虚电路网络

    在网络层提供的面向连接的分组交换服务
    互联网的数据报方式不可靠,所以需要在此之上建立面向连接的传输层来确保传输可靠性。

    • 建立一条网络层的逻辑连接
    • 不需要为每条虚电路分配独享资源(区别与电路交换,信道利用率较高)
    • 沿虚电路路径按序发送分组
      异步传输模式的网络即采用此网络,成本较高但是传输较可靠

    网络互连

    异构网络互连

    两个网络使用的技术与协议不同

    • 协议转换

    • 构建虚拟互联网络 使用IP协议作为这些网络技术和协议的下层协议,使用IP协议进行传输。在IP层次构建了虚拟网络

      网络设备–路由器

    • 输入输出端口 不同的网络技术有不同的端口

      // 输入端口

      1. 线路接收分组
      2. 物理层处理(处理不同网络技术)
      3. 数据链路层处理(提取其中网络层的IP数据)
      4. 网络层处理分组排队(查表转发输出,通过交换结构进入输出端口)
        // 输出端口
      5. 网络层排队,缓存管理,每次取出一个数据
      6. 数据链路层处理(处理为不同技术)
      7. 物理层处理,发送到线路
    • 交换结构设计

      • 基于内存交换
      • 基于总线交换
      • 基于网络交换(节点开关)
        路由器交换结构
    • 路由处理器
      执行路由器各种指令,包括路由协议运行,路由计算,路由表的更新维护等

    网络层拥塞控制

    拥塞:持续过载的网络状态,用户对网络资源的需求(链路带宽,存储空间,处理能力)总需求超过固有容量

    • 缓冲区容量有限

    • 带宽有限

    • 结点处理能力有限

    • 发生故障

      流量感知路由

      根据负载状态动态调整,将网络流量引导到不同链路上,均衡负载,从而延缓或避免拥塞发生

      解决网络负载的震荡现象

    • 多路径路由

    • 缓慢转移流量至另一链路

      准入控制

      主要应用于虚电路网络。对新建虚电路进行审核,若该电路会导致拥塞则拒绝建立。

      拥塞状态的量化:基于平均流量与瞬时流量

      流量调节

    1. 感知拥塞

    2. 处理拥塞:将拥塞信息通知到其上游结点

      处理方法:

      • 抑制分组:给拥塞数据报源主机返回一个抑制分组(减少发送)

      • 背压:让抑制分组从拥塞结点到源结点的路径上的每一跳都发挥抑制作用

        负载脱落

        主动丢弃某些数据报

    • 丢弃新分组:如GBN
    • 丢弃老分组:如实时视频流

    Internet网络层

    IPv4协议

    数据报格式

    • IP首部分装了来自传输层的数据
    • IP首部固定部分20字节
    • 版本:IPv4/IPv6
    • 首部长度 固定+可变
    • 区分服务 区分不同服务质量
    • 总长度 IP包总长度
    • 标示 识别IP包。判断分片是否属于同一字段
    • 标志 识别IP包是否被分割。判断是否为最后分片
    • 片偏移 判断分片先后顺序
    • 生存时间 多次转发仍未抵达目的地,生存时间过长丢弃
    • 协议 标示数据部分使用的协议
    • 检验和 差错
    • 源,目的地址 发送与接收 数据的主机的IP地址。分别占4字节

    IP数据报格式

    IPv4编址

    IP地址

    32位的二进制 点分十进制标记法 8位一组点分标
    网络号(同一网络下的主机具有相同的网络号) + 主机号
    分类地址:A, B, C, D, E
    特殊地址,私有地址
    ABC:实际分配给联网的主机,没有重复的唯一地址
    D:组播/多播地址。高四位为1110
    E:保留使用。高四位为1111
    A:前8位为网络号。最高位为0 0~127 主机数量:2^24-2
    B:前16位为网络号。高二位为10 主机数量:2^16-2
    C:前24位为网络号。高三位为110 主机数量:2^8-2
    ABC网络规模不同

    子网划分

    将一个子网划分为多个子网
    大子网具有较短网络前缀。小子具有稍长前缀

    • 超网:子网合并为大网

    • 子网掩码:定义调节一个子网的网络前缀长度,用于划分子网。前部全为1,即为网络前缀,后部全为0

    • IP ^ Mask = Subnet IP地址与子网掩码进行与运算得到子网地址

    • 同一子网中,网络前缀部分相同,后面为主机号不同,最小主机号代表子网地址,最大主机号代表直接广播地址

    • 后8为的前缀部分即为子网号,可作为连续标示

    • 除去子网地址与广播地址,剩余即为可分配的主机数

    • 子网掩码延长r位该子网划分为2^r 个子网
      子网划分

    路由聚合

    将相同路由的连续子网合并
    路由表中的分组转发:查找转发表(与运算匹配),最长前缀优先匹配
    IP地址与分组表子网掩码坐与运算,所得是否匹配,再根据最长前缀进行选择

    动态主机配置协议

    网络地址转换

    网络地址转换 NAT协议 –使用私有地址访问互联网
    大量地址在互联网上不分配不使用只在内部使用,但保留地址在互联网上无法使用

    • 源IP地址由Nat路由器替换为Nat拥有的合法使用的公共IP地址,同时替换端口号,并将替换关系记录到Nat转换表中
    • 从互联网返回的IP数据报,依据其目的地址与目的端口号检索Nat转换表,获取内部ip与端口
      同时起到隐藏实际IP地址,只公开公共地址的效果

    路由算法


    链路层

    传输层负责应用层的复用分用保证可靠传输,网络层负责将数据从主机传到主机
    链路层负责把一个节点可靠的传输到另一个节点,为网络层提供服务

    数据链路服务

    负责直接相邻节点的传输
    链路层数据单元:帧
    网络层将数据报封装交给链路层,链路层将数据添加帧头帧尾,构造数据帧

    • 组帧
    • 链路接入:点对点链路,广播链路(一条链路上有多个节点)
    • 可靠交付(用于高出错链路)
    • 差错控制

    多路访问控制协议

    ALOHA协议

    纯ALOHA协议(Pure ALOHA):直接发送 ->信道侦听(反馈确认) ->冲突重发
    时隙ALOHA协议(Sloated ALOHA):发送时间分为时隙,时隙开始时发送 ->信道侦听 ->冲突则下一时隙以概率P重发

    载波监听多路访问协议CSMA

    发送前监听信道是否空闲

    1. 非坚持CSMA:忙则等待随机时间发送后在侦听

    2. 1-坚持CSMA:忙则持续侦听直到信道空闲

    3. P-坚持CSMA:闲则概率P在最近时隙发送(避免同时侦听冲突)

      带冲突检测的载波监听多路访问CSMA/CD

      监听空闲后发送,发送时检测碰撞,碰撞后等待重发

    局域网

    链路层寻址与ARP

    局域网广播通信,使用Mac地址进行标示通信。

    MAC地址/硬件地址

    每个接口对应一个MAC地址,全球唯一。
    路由器接口,网卡接口,交换机接口
    长度48位,十六进制, 前24为厂商标示, 厂商分配代码

    地址解析协议ARP

    根据本网内目的主机或默认网关的IP地址获取其MAC地址
    查询/响应方式
    所以ARP只为在同一只子网下的主机和路由器解析IP

  • 相关阅读:
    Netty源码分析--Channel注册(上)(五)
    Netty源码分析--初始化Options,添加处理器(四)
    Netty源码分析--创建Channel(三)
    【2015 Week Task】
    【Mood 20】DailyBuild 4月
    【Gradle】 Gradle 综合
    【JS 综合】JS综合
    【IOS】IOS综合
    【起航计划 001】2015 起航计划 踏在起跑线上
    【HTML5】HTML5 综合
  • 原文地址:https://www.cnblogs.com/yungyu16/p/13308642.html
Copyright © 2011-2022 走看看