《计算机网络自顶向下》知识体系梳理

计算机网络复习

第一章

OSI 7层协议参考模型及各层功能

  • 应用层
    • 网络服务与最终用户的一个接口
  • 表示层
    • 数据的安全、表示、压缩
  • 会话层
    • 建立、管理、终止会话
  • 传输层
    • 定义传输数据的协议端口号,以及流控和差错校验
  • 网络层
    • 进行逻辑地址寻址,实现不同网络之间的路径选择
  • 数据链路层
    • 建立逻辑连接、进行硬件地址寻址、差错校验等功能
  • 物理层
    • 建立、维护、断开物理连接

因特网5层协议及各层功能

  • 应用层
    • 支持网络应用
      • 有http、ftp、telnet、smtp、pop3等
  • 传输层
    • 负责提供应用程序进程间的数据传输服务,这一层上主要定义了两个传输协议,传输层控制协议TCP和用户数报协议UDP
      • TCP提供了面向连接的服务,而UDP提供的是无连接服务,UDP速度比TCP更快
        • 运输层分组称为报文段
  • 网络层
    • 负责将数据报独立的从信源发送到信宿
      • 路由选择
      • 拥塞控制
        • 因特网的网络层负责将称为数据报(datagram)的网络层分组从一台主机移动到另一台主机。源主机中的因特网传输层协议(TCP或UDP)向网络层递交运输层报文段和目的地址,就像你向邮政信件提供目的地址一样
      • 网络互联
  • 数据链路层
    • 负责将IP数据报封装成合适再物理网络上传输的帧格式并传输,或将从物理网络接受到的帧解封,取出IP数据交给网络层
    • 头部,尾部都加了,尾部是校验和
  • 物理层
    • 负责比特流在节点间的传输

为什么要分层?

  • 各层之间相互独立
  • 灵活性好
  • 易于实现和标准化

进程与端口、套接字的概念

  • 套接字:进程通过一个为套接字的软件接口向网络发送报文和从网络接受报文。
  • 端口:每个端口号对应一个进程
  • 进程: 进程是一个具有一定独立功能的程序在一个数据集上的一次动态执行的过程,是操作系统进行资源分配和调度的一个独立单位,是应用 程序运行的载体。

协议的概念,协议与服务的关系

  • 协议是控制对等实体之间通信的规则,是水平的
  • 服务是下层通过层间接口向上层提供的功能,是垂直的

电路交换与分组交换的区别

  • 电路交换是以电路连接为目的的交换方式,通信之前要在通信双方之间建立一条被双方独占的物理通道
    • 优点
      • 数据时延小,专线建立连接,按顺序发送,没有时序问题,既可以传送模拟信号,也可以传送数据信号,控制设备比较简单
    • 缺点
      • 电路交换平均连接建立时间队计算机通信来说较长,利用率低
  • 分组交换是以分组为单位进行传输和交换的,它是一种存储——转发交换方式,即将到达交换机的分组先送到存储器暂时存储和处理,等到相应的输出电路有空闲时再送出
    • 优点
      • 不需要预先专门建设一条线路,无连接时延,传输时间较短
    • 缺点
      • 存在转发时延,网络通信量越大造成的时延越大,只能传输数字信号,分组交换可能出现失序的问题

分组交换网的时延、丢包和吞吐量

  • 时延类型
    • 处理
      • 最先出现,某终端设备向路由器发送一个分组,路由器对该分组去向的决定
    • 排队
      • 当分组传输从某个端/路由器传送到当前路由器时,发现该队列上还有其他分组
    • 传输
      • 与分组的长度有关,在分组交换网中,交换机使用的是储存转发传输,传输比特时,必须要接收到整个分组,储存完成后才能传输,从开始传输第一个比特到最后一个比特被发送出去
    • 传播
      • 传播时长与分组无关,仅与链路的传输速率和链路长度有关

第二章

网络应用的三种体系结构

  • C/S
    • 服务器
    • 客户端
  • P2P结构
    • 每一台电脑平等
    • 节点可能改变IP地址
    • 任意端系统/节点之间可以直接通信
    • 没有永远在线的服务器
  • 混合结构
    • NAPSTER
      • 每个节点向中央服务器登记自己的内容
      • 每个节点向中央服务器提交查询请求,查找感兴趣的内容

C/S与P2P服务模型的特点

  • C/S
    • 不会与其他客户机直接通信
    • 能够间歇性接入网络
    • 具有可扩展性
  • P2P
    • 没有永远在线的server
    • 能够改变IP地址
    • 既可以当客户也可以当主机

