上回我整理了一下计算机网络中所有的关键概念,很多小伙伴觉得很有帮助,但是有一个需要优化的点就是这些概念不知道出自哪里,所以理解起来像是在云里穿梭,一会儿在聊应用层的概念,一会儿又跑到网络层协议了。针对这种情况,我重新根据不同的章节来进行整理和汇总,这篇文章理解起来,应该会舒服很多了。
计算机网络基础概念
主机:计算机网络上任何一种能够连接网络的设备都被称为主机或者说是端系统,比如手机、平板电脑、电视、游戏机、汽车等,随着 5G 的到来,将会有越来越多的终端设备接入网络。
通信链路:通信链路是由物理链路(同轴电缆、双绞线、光纤灯)连接到一起组成的一种物理通路。
传输速率:单位是 bit/s ,用来度量不同链路从一个端系统到另一个端系统传输数据的速率。
分组:当一台端系统向另外一台端系统发送数据时,通常会将数据进行分片,然后为每段加上首部字节,从而形成计算机网络的专业术语:分组。这些分组通过网络发送到端系统,然后再进行数据处理。
转发表:路由内部记录报文路径的映射关系的一种记录。
路由器:英文术语 router,路由器是连接因特网中各局域网、广域网的设备。路由器中维护着路由表,数据发送前路由器会查询路由表,然后根据路由表中记录的信息选择最佳传输路径,它是一种网络层的设备。
交换机:英文术语 switch,是一种光电信号转发设备,它可以为接入交换机的任意两个网络节点提供独享的电信号通路,它是一种数据链路层设备。
集线器:英文术语 hub,它是一种能够将多条以太网双绞线或光纤集合连接在同一段物理介质下的设备。它发生在物理层。
交换机和集线器的功能非常相似,交换机具有记忆功能,它广播之后能够缓存目标 Mac,后续的数据包就会直接通过缓存的路径发送,交换机是一种全双工通信模式。而集线器工作的时候,如果局域网中的一台电脑要发送消息,则局域网内的所有电脑都可以接收到这个消息,安全性较差,而且集线器是一种半双工模式。所以现在大多数都是用交换机,集线器慢慢被淘汰了。
半双工模式:连接在集线器中的端系统每次只能有数据包一个发送,只有这个发送完毕其他电脑才能再发送,这称为半双工模式。
全双工模式:连接在交换机中的端系统可以彼此之间相互通信,相互发送消息互不影响。
路径:一个分组所经历一系列通信链路和分组交换机称为通过这个网络的路径。
因特网服务商:ISP,不是 lsp(lao se pi)。这个好理解,就是网络运营商,我国的三大运营商:移动、电信、联通。
网络协议:网络协议是计算机网络中进行数据交换而建立的规则、标准或者约定。
IP:网际协议,它规定了路由器和端系统之间发送和接收的分组格式。
TCP/IP 协议簇:不仅仅只有 TCP 协议和 IP 协议,而是以 TCP、IP 协议为主的一系列协议,比如 ICMP 协议、ARP 协议、UDP 协议、DNS 洗衣、SMTP 协议等。
丢包:在计算机网络中指的是分组出现丢失的现象。
吞吐量:吞吐量在计算机网络中指的是单位时间内成功传输数据的数量。
报文:通常指的是应用层的分组。
报文段:通常把运输层的分组称为报文段。
数据报:通常将网络层的分组称为数据报。
帧:一般把链路层的分组称为帧。
电路交换:是通信网中最早出现的一种交换方式,一般多用于电话网,电路交换的过程中,数据交换是独占信道的,电路交换方式的优点是数据传输可靠、迅速,数据不会丢失,缺点是电路空闲时信道容量容易被浪费。
报文交换:报文交换是先将整个报文传送到临界点,全部存储下来之后再转发到下一个节点。
分组交换:分组交换是通信双方以分组为单位、使用存储-转发机制实现数据交互的通信方式,分组交换不会独占信道,从而资源利用率比较高。缺点是时延抖动、开销比较大。
带宽:带宽指单位时间能通过链路的数据量。通常以 bps 来表示,即每秒可传输的位数。
频分复用:多用于模拟信号,频分复用的各路信号是并行的。
时分复用:多用于数字信号,时分复用的各路信号是串行的。
时延:时延指的是一个报文或者分组从网络的一端传递到另一端所需要的时间,时延分类有发送时延、传播时延、处理时延、排队时延,总时延的计算方式:总时延 = 发送时延 + 传播时延 + 处理时延 + 排队时延。
处理时延:检查分组首部和决定分组传输路径所需要的时延被称为处理时延。
排队时延:分组在链路上等待的时间被称为处理时延。
传输时延:在实际链路中由一端传到网络从开始发送分组到发送完毕所耗费的时间被称为传输时延,可以理解为推出分组所需要的时间。
传播时延:分组从一台路由器传播到另一台路由器所需要的时间。
单播:单播最大的特点就是 1 对 1,早期的固定电话就是单播的一个例子
广播:我们一般小时候经常会广播体操,这就是广播的一个事例,主机和与他连接的所有端系统相连,主机将信号发送给所有的端系统。
多播:多播与广播很类似,也是将消息发送给多个接收主机,不同之处在于多播需要限定在某一组主机作为接收端。
任播:任播是在特定的多台主机中选出一个接收端的通信方式。虽然和多播很相似,但是行为与多播不同,任播是从许多目标机群中选出一台最符合网络条件的主机作为目标主机发送消息。然后被选中的特定主机将返回一个单播信号,然后再与目标主机进行通信。
计算机网络应用层
应用程序体系结构:其实就是应用层程序的两种组织结构,分为 CS 和 P2P。
客户-服务体系:它是一种面向网络应用的体系结构。把系统中的不同端系统区分为客户和服务器两类,客户向服务器发出服务请求,由服务器完成所请求的服务,并把处理结果回送给客户。在客户-服务器体系结构中,有一个总是打开的主机称为 服务器(Server),它提供来自于 客户(client) 的服务。我们最常见的服务器就是 Web 服务器,Web 服务器服务于来自 浏览器 的请求。
P2P 体系:对等体系结构,相当于没有服务器了,大家都是客户机,每个客户既能发送请求,也能对请求作出响应。
进程:进程其实就是运行在端系统的程序,应用程序进行通信的最基本单位就是进程。
分布式应用程序:多个端系统之间相互交换数据的端系统被称为分布式应用程序。
套接字接口:指的就是 socket 接口,这个接口规定了端系统之间通过因特网进行数据交换的方式。
客户端:在客户-服务器架构中扮演请求方的角色,通常是 PC,智能手机等端系统。
服务器:在客户-服务器架构中扮演服务方的角色,通常是大型服务器集群扮演服务器的角色。
IP 地址:IP 地址就是网际协议地址,在互联网中唯一标识主机的一种地址。每一台入网的设备都会有一个 IP 地址,这个 IP 又分为内网 IP 和公网 IP。
端口号:在同一台主机内,端口号用于标识不同应用程序进程。
URI:它的全称是(Uniform Resource Identifier),中文名称是统一资源标识符,使用它就能够唯一地标记互联网上资源。
URL:它的全称是(Uniform Resource Locator),中文名称是统一资源定位符,它实际上是 URI 的一个子集。
HTML:HTML 称为超文本标记语言,是一种标识性的语言。它包括一系列标签.通过这些标签可以将网络上的文档格式统一,使分散的 Internet 资源连接为一个逻辑整体。HTML 文本是由 HTML 命令组成的描述性文本,HTML 命令可以说明文字,图形、动画、声音、表格、链接等。
Web 页面:Web 页面也叫做 Web Page,它是由对象组成,一个对象(object) 简单来说就是一个文件,这个文件可以是 HTML 文件、一个图片、一段 Java 应用程序等,它们都可以通过 URI 来找到。一个 Web 页面包含了很多对象,Web 页面可以说是对象的集合体。
Web 服务器:Web 服务器的正式名称叫做 Web Server,Web 服务器可以向浏览器等 Web 客户端提供文档,也可以放置网站文件,让全世界浏览;可以放置数据文件,让全世界下载。目前最主流的三个 Web 服务器是 Apache、 Nginx 、IIS。
CDN:CDN 的全称是Content Delivery Network,即内容分发网络,它应用了 HTTP 协议里的缓存和代理技术,代替源站响应客户端的请求。CDN 是构建在现有网络基础之上的网络,它依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。
专用 CDN:由内容提供商特有 CDN 。
第三方 CDN:它代表多个内容提供商提供服务。
WAF:WAF 是一种 应用程序防护系统,它是一种通过执行一系列针对 HTTP / HTTPS的安全策略来专门为 Web 应用提供保护的一款产品,它是应用层面的防火墙,专门检测 HTTP 流量,是防护 Web 应用的安全技术。
WebService :WebService 是一种 Web 应用程序,WebService 是一种跨编程语言和跨操作系统平台的远程调用技术。
HTTP: TCP/IP 协议簇的一种,它是一个在计算机世界里专门在两点之间传输文字、图片、音频、视频等超文本数据的约定和规范。
Session:Session 其实就是客户端会话的缓存,主要是为了弥补 HTTP 无状态的特性而设计的。服务器可以利用 Session 存储客户端在同一个会话期间的一些操作记录。当客户端请求服务端时,服务端会为这次请求开辟一块内存空间,这个对象便是 Session 对象,存储结构为 ConcurrentHashMap。
Cookie:HTTP 协议中的 Cookie 包括 Web Cookie 和浏览器 Cookie,它是服务器发送到 Web 浏览器的一小块数据。服务器发送到浏览器的 Cookie,浏览器会进行存储,并与下一个请求一起发送到服务器。通常,它用于判断两个请求是否来自于同一个浏览器,例如用户保持登录状态。
SMTP 协议 :提供电子邮件服务的协议叫做 SMTP 协议, SMTP 在传输层也使用了 TCP 协议。SMTP 协议主要用于系统之间的邮件信息传递,并提供有关来信的通知。
POP3:邮件访问协议,协议较为简单,功能有限。
DNS 协议:由于 IP 地址是计算机能够识别的地址,而我们人类不方便记忆这种地址,所以为了方便人类的记忆,使用 DNS 协议,来把我们容易记忆的网络地址映射称为主机能够识别的 IP 地址。
根 DNS 服务器:最顶级的 DNS 服务器,全世界有 400 多台根域名服务器,由 13 个不同的组织管理,根域名服务器提供 TLD 服务器的 IP 地址。
顶级域 DNS 服务器:这个我们比较熟悉,像是常见的顶级域(如 com、org、net、edu 和 gov)和所有的国家顶级域(uk、fr、ca 和 jp),TLD 服务器提供了权威 DNS 服务器的 IP 地址。
权威 DNS 服务器:这个服务器就是因特网上具有公共可访问主机的 DNS 记录的服务器。
本地 DNS 服务器:一般来说,每个 ISP 都有一台本地 DNS 服务器,本地 DNS 服务器会临近主机端。
TELNET 协议:远程登陆协议,它允许用户(Telnet 客户端)通过一个协商过程来与一个远程设备进行通信,它为用户提供了在本地计算机上完成远程主机工作的能力。
SSH 协议:SSH 是一种建立在应用层上的安全加密协议。因为 TELNET 有一个非常明显的缺点,那就是在主机和远程主机的发送数据包的过程中是明文传输,未经任何安全加密,这样的后果是容易被互联网上不法分子嗅探到数据包来搞一些坏事,为了数据的安全性,我们一般使用 SSH 进行远程登录。
FTP 协议:文件传输协议,是应用层协议之一。FTP 协议包括两个组成部分,分为 FTP 服务器和 FTP 客户端。其中 FTP 服务器用来存储文件,用户可以使用 FTP 客户端通过 FTP 协议访问位于 FTP 服务器上的资源。FTP 协议传输效率很高,一般用来传输大文件。
多路分解:在接收端,运输层会检查源端口号和目的端口号等字段,然后标识出接收的套接字,从而将运输层报文段的数据交付到正确套接字的过程被称为多路分解。
多路复用:在发送方,从不同的套接字中收集数据块,然后为数据块封装上首部信息从而生成报文段,然后将报文段传递给网络层的过程被称为多路复用。
周知端口号:在主机的应用程序中,从 0 - 1023 的端口号是受限制的,被称为周知端口号,这些端口号一般不能占用。
计算机网络传输层
可靠数据传输:确保数据能够从程序的一端准确无误的传递给应用程序的另一端。
容忍丢失的应用:应用程序在发送数据的过程中可能会存在数据丢失的情况。
非持续连接:每个请求/响应会对经过不同的连接,每一个连接都会经过建立、保持、销毁这个过程。并且每个请求/响应后都会断开连接。
持续连接:每个请求/响应都会经过相同的连接,也就是说每个请求/响应都可以复用这个连接,并且在每个请求/响应后不会断开连接。
传输控制协议:英文名 TCP,通过名称可以大致知道 TCP 协议有控制传输的功能,主要体现在其可控,可靠性。TCP 为应用层提供了一种可靠的、面向连接的服务,它能够将分组可靠的传输到其他主机。
用户数据包协议:英文名 UDP,它为应用层提供了一种无需建立连接就可以直接发送数据报的方法。
三次握手:TCP 连接的建立需要经过三个报文段的发送,这种连接的建立过程被称为三次握手。
最大报文段长度:即 MSS,它指的是从缓存中取出并放入报文段中的最大值。
最大传输单元:即 MTU,它指的是通信双方能够接收有效载荷的大小,MSS 通常会根据 MTU 来设。
冗余 ACK:就是再次确认某个报文段的 ACK,报文段的丢失会导致冗余 ACK 的出现。
快速重传:即在报文段定时器过期之前重传丢失的报文段。
选择确认:在报文段出现丢失的情况下,TCP 能够选择确认失序的报文段,这个机制通常和重传一起使用。
拥塞控制:拥塞控制说的是,当某一段时间网络中的分组过多,使得接收端来不及处理,从而引起部分甚至整个网络性能下降的现象时采取的一种抑制发送端发送数据,等过一段时间或者网络情况改善后再继续发送报文段的一种方法。
四次挥手:TCP 断开链接需要经过四个报文段的发送,这种断开过程是四次挥手。
发送缓存:英文 send buffer,在发送报文时,TCP 不会立刻将报文发送出去,而是存储到内核的发送缓冲区中,等待合适的时机再发送。
接收缓存:英文 receive buffer,同样在接收报文时,主机不会立刻对报文进行处理,而是存储到内核的接收缓冲区中,等待合适的时机再进行处理。
SYN:Synchronize Sequence Numbers,是 TCP/IP 建立连接时发送的数据包,这个数据包就是一个同步序列号,标识客户端发送的是哪个请求。
ACK:Acknowledge character,ACK 是对请求进行响应的数据包。
FIN:Finish ,带有 FIN 标志位的数据包表示客户端希望断开连接。
三次握手中的状态变化
LISTEN: 表示等待任何来自远程 TCP 和端口的连接请求。
SYN-SEND: 表示发送连接请求后等待匹配的连接请求。
SYN-RECEIVED: 表示已接收并发送连接请求后等待连接确认,也就是 TCP 三次握手中第二步后服务端的状态
ESTABLISHED: 表示已经连接已经建立,可以将应用数据发送给其他主机
四次挥手中的状态变化
FIN-WAIT-1: 表示等待来自远程 TCP 的连接终止请求,或者等待先前发送的连接终止请求的确认。
FIN-WAIT-2: 表示等待来自远程 TCP 的连接终止请求。
CLOSE-WAIT: 表示等待本地用户的连接终止请求。
CLOSING: 表示等待来自远程 TCP 的连接终止请求确认。
LAST-ACK: 表示等待先前发送给远程 TCP 的连接终止请求的确认(包括对它的连接终止请求的确认)。
TIME-WAIT: 表示等待足够的时间以确保远程 TCP 收到其连接终止请求的确认。
CLOSED: 表示连接已经关闭,无连接状态。
滑动窗口:英文 sliding window,它是一种流量控制技术,在互联网早期,通信双方通常不会考虑网络情况,一般都会直接进行通信,同时发送数据,很容易导致阻塞,谁也发不了数据,针对这种现象,提出了滑动窗口,通过滑动窗口,接收方会告诉发送方自己能够接收多少数据。
窗口长度:窗口长度指的是已发送但还未确认的分组范围,如下图中的发送窗口结构就是窗口长度。
累积确认:TCP 规定在一段时间内发送方只要收到最后一条接收方返回的确认 ACK ,而不用重传报文段。
冗余ACK:由于 TCP 采用的是累计确认机制,即当接收端收到比期望序号大的报文段时,便会重复发送最近一次确认的报文段的确认信号,我们称之为冗余 ACK。
选择确认:可选择性的确认失序报文段,而不是重传最后一个报文段。
————————————————
版权声明:本文为CSDN博主「程序员cxuan」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_36894974/article/details/123543237
本文为节选
热门跟贴