感谢徒弟yky的整理,他的博客:https://gitee.com/YanKeyon/YanKeyon
计算机网络笔记
概述
三个阶段
-
第一阶段:从单个网络ARPANET向互连网发展的过程。
1983年TCP/IP协议成为ARPANET上的标准协议,互联网诞生。
1990年ARPANET正式宣布关闭。
internet(互连网)泛指多个计算机网络互连而成的计算机网络;Internet(互联网/因特网),指采用TCP/IP协议的特定互连网,前身是ARPANET。
-
第二阶段:建成了由主干网、地区网和校园网(或企业网)组成的三级结构的互联网。
-
形成多层次ISP(Internet Service Provider)结构的互联网。
ISP负责分发IP到用户,使其能够通过本地ISP,连接到地区ISP,或主干ISP,实现与其他用户的通信。
为了降低ISP向上转发产生的费用,减少迟延,出现了互联网交换点IXP(Internet eXchange Point),可以实现对等地交换分组,使数据流量分布更为合理。
互联网组成
根据工作方式可分为:
- 边缘部分。由所有连接在互联网上的主机构成。
- 核心部分。由大量网络和连接这些网络的路由器组成。(提供连通性和交换)
边缘部分的通信方式有多种:
-
C/S(Client/Server)
客户-服务器方式,是一种客户机请求服务,服务器做出响应提供服务的方式。
-
P2P(Peer to Peer)
对等连接是指两台主机在通信时不区分哪一个是服务请求方哪一个是服务提供方,即双方无主从之分。只要都运行了P2P软件,就可以进行对等连接通信,下载对方的共享资源。
-
B/S(Browser/Server)
浏览器-服务器方式是Web兴起后的一种网络结构。将系统功能的核心部分集中到服务器后台程序中。对于客户机,只需要安装一个浏览器就能访问。
交换方式
路由器(router)是实现分组交换的关键构件,其任务是转发收到的分组。
先说电路交换,例如电话机。每部电话连接到交换机,交换机采用交换的方式实现不同用户间的通信,构成了电信网。
交换是按照某种方式动态地分配传输线路的资源。经过建立连接(占用通信资源)、通话、释放连接(归还通信资源)三个步骤实现通信。
电路交换的一个重要特点是在通话的全部时间内,通信双方始终占用着一个通信资源。如果用电路交换传送计算机数据,其线路的传输效率就会很低,因为计算机数据的突发式出现导致通信资源绝大部分时间都是空闲的。
分组交换则采用存储转发技术。表示把一个报文划分为几个分组(packet)后再进行传输。每个分组(也叫包)由首部(header)和数据段组成。首部包含目的地址和源地址等重要控制信息。
对于一条链路,只是当分组正在此链路上传送时才被占用。路由器根据目的地址与路由表,选择一条链路进行传输,并最终到达目的地址。
报文不进行分组的交换为报文交换,相较分组交换而言,时延大,不灵活。
电路交换
Circuit switching
过程
- 建立连接(建立/占用一条物理通信线路)
- 连接方式:每部电话直连交换机。
- 通信
- 释放连接(释放占用的通信资源)
特点
-
通过交换机动态分配传输线路的资源
-
电路交换的用户始终占用端到端的通信资源
电路交换为什么不适合传送计算机数据
- 计算机数据具有突发性,导致在传送数据时通信线路利用率很低。
报文交换
整个报文先传输到相邻的结点,全部存储下来后查找转发表,转发到下一个结点。
报文交换是分组交换的前身。
分组交换
采用存储转发技术。
过程
- 发送端将报文切分为固定、较短的数据段
- 每一个数据段前添加上首部构成分组Packet
- 通过路由器将分组转发出去。
- 接收端接收、校验、拼接数据,还原成报文。
特点
- 高效:在分组传输的过程中动态分配传输带宽,对通信链路是逐段占用。
- 灵活:为每一个分组独立地选择最合适的转发路由。
- 迅速:以分组作为传送单位,可以不先建立连接就能向其他主机发送分组。
- 可靠:保证可靠性的网络协议;分布式多路由的分组交换网,使网络有很好的生存性。
路由器处理分组过程
- 把收到的分组先放入缓存(暂时存储);
- 查找转发表,找到某个目的地址应该从哪个端口转发出去;
- 把分组送到适当的端口转发出去。
问题
- 分组在各结点存储转发时需要排队,会造成时延。
- 分组必须携带首部,增加开销。
三种交换方式的比较
- 若要连续传送大量数据,且传送时间远大于连接建立时间,则电路交换的传输速率较快。
- 报文交换和分组交换不需要预先分配带宽,在传送突发数据时可提高整个网络的信道利用率。
- 由于一个分组的长度往往远小于整个报文的长度,因此分组交换比报文交换的时延小, 同时也具有更好的灵活性。
交换方式示意图⭐⭐⭐
计算机网络分类⭐
根据作用范围可分为:
- 广域网WAN(Wide Area Network)
- 城域网MAN(Metropolitan Area Network)
- 局域网LAN(Local Area Network)
- 个人区域网PAN(Personal Area Network)
根据网络使用者可分为:
- 公用网
- 专用网
此外还有用来把用户接入到互联网的网络:接入网AN(Access Network)。
网络拓扑结构分类
- 星型结构
- 环形结构
- 总线型结构
- 网状结构
性能指标⭐
度量计算机网络性能常用的七个性能指标:
速率
速率是计算机网络中最重要的一个性能指标,指的是数据的传送速率,它也称为数据率 (data rate) 或比特率 (bit rate)。
单位
- bit/s 或bps(bit per second)。
换算⭐
- $ 1Kb =10^3b $
- $ 1Mb =10^3Kb $
- $ 1Gb=10^3Mb $
- $ 1B = 8bit ⭐$
带宽
在计算机网络中,带宽(bandwidth)用来表示网络中某通道传送数据的能力,即最高速率。单位是 bit/s。
吞吐量
吞吐量(throughput)表示单位时间内通过某通道的实际数据量。
单位
- bit/s, byte/s, 帧数/s
时延
时延(delay或latency)是指数据从端到端传输的时间,也叫延迟或迟延。
时延分为
-
发送时延
发送时间 = 数据帧长度(bit) / 发送速率(bit/s)
-
传播时延
传播时延 = 信道长度(m) / 电磁波在信道上的传播速率(m/s)
-
处理时延
主机或路由器处理收到的分组时的时间
-
排队时延
分组进入路由器排队等待处理的时间
总时延 = 发送时延 + 传播时延 + 处理时延 + 排队时延
时延带宽积
若发送方连续发送数据,则在发送的第一个比特即将到达终点时,发送方已经送了的比特数为时延带宽积。
往返时间
往返时间 RTT (round-trip time) 表示从发送方发送数据开始,到发送方收到来自接收方的确认,总共经历的时间。
利用率
信道利用率:某信道有百分之几的时间是有数据通过的。
网络利用率:全网络的信道利用率的加权平均值。
信道利用率并非越高越好,根据排队论,当某信道利用率增大时,该信道引起的时延也就迅速增加。
计算机网络体系结构
OSI七层协议与TCP/IP四层协议。
学习采用五层协议,综合OSI与TCP/IP优点。
包括:应用层、传输层、网络层、数据链路层和物理层。
分层特点
- 低层提供服务,高层调用服务
分层优点
- 复杂任务划分为相对简单的子任务,更易于实现
- 各层之间相互独立,彼此不必了解对方细节,通过接口调用服务
- 灵活性好,接口不变,内部实现方式可以改变
分层缺点
- 数据分层传递,降低效率
- 功能在不同层次可能重复,产生额外开销
各层主要功能
- 差错控制
- 流量控制
- 分段和重装
- 复用和分用
- 连接建立和释放
传输过程图
TCP/IP发展
IPv4与IPv6
IPv4:32位,每8位划分为一段,一般以点分十进制表示。
192.168.1.1
IPv6:128位,每16位划分为一段
2007:1022:Bc50:0000:0000:3987:3335:1234
常见协议
应用层
协议 | 低层协议 | 默认端口 |
---|---|---|
HTTP(Hypertext Transfer Protocol) 超文本传输协议 | TCP | 80 |
FTP(File Transfer Protocol) 文件传输协议 | TCP | 20/21 |
TELNET 网络终端协议 | TCP | 23 |
SMTP(Simple Mail Transfer Protocol) 简单邮件传输协议 | TCP | 25 |
DNS 域名系统 | TCP/UDP | 53 |
SNMP(Simple Net Manager Protocol) 简单网络管理协议 | UDP | 161 |
TFTP(Trivial File Transfer Protocol) 简单文件传输协议 | UDP | 69 |
SSH(Secure Shell) 安全外壳协议 | TCP | 22 |
传输层
- TCP 传输控制协议
- UDP 用户数据报协议
应用层
数据传输效率问题⭐
长度100字节的应用层数据交给运输层传输,需加上20字节的TCP首部,再交给网络层传送,需加上20字节的IP首部,最后交给数据链路层的以太网传送,需加上首部和尾部共18字节。求数据的传输效率。
若应用层数据为1000字节呢?
数 据 的 传 输 效 率 = 发 送 的 应 用 层 的 数 据 发 送 的 总 数 据 数据的传输效率 = \frac{发送的应用层的数据}{发送的总数据} 数据的传输效率=发送的总数据发送的应用层的数据
发 送 的 总 数 据 即 应 用 数 据 加 上 各 种 首 部 和 尾 部 的 额 外 开 销 。 发送的总数据即应用数据加上各种首部和尾部的额外开销。 发送的总数据即应用数据加上各种首部和尾部的额外开销。
数据传输效率分别为63.29%和94.52%。
传输单元越大,数据传输效率越高,但不是越高越好。大包的丢包率高,占用链路时间长影响其他主机的通信。
最终标准以太网帧选择一个折中的长度:1518字节。对应IP的packet就是1500字节。这就是最大传输单元MTU的由来。
如果IP层有数据包要传输,且包长超过MTU,那么IP层就要对数据包进行分片(fragmentation)操作,使每一片的长度都小于或等于MTU。
除了MTU,还有一个对应的值,MRU最大接收单元。
一般情况下MTU=MRU。
参考文章:
万维网WWW
万维网/环球信息网(World Wide Web)是基于互联网之上的一项服务,将服务器资源通过URI标识,通过HTTP协议传输给用户。
HTTP⭐
超文本传输协议发展历史:
版本 | 产生时间 | 内容 | 发展现状 |
---|---|---|---|
HTTP/0.9 | 1991年 | 不涉及数据包传输,规定客户端和服务器之间通信格式,只能GET请求 | 没有作为正式的标准 |
HTTP/1.0 | 1996年 | 传输内容格式不限制,增加PUT、PATCH、HEAD、 OPTIONS、DELETE命令 | 正式作为标准 |
HTTP/1.1 | 1997年 | 持久连接(长连接)、节约带宽、HOST域、管道机制、分块传输编码 | 2015年前使用最广泛 |
HTTP/2 | 2015年 | 多路复用、服务器推送、头信息压缩、二进制协议等 | 逐渐覆盖市场 |
特点:
- HTTP基于TCP/IP协议之上
- 基于客户/服务器模式
- 面向连接
- 一次性连接
- 无状态协议
处理过程:
- 客户与服务器建立连接
- 客户向服务器提出请求
- 服务器接受请求,并根据请求返回相应的文件作为应答
- 客户与服务器关闭连接
协议状态码:
- 1xx:信息
- 2xx:成功
- 3xx:重定向
- 4xx:客户端错误
- 5xx:服务端错误
报文格式
两种类型:请求报文、响应报文。
-
请求报文:
方法:OPTION、GET、HEAD、POST、PUT、DELETE、TRACE、CONNECT
-
响应报文:
状态编码:三位数字,200 OK 、 404 NotFound等
URI、URL⭐
URI:统一资源标识符
URL:统一资源定位符
URL格式:
<协议>://<主机>:<端口>/<路径>
协议:ftp、http、https、News
主机:域名或IP地址
端口:服务端开放的访问端口
URI用字符串标识某一互联网资源,而URL表示资源的地点(互联网上所处的位置)。可见URL是URI的子集。
HTTP的非持续连接和持续连接
非持续连接:每个TCP连接只用于一个请求消息和响应消息。
持续连接:只要任意一端没有明确提出断开连接,则保持TCP连接状态。
持续连接的两种工作方式:
- 非流水线方式:客户在收到前一个响应后才能发出下一个请求。服务器在发送完一个对象后,其 TCP 连接就处于空闲状态,浪费了服务器资源。
- 流水线方式:客户在收到 HTTP 的响应报文之前就能够接着发送新的请求报文。一个接一个的请求报文到达服务器后,服务器就可连续发回响应报文。使 TCP 连接中的空闲时间减少,提高了下载文档效率。
HTTP/1.1默认使用持久连接的流水线版本
DNS服务
DNS(Domain Name System)服务协议提供域名到IP地址之间的解析服务。
浏览器
组成部分:控制程序、客户程序、解释程序、缓存。

