计算机网络

应用层

HTTP

  • HTTP(HyperText Transfer Protocol,超文本传输协议)是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP 是万维网的数据通信的基础。

  • Cookie

    • HTTP 是一种不保存状态,即无状态(stateless)协议。
    • Cookie 会根据从服务器端发送的响应报文内的一个叫做 Set-Cookie 的 首部字段信息,通知客户端保存 Cookie。
  • 请求方法

    • OPTIONS

      • 请求一些选项信息,允许客户端查看服务器的性能
    • GET

      • 请求指定的页面信息,并返回实体主体
    • HEAD

      • 类似于 get 请求,只不过返回的响应中没有具体的内容,用于获取报头
    • POST

      • 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改
    • PUT

      • 从客户端向服务器传送的数据取代指定的文档的内容
    • DELETE

      • 请求服务器删除指定的页面
    • TRACE

      • 回显服务器收到的请求,主要用于测试或诊断
  • 报文

    • 报文

      • 是 HTTP 通信中的基本单位,由 8 位组字节流(octet sequence, 其中 octet 为 8 个比特)组成,通过 HTTP 通信传输。
    • 实体

      • 作为请求或响应的有效载荷数据(补充项)被传输,其内容由实 体首部和实体主体组成。
      • HTTP 报文的主体用于传输请求或响应的实体主体。
    • 客户端(请求报文)

      • 请求行

        • 用于请求的方法,请求 URI 和 HTTP 版本
      • 状态行

        • 含表明响应结果的状态码,原因短语和 HTTP 版本
      • 首部字段

        • 表示请求和响应的各种条件和属性的各类首部
        • 通用首部
        • 请求首部
        • 响应首部
        • 实体首部
    • 服务端(响应报文) 内容同上

  • 内容编码

    • 压缩传输的内容编码

      • 内容编码指明应用在实体内容上的编码格式,并保持实体信息原样压缩。内容编码后的实体由客户端接收并负责解码。
    • 分块传输编码

      • 在传输大容量数据时,通过把数据分割成 多块,能够让浏览器逐步显示页面。
      • 每一块都会用十六 进制来标记块的大小,而实体主体的最后一块会使用“0(CR+LF)”来标 记。
    • 多部分对象集合

      • MIME

        • Multipurpose Internet Mail Extensions
      • Content-type

        • 在 HTTP 报文中使用多部分对象集合时,需要在首部字段里加上 Content-type。

        • multipart/form-data

          • 在 Web 表单文件上传时使用。
        • multipart/byteranges

          • 状态码 206(Partial Content,部分内容)响应报文包含了多个范 围的内容时使用。
        • multipart/form-data

        • multipart/byteranges

    • 范围请求(Range Request)

      • Range: bytes=5000-
    • 内容协商(Content Negotiation)

      • 服务器驱动协商(Server-driven Negotiation)
      • 客户端驱动协商(Agent-driven Negotiation)
      • 透明协商(Transparent Negotiation)
      • Accept
      • Accept-Charset
      • Accept-Encoding
      • Accept-Language
      • Content-Language
  • 返回状态码

    • 状态码

      • 1XX

        • Informational(信息性状态码)
        • 接收的请求正在处理
      • 2XX

        • Success(成功状态码)
        • 请求正常处理完毕
        • 200 OK
        • 204 No Content
        • 206 Partial Content
      • 3XX

        • Redirection(重定向状态码)

        • 需要进行附加操作以完成请求

        • 3XX 重定向

        • 301 Moved Permanently

        • 302 Found

          • 临时性质
        • 303 See Other

        • 304 Not Modified

        • 307 Temporary Redirect

          • 临时重定向。与 302 Found 有着相同的含义
      • 4XX

        • Client Error(客户端错误状态码)
        • 服务器无法处理请求
        • 400 Bad Request
        • 401 Unauthorized
        • 403 Forbidden
        • 404 Not Found
      • 5XX

        • Server Error(服务器错误状态码)
        • 服务器处理请求出错
        • 500 Internal Server Error
        • 503 Service Unavailable
  • 报文首部

    • 请求报文

      • 方法
      • HTTP 版本
      • HTTP 首部字段
    • 首部字段

      • 首部

        • 由首部字段名和字段值构成 中间用冒号“:” 分 隔。
        • 首部字段名: 字段值
        • 端到端首部(End-to-end Header)
        • 逐跳首部(Hop-by-hop Header)
      • 请求首部字段(Request Header Fields)

        • 从客户端向服务器端发送请求报文时使用的首部。补充了请求的附加 内容、客户端信息、响应内容相关优先级等信息。

        • Accept

          • 通知服务器,用户代理能够处理的媒体类型及媒体 类型的相对优先级。
          • 若想要给显示的媒体类型增加优先级,则使用 q= 来额外表示权重值 1,用分号(;)进行分隔。
        • Accept-Charset

          • 通知服务器用户代理支持的字符集及 字符集的相对优先顺序。应用于内容协商机制的服务器驱动协商。
        • Accept-Encoding

          • 告知服务器用户代理支持的内容编码及 内容编码的优先级顺序。
        • Accept-Language

          • 告知服务器用户代理能够处理的自然 语言集(指中文或英文等),以及自然语言集的相对优先级
        • Authorization

          • 告知服务器,用户代理的认证信息(证书值)。
        • Expect

          • 期望出现的某种特定行 为。
        • From

          • 服务器使用用户代理的用户的电子邮件地 址。
        • Host

          • 请求的资源所处的互联网主机名和端口号。
        • If-Match

          • 为条件请求。服务器接 收到附带条件的请求后,只有判断指定条件为真时,才会执行请求。
        • If-Modified-Since

          • 若 If- Modified-Since 字段值早于资源的更新时间,则希望能处理该请求。 而在指定 If-Modified-Since 字段值的日期时间之后,如果请求的资源 都没有过更新,则返回状态码 304 Not Modified 的响应。
        • If-None-Match

          • 指定 If-None-Match 字段值的实体标记(ETag)值与 请求资源的 ETag 不一致时,它就告知服务器处理该请求。
        • If-Range

          • If- Range 字段值(ETag 值或者时间)和请求资源的 ETag 值或时间相一 致时,则作为范围请求处理。
        • If-Unmodified-Since

          • 告知服务器,指定的请求资源只有在字段值内指定 的日期时间之后,未发生更新的情况下,才能处理请求。
        • Max-Forwards

          • 接收到 Max-Forwards 值为 0 的请求 时,则不再进行转发,而是直接返回响应。
        • Proxy-Authorization

          • 接收到从代理服务器发来的认证质询时,客户端会发送包含首部字段 Proxy-Authorization 的请求,以告知服务器认证所需要的信息。
        • Range

          • 对于只需获取部分资源的范围请求
        • Referer

          • 首部字段 Referer 会告知服务器请求的原始资源的 URI。
        • TE

          • 服务器客户端能够处理响应的传输编码方式及相 对优先级。
        • User-Agent

          • 将创建请求的浏览器和用户代理名称等信息传 达给服务器。
      • 通用首部字段(General Header Fields)

        • 请求报文和响应报文两方都会使用的首部。

        • Cache-Control

          • 能够控制缓存的行为
        • Connection

          • 控制不再转发给代理的首部字段

            • Connection: 不再转发的首部字段名
          • 管理持久连接

            • Connection: close
        • Date

          • 创建 HTTP 报文的日期和时间。
        • Pragma

          • 仅作为与 HTTP/1.0 的向后兼容而定义。
          • Pragma: no-cache
        • Trailer

          • 事先说明在报文主体后记录了哪些首部字段。该 首部字段可应用在 HTTP/1.1 版本分块传输编码时。
        • Transfer-Encoding

          • 规定了传输报文主体时采用的编码方式。
        • Upgrade

          • 用于检测 HTTP 协议及其他协议是否可使用更高的 版本进行通信,其参数值可以用来指定一个完全不同的通信协议。
        • Via

          • 追踪客户端与服务器之间的请求和响应报文 的传输路径。
        • Warning

          • 告知用户一些与缓存相关的问题的警告。
      • 响应首部字段(Response Header Fields)

        • 从服务器端向客户端返回响应报文时使用的首部。补充了响应的附加 内容,也会要求客户端附加额外的内容信息。

        • Accept-Ranges

          • 客户端服务器是否能处理范围请 求,以指定获取服务器端某个部分的资源。
        • Age

          • 告知客户端,源服务器在多久前创建了响应。字段值 的单位为秒。
        • ETag

          • 告知客户端实体标识。

          • 强 ETag 值

            • 不论实体发生多么细微的变化都会改变其值。
            • ETag: “usagi-1234”
          • 弱 Tag 值

            • 只用于提示资源是否相同。只有资源发生了根本改变,产 生差异时才会改变 ETag 值。
            • ETag: W/“usagi-1234”
        • Location

          • 将响应接收方引导至某个与请求 URI 位置 不同的资源。
        • Proxy-Authenticate

          • 把由代理服务器所要求的认证信息发送 给客户端。
        • Retry-After

          • 告知客户端应该在多久之后再次发送请求。
        • Server

          • 告知客户端当前服务器上安装的 HTTP 服务器应用程 序的信息。
        • Vary

          • 可对缓存进行控制。
        • WWW-Authenticate

          • 用于 HTTP 访问认证。
      • 实体首部字段(Entity Header Fields)

        • 针对请求报文和响应报文的实体部分使用的首部。补充了资源内容更 新时间等与实体有关的信息。

        • Allow

          • 通知客户端能够支持 Request-URI 指定资源的所 有 HTTP 方法。
        • Content-Encoding

          • 告知客户端服务器对实体的主体部分选 用的内容编码方式。
        • Content-Language

          • 告知客户端, 体主体使用的自然语言 (指中文或英文等语言)。
        • Content-Length

          • 表明了实体主体部分的大小(单位是字 节)。
        • Content-Location

          • 给出与报文主体部分相对应的 URI。
        • Content-MD5

          • 是一串由 MD5 算法生成的值,其目的在于检 查报文主体在传输过程中是否保持完整,以及确认传输到达。
        • Content-Range

          • 针对范围请求,返回响应时使用的首部字段 Content-Range,能告知客 户端作为响应返回的实体的哪个部分符合范围请求。
        • Content-Type

          • 说明了实体主体内对象的媒体类型。
        • Expires

          • 会将资源失效的日期告知客户端。
        • Last-Modified

          • 指明资源最终修改的时间。
      • Cookie首部

        • Set-Cookie

          • 开始状态管理所使用的Cookie信息(响应首部字段)

          • expires

            • Cookie 的有效期
          • path

            • 将服务器上的文件目录作为Cookie的适用对象(若不指定则默 认为文档所在的文件目录)
          • domain

            • 作为 Cookie 适用对象的域名
          • Secure

            • 仅在 HTTPS 安全通信时才会发送 Cookie
          • HttpOnly

            • 加以限制,使 Cookie 不能被 JavaScript 脚本访问
        • Cookie

          • 服务器接收到的Cookie信息(请求首部字段)
      • 其他首部字段

        • X-Frame-Options

          • 用于控制网站内容 在其他 Web 网站的 Frame 标签内的显示问题。
        • X-XSS-Protection

          • 属于 HTTP 响应首部 它是针对跨站脚本 攻击(XSS)的一种对策,用于控制浏览器 XSS 防护机制的开关。
        • DNT

          • Do Not Track 的简 称,意为拒绝个人信息被收集,是表示拒绝被精准广告追踪的一种方 法。
        • P3P

          • 保护用户隐私
  • 身份认证

    • BASIC 认证

    • DIGEST 认证

    • SSL 客户端认证

      • SSL 客户端认证采用双因素认证
    • 基于表单认证