TCP与UDP服务有何区别

  • TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接
  • TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付
  • Tcp通过校验和,重传控制,序号标识,滑动窗口、确认应答实现可靠传输。如丢包时的重发控制,还可以对次序乱掉的分包进行顺序控制
    • TCP为了实现网络通信的可靠性,使用了复杂的拥塞控制算法,建立了繁琐的握手过程,由于TCP内置的系统协议栈中,极难对其进行改进
  • UDP具有较好的实时性,工作效率比TCP高,适用于对高速传输和实时性有较高的通信或广播通信
    • 采用TCP,一旦发生丢包,TCP会将后续的包缓存起来,等前面的包重传并接收到后再继续发送,延时会越来越大,基于UDP对实时性要求较为严格的情况下,采用自定义重传机制,能够把丢包产生的延迟降到最低,尽量减少网络问题对游戏性造成影响
  • TCP对系统资源要求较多,UDP对系统资源要求较少
  • 网速的提升给UDP的稳定性提供可靠网络保障,丢包率很低,如果使用应用层重传,能够确保传输的可靠性

HTTP的三种连接方式

  • GET
  • POST
  • HEAD
  • 无状态协议

Cookie的概念与作用

  • 用户本地终端
  • 辨别用户身份
  • session机制采用的是在服务端保持状态的方案,而cookie机制则是在客户端保持状态的方案
  • cookie分为会话cookie和持久cookie

SMTP协议与POP3协议

  • SMTP管‘发’,POP3/IMAP管‘收’
    • POP(Post Office Protocol)邮局通讯协定POP是互联网上的一种通讯协定,主要功能是用在传送电子邮件,当我们寄信给另外一个人时,对方当时多半不会在线上,所以邮件服务器必须为收信者保存这封信,直到收信者来检查这封信件。当收信人收信的时候,必须通过POP通讯协定,才能取得邮件
    • SMTP(Simple Mail Transfer Protocol)简易邮件传输通讯协议 SMTP是互联网上的一种通讯协议,主要功能是用在传送电子邮件,当我们通过电子邮件程序,寄E-mil给另外一个人时,必须通过SMTP通讯协议,将邮件送到对方的邮件服务器上,等到对方上网的时候,就可以收到你所寄的信

DNS协议的作用、层次结构与工作过程

  • 域名解析协议
    • 映射IP地址和域名
      • 结构
        • 根域
          • 顶级域
            • 二级域
              • 三级域或主机名
  • 工作过程
    • 客户机提出域名解析请求,并将该请求发送给本地的域名服务器
      • 当本地的域名服务器收到请求后,就先查询本地的缓存,如果有该纪录项,则本地的域名服务器就直接把查询的结果返回
        • 如果本地的缓存中没有该纪录,则本地域名服务器就直接把请求发给根域名服务器,然后根域名服务器再返回给本地域名服务器一个所查询域(根的子域知) 的主域名服务器的地址
          • 本地服务器再向上一步返回的域名服务器发送请求,然后接受请求的服务器查询自己的缓存,如果没有该纪录,则返回相关的下级道的域名服务器的地址
            • 重复第四步,直到找到正确的纪录
              • 本地域名服务器把返回的结果保存到缓存,以备下一次使用,同时还将结果返回给客户机

第三章

复用和分解的概念

  • 多路复用
    • 在数据的发送端,传输层收集各个套接字中需要发送的数据,将它们封装上首部信息后(之后用于分解),交给网络层
  • 多路分解
    • 在数据的接收端,传输层接收到网络层的报文后,将它交付到正确的套接字上
  • 无连接的多路复用与分解
    • UDP报文需要包含源IP和端口号
      • 因为UDP是无连接的
        • 想要往回发时只需提取报文里的源IP与端口号

各应用协议使用的运输层协议

  • socket
    • 进程与计算机网络的接口
  • http协议
    • HTTP定义了Web客户向Web服务器请求WEB页面的方式,以及服务器向客户传送WEB页面的方式
      • 基于TCP。建立TCP连接之后往套接字中塞HTTP报文即可
      • 无状态协议。不保存关于客户的任何信息
      • 非持续连接和持续连接
        • 每一个请求建立一个单独的TCP连接 or 同一个主机只建立一个连接
          • 若要使用TCP通信,需要建立两个套接字,一个来握手,一个来收发消息
        • 非持续连接造成了会给服务器带来很重的负担
        • 在持续连接情况下,服务器在发送响应后仍保持连接打开,再次接收到该客户端请求后仍通过该连接发送响应。若在一段时间内某一连接一直未被使用,服务器就关闭该连接
  • DNS
    • 基于UDP

TCP和UDP服务器/客户机的C程序

