计算机网络
计算机网络
  计算机网络体系结构
    1.1计算机网络概述
      电路、报文、分组
        电路交换
          难以实现差错控制
          有序传输
        报文交换
        分组交换
          会出现失序、丢失等情况
      计算机网络的性能指标
        速率
          数据传输速率⚠️注意以1k=1000
        带宽
          最高数据传输速率
        吞吐量
          双向传输都要算
        时延
          传输时延
          传播时延
          处理时延
          排队时延
        时延带宽积
          传播时延*信道带宽
        往返时延
        信道利用率
          由数据通过的时间/总时间
    1.2计算机网络体系结构与参考模型
      协议、接口、服务
        协议数据单元PDU，服务数据单元SDU，协议控制信息PCI
        协议
          语法：数据与控制信息的格式
          语义：要发出何种信息、完成什么动作、执行什么操作
          同步：时间实现顺序的详细说明
        服务
          面向连接与无连接
          可靠服务与不可靠服务
          有应答与无应答
      OSI参考模型
        物理层
          以比特为传输单位
          规定了接口的参数、传输信号的意义及电器特征
        数据链路层
          以帧为传输单位
          相邻节点的可靠传输、差错控制及流量控制
        网络层
          数据报为传输单位
          对分组进行路由选择，并实现流量控制、
拥塞控制、差错控制、网际互联等
          有连接可靠的虚电路与无连接不可靠的数据报
        传输层
          端到端的流量控制、差错控制、连接建立与释放
          仅提供有连接可靠的服务
        会话层
          检查点机制维持可靠会话，通信失效时从检查点恢复通信
        表示层
          数据编码、压缩、加密和解密
        应用层
          最复杂，协议最多
          用户与网络的接口
      TCP/IP模型
        网络接口层
        网际层
          提供无连接不可靠的IP数据报
        传输层
          提供连接可靠TCP、无连接不可靠UDP
        应用层
  物理层
    2.1通信基础
      基本概念
        码元传输速率：波特率
        信息传输速率：比特率
      信道的极限容量
        奈奎斯特定理
          理想低通信道
          传输速率：2Wlog_2(V)
        香农定理
          带宽受限有噪音
          传输速率：Wlog_2(1+S/N)
          信噪比(dB)：10log_10(S/N)
      编码与调制
        非归零编码NRZ
        归零编码RZ
        反向非归零编码NRZI
        曼彻斯特编码
          标准以太网使用
        差分曼彻斯特编码
        调幅AM、调频FM、调相PM、正交幅度调制QAM
    2.2传输介质
      传输介质
        双绞线
        同轴电缆
        光纤
        无线电波
        微波、红外线和激光
      物理接口特征
        机械特征
          接口形状、尺寸、引脚数量和排列等
        电气特征
          电压范围、传输速率和距离限制等
        功能特征
          电平电压的意义，每条线的功能
        过程特征
          各种可能事件出现的顺序
        易混淆
    物理层设备
      中继器
        信号整形再生
      集线器
        共享带宽，8Mbps连接了4台计算机，每台就是2Mbps
        只能工作在半双工
        不能隔离冲突域
  数据链路层
    3.1数据链路层功能
      相邻节点之间数据传输
      链路管理
      封装成帧与透明传输
      流量控制
      差错检测
    3.2组帧
      字符计数法
      字节填充法
      零比特填充法
        每5个1补一个0
      违规编码法
    3.3差错控制
      奇校验
        加一个检验位后“1”个数为奇数
      偶校验
        加一个检验位后“1”个数为偶数
      循环冗余码CRC
        硬件实现
        可以检测错误和纠正错误，一般只检测错误
      海明码
        n+k<=2^k-1
          n为有效位，k个检验位
          1位纠错，2位检错
          码距为d，检错e位，纠错t位。
纯 检/纠 错e+1<=d，2*t+1<=d
检错与纠错结合：d>=e+t+1，e>t
    3.4流量控制与可靠传输
      停止等待协议S-W
        发送窗口：1 接受窗口：1
        需要发送确认帧，有超时重传
        不存在帧失序问题
      后退N帧协议GBN
        发送窗口：n 接受窗口：1
        只允许顺序接受帧，某个帧出问题