HTTPS

  • HTTP 的缺点

    • 不验证通信方的身份,因此有可能遭遇伪装

      • 验证通信方的身份

        • 查明对方身份, 因HTPP任何人都可发起请求
        • 查明对手的证书
    • 无法证明报文的完整性,所以有可能已遭篡改

      • 接收到的内容可能有误

      • 请求或响应在传输途中,遭攻击者拦截并篡改内容的攻 击称为中间人攻击(Man-in-the-Middle attack,MITM)。

      • 防止篡改

        • MD5
        • SHA-1
        • 散列值校验的方法, 以及用来确认文件的数字签名方法。
    • 通信使用明文(不加密),内容可能会被窃听

      • TCP/IP 是可能被窃听的网络

      • 防止窃听

        • SSL(Secure Socket Layer,安全套接层)或 TLS(Transport Layer Security,安全层传输协议)
        • 内容加密
  • HTTPS加密

    • HTTP+ 加密 + 认证 + 完整性保护 =HTTPS

      • HTTPS 是身披SSL外壳的 HTTP

        • HTTP-SSL-TCP-IP
        • SSL
    • 加密技术

      • 采用一种 叫做公开密钥加密(Public-key cryptography)的加密处理方式。

      • 公开密钥加密使用一对非对称的密钥。一把叫做私有密钥 (private key),另一把叫做公开密钥(public key)。

      • 加密和解密同用一个密钥的方式称为共享密钥加密(Common key crypto system),也被叫做对称密钥加密。

        • 使用公开密钥加密方式安全地交换在稍后的共享密钥加密中要使用的密钥
        • 确保交换的密钥是安全的前提下,使用共享密钥加密方式进行通信
      • 证明公开密钥正确性的证书

  • HTTPS通信

    • 客户端通过发送 Client Hello 报文开始 SSL通信。
    • 服务器可进行 SSL通信时,会以 Server Hello 报文作为应答。
    • 之后服务器发送 Certificate 报文。报文中包含公开密钥证 书。
    • 最后服务器发送 Server Hello Done 报文通知客户端,最初阶 段的 SSL握手协商部分结束。
    • SSL第一次握手结束之后,客户端以 Client Key Exchange 报 文作为回应。报文中包含通信加密中使用的一种被称为 Pre-master secret 的随机密码串。
    • 接着客户端继续发送 Change Cipher Spec 报文。该报文会提 示服务器,在此报文之后的通信会采用 Pre-master secret 密钥加密。
    • 客户端发送 Finished 报文。该报文包含连接至今全部报文的 整体校验值。这次握手协商是否能够成功,要以服务器是否能够正确 解密该报文作为判定标准。
    • 服务器同样发送 Change Cipher Spec 报文。
    • 服务器同样发送 Finished 报文。
    • 服务器和客户端的 Finished 报文交换完毕之后,SSL连接 就算建立完成。当然,通信会受到 SSL的保护。从此处开始进行应用 层协议的通信,即发送 HTTP 请求。
    • 应用层协议通信,即发送 HTTP 响应。
    • 最后由客户端断开连接。断开连接时,发送 close_notify 报 文。这步之后再发送 TCP FIN 报文来关闭与 TCP 的通信。
    • 在以上流程中,应用层发送数据时会附加一种叫做 MAC(Message Authentication Code)的报文摘要。MAC 能够查知报文是否遭到篡 改,从而保护报文的完整性。

