网络上任何一台计算机在任意时刻都充当两个基本的角色之一:客户机或服务器。服务器是在网络上共享其资源的计算机,而客户机是访问共享资源的计算机。这一模型称为客户机/服务器模型(C/S模型),其方式为:客户机请求信息,服务器通过提供请求的信息来对这类请求做出响应。
为了成功地进行通信,计算机必须共享对公共网络介质的接入。
常见的物理介质有:
无线联网时常用的介质有:
为了接入任何一个网络,计算机必须使用某种物理接口连接到网络介质,这就是网络接口卡(Network Interface Card,NIC),又称网络适配器。网络接口卡执行两个重大任务:1)建立和管理计算机的网络连接;2)对于输出消息来说,将数字形式的数据转换成信号,并且对于输入消息来说,将信号转换为数字数据。
要使网络上的两台计算机能够成功地相互通信,他们必须共同遵守过于如何通信的一组规则。这类规则包括如何解释信号、如何识别网络上的计算机、如何发起和结束联网通信以及如何管理网络介质上的信息交换。这种共同遵守的规则就是网络协议,简称协议。例如:TCP/IP、NetBEUI、IPX/SPX等。
网络协议的三要素如下:
语义:用于解释比特流的每一部分的意义。
语法:语法是用户数据与控制信息的结构与格式,以及数据出现顺序的意义。
时序:事件实现顺序的详细说明。
当一组协议协同工作时,称为协议栈或协议包,最常见的协议栈是TCP/IP。
计算机需要网络软件发出让它们充当客户机或服务器的请求和响应。在许多联网环境中,计算机调用一个代码层,有时称为网络操作系统(Net Operating System,NOS),由这个代码层控制哪些计算机和用户可以访问网络资源。目前,常见的网络操作系统包括Microsoft操作系统系列、Linux操作系统系列等。
操作系统(OS)指导计算机硬件组成的活动。操作系统控制内存、CPU、存储设备和外围设备。
多任务是大部分网络操作系统使用的一个技术,目的是利用硬件配置的大部分功能。多任务是指OS能够支持多个进程。
网络存在的真正原因是为用户提供服务,而这类服务主要驻留在单独的计算机或服务器上。例如:在NOS上提供文件共享、打印服务;协议提供文件共享、电子邮件服务;Web服务器为哪些请求网络服务的网络用户提供服务。
背景:
世界上第一个网络体系结构是由IBM公司在1974年提出的SNA(System Network Architecture),中文译名为系统网络体系结构。SNA的缺点是若采用IBM的网络体系,就只能选用IBM的产品,不同体系的网络结构之间是无法进行互联通信的。
因此,国际标准化组织ISO于1977年成立委员会,提出了不基于具体机型、操作系统或公司的网络体系结构OSI(Open System Interconnection),称为开放系统互联模型。
OSI上三层的任务是数据处理(称为资源子网),下三层的任务是数据通信(称为通信子网),而中间的传输层是通信子网和资源子网的接口,起到承上启下的作用。
在OSI参考模型中,传输系统沿着协议栈向下传递数据时,在协议栈的每一层都将建立协议数据单元(Protocol Data Unit,PDU)。在协议栈的每一层上,软件在PDU上添加了它自己的特殊格式,这个添加到PDU上的特殊格式或地址称为报头,添加这个报头的过程称为封装。
接收系统通过协议栈自下而上传送这些分组,并在协议栈的每一层分离出PDU中的相关信息。分组从PDU剥离它的特定信息(报头),并且将PDU传递到下一个高层。从PDU剥离报头的过程称为解封装。
每一层的PDU的称谓:
OSI参考模型对应层 | PDU对应称谓 |
---|---|
物理层 | 数据位(bit) |
数据链路层 | 数据帧(frame) |
网络层 | 数据包(packet) |
传输层 | 数据段(segment) |
其他更高层 | 数据(data) |
限制为一个计算机集合、一条或多条电缆以及其他的外围设备的小型网络,被称为局域网(Local Area Network,LAN)。LAN是构建较大型网络(称为互联网络)的基本模块。
当网络范围扩展到包含多个地理位置的多个用户组时,LAN可以扩展为广域网(Wide Area Network,WAN)。
介绍:
应用层是OSI参考模型的最高层,它是计算机用户、以及各种应用程序和网络间的接口。其主要功能是直接向用户提供服务,完成用户希望在网络上完成的各种工作。
应用层为用户提供的服务和协议有:文件服务、目录服务、文件传输服务(FTP)、远程登录服务(Telnet)、电子邮件服务(E-mail)、打印服务等。
主要功能:
主要协议:
介绍:
表示层是OSI模型的第六层,它对来自应用层的命令和数据进行解释,对各种语法赋予相应的含义,并按照一定的格式传送给会话层。
主要功能:
常见的认证标准:
常见的加密标准:
认证与加密相结合:
介绍:
会话层是OSI模型的第五层,是用户应用程序和网络之间的接口,主要任务是向两个实体的表示层提供建立和使用连接的方法。将不同实体之间的表示层连接称为会话。因此会话层的任务就是创建、管理和终止会话。
当建立对话时,用户必须提供他们想要连接的远程地址(此地址不同于逻辑地址和物理地址),是为用户专门设计的,例如域名(Domain Name)就是一种网络上使用的远程地址。
主要功能:
域名解析系统(DNS,Domain Name System)可以把IP名字转换成IP地址。
DNS解析原理如下:
浏览器会检查缓存中有没有这域名对应的解析过的IP地址,如果缓存中有,这个解析过程就将结束。
如果过程1中浏览器缓存中没有域名对应的ip,则从操作系统本身去做域名解析,我们在windows中的host文件可以设置特定域名映射到特定ip。
C:\Windows\System32\drivers\etc\hosts
3.**向本地域名解析服务器(LDNS)发起域名解析请求。**上述步骤的1、2都是在本机中完成的域名解析,如果经过1、2步骤都没有完成域名的解析,则需要向LDNS发起域名解析。
4.**向根域名解析服务器(RDNS)发起域名解析的请求。**当步骤3中没有完成域名的解析,则需要向RDNS发起域名解析的请求。
5.根域名服务器返回通用顶级域名解析服务器(gTDL)地址
LDNS向根域名服务器发起请求,根域名服务器返回的是所查询的通用顶级域名(Generic top-level-domain, gTLD)地址,常见的通用顶级域名有.com、.org、.edu。
6.本地域名服务器向gTLD发起解析域名请求。
7.gTLD服务器接收请求并返回注册的域名服务器(Name Server服务器)
当gTLD服务器接收到本地域名服务器发起的请求后,并根据需要解析的域名,找到该域名对应的Name Server 服务器,通常情况下,这个Name Server服务器就是你注册的域名服务器,那么你注册的域名的服务上的服务器将承担起域名解析的任务。
8.本地域名服务器向Name Server服务器发起域名解析请求。
9.Name Server服务器会查询存储的域名和IP的映射关系表,然后返回该域名对应的ip和TTL给本地域名服务器,本地域名服务器进行缓存这个域名和ip的对应关系,缓存时间由TTL决定。
10.本地域名服务器返回查询域名对应的ip给用户(浏览器),浏览器进行缓存,缓存时间由TTL决定。
常见的域名类别:
域名 | 类别 |
---|---|
.com | 商业组织 |
.mil | 军队组织 |
.edu | 教育机构 |
.net | 网络服务提供商 |
.gov | 政府组织 |
.org | 其他组织,通常是非营利性的 |
主要协议:
介绍:
传输层位于OSI模型的第四层,该层是通信子网和资源子网的接口,起到承上启下的作用。
传输层提供会话层和网络层之间的传输服务,这种服务从会话层中获得数据,并在必要时,对数据进行分割。然后,传输层将数据传递到网络层,并确保数据能够正确无误地传送到网络层。
传输层负责提供两节点之间数据的可靠传送,当两节点的联系确定后,传输层负责监督工作。
主要功能:
传输控制协议(Transmission Control Protocol,TCP)规定了TCP/IP如何面向连接的通信。
用户数据报协议(User Datagram Protocol,UDP),使用UDP协议的应用程序的一个最好例子是动态主机配置协议(Dynamic Host Configuration Protocol,DHCP)。DHCP无法认定在会话的另一端存在一个等待会话的计算机,因此DHCP会话的每个步骤只是发送与这个步骤有关的信息,不需要对方确认。
普通文件传输协议(Trivial File Transfer Protocol,TFTP)是基于UDP协议的。但是基于UDP协议的TFTP协议没有任何的数据保护,因此千万不要在Internet中的两台计算机之间使用TFTP传输文件。TFTP广泛应用于同一个局域网中计算机之间的文件传输。
网际控制报文协议(Internet Control Message Protocol,ICMP)。用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。
在PING命令中,可以看到ICMP的作用。PING命令是一个ICMP应用程序,它向命令中指定的IP地址发送一个ICMP数据包,要求对方响应此请求。
Internet组管理协议(Internet Group Management Protocol,IGMP)是另一个很少见但非常重要的传输层协议。多播的一个主要问题就是确定哪些计算机想接收多播消息,哪些不想接收多播消息。IGMP就相当于粘合剂,路由器用它与主机通信来确定成员身份。
端口号划分如下:
端口号范围 | 类型 |
---|---|
0-1023 | 知名端口号 |
1024-49151 | 注册端口号 |
49152-65535 | 动态或专用端口号 |
常见知名端口号如下:
端口号 | 用途 |
---|---|
20(数据)/21(连接)端口 | FTP文件传输服务 |
22端口 | SSH远程连接服务 |
23端口 | TELNET终端仿真服务 |
25端口 | SMTP简单邮件传输服务 |
53端口 | DNS域名解析服务 |
80端口 | HTTP超文本传输服务 |
443端口 | HTTPS加密的超文本传输服务 |
69端口 | 基于UDP的TFTP文件传输服务 |
可以通过netstat -ano
来查看一台计算机开启的端口号。
分析上图第一行端口的内容:
协议 | 本地地址 | 外部地址 | 状态 | PID |
---|---|---|---|---|
TCP | 0.0.0.0:21 | 0.0.0.0:0 | LISTENING | 4608 |
本地地址
指本地IP地址及其正在使用的端口号
外部地址
指连接某个端口的远程主机的IP地址和端口号
可以通过状态
来确定该端口的连接状态。有如下常见参数值:
可以通过PID
来确定程序名。
介绍:
网络层是OSI模型的第三层,它是OSI参考模型中最复杂的一层,也是通信子网的最高一层。它在下两层的基础上向资源子网提供服务。路由器工作在这一层。
主要功能:
工作在网络层的协议栈称为可路由选择的协议,而不包含网络层的协议栈称为不可路由选择的协议。TCP/IP协议栈就是典型的可路由选择协议。
TCP/IP协议栈中包含于网络层的子协议有:
(无特殊说明,以下IP地址均指IPv4)
IP负责TCP/IP环境中的寻址和路由选择。IP地址由32比特(4字节)组成,从0到255的十进制数字代表一个字节。IP地址分为两个部分——网络部分和主机部分。
IP地址可以分为以下几类:
我们可以在cmd命令行中输入ping 域名
或nslookup 域名
查看一个域名的IP地址:
同时,我们可以在cmd命令行中输入tracert 域名
来追踪IP地址:
IP使用地址的子网掩码确定哪一部分地址代表网络部分,并且哪一部分代表主机。子网掩码也是一个32位的数字,并且总是在分配IP地址的时候分配给主机。二进制1
表示IP地址中的对应比特属于IP地址的网络部分,二进制0
表示IP地址中的对应比特属于IP地址的主机部分。
默认的A类子网掩码是255.0.0.0,默认的B类子网掩码是255.255.0.0,默认的C类子网掩码是255.255.255.0。
按类寻址现已被放弃,因为会造成主机地址的浪费。为了跟有效地使用所有的可用地址,引入了一个新的寻址机制——无分类域间路由选择(CIDR,Classless Inter-Domain Routing)。CIDR允许在距地址开始处的任意特定位数划分网络和主机的界线。
网络地址转换(NAT,Network Address Translation)允许计算机在连接到Internet的时候使用私有IP地址。NAT解决了Internet上IP寻址的问题,保护了通过路由器连接的计算机,同时也节约了IP地址资源。
路由器属于网际设备,是应用于不同网段或不同网络间的设备。
每一个路由器中都保存有一个路由表,路由表为路由器存储到达网络上任何一个目的地所需要的一切必要的信息。
Destination | Next-Hop | Netwask | Flags | Interface |
---|---|---|---|---|
202.112.10.0 | * | 255.255.255.224 | U | eth0 |
default | 202.112.10.1 | 0.0.0.0 | UG | eth0 |
上表中的参数说明:
路由器中常见的参数:
介绍:
数据链路层是OSI参考模型的第二层。将计算机连接到网络需要在计算机和联网介质之间有一个物理接口,那就是数据链路层。
一般数据链路层是解决同一网络内节点之间的通信,而网络层主要解决不同子网间的通信。
数据链路层的具体工作是接收来自物理层的位流形式的数据,并封装成帧,传送到上一层;同样,也将上一层的数据帧拆装为位流形式的数据转发到物理层。
该层通常又被分为介质访问控制(MAC)和逻辑链路控制(LLC)两个子层。
MAC子层的主要功能:
LLC子层的主要功能:
网络接口卡(NIC):将计算机连接到网络需要在计算机和联网介质之间有一个物理接口,这个接口在特殊的网络接口卡(NIC)中(也称为网络适配器或网卡),网卡插入计算机机箱的适配器插槽中。其主要功能包括:数据转换、数据缓存、通信服务。
任何一个NIC上的地址都称为MAC地址。这些地址的形式是:用冒号隔开的6个两位的16进制数字。前3组数字标识制造商,后3组数字定义来为NIC分配的唯一地址。我们可以通过cmd命令行中的ipconfig /all
来查看MAC地址(物理地址):
计算机通信通常包含长消息。因为网络不能很好地处理大块数据,所以它们将数据重新格式化为较小的更容易管理的部分,称为分组或帧。网络因为如下两个原因将数据分为小的部分:
在网络上发送的大数据单元会使这个网络饱和,从而妨碍有效通信。
网络不可靠。如果在大量数据传输期间出现错误,那么所有数据都必须重新发送。
所有的分组都有3个基本部分:
报头:包含分组的源地址和目的地址、指示数据传输的警报信号以及同步传输的时钟信息 |
---|
数据:由实际发送的数据组成 |
报尾:包含验证分组内容的有效性的信息。这通常包含循环冗余校验(CRC)值 |
当两台计算机同时发送数据时,可能会出现数据碰撞,从而破坏这两个数据。除了将数据重新分成分组之外,计算机还必须有一种方式来确保它发送的数据没有被破坏——信道。
OSI模型中数据链路层的介质访问控制(MAC)子层处理信道接入。有5种主要的信道接入方法:
接入方法 | 解释 |
---|---|
竞争 | 计算机在它们有数据要发送的时候就发送数据 |
交换 | 当网络通过一个称为交换机的特殊设备互连各个节点时,由交换机本身控制介质的接入 |
令牌传递 | 称为令牌的一个特殊分组顺序地将一台计算机传递到另一台计算机。只有控制令牌的计算机才能发送数据 |
请求优先级 | 只能集线器控制网络的接入。集线器以循环方式搜索所有的连接,当计算机有数据要发送时,它给集线器发送一个请求信号 |
轮询 | 中央控制器询问网络上的每台计算机是否有数据要发送,如果有,计算机可以发送,然后轮到下一台计算机 |
介绍:
所有网络都必须提供一种方法,从而将数据从一个系统传送到另一个系统。要传递数据,就需要建立物理通道。物理层定义了计算机之间数据的传输方法,是创建物理网络连接的地方。
主要功能:
总线型拓扑结构:总线型拓扑结构的所有组件都是通过主干连接的,这条主干是互连直线上所有计算机的单根电缆。这种结构是最简单的。但是,这个固有的简单性是个弱点:单根电缆断裂可能会使整个网络中断。
细缆是总线型拓扑结构中最常见的电缆类型。
星型拓扑结构:由电缆连接到中心集线器的计算机。当计算机发送信号时,集线器接收信号并沿着每段电缆将它转发给其他所有的计算机或者连接到集线器的其他设备。星型拓扑结构的一个优点是资源的集中化。另外,如果一台计算机发生故障,不回影响网络的其他部分。
环形拓扑结构:当每台计算机直接连接到下一台计算机时,形成的一圈电缆构成了环型拓扑结构。
中继器:沿着线缆传输的信号会衰弱,并且会由于衰减而失真。如果线缆足够长,那么信号最终将衰弱得无法到达目的地。中继器可以再生信号,并且能够扩展网络的覆盖范围。中继器的功能是接收信号、消除它的噪声、再生它并且继续沿线路发送它,有效地将网络长度加倍。
集线器:集线器是星型网络的中心,分为两类:有源和无源。集线器的主要功能是对接收到的信号进行再生整形放大,以扩大网络的传输距离,同时把所有节点集中在以它为中心的节点上。
中继器和集线器的区别:
OSI参考模型中每一层的特点:
OSI参考模型中的各层 | 功能 | PDU | 网络组件 |
---|---|---|---|
应用层 | 将信息从程序传递到程序 | 数据(data) | 文件传输协议(FTP)、超文本传输协议(HTTP) 和客户端软件的组件 |
表示层 | 处理文本格式化和显示代码转换 | 数据(data) | 数据转换、协议转换、数据加密或加密、字符集问题和图形命令以及重定向器 |
会话层 | 建立、维护和协调通信 | 数据(data) | 名称查询以及用户登录和注销,域名系统(DNS)和NetBIOS名称解析 |
传输层 | 确保数据传递的准确性 | 分段(segment) | TCP/IP协议包的TCP部分以及IPX/SPX协议包的SPX部分 |
网络层 | 确定传输路由以及处理消息的传递 | 分组或数据包(packet) | 软件组件包括TCP/IP的IP组件和IPX/SPX的IPX组件、路由器以及高级交换机 |
数据链路层 | 编码、寻址和传输信息 | 数据帧(frame) | 软件组件是NIC驱动程序,硬件组件包括NIC和交换机 |
物理层 | 管理硬件连接以及处理信息的发送和接收 | 数据位(bit) | 介质上使用的所有电缆和连接器、中继器以及集线器 |
背景:
Internet的前身叫做ARPANET,阿帕网当时使用的是网络控制协议(Network Control Protocol, NCP)。NCP的缺点是仅能用于同构环境中(同构环境是网络上的所有计算机都运行相同的操作系统)。
因此,在1980年,用于“异构”环境的网络环境中的TCP/IP协议研制成功。后来,互联网通信的各类协议(HTTP、IP、DNS、TCP、ARP)整体都被纳入这一协议体系中,被统称为“TCP/IP协议族”。
介绍:
TCP/IP协议栈是一系列网络协议的总和,它定义了电子设备如何接入互联网、以及数据间如何传输。TCP/IP协议采用4层结构:应用层、传输层、互联网络层和网络接口层。
介绍:
以太网规定一组电信号就是一个数据包,一个数据包被称为一帧,制定这个规则的协议就是以太网协议。
一个完整的以太网数据包如下:
首部(14个字节) | 数据(46 —— 1500个字节) | 尾部(4个字节) |
---|
MAC地址拓展:
MAC地址是每块网卡的身份标识,具有全球唯一性。MAC地址采用十六进制标识,共6个字节,前三个标识厂商编号,后三个表示网卡流水号。
以太网(ethernet ),可以理解为是一个局域网,局域网的标准我们称为以太网标准,以太网标准汇总定义了通信的地址和通信机制。
mac地址表示方法:
十六进制,总长度是48个bit,一般通过:进行分割,分割乘六个部分,其中前三个部分(24位)表示的是厂商号码,后三个部分(24位)是厂商分配的。
下图为在MAC地址中通信的原理:
介绍:
网络层引入三个协议,分别是IP协议、ARP协议和路由协议。
疑问:
发送者如何判断接收者和自己属于同一子网内?
为解决这一问题,我们引入了IP协议,区分两台主机是否同属于一个网络。
IP地址目前有两个版本,分别是IPv4和IPv6。
疑问:
发送者如何知道接收者的MAC地址?
为了解决这一问题,我们引入了ARP协议,即地址解析协议。
下图为ARP的工作原理图:
其工作原理如下:
ARP首先会发起一个请求数据包,数据包的首部包含了目标主机的IP地址
然后这个数据包会在链路层进行再次包装,生成以太数据包,最终由以太网广播给子网内的所有子机,广播IP地址为255.255.255.255
每一台主机都会接收到这个数据包,并取出标头里的IP地址,然后和自己的IP地址进行比较,如果相同就返回自己的MAC地址,如果不同就丢弃该数据包
ARP接收返回消息,以此确定目标机的MAC地址
在Windows系统下,我们在cmd输入arp -a
就可以查询本机缓存的ARP数据。
疑问:
如果接收者和自己不在同一子网内,数据包将如何发给对方?
为了解决这一问题,我们引入路由协议。其工作原理如下:
介绍:
在网络层被包装的数据叫做IP数据包。IP数据包由首部和数据两部分组成。
首部长度为20个字节,主要包含了目标IP地址和源IP地址,目标IP地址是网关路由的线索和依据;数据部分的最大长度为65515字节。
理论上一个IP数据包的总长度可以达到65535个字节,而以太网数据包的最大长度为1500个字节,如果超过这个大小,就会对IP数据包进行分割,分成多帧发送。
首部(20个字节) | 数据(最大65515个字节) |
---|
背景:
链路层定义了主机的身份,即MAC地址;而网络层定义了IP地址,明确了主机所在的网段,有了这两个地址,数据包就可以从一个主机发送到另一个主机上。
但实际上数据包是从一个主机的某个应用程序发出,然后由对方主机的应用程序接收。而每台电脑都有可能同时运行着多个应用程序,所以当数据包被发送到主机上以后,是无法确定哪个应用程序要接收这个包的。
因此传输层引入了UDP协议来解决这个问题。UDP协议给每个应用程序表示身份,定义了端口。这样,当数据包到达主机以后,就可以根据端口号找到对应的程序了。UDP定义的数据包就叫做UDP数据包。
UDP数据包结构如下:
首部(8个字节) | 数据(最大65527个字节) |
---|
UDP协议介绍:
UDP协议比较简单,实现容易,但它没有确认机制,数据包一旦发出,无法知道对方是否收到。
理论上讲,有了以上三层协议的支持,数据已经可以从一个主机上的应用程序传输到另一台主机的应用程序了,但此时传过来的数据是字节流,不能很好的被程序识别,操作性差。因此,应用层定义了各种各样的协议来规范数据格式,常见的有 HTTP、FTP、SMTP 等。
主要功能:
数据的封装:
数据的解封装与数据的封装相反,这里不再一一赘述。
端口号:
端口号是传输层的概念,用来表示应用层使用的是哪种服务或应用。
协议号:
协议号是网络层的概念,用来表示上层传输层使用的是哪种协议,比如协议号6表示传输层使用的是TCP协议,协议号17表示传输层使用的是UDP协议。
端口号的范围:0-65535
端口号的划分:
0-1024
为知名端口,一般开放在服务器上面
常用的知名端口:
1025-65535
为高端口,出现在客户端设备上面,一般是随机的
数据的解封装与数据的封装相反,这里不再一一赘述。
端口号:
端口号是传输层的概念,用来表示应用层使用的是哪种服务或应用。
协议号:
协议号是网络层的概念,用来表示上层传输层使用的是哪种协议,比如协议号6表示传输层使用的是TCP协议,协议号17表示传输层使用的是UDP协议。
端口号的范围:0-65535
端口号的划分:
0-1024
为知名端口,一般开放在服务器上面
常用的知名端口:
1025-65535
为高端口,出现在客户端设备上面,一般是随机的
主要参考书籍:《计算机网络技术》 清华大学出版社 陕华 薛芳 著