计算机网络知识总结



最近这两星期抽空来看看计算机网络相关的知识,虽然大三上学期有学这门课,但是很快就忘了,记忆不是很深,现在再重温一下。

计算机网络概述:

  • 通信:
    计算机通信是计算机中进程(即运行着的程序)之间的通信。计算机网络采用的通信方式是客户-服务器方式(C/S方式)和对等连接方式(P2P方式)。
  • 分层:
    分层的方法可以是7层、5层、4层。(了解每层什么作用)
    在这里插入图片描述

    物理层:

  1. 物理层确保原始的数据可在各种物理媒体上传输,即传输数据比特流。
  2. 根据信息在传输线上的传送方向,分为以下三种通信方式:
    单工通信:单向传输
    半双工通信:双向交替传输
    全双工通信:双向同时传输

数据链路层

  1. 帧:一个数据链路层的传输单元,由一个数据链路层首部和其携带的封包所组成协议数据单元。
  2. 数据链路层使用的信道主要有以下两种类型:
  • 点对点信道。这种信道使用一对一的点对点通信方式。
  • 广播信道。这种信道使用一对多的广播通信方式,因此过程比较复杂。广播信道上连接的主机很多,因此必须使用专用的共享信道协议来协调这些主机的数据发送。
  1. 数据链路层功能:
  • 封装成帧
  • 透明传输
  • 差错检测(循环冗余检验(CRC))
  1. MAC 地址:
    MAC 地址是链路层地址,长度为 6 字节(48 位),用于唯一标识网络适配器(网卡)。
    一台主机拥有多少个网络适配器就有多少个 MAC 地址。例如笔记本电脑普遍存在无线网络适配器和有线网络适配器,因此就有两个 MAC 地址。
  2. 以太网:
    以太网采用的协议是具有冲突检测的载波监听多点接入CSMA/CD。协议的特点是:发送前先监听,边发送边监听,一旦发现总线上出现了碰撞,就立即停止发送。然后按照退避算法等待一段随机时间后再次发送。
  3. 交换机:
    交换机具有自学习能力,学习的是交换表的内容,交换表中存储着 MAC 地址到接口的映射。
    正是由于这种自学习能力,因此交换机是一种即插即用设备,不需要网络管理员手动配置交换表内容。

网络层

  1. IP数据报:
    在这里插入图片描述

  2. IP地址:
    IP 地址就是给每个连接在互联网上的主机(或路由器)分配一个在全世界范围是唯一的 32 位的标识符,用来定位网络中的计算机和网络设备;
    IP 地址用 32 位二进制来表示, 也就是32 比特, 换算成字节, 就 是 4 个字节。例如一个采用二进制形式的 IP 地址是10101100 00010000 00011110 00111000 , 这么长的地址, 处理起来太费劲。于是这些位被分割为4 个部分, 每一部分8位二进制, 中间使用符号 .分开 ,上面的 IP 地址可以表示为172.16.30.56。

  3. 子网掩码
    子网掩码 ( Subnet Mask) 又叫网络掩码、地址掩码,它是一种用来指明一个IP地址的哪些位标识的是主机所在的子网以及哪些位标识的是主机的位掩码。子网掩码只有一个作用,就是将某个IP 地址划分成网络地址和主机地址两部分。
    例如: 计算机的 IP 地址是 131.107.41.6, 子网掩码是 255.255.0.0, 计算机所在网段是131.107.0.0。该计算机和远程计算机通信 ,目标 IP 地址只要前面两部分是 131.107就认为和 该计算机在同一个网段;

  4. IP地址分类:

  • A类地址: 网络地址最高位是 0 的地址为 A 类地址
  • B类地址: 网络地址最高位是10的地址为B类地址
  • C类地址: 网络地址最高位是110的地址为C类地址
    在这里插入图片描述
  1. CIDR(无分类域间路由选择):
    无分类域间路由选择CIDR是解决目前IP地址紧缺的一个好办法。CIDR记法把IP地址后面加上斜线“/”,然后写上前缀所所占的位数。前缀(或网络前缀用来指明网络),前缀后面的部分是后缀,用来指明主机。CIDR把前缀都相同的连续的IP地址组成一个“CIDR地址块”,IP地址分配都以CIDR地址块为单位。

  2. 子网划分:
    子网划分就是将一个网段等分成多个网段,也就是等分成多个子网。
    需要:
    确定子网掩码的长度;
    确定子网中第一个可用的IP地址和最后一个可用的IP地址;

  3. 网络层的四个主要的协议:

  • ARP(地址解析协议):网络层实现主机之间的通信,而链路层实现具体每段链路之间的通信。因此在通信过程中,IP 数据报的源地址和目的地址始终不变,而 MAC 地址随着链路的改变而改变。ARP完成主机或路由器IP地址到MAC地址的映射
  • ICMP(网际控制报文协议 ):ICMP 是为了更有效地转发 IP 数据报和提高交付成功的机会(桥梁作用)。它封装在 IP 数据报中,但是不属于高层协议。主要有两种: ICMP差错报文、ICMP询问报文。
    Ping 是 ICMP 的一个重要应用,主要用来测试两台主机之间的连通性。
    Ping 的原理是通过向目的主机发送 ICMP Echo 请求报文,目的主机收到之后会发送 Echo 回答报文。Ping 会根据时间和成功响应的次数估算出数据包往返时间以及丢包率。