DNS

运输层

TCP

  • TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,其传输的单位是报文段。

  • 状态控制码

    • TCP:状态控制码(Code,Control Flag),占 6 比特

    • URG:紧急比特(urgent)

      • 当 URG=1 时,表明紧急指针字段有效,代表该封包为紧急封包。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据), 且上图中的 Urgent Pointer 字段也会被启用。
    • ACK:确认比特(Acknowledge)

      • 只有当 ACK=1 时确认号字段才有效,代表这个封包为确认封包。当 ACK=0 时,确认号无效。
    • PSH: (Push function)

      • 若为 1 时,代表要求对方立即传送缓冲区内的其他对应封包,而无需等缓冲满了才送。RST:复位比特(Reset),当 RST=1 时,表明 TCP 连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。
    • SYN:同步比特(Synchronous)

      • SYN 置为 1,就表示这是一个连接请求或连接接受报文,通常带有 SYN 标志的封包表示『主动』要连接到对方的意思。
    • FIN:终止比特(Final)

      • 用来释放一个连接。当 FIN=1 时,表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。
  • 特征

    • 面向连接

    • 可靠交互

      • 如何保证可靠传输?

        • 确认和超时重传
        • 数据合理分片和排序
        • 流量控制
        • 拥塞控制
        • 数据校验
    • 全双工通信

    • 面向字节流

  • 数据包首部

    • 以太网包首部
    • IP包首部
    • TCP包首部
    • 数据
  • 数据单位

      • 全能性述语
      • 数据链路层中包的单位
    • 数据报

      • 数据报是IP和UDP等网络层以上的分层中包的单位
      • TCP数 据流中的信息
    • 消息

      • 应用协议中数据的单位
  • 发送数据包

    • 应用程序处理

    • TCP模块的处理

    • IP模块的处理

    • 网络接口(以太网驱动)的处理

      • 每个包首部中至少都会包含两个信息:一个是发送端和接收端地址,另一个是上一层的协议类型。
      • 每个分层的包首部中还包含一个识别位,它是用来标识上一层协议的种类信息。
  • TCP通过检验和、序列号、确认应答、重发控制、连接管理以及窗 口控制等机制实现可靠性传输。

    • 通过序列号与确认应答提高可靠性

      • 在TCP中,当发送端的数据到达接收主机时,接收端主机会返回一 个已收到消息的通知。这个消息叫做确认应答(ACK(ACK(Positive Acknowled-gement)意指已经接收。) )。
    • 重发超时

      • 重发超时是指在重发数据之前,等待确认应答到来的那个特定时间 间隔。如果超过了这个时间仍未收到确认应答,发送端将进行数据重 发。
      • 在每次发 包时都会计算往返时间(Round Trip Time也叫RTT。是指报文段的往返 时间。) 及其偏差(RTT时间波动的值、方差。有时也叫抖动。) 。将 这个往返时间和偏差相加重发超时的时间,就是比这个总和要稍大一点 的值。
    • 连接管理

      • TCP提供面向有连接的通信传输。面向有连接是指在数据通信开始 之前先做好通信两端之间的准备工作。
      • UDP是一种面向无连接的通信协议,因此不检查对端是否可以通 信,直接将UDP包发送出去。
    • TCP以段为单位发送数据

      • 在建立TCP连接的同时,也可以确定发送数据包的单位,我们也可 以称其为“最大消息长度”(MSS:Maximum Segment Size)。
    • 窗口控制

      • 使用大量的缓冲区(缓冲区(Buffer)在此处表示 临时保存收发数据的场所。通常是在计算机内存中开辟的一部分空 间。) ,通过对多个段同时进行确认应答的功能。
    • 流控制

      • TCP提供一种机制可以让发送端根据接 收端的实际接收能力控制发送的数据量。
      • 接收端主机向发送端主机通知自己可以接收数据的大小,于 是发送端会发送不超过这个限度的数据。
    • 拥塞控制

      • 为了在发送端调节所要发送数据的量

      • 在慢启动的时候,将这个拥塞窗口的大小设置为1 个数据段(1MSS) 发送数据,之后每收到一 次确认应答(ACK),拥塞窗口的值就加1。

      • 随着包的每次往返,拥塞窗口也会以1、2、4等指数函数的 增长,拥堵状况激增甚至导致网络拥塞的发生。

        • 为了防止这些,引入了 慢启动阀值的概念。只要拥塞窗口的值超出这个阀值,在每收到一次确 认应答时,只允许以下面这种比例放大拥塞窗口
    • 提高网络利用率的规范

      • Nagle算法

        • 送端即使还有应该发送的数据,但如果这部分数据很 少的话,则进行延迟发送的一种处理机制。
      • 延迟确认应答

        • 接收数据的主机如果每次都立刻回复确认应答的话,可能会返回一 个较小的窗口。那是因为刚接收完数据,缓冲区已满。
      • 捎带应答

        • 根据应用层协议,发送出去的消息到达对端,对端进行处理以后, 会返回一个回执。

