美文网首页七七八八面试专辑计算机网络
读书笔记| 计算机网络知识要点总结

读书笔记| 计算机网络知识要点总结

作者: rh_Jameson | 来源:发表于2016-07-24 19:22 被阅读492次

    一、基本概念


    数据包结构

    image.png

    相关设备

    • 中继器

      • 功能
        • 物理层
        • 连接同一网络的多个网段
    • 集线器

      • 是一个多端口的中继器
      • 特点
        • 物理层,共享型设备
        • 安全性低
        • 容易引发广播风暴
    • 网桥

      • 定义
        • 二层路由器,根据MAC地址转发帧
        • 将两(多)个局域网连起来
      • 网桥通常用于联接数量不多、同一类型的网段
    • 交换机

      • 特点
        • 数据链路层
        • 根据mac地址进行数据转发
        • 有效抑制广播风暴
        • 转发延迟小,效率高
      • 与集线器对比
        • 交换机每个端口属一个冲突域
        • 集线器所有端口都属一个冲突域
      • 交换机的前身是网桥
        • 交换机用硬件完成
        • 网桥用软件完成
        • 过滤/学习/转发帧的任务
    • 网关

      • 定义
        • 协议转换器
        • 实现不同协议网络之间的互连
        • 一个网络连接到另一个网络的关口
        • 实质上是一个网络通往其他网络的关口(IP地址)
      • 路由器有多个网关(地址)
    • 路由器

      • 功能
        • 连接多个网络的设备
        • 将不同网络的数据信息进行转换
        • 为IP包传输分配最合适的路径
        • 数据通道功能
          • 转发决定
          • 背板转发
          • 输出链路调度
        • 数据控制功能
          • 与相邻路由器之间的信息交换
          • 系统配置
          • 系统管理
      • 特点
        • 网络层
        • 根据IP进行寻址转发数据包

    二、物理层


    功能

    • 通过物理手段将计算机连接起来
      • 光缆
      • 电缆
      • 双绞线
      • 无线电波
    • 规定网络的电气属性,负责传送0和1的电信号
    • 电脑网卡接口
      • 收发点信号
      • 解读成0/1序列

    三、数据链路层


    功能 & 定义

    • 位于物理层上方,确定了0和1的分组方式
      • 单独的0和1没有意义
      • 须规定解读方式
        • 多少电信号算一组
        • 每个信号位有何意义
    • 负责解读电信号0和1组成的分组数据包(即帧)

    以太网协议

    • 规范电信号分组方式 / 解读方式的协议

    • 协议规定

      • 一组电信号构成一个数据包(帧)
      • 帧组成
        • 标头
        • 数据
        • 尾部
      • 整个帧长度
        • min: 64字节
        • max: 1518字节
      • 数据过长,须分割成多个帧发送
    • 标头

      • 组成:包含数据包的一些说明项
        • 发送者
        • 接受者
        • 数据类型
      • 长度:固定18字节
      • 最初7个字节称序言
        • 每个字节内容都是0xAA
        • 作用
          • 让接收设备调整接收频率
          • 以便与发送设备频率一致
          • 时钟复原
    • 数据

      • 内容:数据包的具体内容
      • 长度
        • min: 46字节
        • max: 1500字节
    • 尾部

      • 检验序列
      • 检验数据传输是否发生错误
      • 类型
        • CRC:循环冗余校验码
        • 奇偶校验

    MAC地址

    • 定义
      • 又称硬件地址(物理地址)
      • 即是网卡的地址
        • 网卡出产都有一个唯一的mac地址
        • 长度48位,通常用12十六进制数表示
      • 有了mac地址,就可以定位网卡和数据包的路径
    • 如何将数据包从发送方送到接收方
      • 原始方式: 广播
        • 向局域网内所有计算机发送
        • 让每台机判断,是否为接收方
      • 转发表

    PPP协议

    • 定义
      • 用户PC和ISP进行通信时所使用的数据链路层系恶意

    问题

    • 是只有交换机维护一张mac转发表,还是局域网中每台机都有转发表
    • mac地址与ip地址

    四、网络层


    网络层由来

    • 单纯靠mac地址,广州的网卡即可找到北京的网卡
    • mac地址的设计无层次性
      • 即无类似ip地址的网络号设计
        • 多个局域网无法顺畅连接
        • 交换机mac地址与局域网内的计算机mac地址毫无关联
        • 判断数据包是否在该局域网,需遍历转发表或广播
      • 一旦网络中的计算机太多
        • 要么维护一张很大的转发表
        • 要么造成广播风暴
    • 寻找问题的方案:必须区分哪些mac地址属于同一个网络
      • mac地址做不到的原因
        • mac地址本身只与产商有关
        • mac地址与所处网络无关
      • 网络层解决了该问题
    • mac地址与ip地址逻辑上无联系
      • MAC地址绑定在网卡上
      • ip是管理员/运营山分配

    网络层的作用

    • 引进一套新的地址
    • 区分不同的计算机(mac地址)是否属于同一个子网络
    • 寻找确定计算机所在的子网络
      • mac则将数据包送到该子网络中的目标网卡
      • 先ip选择网络,再mac选择目标网卡

    IP协议

    • 定义

      • 规定网络地址的协议
    • 作用

      • 为每台计算机分配ip地址
      • 确定哪些地址在同一个网络
    • 协议类别

      • IPV4
      • IPV6
    • 地址分类概要


      • ( A B C D E )
      • 主机号全为0
        • 表示本网络本身
      • 主机号全为1
        • 表示本网络的广播地址
      • 32位全为0
        • 表示本网络上的本主机
      • 32位全为1
        • 表示整个tcp/ip网络的广播地址


    • 特点(主要讨论IPv4)

      • 32位组成
        • 0.0.0.0 -- 255.255.255.255
      • 地址分网络号、主机号
    • 相关概念

      • 子网掩码

        • 作用
          • 判断两台计算机是否属于同一个子网络
          • 将ip地址的网络部分全部置1,主机部分置0
        • 每个ip有一个子网掩码
        • 如何判断两个ip地址属同一网络
          • ip地址与各自的子网掩码进行AND运算
          • 将两个and运算结果进行比较
            • 结果相同则在同一网络
            • 反之,不在同一网络
      • 划分子网




        image.png
      • CIDR

      • NAT

        • 定义
          • 网络地址转换
          • 专用网络地址 转 公用地址
          • 在局域网中使用私有地址,联网时转而使用全局ip地址的技术
        • 特点
          • 大大节省ip地址的消耗
          • 隐藏内部网络结构,降低内部网络受攻击的风险
        • 私有ip地址网段
          • A类: 1个 =》 10.0.0.0 - 10.255.255.255
          • B类:16个 =》 172.16.0.0 - 172.31.255.255
          • C类:256个=》 192.168.0.0 - 192.168.255.255
      • VPN


    IP数据包

    • 组成

      • 标头(首部)
        • 首部前半部分
        • 首部后半部分
          • 可选字段,长度可变
          • 提供错误检测及安全等机制
        • 长度为20 - 60字节
      • 数据
        • 最长65515字节
    • IP数据包总长度最长为65535字节

    • IP数据包直接放在以太网数据包的“数据”部分

    • IP数据包传输

      • 需通过路由器的接力
      • 每个主机和路由都存在有一个路由表
        为IP包指明路线
      • 路由选择算法:生成路由表
        RIP
        BGP
    • 由于以太网数据包中的数据部分,最长1500字节

      • IP数据包大于1500字节,则需拆包,分开发送
    • 首部前半部分
      • 固定长度,20字节
      • 首部格式重要字段
        • 版本
          • ip协议的版本
          • 占4位
        • 首部长度
          • 占四位,最大进制数值是15
          • 该字段所表示数的单位:32位字
            • 一个32位字长是4字节

            • 1111 : 15 * 4 = 60字节
              0101 : 5 * 4 = 20字节
        • 总长度
          • 定义: 首部长度 + 数据长度
          • 占16位,最大长度 2^16 - 1 = 65535字节
        • 标识
          • 占16位
          • 一个计数器
            • 每产生一个数据报就加1
            • 并不是序号
        • 标志
          • 占三位,目前只有两位有意义
          • 最低位记为MF
            • 1:表示后面还有分片
            • 0
              • 表示后面没有分片
              • 该片为最后一片
          • 中间位为DF
            • 1
              • 不允许分片
            • 0
              • 允许分片
        • 片偏移
          • 占13位
          • 以8个字节为偏移单位
          • 指出该片在原分组中的相对位置
          • 每个分片长度是8字节的整数倍
        • 首部检验和
          • 占16位
          • 只校验分组的首部
          • 不校验数据部分
        • 生存时间TTL
          • 占8位
          • 数据报在网络中可通过的路由器数的最大值
          • TTL被减为0,则该分组必须被丢弃
        • 协议
          • 占8位
          • 指出分组是使用何种协议
            • 6:TCP
            • 17:UDP
        • 源地址字段
          • 4字节
        • 目的地址字段
          • 4字节
      • 三个长度标记
        • 首部长度:4B
        • 总长度:1B
        • 片偏移:8B

    相关协议

    • ARP协议
      • 在局域网中,通过目标ip地址得到目标mac地址的协议
    • ICMP协议
      • 特点
        • ip协议的补充
        • 介于网络层和传输层
        • 基于ip协议
          • icmp包封装在IP包中
      • 功能
        • 传输网络诊断信息
      • ICMP包类型
        • 错误信息
          • 源头冷却
            • 源主机向目的主机传送数据过快
            • 目的主机无法快速处理
            • 此时发送该类型ICMP包,请求源主机温柔点~
          • 目的地无法到达
            • 路由器接收到一个没法进一步接力的ip包时发出该类型ICMP包
          • 超时
            • TTL(IPv4)随经过的路由器而递减
            • 当TTL值减为0时,IP包超时
          • 重新定向
            • 路由器收到不应该收的ip包
            • 此时路由器向源主机发送该类型ICMP包
            • 提醒源主机修改路由表
        • 咨询信息
          • 回音
            • ping
            • 使用流程
              1、使用ping命令
              2、向目标主机发送ICMP包(Echo询问类型)
              3、目标主机接收到ICMP包
              4、目标主机回复ICMP(Echo询问类型)
    • 路由选择协议
      • 内部网关协议IGP

        • 目标
          • 路由器之间不断交换路由信息
        • RIP
          • 定义
            • 基于距离向量的路由选择协议
          • 优劣
            • 简单
            • 只适用于小型互联网
          • 特点
            • 仅和相邻路由器交换信息

            • 交换的信息:自己的路由表

            • 按固定时间间隔交换路由信息:30秒

            • 工作原理

              • 刚工作时,只知道直接连接的网络的距离
            • 若干次更新后,所有路由都知道各个网络的路径地址

            • 通过路由收敛,得到正确的路由选择信息

        • OSPF
          • 定义
            • 开放最短路径优先
            • 克服RIP缺点
            • 原理简单,实现复杂
          • 与RIP的不同
            • 向域内系统所有路由器发送信息
            • 发送的信息
              • 与本路由器相邻所有路由器的链路状态
            • 链路状态发生变化时,用洪泛法发送信息
            • 全局
              • RIP知道
                • 所有网络的距离
                • 下一条路由器
              • RIP不知道
                • 全网的拓扑结构
            • OSPF更新过程收敛得快
          • 流程


      • 外部网关协议EGP

        • BGP

    五、传输层

    • 传输层的由来

      • mac和ip解决了在互联网任意两台机上建立通信的问题
      • 但没有解决在两台机上的进程间建立通信的问题
    • 传输层的功能

      • 建立端口到端口的通信
        • 顺序控制
        • 重发控制
        • 流量控制
        • 拥塞控制
        • 提高网络利用率
      • 对比:网络层
        • 建立主机到主机的通信
      • 识别TCP/IP或UDP/IP通信
        • 五个信息
          • 源ip
          • 目标ip
          • 协议号
          • 源端口号
          • 目标端口号
        • 五个有一个不同,视为其他通信
    • 传输层协议

      • UDP协议

        • 组成
          • 标头: 定义了发出端口/接收端口
          • 数据
        • udp数据包全放在IP数据包的数据部分
        • 长度
          • 标头
            • 8个字节
          • udp数据包总长度不超过65535字节
        • 优点
          • 简单
          • 易实现
        • 缺点
          • 可靠性差
            • 数据包发送后,无法知道对方是否收到
      • TCP协议

        • 组成
          • 标头
          • 数据
        • 长度
          • TCP数据包没有长度限制
          • 通常tcp数据包不会超过IP数据包
        • 可近似认为,是有确认机制的UDP协议
          • 每发一个数据包,都要求确认
          • 收不到确认,则重发
        • 优点
          • 可靠性高: 能确保数据不会遗失
        • 缺点
          • 过程复杂
          • 实现困难
          • 耗较多资源
      • TCP VS. UDP

        • 可靠 —— 不可靠
        • 面向连接 —— 面向无连接
        • udp:用于对高速传输和实时性有较高要求的通信
          • IP电话
          • 多播与广播通信
          • 基于广播的协议
            • RIP
            • DHCP
        • tcp
          • 传输控制协议
        • udp
          • 用户数据包协议
      • 常用端口号

        • 20:FTP-DATA
        • 21:FTP-CONTROL
        • 22:SSH
        • 23:TELNET
        • 25:SMTP
        • 53:DNS
        • 80:HTTP
    • TCP流通信

      • 背景
        • 计算机数据本质是有序的0/1序列
        • 0/1序列如以byte为单位,就叫做文本流
      • 目标
        • 实现端到端的可靠通信
        • 确保数据到达的顺序与文本流顺序相符
      • 实现形式
        • 虚拟了文本流的通信
        • 在不同计算机间进行文本流的交互
      • 流的要点:次序
        • 保持TCP包的次序
        • 防止片段碎片化
      • 如何确保可靠 & 顺序
        • ACK回复 & 重传
          • 接收方每收到一个片段后,发送一个ACK回复片段给发送方
            • 收到片段序号为L
            • 则ACK回复片段的回复号为L + 1
          • 发送方一定时间内未收到ACK回复,则重新发送该片段
        • 滑动窗口
          • 特点
            • 同时应用于接收方和发送方,收发双方各有一个滑动窗口
            • 片段位于滑窗中时,表示tcp正在处理该片段
            • 滑窗越大,同时处理的片段数目越多
            • 对于“不那么乱”的片段
              • 利用缓存保存下来
              • 期望在一定时间内补充上之前的片段
            • 对于“乱得厉害”的片段
              • 拒绝,不发送对应的ack
            • 实现:滑窗
      • 滑动窗口
        • 累计ACK回复
          • tcp协议并不是每个片段都发送ACK回复
          • 一般利用一个ack回复通知连续多个片段的成功接收
          • 收到片段且应该回复ack时,会故意延迟一段时间
        • 滑窗结构
        • 流量控制
        • 窗口
      • 重新发送
        • 目的
          • 实现tcp片段传输的可靠性
        • 重新发送机制
          • 超时重新发送
          • 快速重新发送
      • tcp拥塞控制
      • tcp片段头部格式
        • 组成
          • 出发端口、目的地端口
          • 序号:使数据片段整理成文本流
          • ack位:设定后,回复号才有效
          • ack回复号
            • 说明接收方期待接收的下一个片段
            • 最后接收到的片段序号 + 1
          • SYN,占一位
          • FIN,占一位


    • TCP控制

      • 组成

        • 重传控制



        • 连接管理


        • 滑窗




        • 流量控制


        • 拥塞控制



      • Nagle算法

        • 目的
          • 提高网络利用率
          • 解决糊涂窗口综合症
        • 定义
          • 发送端有该发送的数据
          • 该发送的数据很少
          • 进行延迟发送的一种处理机制
        • 满足条件则发送
          • 已发送的数据都已经收到确认应答时
        • 可以发送最大段长度(MSS)的数据时
      • 流量控制 vs. 拥塞控制

          • 收发双方点对点通信量的控制
          • 抑制发送端数据的速率,以便接收端来得及接收
          • 点对点的局部性问题
          • 确保通信子网有传送待传数据的能力
            • 防止过多数据注入到网络中
            • 络不至于过载
          • 全局性问题
            • 前提:网络能承受现有网络负荷
          • 控制网络传输的效率
      • 拥塞控制方法

        • 慢开始 & 拥塞避免


        • 快重传 & 快恢复
    • tcp连接的建立与断开

      • 建立连接
        • 目的
          • 连接双方交换初始序号ISN
            • 第一个片段序号随机生成
            • 交换实现形式
              • 通过SYN片段实现
        • 过程:三次握手
          • 本质:双方互发含有自己的ISN的syn片段


        • 总结
          • SYN = 1, seq = x
          • SYN = 1, ACK = 1, seq = y, ack = y + 1
          • ACK = 1, seq = x + 1, ack = y + 1
      • 连结通信
        • 功能
          • 两段进程利用该连接进行通信
      • 断开连接
        • 连接终结通过特殊片段FIN

        • 为什么要四次,而不合并

          • tcp连接允许单向关闭
          • 某端已经可以关闭,但另一端不一定可以
        • 为什么要等2MSL

          • 保证A发送的最后一个ACK报文段能够到达B
          • 防止已失效的连接请求报文段 出现在本连接中
        • 过程:四次握手

          • 连接双方交换了四个片段
            • 两个FIN
            • 个ACK


        • 总结

          • FIN = 1, seq = u
          • ACK = 1, seq = v, ack = u + 1
          • FIN = 1, ACK =1, seq = w, ack = u + 1
          • ACK = 1, seq = u + 1, ack = w + 1
        • ACK, SYN, FIN都一定等于1

      • tcp连接状态管理




        image.png

    六、应用层

    • 应用层协议

      • email
      • www
      • ftp
      • DHCP
      • DNS
        • 功能:将网址转为ip地址
        • DNS服务器
          • 网络中进行域名解析的一些服务器
        • 特点
          • 基于udp,应用层
      • HTTP
    • dhcp

      • 基本概念
        • 工作在应用层,基于udp协议
      • 功能 & 作用
        • 动态分配IP地址
      • 协议规定
        • 每个子网络,会有一台机负责管理本网络的所有IP地址
        • 新的计算机加入网络
          • 向dhcp服务器发送一个dhcp请求
          • 申请IP地址和相关网络参数
          • 申请步骤
    • dhcp申请步骤:

      • 发dhcp包
        • 帧头部
          • 发出方MAC地址
          • 接收方MAC地址
            • 未知,填入FF-FF-FF-FF-FF-FF
        • ip头部
          • 发出方ip
            • 未知,填入0.0.0.0
          • 接收方ip
            • 未知,填入255.255.255.255
        • udp头部
          • 发出方端口: 68
          • 接收方端口: 67
        • 以广播形式发送
      • dhcp服务器接收包
        • 检测到ip
          • 发出方:0.0.0.0
          • 接收方:255.255.255.255
          • 明白该包是发给自己的
      • 读取dhcp包
      • 分配ip地址
      • 回送一个DHCP响应包
        • 帧头部
          • 发出方mac地址
          • 接收方mac地址
            • 已知
        • ip头部
          • 发出方ip
            • 已知
          • 接收方ip
            • 已知,但尚未配置
            • 仍填入255.255.255.255
        • udp头部
          • 发出方端口:67
          • 接收方:68
    • http


      • 目的: 解决文件传输的问题

      • 定义: web文档传输协议

      • 特点: 明确区分哪端是客户端,哪端是服务器端

      • 实现

        • 请求: 生成针对目标web服务器的http请求报文
        • 回复: 对请求的内容的处理,并回传
        • 过程
      • URI vs. URL

        • URI
          • Uniform Resource Identifier
          • 统一资源标识符
          • 符串表示某一互联网资源
        • URL
          • Uniform Resource Locator
          • 统一资源定位符
          • 表示资源的地点
        • URL 是 URI的子集
      • 格式

        • 起始行
          • 只有一行
          • 是请求/回复最重要的信息
            • 请求起始行:想要什么
            • 回复起始行:发生什么
        • 头信息
          • 多行
          • 每行含一对键值对
        • 主体
          • 具体的资源
        • http协议请求
      • 请求方法类别

        • GET
          • 将特定资源传送给客户端
          • 传输一些不重要的数据
            • url?变量名 = 变量值
        • POST
          • 向服务器端提交数据
          • 使用post,url不再被改写,且数据位于http请求主体
        • PUT
          • 传输文件
          • 类似FTP文件上传
          • 要求在请求报文的主体包含文件内容
          • 并保存到请求URI指定的位置
          • 不带验证机制
        • DELETE
          • 删除文件
          • 与put相反
          • 不带验证机制
        • HEAD
          • 和GET方法一样
          • 获得报文首部
          • 不返回报文主体部分
          • 用于确认URI的有效性及资源更新的日期时间
        • OPTIONS
          • 用来查询针对请求URI指定的资源支持的方法
          • 查询支持的请求方法
        • TRACE
          • 追踪路径
      • 报文类别

        • 请求报文
          • 组成
            • 请求方法
            • 请求URI
            • 协议版本
            • 可选的请求首部字段
            • 内容实体
        • 响应报文
          • 组成
            • 协议版本
            • 状态码
            • 原因短语
              • 用以解释状态码
            • 可选的响应首部字段
            • 实体主体
      • 状态码类别

        • 1XX
          • 信息性状态码
          • 接收的请求正在处理
        • 2XX
          • 成功状态码
          • 请求正常处理完毕
          • 相关状态码
            • 200:ok
              • 请求被正常处理
            • 204:No Content
              • 请求处理成功
              • 但没有资源需要返回
            • 206:Partial Content
              • 范围请求
              • 对资源某一部分的请求
        • 3XX
          • 重定向状态码
          • 需要进行附加操作以完成请求
          • 相关状态码
            • 301:Moved Permanently
              • 永久性重定向
              • 资源的URI已更新
              • 客户端请更新书签引用
            • 302:Found
              • 临时性重定向
              • 表示资源的URI已临时定位到其他位置
              • 希望用户本次能使用新URI访问
        • 4XX
          • 客户端错误状态码
          • 服务器无法处理请求
          • 相关状态码
            • 400:Bad Request
              服务器无法理解请求
              表示报文中存在语法错误
            • 401:Unauthorized
              • 表示请求需通过http认证
              • 第一次返回401,本页面需认证
              • 第二次返回401,认证失败
            • 403:Forbidden
              • 对请求资源的访问被拒绝访问
            • 404:Not Found
              • 服务器上没有请求的资源
        • 5XX
          • 服务器错误状态码
          • 服务器处理请求出错
          • 相关状态码
            • 500:Internal Server Error
              • 内部资源出现故障
            • 503:Service Unavailable
              • 服务器暂处于超负载或正在进行停机维护
        • 302:重新定向
          • 资源这里没有,但知道另一个地方有
        • 404:无法找到
          • 找不到想要的资源
      • 无状态

        • 定义
          • 每次请求-回复,都重新建立tcp
            • 尽管已做优化,但依然保持无状态特性
          • 致使服务器无法知道上次请求和本次请求来自同一个客户端
          • 每次请求都是一个全新的请求
          • 协议自身不对请求和响应之间的通信状态进行保存
      • 使http保持状态

        • Cookie
      • 使http持久连接

        • 目的
          • 节省流量
          • 防止造成无谓的tcp连接的建立和断开
        • 持久连接宗旨
          • 一次tcp连接后可进行多次请求和响应
        • 管线化
          • 一次发送多个请求,不等待响应
    • Socket抽象层

      • 定义
        • 传输层之上,应用层之下
      • 连接过程



    七、串联总结

    • 网络通信就是交换数据包
      • 发送包需要两个地址
        • 对方的mac地址
        • 对方的ip地址
      • 发送包需判断对方是否在同一个子网络
        • 同一子网
          • 对方的mac地址
          • 对方的ip地址
        • 不同子网
          • 网关的ip地址
          • 对方的ip地址


    相关文章

      网友评论

        本文标题:读书笔记| 计算机网络知识要点总结

        本文链接:https://www.haomeiwen.com/subject/ibrorttx.html