其后面发送过的帧必须全部重传。
        累积确认
        超时重传
        Wt+Wr<=2^n
      选择重传协议
        发送窗口：n 接受窗口：m。m<=n
        确认帧与否认帧
        超时重传与请求重传
          落在接受窗口之外的都认为是重复帧
        接受窗口必须小于等于发送窗口
        Wt+Wr<=2^n
      信道利用率
        Td为发送时延，Ta为确认帧发送时延
        停止等待协议
          Td/(Td+RTT+Ta)
        后退N帧协议GBN
          n*Td/(Td+RTT+Ta)
        选择重传协议
          n*Td/(Td+RTT+Ta)
        信道平均数据传输速率=信道利用率*信道带宽
    3.5介质访问控制
      信道划分介质访问控制
        时分复用TDM
        统计时分复用STDM
        频分复用FDM
        波分复用WDM
        码分复用CDMA
          不同码片序列相互正交
        共享空间不共享时间
        共享时间不共享空间
        共享时间与空间
      随机访问介质访问控制
        ALOHA
          纯ALOHA
          时隙ALOHA
        CSMA
          1-坚持CSMA
            空闲直接发送，持续监听
          非坚持CSMA
            空闲直接发送。信道忙，随机退避再监听
          p-坚持CSMA
            只适用于时分信道
            空闲p概率发送，持续监听
        CSMA/CD
          先听后发，边听边发，冲突停发，随机重发
          争用期为相距最远的RTT往返时延
          争用期内未发生冲突则不会冲突
          最短帧长=争用期*数据传输速率
          退避算法
            [0，(2^k-1)]*争用期
            第10次之后k不变
            冲突超过16次，网络拥挤，停止发送，向高层报告出错
          10Mb/s的以太网争用期为51.2us
        CSMA/CA
          先听后发，忙则退避
            若信道忙，则随机退避
          随机退避
            信道空闲才扣除倒计时
            [0，(2^(k+2)-1)]，255就不增加
          检测信道忙、要重传、发送成功后要发送下一个帧。都要随机退避
          停止等待协议：每个数据帧都返回
ACK，若没收到ACK则随机退避
          (非强制)预约机制：采用RTS与CTS。AP收到帧会校验
            RTS与CTS中会指明预约时常
          一开始间隔DIFS发送，之后每个帧间隔SIFS
        轮询访问：令牌传递协议
          发完一帧释放令牌
          网络空闲只有令牌在传递
          适合负载高，冲突低，只有一个在发送数据
    3.6局域网
      以太网与IEEE802.3
        采用无连接不可靠、曼彻斯特编码
        10+BASE+传输介质
          同轴电缆
            必须半双工CSMA/CD
          T双绞线
          F光纤
        以太网MAC帧
          最开始有8B，7B用来同步，1B用来定界
          6 6 2 N 4 收发协数 验(CRC)
N在46-1500之间
            不满46B需要填充
          曼彻斯特编码，结尾采用违规编码法结束帧定界
      IEEE802.11无线局域网
        CSMA/CA协议，虚拟载波监听机制，采用停止等待协议
        去往AP中起止，来自AP止中起
        AP具有帧转换功能，可以将802.3转化为802.11
      VLAN虚拟局域网
        将大的局域网分割为小的VLAN
        可以隔离广播域
        划分方式
          基于接口
          基于MAC地址
          基于IP地址
        802.1Q帧
          6 6 4 2 N 4 收发V协数验
N在42-1500之间
          仅在交换机与交换机之间传播
            所以各主机并不知道自己的Vid值，交换机知道
    3.7广域网
      PPP点对点协议
        同步传输采用零比特填充法
        异步传输采用字节填充法
        点对点无需使用CSMA/CD
        不同网络层协议可以使用同一个PPP通信
        首尾各有一个标志字段，表示开始与结束
        连接不可靠，只支持全双工，面向字节