UDP

  • UDP(User Datagram Protocol,用户数据报协议)是 OSI(Open System Interconnection 开放式系统互联) 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,其传输的单位是用户数据报。

  • 数据报格式

    • 源端口号(Source Port)

      • 表示发送端端口号,字段长16位。该字段是可选项。
    • 目标端口号(Destination Port)

      • 表示接收端端口,字段长度16位。
    • 包长度(Length)

      • 保存了UDP首部的长度跟数据的长度之和
    • 校验和(Checksum)

      • 校验和是为了提供可靠的UDP首部和数据而设计。在计算校验和时,附加在UDP伪首部与UDP数据报之前。

网络层

IP

  • IP(Internet Protocol,网际协议)是为计算机网络相互连接进行通信而设计的协议。

    • IP地址由网络和主机两部分标识组成

    • IP地址的分类

      • 为A类、B类、C类、D类(还有一个一 直未使用的E类。)
    • 子网掩码

      • 子网与子网掩码

        • 子网掩码(subnet mask):用来判断 IP 所属网络
    • 特点

      • 不可靠

        • 不可靠(unreliable)的意思是它不能保证IP数据报能成功地到达目的地。IP仅提供最好的传输服务。
      • 无连接

        • 无连接(connectionless)这个术语的意思是IP并不维护任何关于后续数据报的状态信息。每个数据报的处理是相互独立的。

        • IP属于面向无连接型

          • 即在发包之前,不需要建立与对端目标地址之间的 连接。上层如果遇到需要发送给IP的数据,该数据会立即被压缩成IP包 发送出去。
          • 一是为了简化,二是为了提速。
          • IP为了实现简单化与 高速化采用面向无连接的方式。
  • 三大作用模块

    • IP寻址

      • IP地址用于在“连接到网络中的所有主机中识别出进行通信的目标地址”。

      • 子网寻址

        • 不是把IP地址看成由单纯的一个网络号和一个主机号组成,而是把主机号再分成一个子网号和一个主机号。
    • 路由

      • 将分组数据发送到最终目标地址的功能。

      • 发送数据至最终目标地址

        • Hop译为中文叫“跳”。它是指网络中的一个区间。IP包正是在网络 中一个个跳间被转发。因此IP路由也叫做多跳路由。在每一个区间内决 定着包在下一跳被转发的路径。
    • IP分包与组包

      • MTU

        • 在线路上传送比包长还要小的MTU
      • IP分片(IP Fragmentation)

        • 将较大的IP包分成多个较小的IP包
  • 广播地址

    • 用于在同一个链路中相互连接的主机之间发送数据包。

    • 本地广播

      • 在本网络内的广播叫做本地广播
    • 直接广播

      • 在不同网络之间的广播叫做直接广播。
    • ARP发送一份称作 A R P请求的以太网数据帧给以太网上的每个主机。这个过程称作广ARP发送一份称作 ARP请求的以太网数据帧给以太网上的每个主机。这个过程称作广播

  • IP多播

    • 同时发送提高效率

      • 多播用于将包发送给特定组内的所有主机。由于其直接使用IP协 议,因此也不存在可靠传输。
    • IP多播与地址

      • 多播使用D类地址。
      • IGMP(Internet Group Management Protocol,网际组管理协议)
      • 多播路由选择协议
  • IPv6

    • IP地址的扩大与路由控制表的聚合

    • 性能提升

      • 包首部长度采用固定的值(40字节),不再采用首部检验码。
    • 支持即插即用功能

      • 即使没有DHCP服务器也可以实现自动分配IP地址。
    • 采用认证与加密功能

    • 多播、Mobile IP成为扩展功能

    • 全局单播地址

      • 全局单播地址是指世界上唯一的一个地址。
    • 链路本地单播地址

      • 在同一个数据链路内唯一的地址。
    • 唯一本地地址

      • 是不进行互联网通信时所使用的地址。
    • IPv6分段处理

      • IPv6的分片处理只在作为起点的发送端主机上进行,路由器不参与 分片。这也是为了减少路由器的负荷,提高网速。
      • 最小MTU为1280字节。
  • IPV4首部

    • 数据报格式

      • 版本(Version)

        • 表示标识IP首部的版本号。
      • 首部长度(IHL:Internet Header Length)

        • 表明IP首部的大小, 单位为4字节(32比特)
      • 区分服务(TOS:Type Of Service)

        • 由8比特构成,用来表明服务质量。
      • DSCP段与ECN段

        • DSCP(Differential Services Codepoint,差分服务代码点)是 TOS(Type Of Service)的一部分。现在统称为DiffServ ,用来进行质量控制。
      • 总长度(Total Length)

        • 表示IP首部与数据部分合起来的总字节数。该字段长16比特。
      • 标识(ID:Identification)

        • 由16比特构成,用于分片重组。同一个分片的标识值相同,不同分 片的标识值不同。
      • 标志(Flags)

        • 由3比特构成,表示包被分片的相关信息。

          • 0 未使用。现在必须是0。
          • 1 指示是否进行分片(don’t fragment) 0- 可以分片 1- 不能分片
          • 2 包被分片的情况下,表示是否为最后一个包(more fragment)。 0- 最后一个分片的包 1- 分片中段的包
      • 片偏移(FO:Fragment Offset)

        • 由13比特构成,用来标识被分片的每一个分段相对于原始数据的位 置。第一个分片对应的值为0。
      • 生存时间(TTL:Time To Live)

        • 由8比特构成,它最初的意思是以秒为单位记录当前包在网络上应 该生存的期限。然而,在实际中它是指可以中转多少个路由器的意思。
      • 协议(Protocol)

        • 由8比特构成,表示IP首部的下一个首部隶属于哪个协议。
      • 首部校验和(Header Checksum)

        • 由16比特(2个字节)构成,也叫IP首部校验和。该字段只校验数 据报的首部,不校验数据部分。它主要用来确保IP数据报不被破坏。
      • 源地址(Source Address)

        • 由32比特(4个字节)构成,表示发送端IP地址。
      • 目标地址(Destination Address)

        • 由32比特(4个字节)构成,表示接收端IP地址。
      • 可选项(Options)

        • 长度可变,通常只在进行实验或诊断时使用。
      • 填充(Padding)

        • 也称作填补物。在有可选项的情况下,首部长度可能不是32比特的 整数倍。为此,通过向字段填充0,调整为32比特的整数倍。
  • IPV6首部

    • 版本(Version)

      • 与IPv4一样,由4比特构成。IPv6其版本号为6,因此在这个字段上 的值为“6”。
    • 通信量类(Traffic Class)

      • 相当于IPv4的TOS(Type Of Service)字段,也由8比特构成。
    • 流标号(Flow Label)

      • 由20比特构成,准备用于服务质量(QoS:Quality Of Service)控制。
    • 有效载荷长度(Payload Length)

      • 有效载荷是指包的数据部分。IPv4的TL(Total Length)是指包括 首部在内的所有长度。然而IPv6中的这个Playload Length不包括首部, 只表示数据部分的长度。由于IPv6的可选项是指连接IPv6首部的数据, 因此当有可选项时,此处包含可选项数据的所有长度就是Playload Length
    • 下一个首部(Next Header)

      • 由8比特构成。通常表示IP的上一层协 议是TCP或UDP。不过在有IPv6扩展首部的情况下,该字段表示后面第 一个扩展首部的协议类型。
    • 跳数限制(Hop Limit)

      • 由8比特构成。与IPv4中的TTL意思相同。
    • 源地址(Source Address)

      • 由128比特(8个16位字节)构成。表示发送端IP地址。
    • 目标地址(Destination Address)

      • 由128比特(8个16位字节)构成。表示接收端IP地址。