控制程序:解释鼠标的点击和键盘的键入,执行用户操作。
客户程序:HTTP、FTP客户程序、电子邮件客户程序等。
解释程序:HTML解释程序
缓存:将请求到的每一个页面副本都放入本地磁盘的缓存中。
浏览器缓存技术
将请求到的每一个页面副本都放入本地磁盘的缓存中。
当用户请求某个网页,浏览器首先检查磁盘的缓存。若有则直接得到而不必从网络获取,提高效率。
缓存的对象可能不是最新的,HTTP允许浏览器证实缓存的对象是否是最新的。
Cookie技术
HTTP是无状态协议,它不对之前发生过的请求和响应的状态进行管理。也就是说,无法根据之前的状态进行本次的请求处理。
Cookie技术的四个组成部分:
- 在HTTP响应报文中有Set-cookie首部行。
- 在HTTP请求报文中有Cookie首部行。
- 客户端有Cookie文件,记录网站和识别码的对应关系。
- 服务器维护Cookie数据库。
HTTP与HTTPS
HTTPS是一种通过计算机网络进行安全通信的传输协议,经由HTTP进行通信,利用SSL/TLS建立全信道,加密数据包。HTTPS使用的主要目的是提供对网站服务器的身份认证,同时保护交换数据的隐私与完整性。
- 内容加密:采用混合加密技术,中间者无法直接查看明文内容
- 验证身份:通过证书认证客户端访问的是自己的服务器
- 保护数据完整性:防止传输的内容被中间人冒充或者篡改
传输层
传输层两大协议:TCP(Transmission Control Protocol)、UDP(User Datagram Protocol)
传输层为两个主机上运行的应用进程之间提供通信服务。“通信的真正端点不是主机而是主机中的进程”。
传输层存在的原因:
- 为两个端主机中运行的应用进程之间提供数据通信;
- 可灵活选择适当的协议保证通信的可靠性
TCP与UDP
UDP 在传送数据之前不需要先建立连接。对方的运输层在收到 UDP 报文后,不需要给出任何确认。虽然 UDP 不提供可靠交付,但在某些情况下 UDP 是一种最有效的工作方式。
TCP 则提供面向连接、可靠的服务,可以处理报文段出错、丢失等异常情况,并能根据接收方的接受能力、网络的拥堵状况自动调节自身发送速度。因此也增加了许多的开销,不仅使报文段的首部增大,还要占用处理机资源。