会进行CRC检测差错
        LCP链路控制协议，NCP网络控制协议
    3.8数据链路层设备
      网桥
      交换机
        默认全双工，与集线器连接半双工
        内部交换表和自学习功能转发
        交换方式
          直通交换
            仅获取源MAC地址然后转发
          存储转发
            缓存帧，校验确认无误后转发
  网络层
    4.1网络层的功能
      网络层的服务
        虚电路
          连接可靠
          分组首部在建立时使用完整的目的地址，
之后每个分组携带虚电路编号
          分组按照同一路由有序到达
        数据报
          无连接不可靠
          每个分组都有完整的目的地址
      SDN(软件定义网络)的基本概念
        网络层抽象为数据平面与控制平面
        整个网络是可编程的，通过软件灵活配置与控制
    4.2IPv4
      IPV4格式
        版本
        首部：4B为单位。最小20B 最大60B
        总长度：1B为单位。首部和数据长度
        标识：不同的分片有一个标识
        标志：占3位，最后一位MF，次低位DF。
DF=1表示不能分片，MF=1表示后面还有分片
        片偏移：8B为单位，分片后在原始数据报的位置。除最后一个分片，每个分片都是8B的整数倍。
        生存时间(TTL)：可通过路由器的最大值
        协议：携带的数据使用的什么协议。
6为TCP，17为UDP
        首部校验和：只检验IP的首部部分
        源地址、目的地址
      IP长度受数据链路层MTU(最大传送单元)限制
      IPV4地址与NAT
        A类：0。B类：10。C类：110。
D类：1110多播地址
        特殊地址
        NAT
          实现网络地址转换，私有到公有
          路由器对目的地址为私有地址不转发
          内部有NAT转换表
          10.0.0.0-10.255.255.255
172.16.0.0-172.31.255.255
192.168.0.0-192.168.255.255
      子网划分与路由聚合
        路由聚合后使用最长前缀匹配
      网络层分组转发过程
        在不同网络中传送时，MAC帧的源地址与目的地址会变化
      地址解析协议ARP
        每个主机都有ARP高速缓存，存放本局域网各主机IP地址到MAC地址的映射表，ARP表
        如果ARP表中没有映射关系，则发送ARP请求分组(广播)，目的主机发送响应分组(单播)
      动态主机配置DHCP协议
        给刚连接到互联网的主机分配
IP地址，子网掩码，默认网关
        应用层，基于UDP，客户/服务器模型
        客户：DHCP发现
          广播帧
        服务器：DHCP提供
          单播帧
        客户：DHCP请求
          广播帧：告诉所有DHCP服务器我所接受的IP地址
        服务器：DHCP确认
          单播帧
      网际控制报文协议ICMP
        报告差错或异常
        ICMP差错报文
          终点不可达：路由器或主机不能交付数据报
          源点抑制：网络太拥塞，请求速度慢点
          时间超过：TTL为0或主机不能收到全部分片
          参数问题
          改变路由
        ICMP询问报文
          回答请求和回答报文
            测试是否可达，ping(工作在应用层)
          时间戳请求和回答
            测试往返时延traceroute(工作在网络层)
    4.3IPv6
      首部长度固定40B
      即插即用，不需要DHCP
      只有源主机才可以分片，端到端
      首部格式
        通信量类：区分不同Ipv6数据报类别和优先级
        流标号：同属于一个流的数据报有相同的流标号
        有效载荷长度，即数据部分长度
        跳数限制：类似TTL字段
      IPV4向IPV6过渡
        双协议栈
        隧道技术
          将IPV6数据报封装为IPV4的数据部分
    4.4路由算法与路由协议
      内部网关协议
        RIP
          工作在应用层，基于UDP
          好路由就是路由器跳数最少
          <目的网络N，距离d，下一跳路由器地址X>
          距离16表示网络不可达
          特点
            刚开始是只知道和自己相邻的网络距离为1