ARP

  • ARP(Address Resolution Protocol,地址解析协议)

    • 以目标IP地址为线索,用来定位下一个应该接收数据分包的网络设 备对应的MAC地址。如果目标主机不在同一个链路上时,可以通过 ARP查找下一跳路由器的MAC地址。不过ARP只适用于IPv4
  • RARP(Reverse Address Resolution Protocol)是将ARP反过来,从 MAC地址定位IP地址的一种协议。

  • 操作字段指出四种操作类型,它们是 ARP请求(值为1)、ARP应答(值为2)、RARP请求(值为3)和RARP应答(值为4)

  • 如果A R P请求是从一个网络的主机发往另一个网络上的主机,那么连接这两个网络的路由器就可以回答该请求,这个过程称作委托 A R P或A R P代理(Proxy ARP)。

    • ARP代理也称作混合ARP (promiscuousARP)或ARP出租(ARP hack)
  • 0x0806为arp类型

ICMP

  • ICMP(Internet Control Message Protocol,网际控制报文协议)

    • 确认IP包是否成功送达目标地址,通知在发送过程当中IP包被废弃的具体原因,改善网络设置等。

    • ICMP目标不可达消息

      • IP路由器无法将IP数据包发送给目标地址时,会给发送端主机返回 一个目标不可达(Destination Unreachable Message)的ICMP消息,并在 这个消息中显示不可达的具体原因
    • ICMP重定向消息

      • 如果路由器发现发送端主机使用了次优的路径发送数据,那么它会 返回一个ICMP重定向(ICMP Redirect Message)的消息给这个主机。
    • ICMP超时消息

      • IP包中有一个字段叫做TTL(Time To Live,生存周期),它的值 随着每经过一次路由器就会减1(当IP包在路由器上停留1秒以上时减去 所停留的秒数,但是现在绝大多数设备并不做这样的处理。) ,直到 减到0时该IP包会被丢弃
    • ICMP回送消息

      • 用于进行通信的主机或路由器之间,判断所发送的数据包是否已经 成功到达对端的一种消息。
    • ICMP原点抑制消息

      • 。ICMP原点抑制消息的目的就是为了缓和这种拥堵情况。
    • ICMP路由器探索消息

      • 主要用于发现与自己相连网络中的路由器。
    • ICMP地址掩码消息

      • 主要用于主机或路由器想要了解子网掩码的情况。
  • 不会产生的条件

    • ICMP差错报文(但是, ICMP查询报文可能会产生ICMP差错报文)。
    • 目的地址是广播地址或多播地址(D类地址)的IP数据报。
    • 作为链路层广播的数据报。
    • 不是IP分片的第一片
    • 源地址不是单个主机的数据报。这就是说,源地址不能为零地址、环回地址、广播地址或多播地址。