端口号(Port)
为了主机间通信而采取用端口号对TCP/IP体系的应用进程进行标识。
16位端口号,范围从0~65535。
端口分类:
- 公认端口(Well Known Ports) :从0到1023 ,它们紧密绑定(binding)于一些服务。通常这些端口的通讯明确表明了某种服务的协议。例如:80端口实际上总是HTTP通讯。
- 注册端口(Registered Ports):从1024到49151。它们松散地绑定于一些服务。也就是说有许多服务绑定于这些端口,这些端口同样用于许多其它目的。例如:许多系统处理动态端口从1024左右开始。
- 动态和/或私有端口(Dynamic and/or Private Ports):从49152到65535。理论上,不应为服务分配这些端口。实际上,机器通常从1024起分配动态端口。但也有例外:SUN的RPC端口从32768开始。
UDP
数据报格式:

首部8个字节,4个字段。
在计算检验和时,临时把“伪首部”和 UDP 用户数据报连接在一起。伪首部仅仅是为了计算检验和。
破坏了分层的法则,但检查了重要数据
通过端口实现UDP的多路复用与多路分解。
多路复用:多个应用进程使用同一个UDP协议发送数据。
多路分解:由UDP协议将UDP报文根据目的端口的不同发送给不同的应用进程。
特点:
- 无连接
- 无差错控制、流量控制、拥塞控制。
- 延迟短、简单、速度快(无流量、拥塞控制,全速发送)。
应用范围:
- 流式多媒体(丢失几帧画面影响不大,但要求低延迟)
- 因特网电话
基于UDP的协议:实时传送协议RTP,传递音频、视频。
TCP
特点:
- 面向连接
- 全双工通信
- 点对点通信
- 面向字节流(无结构、有序的字节流)
- 多路复用、多路分解
- 差错控制、流量控制、拥塞控制
数据报格式:

序号:
- 4字节,指出本报文段中的数据的第一个字节在发送方本次TCP连接上发送的数据流中的位置。
确认号:
-
4字节,期望收到对方下一个报文段的第一个数据字节的序号,与ACK=1配合使用。
-
确认号隐含的确认了所有前面的字节序号
TCP头部长度(数据偏移):
- 4比特,指出以4字节为单位的报文头部长度,如没有选项,则为5即20Bytes。该域是针对变长的“选项”域设计的。
紧急标志位URG(URGent):
- 当URG=1时,表明此报文是紧急数据,应尽快传送出去,接收方应优先处理。
确认标志位ACK:
- 只有当ACK=1时确认号字段才有意义。当ACK=0时,确认号没有意义。
推送标志位PSH(PuSH):
- 当PSH=1时,该包连同传送缓冲区的其它包应立即进行传送,而无需等待缓冲区满了才送,接收端必须尽快将此数据交给程序处理。
重建标志RST(ReSeT):
- 当RST=1时,表明出现严重差错,复位产生差错的连接
同步标志位SYN:
- 当SYN=1而ACK=0时,表明这是一个建立连接请求报文,若对方同意建立该连接,则在发回的报文中使将SYN和ACK标志位同时置1。
终止标志位FIN(FINal):
- 当FIN=1时,表明数据已经发送完毕,并请求释放连接。
窗口-用于流量控制:
- 2字节,接收数据方告诉发送数据方它的接收窗口大小(接收缓冲区大小),其单位为字节。
校验和:
- 2字节,校验和字段检验的范围包括TCP报文的头部、数据区和伪包头。
紧急指针:
- 2字节,当URG= 1 的时,紧急指针就会指示出紧急数据所在位置。
可选项:
- 长度可变,可选项的长度要么是 0 ,要么就是 32bit 的整倍数。TCP规定了一种选项,即最长报文段MSS(Maximum Segment Size),限定了每个TCP报文段中数据字段的最大长度。
- 为了避免发送主机对IP报文进行分片,限定TCP报文段中数据量的最大长度,与数据链路层MTU有关。
- Mss不是强制数据,双方无法达成一致,默认为536字节
TCP建立连接⭐
TCP是面向连接的传输层协议,发送数据前必须建立连接。
三次握手⭐
- 客户端发请求:SYN=1,ACK=0,seq=x
- 服务端接请求,分配缓存和变量,回响应:SYN=1,ACK=1,seq=y
- 客户端接响应,分配缓存和变量,回响应:SYN=0,ACK=1,seq=x+1
三次握手时,序号的取值比较特别, 依次加一,正式传递数据后,根据数据块的大小确定确认号。

TCP要求连接每一方随机选择一个初始序号,防止黑客猜测出初始序号进行攻击。
保活定时器:避免TCP连接长时间空闲,在服务器端设定保活定时器。一般设定为2小时,超时后服务器就不断发送探测报文,连发10个若还没有收到客户端响应,服务器就关闭连接。
TCP释放连接
四次握手:

差错控制⭐
异常情况的检测与采取措施。
可以连发多个报文段,进行累积确认。
当接收到数据,首先进行差错检测; 若数据正确,返回确认;错误则不进行响应确认.
若数据丢失,如何解决?
发送方每发送一个报文段,就启动一个重传定时器。
若报文段出错,发送方在超时重传时间RTO内未收到确认,定时器超时,重传报文段。

若确认丢失,如何解决?