0时刻向相邻路由器交换自己的路由表
            仅和相邻路由器交换信息，交换自己的路由表
            按照固定时间间隔或网络拓扑发生变化就交换信息
          优点
            好消息传播的快
            收敛速度快
          缺点
            限制了网络的规模
            坏消息传播的慢
        OSPF
          工作在网络层，基于IP
          采用洪泛法向自治系统中所有路由器发送消息
          发送信息是本路由器相邻所有路由器链路状态
          只有链路状态发生变化才发送信息
          可应用规模很大的网络，将自治系统在划分为更小的区域
          分组类型
            问候分组
              测试可达性
            数据库描述分组
              向邻近路由器发送自己所有链路状态的摘要信息
            链路状态请求分组
            链路状态更新分组
            链路状态确认分组
      外部网关协议
        BGP
          工作在应用层，基于TCP
          找比较好的路由，而非最佳路由
          BGP会话
            跨越两个AS会话为外部BGP会话
            同一个AS中会话为内部BGP会话
          BGP路由选择
            本地偏好值最高
            AS跳数最少
            热土豆算法
              让分组经过最少的转发次数离开本AS
            利用标识符
          BGP报文
            Open打开报文
              与另一个BGP对等方建立关系
            Update更新报文
              通知某一路由信息
            Keepalive保活报文
              测试连通性
            Notification通知报文
              发送检测到的差错
          首次交换整个路由表，之后交换有变化的部分
    4.5IP多播
      局域网上硬件多播
        多播地址为D类地址1110.X.X.X
        将IP地址后23位映射到MAC多播地址后23位中
      互联网上多播
        使用IGMP，不知道IP多播组包含的成员数，
也不知道分布在哪些网络上
        主机要加入多播组时，向多播组的多播地址发送一个IGMP报文，声明自己要加入该组
        本地多播路由器周期性探测本地局域网的主机
      无连接不可靠
    4.6移动IP
      数据漫游时保持原来IP地址不变
      移动主机接受IP分组都是由归属代理转发的
      发送IP数据分组直接发送，源地址为永久IP地址
      发送过程
        B->移动站A
          B->归属代理：源IP为B地址，目的IP为A永久地址
          归属代理->外部代理：将IP封装在新IP中，源IP为归属代理IP，目的IP为转交地址IP
          外部代理->移动站A：源IP为B地址，目的IP为A永久地址
        移动站A->B：源IP为A的永久地址，目的IP为B的地址
    4.7网络层设备
      路由表总是软件实现，转发表可以硬件也可以软件
      <目的网络IP地址，子网掩码，下一跳IP地址，接口>
  传输层
    5.1传输层提供的功能
      熟知端口号
      套接字：唯一标识网络上一台主机上的一个应用进程
      基于UDP
      基于TCP
    5.2UDP
      面向报文
      无连接、不可靠、尽最大努力交付
      首部开销小，8B
        源端口
        目的端口
        长度
          总长度
        检验和
          检验整个数据报
          必须为偶数个字节
      支持一对一，一对多，多对多
      UDP检验
        加入12B伪首部
          伪首部中有：源ip，目的ip，udp长度
        检验首部和数据部分
        注意需要回卷和取反
    5.3TCP
      在不可靠的IP层之上实现可靠的数据传输协议
      面向连接，可靠，全双工，面向字节流
      首部
        首部最短20B，以4B为单位
        源端口目的端口
        序号seq
          本报文发送数据的第一个序号
        确认号ack
          期望下一次接受的序号
        数据偏移
          首部长度，4B为单位
        紧急位URG
        确认位ACK
          为1时确认号有效
        推送位PSH
        复位位RST
          拒绝非法报文或TCP连接出现严重差错
        同步位SYN
          SYN=1，第一，二次握手
        终止位FIN
          第一，三次挥手
        窗口
        检验和
          检验首部和数据，也要加上伪首部
        紧急指针
        选项
          握手一，二通过选项协商最大报文段MSS
        填充
      TCP连接管理
        同一个IP可以有不同的TCP连接，