IGMP

  • IGMP(Internet Group Management Protocol,网际组管理协议)

DHCP

  • 为了实现自动设置IP地址、统一管理IP地址分配

NAT

  • NAT(Network Address Translator)是用于在本地网络中使用私有 地址,在连接互联网时转而使用全局IP地址的技术。

路由控制

  • 互联网是由路由器连接的网络组合而成的。为了能让数据包正确达 地到达目标主机,路由器必须在途中进行正确地转发。这种向“正确的 方向”转发数据所进行的处理就叫做路由控制或路由。

  • 静态路由

    • 静态路由是指事先设置好路由器和主机中并将路由信息固定的一种 方法。
  • 动态路由

    • 动态路由是指让路由协议在运行过程中自动地设置路由控制信 息的一种方法。
  • 路由控制的范围

    • IGP(Interior Gateway Protocol)
    • EGP(Exterior Gateway Protocol)
  • 自治系统(路由选择域)

    • 内部动态路由采用的协议是域内路由协 议,即IGP。而自治系统之间的路由控制采用的是域间路由协议,即 EGP。

数据链路层

三个目的

  • 为I P模块发送和接收IP数据报
  • 为ARP模块发送ARP请求和接收ARP应答
  • 为RARP发送RARP请求和接收RARP应答。

