zoukankan      html  css  js  c++  java
  • 计算机网络重点梳理(根据B站up主codesheep视频内容整理而成)

    一、TCP/IP协议体系的认知

    (1)分层。一部分处于用户态,一部分处于内核态。数据链路层,网络层,传输层封装于操作系统内核态。应用层存在于操作系统的用户空间,包括DNS,FTP,HTTPS,HTTP,工作中接触较多的是应用层的部分。但其它层的原理必须理解,面试考察。
    (2)层与层之间下层对上层是透明的,传输在每一层是对等的。

    二、链路层

    1. 以太网帧的格式

    2. MTU的概念

      最大传送单元,规定了所能传送的帧的数据部分长度的最大值。

    3. ARP协议和RARP协议(掌握一下ARP缓存的原理)

      ARP协议:已知IP地址,求MAC地址。

      ARP协议工作原理:

      RARP协议:已知MAC地址,求IP地址。

      ARP缓存:存放着本局域网上的各主机和路由器的IP地址到MAC地址的映射表,并且这个映射表还经常动态更新。

    三、网络层

    1. 掌握IP的首部格式

      • 固定部分共20字节,是所有IP数据报必须有的。

      • 版本:指IP协议的版本。目前的IP协议版本号为4(即IPv4)。

      • 首部长度:用来表示首部的长度。

      • 总长度:用来表示整个IP数据报的长度。

      • 标识:用来标识当前的数据报之前属于哪个未分片的原始数据报。

      • 标志:MF=1表示后面还有分片;MF=0表示这是最后一个分片了。

        ​ 只有当DF=0时才允许将当前的数据报继续分片。

      • 片偏移:用来表示当前的数据报在原始数据报中的相对位置。

      • 生存时间:表示该数据报在网络中可通过的路由器数的最大值。

      • 协议:用来表示当前数据报的数据部分使用了哪些协议,常见的有TCP和UDP协议。

      • 首部检验和:只用来检验数据报的首部。

    2. 掌握IP的分片

      举例:

      【注】其中标识字段的值是任意给定的(12345)。具有相同标识的数据报片在目的站就可无误地重装成原来的数据报。

    3. 掌握IP选路

      ​ 路由选择协议有2种,内部网关协议和外部网关协议。内部网关协议是在一个自治系统(AS)内部使用的路由选择协议。外部网关协议是在不同的自治系统之间使用的路由选择协议。

      内部网关协议RIP

      (1)RIP是一种基于距离(跳数)向量的路由选择协议。

      (2)RIP协议的特点:

      ​ 1)仅和相邻路由器交换彼此的路由表信息,信息包括目的网络,距离,下一跳。

      ​ 2)按固定的时间间隔(每隔30秒)交换路由信息。

      (3)距离向量算法

      ​ 1)先收到相邻路由器X它的路由信息表。

      ​ 2)修改此路由信息表中的所有项目:将“下一跳”字段中的地址都改为 X,并将所有的“距离”字段的值 加 1。

      ​ 3)对修改后的路由信息表(记做表1)和当前路由器的路由信息表(记做表2)中的每一行
      ​ 若表1中的目的网络不在表2中,则将该行加到表2中;
      ​ 若下一跳字段给出的路由器地址是相同的,则将表1中的该行替换表2中的这行;
      ​ 若到达同一目的网络,表1中的距离小于表2中的距离,则将表1中的该行替换表2中的这行;
      ​ 否则,什么也不做。

      ​ 表1:

      ​ 表2:

      ​ 更新后的表2:

      ​ 4)若 3 分钟还没有收到相邻路由器的路由表,则将此相邻路由器记为不可达的路由器,即将距离置 为16(RIP 允许一条路径最多只能包含 15 个路由器,距离为16表示不可达)。

    4. ICMP协议

      ​ 为了更有效地转发 IP 数据报和提高交付成功的机会,在网际层使用了网际控制报文协议 ICMP。ICMP 允许主机或路由器报告差错情况和提供有关异常情况的报告。ICMP报文是装在IP数据报中,作为其中的数据部分。

      1. 掌握报文格式

      2. ICMP报文的种类

        有两种,即ICMP差错报告报文和ICMP询问报文。

        ICMP差错报告报文共有4种:

        ​ (1)终点不可达

        ​ (2)时间超过

        ​ (3)参数问题

        ​ (4)改变路由(重定向)

        ICMP询问报文有2种:

        ​ (1)回送请求和回答

        ​ (2)时间戳请求和回答

    四、传输层

    1. UDP,次要一点,掌握特点和首部各个字段

      特点:

      (1)UDP是无连接的。即发送数据数据之前不需要建立连接(当然,发送数据结束时也没有连接可释放),因此减少了开销和发送数据之前的时延。

      (2)UDP使用尽最大努力交付。即不保证可靠交付,因此主机不需要维持复杂的连接状态表。

      (3)UDP是面向报文的。即UDP一次交付一个完整的报文,不会对原有的报文进行合并或拆分。

      (4)UDP没有拥塞控制。即当网络出现拥塞时,发送方也不会降低数据的发送速率。这符合如实时视频会议这样的多媒体通信的要求,因为这些应用要求发送方以恒定的速率发送数据,并且允许在网络发生拥塞时丢失一些数据,但却不允许数据有太大的时延。UDP正好符合这样的要求。

      (5)UDP支持一对一、一对多、多对一和多对多的交互通信。

      (6)UDP的首部开销小。只有8个字节,比TCP的20个字节的首部要短。

      首部:由四个字段组成,每个字段的长度都是2个字节,共8个字节。

      (1)源端口:发送方的端口号。在需要对方回信时选用。不需要时可用全0。

      (2)目的端口:接收方的端口号。这在终点交付报文时必须使用。

      (3)长度:UDP用户数据报的长度,其最小值是8(仅有首部)。

      (4)检验和:检测UDP用户数据报在传输中是否有错。有错就丢弃。

    2. 掌握TCP

      1. 特点 + 首部字段 + 可靠机制

        特点:

        (1)TCP是面向连接的运输层协议。也就是说,应用程序在使用TCP协议之前,必须先建立TCP连 接。传送数据完毕后,必须释放已经建立的TCP连接。

        (2)每一条TCP连接只能是点对点的(一对一)。

        (3)TCP提供可靠交付的服务。

        (4)TCP提供全双工通信。TCP允许通信双方的应用进程在任何时候都能发送数据。因为TCP连接的两端都设有发送缓存和接收缓存,可以将双向通信的数据临时存放到缓存中,当想要的时候可以再选择发送或接收缓存中的数据。

        (5)面向字节流。

        首部:

        • 序号字段seq:表示当前这一段报文中的第一个字节的序号。(TCP连接中传送的数据流中的每一个字节都编上了一个序号)
        • 确认号字段ack:表示期望收到对方的下一个报文段中的第一个字节的序号。(若确认号=N,则表明到序号N-1为止的所有数据都已正确收到)
        • 数据偏移:表示当前这段报文的首部长度。
        • 当URG=1时表明该报文段中有紧急数据,应优先发送。与紧急指针字段配合使用。
        • 只有当ACK=1时确认字段才有效。
        • 当PSH=1时,接收端要尽快地将接收到的该报文交付到应用进程。
        • 当RST=1时表明当前的TCP连接出现严重差错,必须释放连接,然后再重新建立运输连接。
        • SYN=1表示这是一个连接请求。
        • FIN=1表示该报文段发送端的数据已发送完毕,并要求释放连接。
        • 窗口:明确指出了现在允许对方发送的数据量。
        • 检验和:检验首部和数据这两部分。
        • 紧急指针字段:指出在本报文段中紧急数据共有多少字节。(紧急数据放在本报文段数据的最前面)
      2. TCP的运输连接管理 : 三次握手,四次挥手

        三次握手(客户和服务器之间交换三个 TCP 报文段):

        四次挥手(通信的双方都需要释放连接):

        【注】A等待2MSL的原因(MSL代表最长报文寿命):

        ​ 第一,为了保证 A 发送的最后一个 ACK 报文段能够到达 B。

        ​ 第二,再经过时间 2MSL,就可以使本连接持续的时间内所产生的所有报文段,都从网络中消 失。这样就可以使下一个新的TCP连接中不会出现上一次残留的报文段。

      3. 可靠传输的实现

        停止等待协议ARQ:每发送完一个分组就停止发送,等待对方的确认,在收到确认后再发送下一个分组。利用确认和重传机制,就可以在不可靠的传输网络上实现可靠的通信。

        (1)无差错情况

        (2)出现差错

        (3)确认信息丢失或迟到

      4. 流量控制

        让发送方的发送速率不要太快,要让接收方来得及接收。

      5. 拥塞控制

        防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不致过载。

    五、应用层

    1. 掌握DNS协议

      1. 名字空间

        com(公司企业),net(网络服务机构),org(非盈利性组织),int(国际组织),edu(美国专用的教育机构),gov(美国的政府部门),mil(美国的军事部门)

      2. 指针查询(反向查找或逆向解析)基本原理

        DNS域名解析过程:迭代查询、递归查询(比较少用)

        【注】根域名服务器 > 顶级域名服务器 > 权限域名服务器 > 本地域名服务器

      3. DNS缓存

        ​ 为了提高DNS查询效率,并减轻根域名服务器的负荷和减少互联网上的DNS查询报文数量,于是在域名服务器中广泛地使用了高速缓存(有时也称为高速缓存域名服务器)。

        ​ 高速缓存用来存放最近查询过的域名以及从何处获得域名映射信息的记录。

    2. FTP协议(活化石):

      ​ FTP提供文件传送的一些基本服务,它使用TCP可靠的运输服务。FTP的主要功能是减少或消除在不同操作系统下处理文件的不兼容性。

      ​ 在进行文件传输时,FTP的客户和服务器之间要建立两个并行的TCP连接:“控制连接”和“数据连接”。

    3. HTTP协议:

      ​ HTTP协议定义了浏览器(即万维网客户进程)怎样向万维网服务器请求万维网文档,以及服务器怎样把文档传送给浏览器。

    万维网的工作过程

    3.1 报文格式:请求报文,响应报文,请求头各种字段,响应头各种字段

    ​ 3.2 HTTP状态码

    ​ 在响应报文中常见的3种状态行:

    ​ HTTP/1.1 202 Accepted {成功接受}

    ​ HTTP/1.1 400 Bad Request {错误的请求}

    ​ HTTP/1.1 404 Not Found {找不到}

  • 相关阅读:
    webpackHotMiddleware改造成koa支持的中间件
    webpack-dev-middleware改造成koa中件间
    Vue3学习笔记
    当前工程中typescritpt依赖包与依赖包中依赖包类型不一致如何解决
    typescript中使用Object.keys
    获取东8区时间
    SyntaxError: Invalid regular expression: invalid group specifier name
    测试代码框
    ST Lab2 Selenium
    ST HW3
  • 原文地址:https://www.cnblogs.com/jiajun107/p/12831228.html
Copyright © 2011-2022 走看看