传输层

网络层是为主机之间提供逻辑通信,而运输层为应用进程之间提供端到端的逻辑通信。

  1. UDP
    UDP在传送数据之前不需要先建立连接,远地主机在收到UDP报文后,不需要给出任何确认。虽然UDP不提供可靠交付,但在某些情况下UDP确是一种最有效的工作方式。
    UDP的主要特点:①无连接②尽最大努力交付③面向报文④无拥塞控制⑤支持一对一,一对多,多对一和多对多的交互通信⑥首部开销小(只有四个字段:源端口,目的端口,长度和检验和)
  2. TCP
    TCP提供面向连接的服务。在传送数据之前必须先建立连接,数据传送结束后要释放连接。TCP不提供广播或多播服务。由于TCP要提供可靠的,面向连接的传输服务,这一难以避免增加了许多开销,如确认,流量控制,计时器以及连接管理等。这不仅使协议数据单元的首部增大很多,还要占用许多处理机资源。
    TCP的主要特点是:①面向连接②每一条TCP连接只能是一对一的③提供可靠交付④提供全双工通信⑤面向字节流
    在这里插入图片描述
  3. TCP 三次握手
    三次握手原因、为什么需要三次握手(可参考cyc和JavaGuide相关博客)
    在这里插入图片描述
  4. TCP 四次挥手
    在这里插入图片描述
  5. TCP 协议如何保证可靠传输
  • 超时重传
  • 流量控制
  • 拥塞控制
  • ARQ协议
  1. ARQ协议
    停止等待协议是为了实现可靠传输的,它的基本原理就是每发完一个分组就停止发送,等待对方确认。在收到确认后再发下一个分组。

  2. TCP 滑动窗口
    发送窗口里面的序号表示允许发送的序号。发送窗口后沿的后面部分表示已发送且已收到确认,而发送窗口前沿的前面部分表示不晕与发送。发送窗口后沿的变化情况有两种可能,即不动(没有收到新的确认)和前移(收到了新的确认)。发送窗口的前沿通常是不断向前移动的。一般来说,我们总是希望数据传输更快一些。但如果发送方把数据发送的过快,接收方就可能来不及接收,这就会造成数据的丢失。

  3. TCP 流量控制
    所谓流量控制就是让发送发送速率不要过快,让接收方来得及接收。利用滑动窗口机制就可以实施流量控制。
    接收方发送的确认报文中的窗口字段可以用来控制发送方窗口大小,从而影响发送方的发送速率。将窗口字段设置为 0,则发送方不能发送数据。

  4. TCP 拥塞控制
    在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏。这种情况就叫拥塞。
    TCP的拥塞控制采用了四种算法,即 慢开始 、 拥塞避免 、快重传 和 快恢复

  • 慢开始:由小到大逐渐增大发送窗口,也就是由小到大逐渐增大拥塞窗口数值。cwnd初始值为1,每经过一个传播轮次,cwnd加倍。
  • 拥塞避免:让拥塞窗口cwnd缓慢增大,即每经过一个往返时间RTT就把发送放的cwnd加1.
  • 快重传与快恢复:能快速恢复丢失的数据包。没有 FRR,如果数据包丢失了,TCP 将会使用定时器来要求传输暂停。在暂停的这段时间内,没有新的或复制的数据包被发送。有了 FRR,如果接收机接收到一个不按顺序的数据段,它会立即给发送机发送一个重复确认。如果发送机接收到三个重复确认,它会假定确认件指出的数据段丢失了,并立即重传这些丢失的数据段。有了 FRR,就不会因为重传时要求的暂停被耽误。  当有单独的数据包丢失时,快速重传和恢复(FRR)能最有效地工作。当有多个数据信息包在某一段很短的时间内丢失时,它则不能很有效地工作。