以太网

无线LAN

PPP(光纤)

主要信道

  • 点对点信道

    • 点对点协议(Point-to-Point Protocol):用户计算机和 ISP 通信时所使用的协议

    • 数据单元:帧

    • 三个基本问题

      • 封装成帧:把网络层的 IP 数据报封装成帧,SOH - 数据部分 - EOT
      • 透明传输:不管数据部分什么字符,都能传输出去;可以通过字节填充方法解决(冲突字符前加转义字符)
      • 差错检测:降低误码率(BER,Bit Error Rate),广泛使用循环冗余检测(CRC,Cyclic Redundancy Check)
  • 广播信道

数据链路的段是指一个被分割的网络。

  • 从网络层的概念看,它是一个网络(逻辑上)→即,从网络层的 立场出发,这两条网线组成一个段。
  • 从物理层的概念看,两条网线分别是两个物体(物理上)→即, 从物理层的观点出发,一条网线是一个段。

网络拓扑

  • 网络的连接和构成的形态称为网络拓扑(Topology)。网络拓扑 包括总线型、环型、星型、网状型等。

相关技术

  • MAC地址

    • 识别数据链路中互连的节点

    • 根据MAC地址转发

      • 交换机转发方式

        • 存储转发

          • 检查以太网数据帧末尾的FCS位后再进行转发。可以避免发送由于冲 突而被破坏的帧或噪声导致的错误帧。
        • 直通转发

          • 不需要将整个帧全部接收下来以后再进行转发
  • 共享介质型网络

    • 指由多个设备共享一个通信介质的一种网络。

    • 争用方式

      • 争用方式(Contention)是指争夺获取数据传输的权力,也叫 CSMA(载波监听多路访问)。
    • 令牌传递方式

      • 发送一种叫做“令牌”的特殊报文
  • 非共享介质网络

    • 指不共享介质,是对介质采取专用的一种传输控 制方式。
    • 全双工通信方式
    • 半双工是指,只发送或只接收的通信方式
  • 环路检测技术

    • 最坏的情况下,数据帧会在环路 中被一而再再而三地持续转发。而一旦这种数据帧越积越多将会导致网 络瘫痪。

    • 生成树方式

      • 每个网桥必须在每1~10秒内相互交换 BPDU(Bridge Protocol Data Unit)包,从而判断哪些端口使用哪些不使 用,以便消除环路。
    • 源路由法

      • 判断发送数据的源 地址是通过哪个网桥实现传输的,并将帧写入RIF(Routing Information Field)。网桥则根据这个RIF信息发送帧给目标地址。
  • VLAN

    • 采用带有 VLAN技术的网桥,就不用实际修改网络布线,只需修改网络的结构即 可。

