计算机网络基本概念
网络的定义:利用通信线路将地理上分散的、具有独立功能的计算机系统和通信设备按不同的形式连接起来,以功能完善的网络软件实现资源共享和信息传递的复合系统。
网络的基本特征:
- 具有共享能力
- 各计算机自治(计算机自成系统)
- 网络协议支持(管理、控制和通信)
- 支持互操作功能
资源子网是由各计算机系统、终端控制器和终端设备、软件和可供共享的数据库等组成。其功能是负责全网面向应用的数据处理工作,向用户提供数据处理能力、数据存储能力、数据管理能力和数据输入输出能力以及其它数据资源。
网络资源:硬件资源、软件资源、数据资源。
资源共享:是指网络系统中的各计算机用户可以利用网内其他计算机系统中的全部或部分资源的过程。它是网络的主要功能之一。
通信子网是由通信硬件(通信设备和通信线路等)和通信软件组成,其功能是为网中用户共享各种网络资源提供必要的通信手段和通信服务。
通信子网类型:结合型、公用型、专用型
节点:就是由一条或多条通信线路连接的具有一定功能的设备。网络中的各主计算机、终端和通信设备等均可称为节点。网络节点有两类:访问节点和交换节点。
广域网(WAN):覆盖的范围大,如一个大城市、国家或洲际间建立的网络。
局域网(LAN):覆盖范围有限,属于一个部门或单位组建的小范围网络,是目前计算机网络发展中最活跃的分支。
城域网(MAN):是指建立在大城市、大都市区域的计算机网络,覆盖城市的大部分或全部地域。
互联网:一般把由多个网络相互连接构成的复合网络称为互联网。互联网是不同网络的相互连接,如局域网和广域网连接、两个局域网相互连接或多个局域网通过广域网连接。
虚拟局域网(VLAN)是指利用网络软件和网络交换技术将跨越不同地理位置的一个或多个物理网段上的相关用户组成的一个逻辑工作组(逻辑网络)。VLAN是依赖网络软件建立起的逻辑网络,相当部分的VLAN是临时性的。
虚拟专用网(VPN)是指依靠Internet服务提供者(ISP)和其他网络服务提供者(NSP)在公共网络中建立的专用的数据通信网络。VPN可使用户利用公共网的资源将分散在各地的机构动态地连接起来,进行数据低成本的安全传输,这样既节省长途电话费用支出,又不再需要专用线路。
主计算机(HOST):与其他主计算机联网后构成网络中的主要资源。主计算机的作用:
- 负责网络中的数据处理
- 执行网络协议
- 网络控制和管理
- 维护共享数据库
终端:用户访问网络的设备。终端的主要功能:
- [x] 把用户输入的信息转变为适合传送的信息送到网络上
- [x] 把网络上其他节点输出并经过通信线路接收的数据转变为用户所能识别的信息
通信控制处理机(CCP):也称通信控制器,在某些网络中也叫前端处理机(FEP)、接口信息处理机(IMP)等。
CCP主要作用:承担通信控制和管理工作,减轻主机负担。
通信控制处理机是一种在计算机网络系统中执行通信控制与处理功能的专用计算机,通常由小型机或微型机担任。
调制解调器(MODEM):一种数据传输和信号转换设备。借助于调制解调器,就可以进行远距离通信,便于实现多路复用。
多路复用器:具有多路复用功能。
利用多路复用器可以实现在一条物理链路上同时传输多路信号,提高信道利用率。
集中器:用于在终端密集的地方,可以节省通信链路,提高线路利用率。集中器可由微型计算机或单片机担任。
网络连接设备有:中继器、集线器及各种线路连接器等。
网络互联设备有:网桥、路由器、交换机和网关等。
网络操作系统(NOS)的主要作用:除了具有常规操作系统的功能外,还应有网络通信管理功能、网络范围内的资源管理功能和网络服务等。
网络协议软件(Protocol):网络协议软件是网络软件中最重要、最核心的部分。它是计算机网络中各部分通信所必须遵守的规则集合。
计算机网络的特点:
- 可靠性:当网内某子系统出现故障时,可由网内其他子系统代为处理,网络环境提供了高度的可靠性。
- 独立性:网络系统中各相连的计算机系统是相对独立的,它们各自既相互联系又相互独立。
- 高效率性:网络信息传递迅速,系统实时性强。网络系统可把一个大型复杂的任务分给几台计算机去处理,从而提高工作效率。
- 易扩充性:可以灵活地在网络中接入新的节点,如远程终端系统等,达到扩充网络系统功能的目的。
- 廉价性
- 透明性:网络用户所关心的是如何利用网络高效而可靠地完成自己的任务,而不去考虑网络所涉及的技术和具体工作过程。
- 易操作性
计算机网络的分类:
- [x] 按照覆盖范围划分:广域网、局域网、城域网
- [x] 按照逻辑功能划分:资源子网、通信子网
- [x] 按照传输介质划分:有线网、无线网
- [x] 按照拓扑结构划分:星型网、总线型网、环形网、树形网、网型网
- [x] 按照传输介质种类划分:双绞线网、同轴电缆网、光纤网、卫星网、微波网
- [x] 按照应用范围和管理性质划分:公用网和专用网
- [x] 按照交换方式划分:电路交换网、分组交换网、ATM交换网等
- [x] 按照连接方式划分:全连通式网络、交换式网络、广播式网络
网络体系结构是针对计算机网络所执行的各种功能而设计出的一种层次结构模型。
网络协议组成的三要素:
- 语义:规定了通信双方要发出的控制信息、执行的动作和返回的应答等。
- 语法:规定通信双方彼此应该如何操作,即确定协议元素的形式。
- 时序:(也称定时、同步)是对事件实现顺序的详细说明,指出事件的顺序和速率匹配等,
OSI七层模型:
物理层:物理介质为数据链路层提供传输比特流的一个物理连接
主要任务:为通信双方的数据传输提供物理连接,并在物理连接上透明地传输比特流。传输单位是位(比特)。
数据链路层:检测并校正物理层传输介质上产生的传输差错,使两系统之间构成一条无差错的链路。
网络层:通信子网的最高层,用于控制和管理通信子网的操作。它体现了网络应用环境中资源子网访问通信子网的方式。网络层的数据传输单位是数据分组(包)。
主要任务:在数据链路服务的基础上,实现整个通信子网内的连接,向传输层提供端到端的数据传输链路,为报文分组以最佳路径通过通信子网到达目的主机提供服务。
传输层:OSI中1-3层面向数据通信,是由通信子网所完成的通信功能的集合,通信子网就是基于低三层通信协议构成的网络。5-7层是由端主机进程所完成的面向应用功能的集合。传输层是OSI中高层与低层之间的接口层。
对于网络中通信的两个主机,其端到端的可靠通信最后要靠传输层来完成。传输层是OSI中负责通信的最高层,是唯一总体负责数据传输和控制的层次。传输层还是OSI中用户功能的最低层。
会话层:利用传输层提供的端到端服务,向表示层提供它的增值服务。这种服务主要是向表示层实体或用户进程提供建立连接并在连接上有序地传输数据。
表示层:
应用层
协议是计算机网络有序运行的重要保证。
硬件(主机、路由器、通信链路等)是计算机网络的基础。
计算机网络中的数据交换必须遵守约定好的规则。
网络协议(network protocol),简称协议,是为进行网络中的数据交换而建立的规则、标准或约定。
协议规定了通信实体之间所交换的消息的格式、意义、顺序以及针对收到信息或发生的事件所采取的”动作”(actions).
协议的三要素:
- 语法(syntax)
- 数据与控制信息的结构或格式
- 信号电平
- 语义(semantics)
- 需要发出何种控制信息
- 完成何种动作以及做出何种响应
- 差错控制
- 时序(timing)
- 事件顺序
- 速度匹配
协议规范了网络中所有信息发送和接收过程。
网络应用体系结构
C/S结构、P2P结构、混合结构
客户机/服务器结构
服务器:
- 7*24小时提供服务
- 永久性访问地址/域名
- 利用大量服务器实现可扩展性
客户机:
- 与服务器通信,使用服务器提供的服务
- 间歇性接入网络
- 可能使用动态IP地址
- 不会与其他客户机直接通信
服务器上运行web服务器软件,客户机上运行浏览器软件
P2P结构
没有永远在线的服务器
任意端系统/节点之间可以直接通讯
节点间歇性接入网络
节点可能改变IP地址
优点:高度可伸缩
缺点:难于管理
混合结构
Napster
网络应用的基础:进程间通信
进程:主机上运行的程序
同一主机上运行的进程之间如何通信?
- 进程间通信机制
- 操作系统提供
不同主机上运行的进程之间如何通信?
- 消息交换
客户机进程:发起通信的进程
服务器进程:等待通信请求的进程
不同主机之间进程的通信依靠套接字。这是操作系统提供的一种抽象接口,使其与网络硬件基础设施进行交互。例如寄信,你只需要把信件放在自己门外的信箱里,信箱就像是socket,邮政部门就是传输基础设施,负责将信件传送到接收方的信箱中,即接收方的socket。
传输基础设施向进程提供API:传输协议的选择、参数的设置
socket是操作系统提供的关于网络的API
如何寻址进程?
不同主机上进程间通信,那么每个进程必须拥有标识符
寻址主机——IP地址
寻址进程——端口号
为主机上每个需要通信的进程分配一个端口号:
HTTP Server:80
Mail Server:25
mac查看端口占用:sudo lsof -i tcp:port
例如sudo lsof -i tcp:80
于是,进程的标识符就是:IP地址+端口号
协议 | 本机IP:port | 外部IP:port | 状态 |
---|---|---|---|
TCP | 192.168.0.100:49225 | 202.108.23.105:5287 | ESTABLISHED |
应用层协议:
网络应用需遵循应用层协议
公开协议:
由RFC(Request For Comments)定义
允许互操作
HTTP, SMTP, …
私有协议:
多数P2P的文件共享应用
应用层协议的内容
消息的类型(type):请求消息、响应消息
消息的语法(syntax)/格式:消息中有哪些字段(field)? 每个字段如何描述
字段的语义(semantics):字段中信息的含义
规则(rules):进程何时发送/响应消息、进程如何发送/响应消息
设计一个网络应用时,要么使用现有的网络协议,要么设计一个新的协议
网络应用的需求与传输层服务
网络应用对传输服务的需求:
- 数据丢失(data loss)/可靠性(reliability)
- 时间(timing)/延迟(delay)
- 带宽(bandwidth)
Internet提供的传输服务
TCP服务:
- 面向连接:客户机/服务器进程间需要建立连接
- 可靠的传输
- 流量控制:发送方的发送速度不会过快,以至于超过接收方的处理能力
- 拥塞控制:当网络负载过重时,能够限制发送方的发送速度
- 不提供时间/延迟保障
- 不提供最小带宽保障
UDP服务:
- 不面向连接
- 不可靠传输
- 不提供可靠性保障、流量控制、拥塞控制、延迟保障、带宽保障
web与HTTP
World Wide Web: 网页互相链接
网页包含多个对象
对象的寻址:URL(Uniform Resource Locator): 统一资源定位器 RFC1738
Scheme://host:port/path
www.someschool.edu/someDept/pic.gif
www.someschool.edu是host name, someDept/pic.gif是path name.
web遵守的应用层协议:HTTP
超文本传输协议(HyperText Transfer Protocol)
HTTP使用TCP传输服务:
- 服务器在80端口等待客户的请求
- 浏览器发起到服务器的TCP连接(创建socket)
- 服务器接受来自浏览器的TCP连接
- 浏览器(HTTP客户端)与web服务器(HTTP服务器)交换HTTP信息
- 关闭TCP连接
HTTP是一个无状态的协议(stateless):服务器不维护任何有关客户端过去所发送请求的信息。
HTTP连接的两种类型
非持久性连接(Nonpersistent HTTP)
每个TCP连接最多允许传输一个对象
HTTP 1.0版本使用非持久性连接
持久性连接(Persistent HTTP)
每个TCP连接允许传输多个对象
HTTP 1.1版本默认使用非持久性连接
socket编程——应用编程接口(Application Programming Interface, API)——位于应用层和传输层之间
socket将应用层的数据交给传输层
应用编程接口API就是应用进程的控制权和操作系统的控制权进行转换的一个系统调用接口。
标识一个套接字(对外):IP地址+端口号
操作系统/进程如何管理套接字(对内)?
- 套接字描述符(socket descriptor)
即,操作系统在管理其内部创建的socket套接字的时候,使用套接字描述符来标识的
socket抽象类似于文件的抽象,在UNIX中,套接字就是一种特殊的文件(一切皆文件!)
当应用进程创建套接字时,操作系统分配一个数据结构存储该套接字相关信息。
- 最后返回的是套接字描述符。
本文作者 : preccrep
原文链接 : https://preccrep.github.io/2021/02/23/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C%E5%9F%BA%E6%9C%AC%E6%A6%82%E5%BF%B5/
版权声明 : 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!