同一个端口号也可以出现在不同的TCP连接中
        客户服务器需要三次握手建立TCP连接
          握手1
            不可携带数据
            占用一个序号
          握手2
            不可携带数据
            占用一个序号
          握手3
            可携带数据
        四次挥手释放连接
          挥手1
            占用一个序号
          挥手2
            可携带数据
          挥手3
            占用一个序号
          挥手4
            不可携带数据
          挥手4发送后还需要等待2MSL，防止挥手4报文丢失，重传后需要重新计时，时间等待计时器设置2MSL
        从发出FIN段起，客户机释放连接最短时间为2MSL+RTT
服务器释放连接最短时间为1.5RTT
        TCP还会设置保活计时器，防止故障出现无效等待
      TCP可靠传输
        序号
        确认
          确认号
            希望接受到下一个的序号
          默认使用累积确认
            只确认字节流第一个丢失字节为止的字节
            有数据需要发送时，将确认顺便带上(捎带确认)
        重传
          超时
            设置计时器，超时重传
          冗余ACK
            已经收到过该报文的确认，出现次3冗余就重传(快速重传)
      TCP流量控制
        通过窗口字段接收方控制发送方接受窗口
        可发送的范围是发送窗口减去已发送的序号
        接受0窗口时，设置持续计时器，超时时发送0窗口探测报文
      TCP拥塞控制
        慢开始
          每收到一个新报文段的确认ACK就把拥塞窗口加一
        拥塞避免
          到达慢开始门限ssthresh就使用拥塞避免算法
          每一个RTT拥塞窗口就加一
        快重传
        快恢复
        网络拥塞处理
          超时重传
            ssthresh=cwnd/2
            cwnd=1
          3个冗余ACK
            ssthresh=cwnd/2
            cwnd=cwnd/2
  应用层
    6.1网络应用模型
      客户/服务器模型
      P2P模型
    6.2DNS域名系统
      端口号53，基于UDP
      根域名、顶级域名、权限域名、本地域名服务器
      递归查询与迭代查询
      使用高速缓存 存储域名对应的IP地址
    6.3文件传输协议
      基于TCP可靠传输
      服务器使用控制端口21，数据端口20进行连接
      控制连接：传输控制命令等。一直保持打开状态
      数据连接：完成文件传送。传送完毕就关闭连接
    6.4电子邮件
      SMTP简单邮件传输协议
        端口号25，基于TCP
        用户代理发邮件到服务器
邮件服务器之间传输邮件
        只能传送7位ASCII码文本邮件
        MIME：实现ASCII码与非ASCII码之间相互转换
      POP3 邮局协议
        端口号110，基于TCP
        用户代理从邮件服务器读邮件
      IMAP可以直接在服务器管理邮件
    6.5万维网WWW
      统一资源定位符URL
      超文本传输协议HTTP
        端口号80，基于TCP。本身无连接，无状态
        非持续连接与持续连接
          捎带确认也有数据，只是顺便携带了ACK
        报文结构
          GET
            读取URL标志的信息
          HEAD
            读取URL信息的首部
          POST
            给服务器添加信息
          Host
            主机域名
          Connection
            Keep-Alive持续连接
            Close非持续连接
          cookie
            类似身份证，可识别
  注意查看TCP连接的状态
    SYN-SENT同步已发送
    SYN-RCVD同步已收到
    ESTAB-LISHED已连接
    FIN-WAIT1终止等待1
    FIN-WAIT2终止等待2
    CLOSE-WAIT关闭等待
    LAST-ACK最后确认
    TIME-WAIT时间等待