以太网

无线通信

PPP

  • 点对点协议(Point-to-Point Protocol):用户计算机和 ISP 通信时所使用的协议
    1. 在串行链路上封装 I P数据报的方法。
    1. 建立、配置及测试数据链路的链路控制协议( LCP:Link Control Protocol)。
    1. 针对不同网络层协议的网络控制协议(NCP:Network Control Protocol)体系。当前RFC定义的网络层有IP、OSI网络层、DECnet以及AppleTalk。

双工

MTU

  • 最大传输单元MTU

    • 如果IP层有一个数据报要传,而且数据的长度比链路层的MTU还大,那么IP层 就需要进行分片( fragmentation),把数据报分成若干片,这样每一片都小于MTU
  • 路径MTU

    • 两台通信主机路径中的最小MTU.

物理层

物理层

各层作用/协议

  • RJ45、CLOCK、IEEE802.3(中继器,集线器)
  • 通过媒介传输比特,确定机械及电气规范(比特 Bit)

数据链路层

各层作用/协议

  • PPP、FR、HDLC、VLAN、MAC(网桥,交换机)
  • 将比特组装成帧和点到点的传递(帧 Frame)

网络层

各层作用/协议

  • IP、ICMP、ARP、RARP、OSPF、IPX、RIP、IGRP(路由器)
  • 负责数据包从源到宿的传递和网际互连(包 Packet)

运输层

各层作用/协议

  • TCP、UDP、SPX
  • 提供端到端的可靠报文传递和错误恢复( 段Segment)

会话层

各层作用/协议

  • NFS、SQL、NETBIOS、RPC
  • 建立、管理和终止会话(会话协议数据单元 SPDU)

表示层

各层作用/协议

  • JPEG、MPEG、ASII
  • 对数据进行翻译、加密和压缩(表示协议数据单元 PPDU)

应用层

各层作用/协议

  • FTP、DNS、Telnet、SMTP、HTTP、WWW、NFS
  • 允许访问OSI环境的手段(应用协议数据单元 APDU)