计算机网络核心知识(上)
前言
计算机网络核心知识系列博客分为上、中、下部分,此篇为(上)。
博客的内容是计算机网络的核心知识,但也仅仅限于求得“管中窥一豹之形体”,也就是说这是入门级别的博客,若想深入的话,还是得好好啃大部头。
文章目录
- 前言
- 1 计算机网络概述(上)
- 1.1 计算机网络基本概念
- 1.1.1 什么是计算机网络?
- 1.1.2 通信系统模型
- 1.1.3 定义:计算机网络就是`互连`的、`自治`的计算机集合。
- 1.1.4 距离远、数量大如何保证互连?
- 1.1.5 什么是Internet?-组成细节角度
- 1.1.6 什么是Internet?-服务角度
- 1.1.7问题
- 1.2 计算机网络结构
- 1.2.1 什么是网络协议?
- 1.2.2 协议的三要素
- 1.3 网络核心
- 1.3.1 数据交换-电路交换
- 多路复用
- 1.3.2 数据交换-报文、分组交换(1)
- 报文交换
- 分组交换
- 1.3.3 数据交换-报文、分组交换(2)
- 1.3.4 数据交换-报文、分组交换(3)
- 1 计算机网络概述(下)
- 1.4 计算机网络性能
- 1.4.1 速率
- 1.4.2 带宽
- 1.4.3 延迟/时延(delay或latency)
- 1.4.4 四种分组延迟
- 1.4.5 时延带宽积(单位:bits(比特))
- 1.4.6 分组丢失(丢包)
- 1.4.7 吞吐量/率(Throughput)
- 1.5 计算机网络体系结构
- 1.5.1 计算机网络体系结构概述
- 复杂系统的分层结构
- 为何采用分层结构?
- 分层网络体系结构基本概念
- 1.5.2 OSI参考模型(1)
- OSI参考模型解释的通信过程
- OSI参考模型数据封装与通信过程
- 为什么需要数据封装?
- 1.5.3 OSI参考模型(2)
- 物理层功能
- 数据链路层功能
- 网络层功能
- 1.5.4 OSI参考模型(3)
- 传输层功能
- 会话层功能
- 表示层功能
- 应用层功能
- 1.5.5 TCP/IP参考模型
- 1.5.6 "5层"参考模型
- 5层模型的数据封装
- 1.6 计算机网络发展历史
- 1.6.1 "1961-1972": 早期分组交换原理的提出与应用
- 1.6.2 "1972-1980": 网络互连,大量新型、私有网络的涌现
- 1.6.3 "1980-1990": 新型网络协议与网络的激增
- 1.6.4 "1990, 2000's": 商业化 , Web, 新应用
- 1.6.5 "2005~今"
- 2 应用层
- 2.1 网络应用(层)内容概述
- 2.2 网络应用的基本原理
- 2.2.1 网络应用的体系结构
- 客户机/服务器结构(Client-Server, C/S)
- 点对点结构(Peer-to-peer, P2P)
- 混合结构(Hybrid)
- 2.2.2 网络应用进程通信
- 网络应用的基础:进程间通信
- 套接字: Socket
- 如何寻址进程
- 应用层协议
- 应用层协议的内容
- 2.2.3 网络应用需求
- 2.2.4 Internet提供的传输(层)服务
- 2.3 Web应用
- 2.3.1 Web应用概述
- Web与HTTP
- HTTP协议概述
- 2.3.2 HTTP连接类型
- 非持久性连接(Nonpersistent HTTP)
- 持久性连接(Persistent HTTP)
- 2.3.3 HTTP消息格式
- HTTP请求消息
- HTTP请求消息的通用格式
- 上传输入的方法
- 方法的类型
- HTTP响应消息
- HTTP响应状态代码
- 体验一下HTTP
- 2.3.4 Cookie技术
- 为什么需要Cookie?
- Cookie技术
- Cookie的原理
- Cookie的作用
- 2.3.5 Web缓存技术/代理服务器技术
- 条件性GET方法
- 2.4 Email应用
- 2.4.1 Email应用概述
- Email应用的构成
- SMTP协议: RFC 2821
- Email应用示例
- SMTP交互示例
- 动手尝试SMTP交互
- SMTP协议
- 2.4.2 Email消息格式和POP协议
- Email消息格式
- Email消息格式:多媒体扩展
- 邮件访问协议
- 2.5 DNS(域名解析系统)
- 2.5.1 DNS概述
- DNS:Domain Name System
- DNS
- 分布式层次式数据库
- DNS记录缓存和更新
- 2.5.2 DNS记录和消息格式
- DNS记录
- DNS协议和消息格式
- 如何注册域名?
- 2.6 P2P应用
- 2.6.1 P2P应用:原理与文件分发
- 文件分发:客户机/服务器vs. P2P ,到底谁快?
- 2.6.2 文件分发:BitTorrent
- BitTorrent 基本原理(1)
- BitTorrent 基本原理(2)
- 2.6.3 P2P应用:索引技术
- P2P: 搜索信息
- 集中式索引技术
- 集中式索引的问题
- 2.6.4 洪泛式查询索引技术:Query flooding
- 2.6.5 层次式覆盖网络索引技术
- 案例:Skype
- 2.7 Socket编程
- 2.7.1 Socket编程-应用编程接口(API)
- 网络程序设计接口
- 应用编程接口 API
- 几种典型的应用编程接口
- 2.7.2 Socket编程-Socket API概述
- Socket API
- 如何在服务器端找到想找的接口呢?
- Socket抽象
- Socket的结构
- 2.7.3 Socket编程-Socket API函数(1)
- Socket编程架构(以WinSock为例)
- WSAStartup
- WSACleanup
- socket
- Closesocket
- bind
- 2.7.4 Socket编程-Socket API函数(2)
- listen
- connect
- accept
- send, sendto
- recv, recvfrom
- setsockopt, getsockopt
- 2.7.5 Socket API函数小结
- 2.7.6 关于网络字节顺序
- 2.7.7 网络应用的Socket API调用基本流程
- 2.7.8 Socket编程-客户端软件设计
- 解析服务器IP地址
- 解析服务器(熟知)端口号
- 解析协议号
- TCP客户端软件流程
- UDP客户端软件流程
- 客户端软件的实现- `connectsock()`
- 客户端软件的实现-UDP客户端
- 客户端软件的实现-TCP客户端
- 客户端软件的实现-异常处理
- 例1:访问DAYTIME服务的客户端(TCP)
- 例2:访问DAYTIME服务的客户端(UDP)
- 2.7.9 Socket编程-服务器软件设计
- 4种类型基本服务器
- 循环无连接服务器基本流程
- 数据发送
- 获取客户端点地址
- 循环面向连接服务器基本流程
- 并发无连接服务器基本流程
- 并发面向连接服务器基本流程
- 服务器的实现
- 服务器的实现-`passivesock() `
- 服务器的实现-`passiveUDP() `
- 服务器的实现-`passiveTCP() `
- 例1:无连接循环DAYTIME服务器
- 例2:面向连接并发DAYTIME服务器
- 3 传输层(上)
- 3.1 传输层服务
- 3.1.1 本章学习内容概括
- 3.1.2 传输层服务概述
- 3.1.3 传输层 vs. 网络层
- 3.1.4 Internet传输层协议
- 3.2 复用和分用
- 3.2.1 分用如何工作?
- 3.2.2 无连接分用
- 3.2.3 面向连接的分用
- 3.2.4 面向连接的分用:多线程Web服务器
- 3.3 无连接传输协议-UDP
- 3.3.1 UDP校验和(checksum)
- 校验和计算示例
- 3.4 可靠数据传输的基本原理
- 3.4.1 可靠数据传输概述
- 可靠数据传输协议基本结构:接口
- 可靠数据传输协议
- 3.4.2 Rdt 1.0:可靠信道上的可靠数据传输
- 3.4.3 Rdt 2.0:产生位错误的信道
- FSM规约
- 无错误场景
- 有错误场景
- 3.4.4 Rdt 2.1和2.2
- Rdt 2.0有什么缺陷?
- Rdt 2.1: 发送方, 应对ACK/NAK破坏
- Rdt 2.1: 接收方, 应对ACK/NAK破坏
- Rdt 2.1 vs. Rdt 2.0
- 3.4.5 Rdt 2.2: 无NAK消息协议
- FSM片段
- 3.4.6 Rdt 3.0
- Rdt 3.0发送方FS
- Rdt 3.0示例(1)
- Rdt 3.0示例(2)
- Rdt 3.0性能分析
- Rdt 3.0: 停等操作
- 3.4.7 流水线机制与滑动窗口协议
- 流水线协议
- 滑动窗口协议
- 3.4.8 Go-Back-N(GBN)协议
- Go-Back-N(GBN)协议: 发送方
- GBN: 发送方扩展FSM
- Go-Back-N(GBN)协议: 接收方
- GBN: 接收方扩展FSM
- GBN示例
- 练习题
- 3.4.9 Selective Repeat(SR)协议
- Selective Repeat:发送方/接收方窗口
- SR协议运作方式示例
- SR协议的“困境”
- 3.4.10 可靠数据传输原理与协议回顾
- 4 传输层(下)
- 4.1 面向连接传输协议-TCP
- 4.1.1 TCP概述
- 4.1.2 TCP可靠数据传输
- TCP可靠数据传输概述
- TCP:RTT和超时
- TCP发送方事件
- TCP发送端程序的伪代码
- TCP重传示例
- TCP-各种需重传场景下ACK该如何生成
- 快速重传机制
- 快速重传算法
- 4.1.3 TCP流量控制
- TCP流量控制原理详述
- 4.1.4 TCP连接管理
- 4.2 拥塞控制原理
- 4.2.1 拥塞控制原理(1)
- 拥塞的成因和代价:场景1
- 拥塞的成因和代价:场景2
- 拥塞的成因和代价:场景3
- 4.2.2 拥塞控制原理(2)
- 拥塞控制的方法
- 案例:ATM ABR拥塞控制
- 4.3 TCP拥塞控制及TCP性能分析
- 4.3.1 TCP拥塞控制
- 加性增—乘性减: `AIMD`
- TCP慢启动: `SS`
- Threshold变量
- Loss事件的处理
- TCP拥塞控制: 总结
- 4.3.2 TCP性能分析
- TCP throughput: 吞吐率
- 未来的TCP
- TCP的公平性
- 4.4 传输层总结
内容提纲:
1 计算机网络概述(上)
1.1 计算机网络基本概念
1.1.1 什么是计算机网络?
计算机网络=通信技术+计算机技术
计算机网络是通信技术
与计算机技术
紧密结合的产物。
1.1.2 通信系统模型
- 计算机网络就是一种通信网络
1.1.3 定义:计算机网络就是互连
的、自治
的计算机集合。
自治
:无主从关系互连
:互联互通- 通信链路
1.1.4 距离远、数量大如何保证互连?
通过交换网络
互连主机
1.1.5 什么是Internet?-组成细节角度
- 全球最大的
互联网络
- ISP(Internet Service Provider)网络互连的“
网络之网络
”
- 数以百万计的互连的
计算设备
集合主机
(hosts)=端系统
(end systems)- 运行各种网络应用
通信链路
- 光纤、铜缆、无线电、卫星…
分组交换
:转发分组(数据包)路由器
(routers)和交换机
(switches)
- 数以百万计的互连的
1.1.6 什么是Internet?-服务角度
为网络应用提供通信服务的通信基础设施:
Web、VolP、Email、网络游戏、电子商务、社交网络…为网络应用提供应用编程借口(API):
- 支持应用程序"连接"Internet,发送/接受数据
- 提供类似于邮政系统的数据传输服务
1.1.7问题
仅有硬件(主机、链路、路由器...)连接,Internet能否顺畅运行?能保证应用数据有序交付吗?...
回答是不能。还需要协议。
1.2 计算机网络结构
1.2.1 什么是网络协议?
网络协议(network protocol)
,简称协议
,是为进行网络中的数据交换而建立的规则、标准或约定。协议
规定了通信实体之间所交换的消息的格式
、意义
、顺序
以及针对收到信息或发生的事件所采取的"动作(actions)
"。
协议是计算机网络有序运行的重要保证。常见的协议有TCP,IP,HTTP,Skype,802.11等。
网络协议为计算机网络中进行数据交换而建立的规则、标准或约定的集合。
例如,网络中一个微机用户和一个大型主机的操作员进行通信,由于这两个数据终端所用字符集不同,因此操作员所输入的命令彼此不认识。为了能进行通信,规定每个终端都要将各自字符集中的字符先变换为标准字符集的字符后,才进入网络传送,到达目的终端之后,再变换为该终端字符集的字符。当然,对于不相容终端,除了需变换字符集字符外还需转换其他特性,如显示格式、行长、行数、屏幕滚动方式等也需作相应的变换。
1.2.2 协议的三要素
语法
(Syntax)- 数据与控制信息的结构或格式
- 信号电平
语义
(Semantics)- 需要发出何种控制信息
- 完成何种动作以及做出何种相应
- 差错控制
时序
(Timing)- 事件顺序
- 速度匹配
协议规范了网络中所有信息发送和接收过程,是学习网络的重要内容之一。
Internet协议标准
- RFC:Request for Comments
- IETF:互联网工程任务组(Internet Engineering Task Force)。于此可获得关于协议的最新、最权威信息。
- 硬件(主机、路由器、通信链路等)是计算机网络的基础
- 计算机网络中的数据交换必须遵守事先约定好的
规则
- 如同交通系统
- 任何通信或信息交换过程都需要规则
1.3 网络核心
互联的路由器网络。
1.3.1 数据交换-电路交换
数据交换
:实现数据通过网络核心从源主机到达目的主机。
- 为什么需要数据交换?
- N2N^2N2链路问题
如果计算机网络中有NNN台计算机,则每一台计算机需要有N−1N-1N−1条链路,这是不现实的。 - 保持计算机网络的
连通性
- 适用于不同的
网络规模
- N2N^2N2链路问题
- 什么是交换?
- 动态转接
- 动态分配传输资源
- 动态转接
- 数据交换的类型
电路交换
最典型电路交换网络:电话网络
电路交换的三个阶段:
- 建立连接(呼叫/电路建立)
- 通信
- 释放连接(拆除电路)
独占资源
电路交换网络如何共享中继线?
多路复用(Multiplexing)
报文交换
分组交换
多路复用
多路复用(multiplexing)
,简称复用
,是通信技术中的基本概念。
- 什么是多路复用?
链路/网络资源(如带宽)划分为“资源片”- 将资源片分配给各路“呼叫”(calls)
- 每路呼叫
独占
分配到的资源片进行通信 - 资源片可能“
闲置
”(idle
) (无共享,因为是分配好的)
典型多路复用方法
:频分
多路复用( frequency division multiplexing-FDM )时分
多路复用( time division multiplexing-TDM )波分
多路复用(Wavelength division multiplexing-WDM)码分
多路复用( Code division multiplexing-CDM )
- 频分多路复用FDM
将信号分为频率不同的几段。
- 频分多路复用的各用户占用不同的带宽资源(请注意,这里的“带宽 ”是
频率带宽
(单位:Hz)而不是数据的发送速率) - 用户在分配到一定的频带后,在通信过程中
自始至终都占用这个频带
- 频分多路复用的各用户占用不同的带宽资源(请注意,这里的“带宽 ”是
- 时分多路复用TDM
- 时分复用则是将时间划分为一段段等长的
时分复用帧
(TDM 帧),每个用户在每个TDM帧中占用固定序号的时隙 - 每用户所占用的时隙是
周期性出现
(其周期就是TDM帧的长度)
- 时分复用的所有用户是在不同的时间占用
相同的
频带宽度
- 时分复用则是将时间划分为一段段等长的
- 波分多路复用WDM
- 波分复用就是光的频分复用 (准确来说是光的波长复用)
- 波分复用就是光的频分复用 (准确来说是光的波长复用)
- 码分多路复用CDM
- 广泛应用于无线链路共享 (如蜂窝网,卫星通信等)
- 每个用户分配一个唯一的 m bit
码片序列
(chipping sequence),其中“0”用“-1
”表示、“1”用“+1
”表 示,
例如: S 站的码片序列:(–1 –1 –1 +1 +1 –1 +1 +1) - 各用户使用
相同频率
载波,利用各自码片序列编码数据 编码信号
=(原始数据)×××(码片序列)- 如发送比特 1(+1),则发送自己的
m bit 码片序列
- 如发送比特 0(-1),则发送该码片序列的
m bit 码片序列的反码
- 如发送比特 1(+1),则发送自己的
- 各用户码片序列相互
正交
(orthogonal)
1mSi⋅Sj={1,i=j0,i≠j1mSi⋅Sj‾={−1,i=j0,i≠j\frac{1}{m}S_i\cdot S_j =\begin {cases} 1,& i=j \\ 0,&i\not=j \end{cases} \quad \frac{1}{m}S_i\cdot \overline{S_j} =\begin {cases} -1,& i=j \\ 0,&i\not=j \end{cases}m1Si⋅Sj={1,0,i=ji=jm1Si⋅Sj={−1,0,i=ji=j - 令{di}\{di\}{di}为原始数据序列,各用户的叠加向量为
解码
: 码片序列与编码信号的内积
1mSi⋅P={1,Si∈P−1,Si‾∈P0,Si,Si‾∉P\frac{1}{m}S_i\cdot P=\begin{cases} 1, & S_i\in P \\ -1,& \overline{S_i}\in P \\ 0, & S_i,\overline{S_i}\notin P \end{cases}m1Si⋅P=⎩⎪⎨⎪⎧1,−1,0,Si∈PSi∈PSi,Si∈/P- 举例:单用户
- 举例:多用户
1.3.2 数据交换-报文、分组交换(1)
报文交换
报文
:源(应用)发送信息整体 (比如:一整
个文件 )
分组交换
现代网络通信数据交换基本使用分组交换
技术。
分组
:报文分拆出来的一系列相对较小的数据包
- 分组交换需要报文的
拆分
与重组
- 产生
额外开销
- 分组交换:统计多路复用(Statistical Multiplexing)
不同端分发的文件的分组同时进入链路。
如图带宽为1.5Mb/s。
带宽是不变的,极端情况例如A分发了文件,而B没有分发文件,则链路中A分发文件的分组占了1.5Mb/s带宽;
若A与B都分发了文件,则他们分发文件的分组一共占1.5Mb/s带宽。
由此可知统计多路复用技术不会有资源(链路带宽)闲置
的情况出现。 - 存储-转发(store-and-forward)交换方式
报文交换
与分组交换
均采用存储-转发
交换方式- 区别:
- 报文交换以
完整
报文进行“存储-转发” - 分组交换以较小的
分组
进行“存储-转发” - 问题:报文交换与分组交换孰优孰劣?下一节将回答这个问题。
- 报文交换以
1.3.3 数据交换-报文、分组交换(2)
衡量哪种交换方式更好的标准之一是分组交换的传输延迟的大小
。
- 传输延迟
发送主机:- 接收应用报文(消息)
- 拆分为较小长度为 LLL bits的分组(packets)
- 在传输速率为 RRR 的链路上传输分组
- 举例说明报文交换和分组交换孰优孰劣
- 报文交换
- 分组交换
- 报文交换
明显,分组交换
优势更大。
分组交换的报文交付时间:
例题:
1.3.4 数据交换-报文、分组交换(3)
分组交换
和电路交换
性能孰优孰劣?
- 电路交换:单个用户会独占链路,造成资源浪费。
- 分组交换:采用统计多路复用技术,
允许更多用户同时使用网络,网络资源充分共享。
- 分组交换绝对优于电路交换吗?
- 分组交换适用于
突发
数据传输网络
例如我们下载文件,有时候突然要下载,- 资源充分共享
- 简单、无需呼叫建立(电路交换需要)
- 分组交换
可能产生拥塞(congestion)
:分组延迟和丢失- 需要协议处理可靠数据传输和拥塞控制
- 问题:如何提供电路级性能保障?
例如音视频应用所需的带宽保障。
- 分组交换适用于
1 计算机网络概述(下)
1.4 计算机网络性能
1.4.1 速率
速率
即数据率
(data rate)或称数据传输速率
或比特率
(bit rate) 。速率往往是指额定速率或标称速率 。
- 单位时间(秒)传输信息(比特)量
- 计算机网络中最重要的一个性能指标
- 单位:b/s(或bps)、kb/s、Mb/s、Gb/s
- k=10310^3103、M=10610^6106、G=10910^9109
1.4.2 带宽
- “
带宽
”(bandwidth)原本指信号具有的频带宽度, 即最高频率与最低频率之差,单位是赫兹(Hz) - 网络的“带宽”通常是数字信道所能传送的“
最高数据率
”,单位:b/s (bps) - 常用的带宽单位:
- kb/s (10310^3103 b/s)
- Mb/s(10610^6106 b/s)
- Gb/s(10910^9109 b/s)
- Tb/s(101210^121012 b/s)
1.4.3 延迟/时延(delay或latency)
问题:分组交换为什么会发生丢包和时延?
回答:分组在路由器缓存中排队
那什么时候会出现分组排队的情况?
分组到达速率超出输出链路容量时
- 等待输出链路可用时
1.4.4 四种分组延迟
- dprocd_{proc}dproc:
结点处理延迟 (nodal processing delay)
- 差错检测
- 确定输出链路
- 通常<msec(延迟时间为毫秒级)
- dqueued_{queue}dqueue:
排队延迟 (queueing delay)
- 等待输出链路可用
- 取决于路由器拥塞程度
- R: 链路带宽(bps)
- L: 分组长度 (bits)
- a: 平均分组到达速率
- 流量强度(traffic intensity)= La/R
- La/R ~ 0: 平均排队延迟很小
- La/R -> 1: 平均排队延迟很大
- La/R > 1: 超出服务能力,平均排队延迟无限大!
- dtransd_{trans}dtrans:
传输延迟 (transmission delay)
- L: 分组长度(bits)
- R: 链路带宽 (bps)
- dtransd_{trans}dtrans = L/R
- dpropd_{prop}dprop:
传播延迟(propagation delay)
- d: 物理链路长度
- s: 信号传播速度 (~2×108 m/sec)
- dpropd_{prop}dprop = d/s
传输延迟和传播延迟的区别:
1.4.5 时延带宽积(单位:bits(比特))
链路的时延带宽积又称为以比特为单位的链路长度
。
1.4.6 分组丢失(丢包)
三大原因:
- 队列缓存容量有限
- 分组到达已满队列将被丢弃 (即丢包)
- 丢弃分组可能由前序结点或源重发(也可能不重发)
1.4.7 吞吐量/率(Throughput)
吞吐量 :表示在发送端与接收端之间传送数据速率 (b/s)
- 即时吞吐量: 给定时刻的速率
- 平均吞吐量 : 一段时间的平均速率
讨论下面情况的吞吐量是多少
吞吐量是RsR_sRs还是RcR_cRc?
Internet场景的吞吐量
1.5 计算机网络体系结构
1.5.1 计算机网络体系结构概述
为什么需要计算机网络体系结构?
因为计算机网络是一个非常复杂的系统 , 涉及许多组成部分
,需要一个抽象的体系概念将其统一起来。
之所以说计算机网络很复杂,是因为它牵涉到大量硬件和软件,例如:
- 主机(hosts)
- 路由器(routers)
- 各种链路(links)
- 应用(applications)
- 协议(protocols)
- 硬件、软件
- ……
那么问题是:是否存在一种系统结构有效描述计算机网络呢?利用什么样的结构才适合呢?
答案:分层结构
。
复杂系统的分层结构
类比:航空旅行
- 分层结构每层完成一种(类)特定服务/功能
每层依赖底层提供的服务,通过层内动作完成相应功能。(底层提供的服务好比一个接口,其上层来说是透明的,只是给其使用而已。) - 网络体系结构是从
功能上
描述计算机网络结构 - 计算机网络体系结构简称网络体系结构 (network architecture)
是分层结构
- 每层遵循某个/些
网络协议
完成本层功能
由此可以指导协议是按层
使用的。 计算机网络体系结构
是计算机网络的各层及其协议的集合- 体系结构是一个计算机网络的
功能层次及其关系的定义
- 体系结构是
抽象的
只是将计算机网络抽象出来,具体由硬件还是软件实现哪些功能不在考虑范围内。
为何采用分层结构?
- 结构清晰,有利于识别复杂系统的部件及其关系
分层的参考模型(reference model )
- 模块化的分层易于系统
更新
、维护
- 任何一层服务实现的改变对于系统其它层都是透明的
- 例如,登机过程的改变并不影响航空系统的其它部分(层)
- 有利于标准化
将某个分层模型定为一个框架。 - 分层是否有不利之处?
效率较低!例如办某种证件或是申请某些东西,需要一层一层批下来,非常慢!所以会出现“跨层实现”这种处理方式。
分层网络体系结构基本概念
实体(entity)
表示任何可发送或接收信息的硬件或软件进程。- 协议是控制
两个对等实体
进行通信的规则的集合。协议是“水平的
” 。 - 任一层实体需要使用
下层
服务,并遵循本层协议,实现本层功能,向上层
提供服务。服务是“垂直的
”。 - 下层协议的实现对上层的服务用户是
透明
的。 - 同系统的相邻层实体间通过
接口
进行交互,通过服务访问点 SAP (Service Access Point)
,交换原语
,指定请求的特定服务。
1.5.2 OSI参考模型(1)
开放系统互连 (OSI)参考模型是由国际标准化组织 (ISO) 于1984年提出的分层网络体系结构模型,目的是支持异构网络系统
的互联互通 ,它是异构网络系统互连的国际标准
,也是理解网络通信的最佳学习工具
(理论模型) (理论成功,市场失败 )。
7层
(功能),每层完成特定的网络功能
层级 | 作用 | 包含的协议 |
---|---|---|
应用层 | 为特定应用程序提供数据传输服务。 | ( TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet |
表示层 | 对上层信息进行变换,保证一个主机应用层信息被另一个主机的应用程序理解,表示层的数据转换包括数据的加密、压缩、格式转换。 | JPEG、ASCII、GIF、DES、 MPEG |
会话层 | 管理主机之间的会话进程,即负责建立、管理、终止。 | RPC、SQL、NFS |
传输层 | 提供端对端的接口。 | TCP,UDP |
网络层 | 为数据包选择路由。 | IP,ICMP,ARP,RARP) |
数据链路层 | 传输有地址的帧,错误检测功能 | SLIP,CSLIP,PPP,ARP,RARP,MTU |
物理层 | 以二进制数据形式在物理媒体上传输数据。 | ISO2110,IEEE802,IEEE802.2 |
OSI参考模型解释的通信过程
从主机A到主机B的传输过程(注意传输的方向),反之同理。
可以看到不同主机的同一层之间都有协议进行规范和约束,而且中间系统只有物理层
、数据链路层
、网络层
,剩余的4层合称为端-端层(end-end)
。
OSI参考模型数据封装与通信过程
数据无论经过哪一层(除物理层
和数据链路层
之外),都会被该层加一个“某某层头”,加“头”之后称为数据包
,在OSI模型中称之为协议数据单元
。
为什么需要数据封装?
- 增加
控制信息
构造协议数据单元 (PDU) 。“某某头”中包含有控制信息。 控制信息
主要包括:地址(Address)
: 标识发送端/接收端差错检测编码(Error-detecting code)
: 用于差错检测或纠正协议控制(Protocol control)
: 实现协议功能的附加信 息,如: 优先级(priority)、服务质量(QoS)、 安全控制等
1.5.3 OSI参考模型(2)
本节详细介绍物理层、数据链路层、网络层的功能。(只有数据链路层“加头又加尾”)
物理层功能
- 接口特性
机械特性、电气特性、功能特性、规程特性 - 比特编码
考虑该如何给数据编码进行传输。 - 数据率
- 比特同步
在数据通信中最基本的同步方式就是“比特同步”(bit synchronization)或位同步。比特是数据传输的最小单位。比特同步是指接收端时钟已经调整到和发送端时钟完全一样,因此接收端收到比特流后,就能够在每一个比特的中间位置进行判决。比特同步的目的是为了将发送端发送的每一个比特都正确地接收下来。 - 时钟同步
- 传输模式
- 单工(Simplex)
数据只能单向传输。例如电视,只能接受电视台的信号。 - 半双工(half-duplex)
数据可以交替传输。例如对讲机。 - 全双工(full-duplex)
数据可以同时在双方之间传输。例如手机、微信通话。
- 单工(Simplex)
数据链路层功能
数据链路层处理过的数据称为帧
,并以其作为数据单位。
- 负责
结点-结点(node-to-node)
数据传输 - 组帧(Framing)
通常来说就是给数据“加头加尾”。“头尾”中含有差错检测等信息,但信息会依协议的不同而有所不同。 - 物理寻址(Physical addressing)
在帧头中增加发送端和/或接收端的物理地址标识数据帧的发送端和/或接收端。
在数据中添加源物理地址和目的物理地址是非常重要的,否则可能无法准确发送数据。例如广播通信(所有主机连接在同一条链路上):
- 流量控制(Flow control)
避免淹没接收端。 - 差错控制(Error control)
检测并重传损坏或丢失帧,并避免重复帧 。 - 访问(接入)控制(Access control)
在任一给定时刻决定哪个设备拥有链路(物理介质)控制使用权 。
网络层功能
在同一个网络里,凭数据链路层
的物理地址就可以传输数据,但如果要跨越多个网络进行数据传输则需要加上网络层
的地址。
- 路由(Routing)
- 路由器(或网关)互连网络,并路由分组至最终目的主机
- 路径选择
- 分组转发
其中红色英文字母代表网络层
地址,蓝色数字代表数据链路层
物理地址,经过这样的处理就可以进行跨网络
数据传输了。
1.5.4 OSI参考模型(3)
本节详细介绍4个端-端层
的功能。
传输层功能
负责源-目的(端-端) (进程间) 完整报文
传输 。
- 分段与重组
- SAP寻址 (Sideband Address Port 边带寻址端口)
确保将完整报文提交给正确进程,如端口号 。
- 连接控制
传输层的“连接”并非电路交换中的连接(如打电话计算机网络核心知识(上)相关推荐
- 计算机网络核心知识(中)
前言 转载请声明转载并标明本博客链接. (1) 毒性逆转 (2) 乒乓环路 (3) TOS (4) 网络前缀聚合 (5) 滑动窗口协议 上面的是还未搞明白的知识点. 文章目录 前言 5 网络层(上) ...
- 计算机网络核心知识之局域网、广域网、城域网(超细致)
目录 局域网 1.星形拓扑结构 2.总线型结构 3.环形拓扑结构 局域网介质访问技术 1. CSMA/CD 介质访问控制 2.Token Ring 介质访问方法 3. Token Bus 介质访向方法 ...
- 计算机网络核心知识(下)
文章目录 10 网络安全基本原理 10.1 网络安全基础 10.1.1 网络安全状况 10.1.2 网络安全基本概念 10.1.3 网络安全拟人模型 10.2 网络安全威胁 10.2.1 " ...
- java并发核心知识体系精讲_JAVA核心知识汇总
双非同学如何逆袭大厂? 在互联网行业,入行的第一份工作很大程度上决定了以后职业发展的高度.有些双非的同学认为自己校招进不了大厂以后还会有社招,这种想法很危险.大厂的社招,大多数都只招大厂的员工.什么意 ...
- 最容易理解的计算机网络 基础知识概论(下)
文章目录 1.计算机网络的分类 1.1按照传输介质分类 1.2按照网络的使用者进行分类 1.3按照网络的规模和作用范围进行分类. 2.计算机网络的性能指标 2.1 带宽 2.2 时延 2.2.1网络时 ...
- 网络通信学习笔记之——计算机网络基础知识
一.计算机网络基础知识 1.什么是计算机网络 把分布在不同地理位置的计算机与专门的网络设备用通信线路互相连成一个规模大.功能强的系统, 从而使众多计算机可以方便地互相传递信息.共享软件.硬件.数据 ...
- 【计算机网络】计算机网络核心知识点
文章目录 1.计算机网络分类 2.计算机网络的层次结构 3.层次结构设计的基本原则 4.网络层核心知识 5.传输层核心知识 6.MTU-MSS介绍 7.计算机网络的核心指标 8.ifconfig命令简 ...
- 计算机网络基础知识~简单易懂-有图有内容建议码友们点亮拇指+收藏呐~
计算机网络基础知识一 一. 因特网概述 1. 网络,互联网和因特网 2. 因特网发展的三个阶段 3. 因特网的标准化工作 4. 因特网的组成 二. 三种交换方式 1. 电路交换(Circuit Swi ...
- 就这一篇,计算机网络基础知识总结
如果说计算机把我们从工业时代带到了信息时代,那么计算机网络就可以说把我们带到了网络时代.随着使用计算机人数的不断增加,计算机也经历了一系列的发展,从大型通用计算机-超级计算机-小型机-个人电脑 -工作 ...
最新文章
- java-第十一章-类的无参方法-计算器运算
- (卓今京)Java 基础
- 5秒钟后自动跳转!!!!
- 模仿SDWebImage实现异步加载图片
- leetCode数据查询笔记(困难)
- linux系统用xset命令,专 linux命令之set x详解
- 谷歌地图插件Mapsed.js
- ES6学习笔记(五):轻松了解ES6的内置扩展对象
- Spring事务6连问
- 模拟串口收发数据Configure Virtual Serial Port Driver(VSPD)
- 笛卡尔树(知识总结+板子整理)
- [填坑] 解决 Ubuntu ssh 登录自动休眠问题
- 腾讯单点登录系统跨域劫持漏洞
- 黄金矿工java实现
- 华为推出打车平台 Petal,科技大厂再战聚合打车
- 机械硬盘通过USB外接到电脑,显示不出来
- AI大视觉(六) | 特征金字塔(FPN)如何进行特征融合?
- CSDN中如何插入数学公式
- SQL中的in、not in语句遇到null时的坑点
- 异常被 ”吃“ 掉导致事务无法回滚
热门文章
- 计算机网络核心知识(中)