应用层

  1. DNS:

DNS 是一个分布式数据库,提供了主机名和 IP 地址之间相互转换的服务。这里的分布式数据库是指,每个站点只保留它自己的那部分数据。
DNS 可以使用 UDP 或者 TCP 进行传输,使用的端口号都为 53。大多数情况下 DNS 使用 UDP 进行传输,这就要求域名解析器和域名服务器都必须自己处理超时和重传从而保证可靠性。在下面两种情况下会使用 TCP 进行传输:

  • 如果返回的响应超过的 512 字节(UDP 最大只支持 512 字节的数据)。
  • 区域传送(区域传送是主域名服务器向辅助域名服务器传送变化的那部分数据)。
    域名具有层次结构,从上到下依次为:根域名、顶级域名、二级域名。
  1. FTP:

FTP是基于客户/服务器(C/S) 的协议。
用户通过一个客户机程序连接至在远程计算机上运行的服务器程序。依照 FTP 协议提供服务,进行文件传送的计算机就是 FTP 服务器。

连接FTP服务器,遵循FTP协议与服务器传送文件的电脑就是FTP客户端。

FTP 使用 TCP 进行连接,它需要两个连接来传送一个文件:

控制连接:服务器打开端口号 21 等待客户端的连接,客户端主动建立连接后,使用这个连接将客户端的命令传送给服务器,并传回服务器的应答。
数据连接:用来传送一个文件数据。

  1. 电子邮件:
    电子邮件把邮件发送到收件人使用的邮件服务器,并放在其中的收件人邮箱中,收件人可随时上网到自己使用的邮件服务器读取,相当于电子邮箱。

一个电子邮件系统有三个重要组成构件:用户代理、邮件服务器、邮件协议(包括邮件发送协议,如SMTP,和邮件读取协议,如POP3和IMAP)。用户代理和邮件服务器都要运行这些协议。

邮件协议包含发送协议和读取协议,发送协议常用 SMTP,读取协议常用 POP3 和 IMAP。

  1. HTTP长连接 短连接:

在HTTP/1.0中默认使用短连接。也就是说,客户端和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接。当客户端浏览器访问的某个HTML或其他类型的Web页中包含有其他的Web资源(如JavaScript文件、图像文件、CSS文件等),每遇到这样一个Web资源,浏览器就会重新建立一个HTTP会话。

而从HTTP/1.1起,默认使用长连接,用以保持连接特性。使用长连接的HTTP协议,会在响应头加入这行代码:

Connection:keep-alive
在使用长连接的情况下,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,客户端再次访问这个服务器时,会继续使用这一条已经建立的连接。Keep-Alive不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如Apache)中设定这个时间。实现长连接需要客户端和服务端都支持长连接。

HTTP协议的长连接和短连接,实质上是TCP协议的长连接和短连接。

  1. 在浏览器中输入url地址 到 显示主页的过程:
  • DNS解析
  • TCP连接
  • 发送HTTP请求
  • 服务器处理请求并返回HTTP报文
  • 浏览器解析渲染页面
  • 连接结束

在实习的课余时间,花了两周时间总算看完了计算机网络,深有体会,回头还得多看看,免得遗忘,推荐几个大佬的博客,总结的很详细,复习可参考:


   转载规则


《计算机网络知识总结》 ForeverSen 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
我所理解的 Dubbo 我所理解的 Dubbo
 在公司实习这段时间,虽然知道公司是使用 Dubbo 来调用服务的,但是没有深入理解Dubbo的原理,以及为什么要使用 Dubbo,因此重新深入学习了 Dubbo,总结下: 1. 官方文档Dubbo中文官方文档感觉无论学习什么,看官方文档
2019-06-20
下一篇 
LeetCode中有关哈希表问题 LeetCode中有关哈希表问题
对LeetCode中几道关于哈希表问题进行总结: 1.两数之和题目描述:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是
2019-06-02
  目录