可靠性由中心节点保证
可靠性由边缘节点保证
注意带宽为频率宽度！
给出了极限码元传输速率，未给一个码元可以携带多少bit数据给出限制。
超过上限会出现严重码间串扰
只要低于信道极限传输速率，就可以实现无差错传输。
QAM是将AM与PM结合起来使用
带宽取决于铜线的粗细和传输的距离
单模光纤：适合远距离传送
多模光纤：适合近距离传送，损耗高
长波：绕射性好，指向能力弱
短波：指向性强，传输能力强
发送窗口由接受窗口控制
ARQ协议：S-W，GBN，SR
连续ARQ协议：GBN，SR
滑动窗口协议：GBN，SR
返回最后一个帧的ACKi，代表i和i之前的全部收到
接收到帧有差错时，会返回否认帧NAK
一帧一确认，没有累计确认
会返回ACK
冲突退避随机时间
适合总线型网络或半双工网络
以太网最小帧间间隔：9.6微秒，为了使刚刚接收到的帧的缓存来得及清理
DIFS>SIFS
当转发表有目的节点物理地址，直接转发，若没有则广播。
每次记录帧源地址的信息在转发表中
主机号0.0.0.0表示本网络
主机号全1表示广播
127表示环回自测
32位全0表示本主机，在DHCP使用
32全1表示广播地址
路由聚合：压缩路由表空间
源IP地址全0 目的IP地址全1
源MAC地址为客户机，目的MAC地址全1
源IP为DHCP服务器的IP地址
目的IP=255.255.255.255（广播IP数据报）
源MAC为服务器的MAC地址
目的MAC=客户的MAC地址
源IP=0.0.0.0
目的IP=255.255.255.255（广播IP数据报）
源MAC=客户的MAC地址
目的MAC=全1（广播帧）
源IP=DHCP服务器的IP地址
目的IP=255.255.255.255（广播IP数据报）
源MAC=服务器的MAC地址
目的MAC=客户的MAC地址（单播帧）
什么情况不发送ICMP差错报文：
1.对ICMP差错报文
2.第一个ip分片的所有后续分片
3.多播地址
4.特殊地址，环回测试或全0等
取消了首部长度
取消了总长度
取消了标识，标志，片偏移字段
取消了检验和
取消了选项
距离向量。开机时迅速获取直连网络的信息，并将获得到的路由表全部发给邻居
通常为30s，每个路由器独立计时
需要反复循环传播才知道不可达。
180s未收到相邻路由器的更新路由表就记录不可达，但别的路由器表项中还有相应的记录
采用Dijkstra算法，所有每个路由器都知道本自治系统中拓扑结构。
链路状态
LSDB链路状态数据库
LSA链路状态通告
LSI链路状态信息
摘要信息：即LSA表头信息
路径向量
同一AS内任意两个BGP路由器必须有iBGP连接
iBGP学习到的路由不能再通过iBGP转发给其他的iBGP（防止出现环路）
这会导致可能不同局域网映射了相同的MAC多播地址，有些局域网在数据链路层就丢弃多播MAC帧，对于多播MAC帧相同的局域网，在网络层被过滤
FTP 21
TELNET 23
SMTP 25
DNS 53
TFTP 69
HTTP 80
SNMP 161
DNS域名系统
TFTP简单文件传输协议
RIP
DHCP动态主机配置协议
SNMP简单网络管理协议
IGMP网际组管理协议
SMTP简单邮件传送协议
TELNET远程终端协议
HTTP超文本传输协议
FTP文件传输协议
OSPF
可靠性由应用层承担
不会对数据拆分
目的端口号不正确 发送ICMP“端口不可达”
握手1的ACK=0，其他都为1。
握手一与握手二的SYN=1，其他都为0
握手一与握手二要占一个序号
挥手1，3要占用一个序号，FIN=1
挥手2可携带数据，挥手四不可以携带数据
按序交付
相当于每一个RTT就加倍
客户之间不能直接通信
可拓展性不佳
可相互直接通信
拓展性好
健壮性强
安全性与稳定性低
英文不区分大小写
允许异构网络传送，允许客户指明文件类型和格式，允许文件有存取权限
主动连接port：服务器开放21控制端口，20数据端口
被动连接pasv：服务器开放21控制端口，随机开放一个数据端口
非持续连接每个元素都要重新建立TCP连接
HTTP/1.0默认非持续连接
HTTP/1.1默认持续连接
注意并行传输
非流水线每个元素都要请求
流水线发送多个请求