可靠传输原理

  • 停止等待协议
    • 发送方在发送完一个报文段后必须暂时保存已经发送的报文段的副本——为了超时重传的时候使用
    • 超时计时器的重传时间的设定——应该比数据在分组传输的平均往返时间更长一些
    • 分组和确认分组都必须编号,所以才知道是对哪个发送的分组收到了确认
    • 每次发送完一个报文段就停止,等待接收端确认
      • 无差错情况
        • 最简单的情况,发送方A每次发送完一个报文段就设置一个超时计时器,每次都能在超时计时器超时之前接收到接收方B发送回来的确认报文,往复这样进行通信。
      • 出现差错
        • 接收方B收到了发送方发送过来的TCP报文段,但是在对数据进行校验(TCP报文段首部有校验和字段,用来检测发送过来的报文数据是否出现差错)的时候,发现接收到的报文段出现差错,这个时候接收方B什么也不做(不会通知A说收到了差错的报文段);也可能是报文段在传输的过程中丢失了,这种情况B自然不知道,在这两种情况下,B不会发送任何信息,直到A为刚刚发送的报文段设置的超时计时器超过了时间,就会认为B没有收到刚发送的报文段,就会重新发送刚刚发送的报文段——超时重传
        • 接收方发送的确认宝丢失和确认迟到
          • 这种情况是接收方正确的接收到发送方发送的报文段,并且发出确认报文,但是确认报文由于某些原因丢失了,或者是由于网络延迟没有在发送方设置的关于这个报文段的超时计时器内达到,这个时候——发送方就会重新发送这个报文段,而接收方又收到了重传的这个报文段,会做2件事
            • 丢弃这个报文段
            • 向发送方A发送确认报文

可靠传输采用的机制及解决的问题

  • TCP的四次挥手
    • 第一次挥手:A->B,A向B发出释放连接请求的报文,其中FIN(终止位) = 1,seq(序列号)=u;在A发送完之后,A的TCP客户端进入FIN-WAIT-1(终止等待1)状态。此时A还是可以进行收数据的
    • 第二次挥手:B->A:B在收到A的连接释放请求后,随即向A发送确认报文。其中ACK=1,seq=v,ack(确认号) = u +1;在B发送完毕后,B的服务器端进入CLOSE_WAIT(关闭等待)状态。此时A收到这个确认后就进入FIN-WAIT-2(终止等待2)状态,等待B发出连接释放的请求。此时B还是可以发数据的
    • 第三次挥手:B->A:当B已经没有要发送的数据时,B就会给A发送一个释放连接报文,其中FIN=1,ACK=1,seq=w,ack=u+1,在B发送完之后,B进入LAST-ACK(最后确认)状态
    • 第四次挥手:A->B;当A收到B的释放连接请求时,必须对此发出确认,其中ACK=1,seq=u+1,ack=w+1;A在发送完毕后,进入到TIME-WAIT (时间等待)状态。B在收到A的确认之后,进入到CLOSED(关闭)状态。在经过时间等待计时器设置的时间之后,A才会进入CLOSED状态
  • TCP的三次握手
    • 假如只进行两次握手
      • 客户端发送连接请求后,会等待服务器端的应答。但是会出现的问题是,假如客户端的SYN迟迟没有到达服务器端,此时客户端超时后,会重新发送一次连接,假如重发的这次服务器端收到了,且应答客户端了,连接建立了。但是建立后,第一个SYN也到达服务端了,这时服务端会认为这是一个新连接,会再给客户端发送一个ACK,这个ACK当然会被客户端丢弃。但是此时服务器端已经为这个连接分配资源了,而且服务器端会一直维持着这个资源,会造成浪费
      • 两次握手的问题在于服务器端不知道SYN的有效性
    • 假设只有一次
      • 客户端发送连接请求后,没有收到服务端的应答,是没法判断连接是否成功的
  • 第一次握手:A发送SYN包(SYNC=j)到达B,并进入SYN_SEND状态,等待服务器B确认
  • 第二次握手:B收到SYN包后,也会发送一个SYN包给A,这个包里面带有ACK=j+1用来确认A的SYN,和B自己的SYN=k,B进入SYN_RECV状态
  • 第三次握手:A收到B的SYN+ACK包,向B发送确认包ACK(ACK=k+1),发送完毕,A和B进入ESTABLISHED状态,完成三次握手

停等协议、GBN协议和SR协议

窗口和序号的关系

  • 滑动窗口协议
    • 在TCP中窗口的大小不是固定的,会随着网络情况进行调整
    • A也可以连续把发送窗口的数据发送出去。但是已经发送过的数据在未收到确认之前,它还需要暂时保留,以便于超时重传时使用

第四章

第五章

XMind: ZEN - Trial Version

发布了8 篇原创文章 · 获赞 1 · 访问量 309

猜你喜欢

转载自blog.csdn.net/weixin_44754436/article/details/105745225
今日推荐