计算机网络的知识与我们的生活息息相关,对于每一个开发者来说更是十分重要,深入理解它,将有助于我们在实际工作中迅速解决相关问题。本篇就计算机网络的基本知识进行概要性总结。
目录:
1.计算机网络常识
2.网络参考模型OSI与TCP/IP
3.理解数据封装传递过程
4.三次握手与四次挥手
5.理解IP地址
6.子网掩码
7.端口的作用
8.TCP与UDP
9.DNS的作用
10.网关
一、计算机网络常识
计算机网络指将地理位置不同的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。
根据不同的方式,计算机网络可以分类如下:
1.理解网络节点
局域网(LAN):局域网是一种在小区域内使用的,由多台计算机组成的网络,覆盖范围通常局限在10 千米范围之内,属于一个单位或部门组建的小范围网。
城域网(MAN):城域网是作用范围在广域网与局域网之间的网络,其网络覆盖范围通常可以延伸到整个城市,借助通信光纤将多个局域网联通公用城市网络形成大型网络,使得不仅局域网内的资源可以共享,局域网之间的资源也可以共享。
广域网(WAN): 广城网是一种远程网,涉及长距离的通信,覆盖范围可以是个国家或多个国家,甚至整个世界。由于广域网地理上的距离可以超过几千千米,所以信息衰减非常严重,这种网络一般要租用专线,通过接口信息处理协议和线路连接起来,构成网状结构,解决寻径问题。
2.理解网络交换
线路交换:
线路交换是相对于分组交换的一个概念。电路交换要求在通信前首先建立连接通道,这个连接通道用于双方通信,并且一直维持到双方通信结束。整个通信过程始终占用通道、带宽、码字等资源。
优点:数据传输可靠、有序;
缺点:带宽固定,沿着一条链路通信,网络资源利用低,初始化连接建立慢;
报文交换:
报文交换是分组交换的前身,它的原理是:存储接收到的报文,判断其目标地址以选择路由,最后,在下一路由空闲时,将数据转发给下一路由。
优点:高效、灵活、迅速、可靠;
缺点:延时时间长且不定,通信不可靠,不适合计算机网络;
分组交换:
分组交换是将资料组合成适当大小的区块,称为封包,再通过网络来传输。这个传送封包的网络是共享的,每个单位都可以独立把封包再传送出去,而且配置自己需要的资源。
优点:多路复用,网络利用率高,
缺点:延迟大,实时性差,设备功能复杂
3.理解网络拓扑结构
计算机网络拓扑(Computer Network Topology)是指由计算机组成的网络,其中设备的分布情况以及连接状态,把它们画在图上就成了拓朴图,常见的拓扑结构如下:
- 总线型:
优点:成本低,易于扩展;
缺点:可靠性不高,维护困难,传输效率低;
总线两端需要安装终端器或者接地。不然电信号传递到总线两端,由于介质不同,电信号反方向反弹就会造成网络不稳定。 - 星型:
优点:易于扩展;
缺点:线路利用率低;
星型拓扑最常见的应用场景就是交换机 - 树型:
优点:易于扩展;方便从某一个分支节点隔离故障;
缺点:节点对于根的依赖太大,若根发生故障,则全网不能工作;类似于星型拓扑结构 - 环形网络:
优点:成本低;
缺点:维护困难,如果环状网络上设备较多,会造成延迟; - 全网状和部分网状:
优点:可靠性高,易于扩充,组网灵活;由于存在冗余线,其中一条网络断开,还有备用网络来实现通信;
缺点:成本高,结构复杂,维护困难
注意:生活中的计算机连接方式是将上面两种或多种共同使用,这样的方式称混合式拓扑结构。
4.衡量计算机网络的主要指标
速率:
速率是指计算机网络中的主机在数字信道上,单位时间内从一端传送到另一端的数据量,即数据传输率,也称数据率或比特率。比特(bit)是数据量的最小单位,s(秒)是时间单位。速率的单位是bit/s,类似的有kb/s(k=103)、Mb/s(M=106)、Gb/s(G=109)、Tb/s(T=1012);
另外,字节(Byte)也是用于计量存储容量的一种计量单位,1个字节等于8个比特,即:1Byte=8bit 1B=8b 1B/s=8b/s(或1Bps=8bps)带宽(bandWidth):
带宽是计算机网络中的主机在数字信道上,单位时间内从一端传送到另一端的最大数据量,即最大速率。
在实际上网应用中,我们接入宽带网络时,速率却相差甚远,这主要是因为ISP提供的线路带宽使用的单位是比特,而一般下载软件显示的是字节(1字节=8比特),所以要通过换算,才能得实际值。
我们以1M宽带为例,按照换算公式换算一下:1Mb/s=1000Kb/s=1000/8KB/s=125KB/s。而且,网络数据传输还要受到温度和传输环境的影响,导致电信号减弱,所以真实情况下,1M宽带的真实网速度比125KB/s还要小些。
二、网络参考模型OSI与TCP/IP
1.OSI七层模型
开放系统互联参考模型(Open System Interconnect),简称OSI参考模型。其目的是为异种计算机互连提供一个共同的基础和标准框架,并为保持相关标准的一致性和兼容性提供共同的参考。OSI参考模型的分层示意图如下:
总结OSI参考模型的特点:
1.只是定义一种抽象结构,而并非具体实现的描述;
2.最上层应用层最接近用户,最下层物理层最接近实际的数据传递;
3.上三层用于为用户提供服务,下四层用于为实际数据传递提供服务;
下面是对于OSI七层模型的更为具体解释:
2.TCP/IP四层模型
OSI七层参考模型是理论上的网络通信模型,而我们在实际的互联网络中使用的是TCP/IP四层模型,它们的对应关系如下:
网络接口层:
网络接口层与OSI参考模型中的物理层和数据链路层相对应;它负责监视数据在主机和网络之间的交换。事实上,TCP/IP本身并未定义该层的协议,而由参加互联的各个网络使用自己的的物理层和数据链路层协议,然后与TCP/IP的网络接入层进行连接。地址解析协议(ARP)工作在此层,即OSI参考模型的数据链路层(从功能上来考虑)。
注:关于ARP协议属于哪一层可能会有不同的观点;从功能上考虑,ARP协议最终是获取到MAC地址信息,服务于链路层,应当属于链路层协议或者说网络接口层协议;但是从分层上考虑,ARP协议与IP协议都基于Ethernet协议,它们在Ethernet协议里有独立的Type类型,这样讲ARP又应属网络层协议;所以建议我们择取侧重点来区分,并且以理解其原理作用为最终目的;
参考链接:
1、百度百科:ARP协议
2、一个协议应该属于哪一层是以什么为标准划分的
网际互联层:
- 网际互联层对应OSI参考模型的网络层;
- 主要解决主机到主机的通信问题,它所包含的协议涉及数据包在整个网络上的逻辑传输。
- 该层有三个重要的协议:网际协议(IP)、互联网组管协议(IGMP)和互联网控制报文协议(ICMP)。
传输层:
- 传输层对应OSI参考模型的传输层;
- 为应用层实体提供端对端的通信功能更,保证了数据包的顺序传送及数据的完整性。
- 该层定义了两个主要的协议:传输控制协议(TCP)和用户数据包协议(UDP)。
应用层:
应用层对应OSI参考模型的应用层;为用户提供所需要的各种服务,例如:FTP、Telent、DNS、SMTP等。
3.总结:OSI参考模型与TCP/IP模型的异同
相同点:
1.OSI参考模型和TCP/IP参考模型都采用了层次结构概念;
2.都能够提供面向连接和无连接的的两种通信服务机制;
不同点:
1.可靠性要求不同,后者更高;
2.OSI模型是在协议开发之前设计的,具有通用性;TCP/IP协议是先有协议后建立的模型,不适用于非TCP/IP网络;
三、理解数据封装过程
网络参考模型清晰的描述了网络中数据的传输过程,其中的每层都负责与其他机器的对等层进行通信,这也涉及到了数据的封装问题。现在,我们可以通过一个实例来具体分析数据封装的过程:
FTP服务器向员工主机发送数据分为两个阶段:FTP服务器发送数据、员工主机接收数据
FTP服务器发送数据:
1.应用层将数据(目标文件)传递给传输层,传输层为其添加TCP头部和端口信息,此时数据单元被称为段;
2.传输层将数据段传递给网络层,网络层再次封装添加IP头部,此时数据单元被称为包;
3.数据链路层接收网络层包,继续封装为其添加Mac头部和尾部,此时数据单元被称为帧;
4.物理层将接收到的数据转化为比特流,在网络中传送;
员工主机接收数据:
员工主机接收数据的过程与FTP服务器发送数据过程相反,刚好是逐层的解封装操作,最终在其应用层,用户可以得到目标文件数据;
四、三次握手与四次挥手
在TCP/IP协议中,TCP协议用于提供可靠的连接服务,这其中涉及到了三次握手与四次挥手过程,现在对它们进行具体的分析。
1.理解三次握手
三次握手是为了建立一个可靠的连接,此过程可参考下图:
第一次握手:
建立连接时,客户端发送SYN包(syn=x)到服务器,并进入SYN_SENT状态,等待服务器确认;
SYN:同步序列编号(Synchronize Sequence Numbers)。
第二次握手:
服务器收到SYN包,必须确认客户的SYN(ACK=x+1),同时自己也发送一个SYN包(syn=y),即SYN+ACK包,此时服务器进入SYN_RECV状态;
ACK:确认字符(Acknowledgement),在数据通信中,接收站发给发送站的一种传输类控制字符。表示发来的数据已确认接收无误。
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=y+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态。
完成三次握手后,客户端与服务器开始传送数据。
2.四次挥手
四次挥手用于终止TCP连接,断开一个TCP连接需要客户端和服务端总共发送4个包,以确认连接的断开。此过程可参考下图:
“由于TCP连接是全双工的,因此每个方向都必须单独进行关闭。这原则是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向的连接。收到一个 FIN只意味着这一方向上没有数据流动,一个TCP连接在收到一个FIN后仍能发送数据。首先进行关闭的一方将执行主动关闭,而另一方执行被动关闭。” ——摘自百度
第一次挥手:
客户端发送一个FIN,用来关闭客户到服务器的数据传送,并进入FIN_WAIT_1状态。
第二次挥手:
服务器收到客服端的FIN,发回一个ACK,确认序号为收到的序号加1。和SYN一样,一个FIN将占用一个序号。
服务器段进入CLOSE_WAIT状态。
第三次挥手:
服务器发送一个FIN,用来关闭服务器到客户端的数据传递,服务器端进入LAST_ACK状态。
第四次挥手:
客户端收到服务器的FIN后,进入进入TIME_WAIT状态;
客户端发送一个ACK给服务器,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手。
特别注意:上述是客户端主动关闭,服务器端被动关闭的情况,实际中还可能出现双方同时发起关闭的情况,具体的流程可参考下图:
3.三次握手、四次挥手的原因
为什么建立连接协议是三次握手,而关闭连接却是四次挥手呢?
对于建立连接的过程,服务器端在接收到客户端SYN请求报文后,可以把ACK和SYN(ACK起应答用,而SYN起同步作用)在一个报文里来发送。
而对于关闭连接的过程,当服务器端收到客户端的FIN报文时,它仅仅表示客户端不再发送数据了,但未必服务器端所有的数据全部发送给客户端了。所以,此时的服务器端可以立即关闭,也可以继续发送一些数据给客户端之后,再发送FIN报文给客户端,来表示同意关闭连接。因此断开连接,服务器端的ACK报文和FIN报文多数情况下都是分开发送的。
五、IPv4地址详解
IP地址为互联网上的每一个网络和每一台主机分配一个逻辑地址,用于实现通信。我们目前正在大量使用的是IPv4(IP协议的第四版)。
1.IP包头结构
在讲到数据封装过程时,我们看到网络层添加了IP包头,其详细结构如下:
注:字段后面括号里的数字是指该字段在IP数据包头信息中所占的位(bit)数;
上述是IP包头的结构,我们会看到IP包头中有待选加入的字段,所以IP包头不一定就是20个字节,IPV4在解包检测时需要判断包头的长度,比较浪费时间,这也是它比IPV6慢的原因。
2.IP地址分类
最初设计互联网络时,为了便于寻址及层次化构造网络,每个IP地址包括两个标识码ID,即网络ID和主机ID。同一个物理网络上的所有主机都使用同一个网络ID,网络上的一个主机(包括网络上工作站,服务器和路由器等)有一个主机ID与其对应。
IP地址根据网络ID的不同分为5种类型,A类地址、B类地址、C类地址、D类地址和E类地址,其中D和E为特殊地址,不对用户开放使用,分类的具体情况如下:
我们真正用到的是A、B、C类IP地址,关于它们的详细信息如下:
A类地址:
1.前8位(一个字节)为网络ID,剩下24位(三个字节)为主机ID;
2.网络地址的最高位必须是0
3.A类地址数量少,有126个网络,每个网络可容纳主机:256的3次方-2=16777214台。
B类地址:
1.前16位为网络ID,剩下16位为主机ID;
2.网络地址的最高位必须是10
3.B类地址有16384个网络,每个网络可容纳主机:256的2次方-2=65534台。
C类地址:
1.前24位为网络ID,剩下8位为主机ID;
2.网络地址的最高位必须是110
3.B类地址有209万余个网络,每个网络可容纳主机:256-2=254台。
3.了解IPv6地址
IPv6是下一版本的互联网协议,它的提出最早是为了解决IPv4地址空间被耗尽的问题;与IPv4相比,IPv6主要有以下的优势:
- 扩大了地址空间,IPv6采用128位(16个字节)地址长度;按保守方法估算IPv6实际可分配的地址,整个地球的每平方米面积上仍可分配1000多个地址;
- 提高了网络的整体吞吐量;
- 改善整个服务质量(Qos);
- 提高安全性;
- 支持即插即用和移动性;
六、子网掩码
IP地址在设计时就考虑到地址分配的层次特点,将每个IP地址都分割成网络号和主机号两部分,以便于IP地址的寻址操作。但IP地址的网络号和主机号各是多少位呢?如果不指定,就不知道哪些位是网络号、哪些是主机号,这就需要通过子网掩码来实现。
将子网掩码作为一个32位地址,和IP地址结合使用,我们可以屏蔽IP地址的一部分以区别网络号和主机号,并说明该IP地址是在局域网上,还是在远程网上;也可以将一个大的IP网络划分为若干小的子网络;
对于A类地址来说,默认的子网掩码是255.0.0.0;对于B类地址来说默认的子网掩码是255.255.0.0;对于C类地址来说默认的子网掩码是255.255.255.0。
1.子网掩码分类
子网掩码一共分为两类。一类是缺省子网掩码,一类是自定义子网掩码。缺省子网掩码即未划分子网,对应的网络号的位都置1,主机号都置0。
A类网络缺省子网掩码:255.0.0.0
B类网络缺省子网掩码:255.255.0.0
C类网络缺省子网掩码:255.255.255.0
自定义子网掩码是将一个网络划分为几个子网,需要每一段使用不同的网络号或子网号,实际上我们可以认为是将主机号分为两个部分:子网号、子网主机号。形式如下:
未做子网划分的ip地址:网络号 + 主机号
做子网划分后的ip地址:网络号 + 子网号 + 子网主机号
下面演示了子网掩码具体用法:一个B类的IP地址,为其配置一个C类标准子网掩码,可实现划分子网,操作效果如下:
总结:
- 将IP地址与子网掩码做与运算得到当前网络地址;
- 将IP地址中与子网掩码相对应的为0的部分全部换成1就得到当前网络的广播地址;
七、传输层端口
1.端口的作用
我们已经知道,一台拥有IP地址的主机可以提供许多服务,比如Web服务、FTP服务、SMTP服务等,这些服务完全可以通过1个IP地址来实现。但是,主机是怎样区分不同的网络服务呢?显然不能只靠IP地址,因为IP地址与网络服务的关系是一对多的关系。这实际上是通过“IP地址+端口号”来区分不同的服务的。
这里的端口,并非指物理意义上的端口,而是特指TCP/IP协议中的端口,是逻辑意义上的端口。端口应用于网络参考模型中的传输层,端口号标识了计算机应用层中的各个进程,从而区分不同的服务。
2.常见的端口号
端口号是16位的,所以最多有2的16次方个端口,常见的端口号有以下几个:
3.查看端口
打开计算机终端界面,输入netstat命令可以查看端口信息:
netstat -an
-a : 查看所有连接和监听端口
-n: 显示IP地址和端口号,而不显示域名和服务名
八、TCP与UDP协议
传输层有两个重要的传输协议,它们分别是传输控制协议TCP,用户数据包协议UDP;
1.TCP协议(Transmission Control Protocol)
TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议;TCP包头的结构如下图:
TCP协议的特点:
- TCP是面向连接的可靠的传输控制协议,建立连接需要三次握手,释放连接需要进行四次挥手。保证连接的建立,数据的同步传输。
- 面向字节流,会把从上层传输下来的数据当作是无结构的字节流。
- 只能一对一的通信。
- TCP在IP协议的基础之上添加了序号机制,确认机制,超时重传机制,数据校验,从而保证传输的可靠性,同时保证不出现丢失或者是乱序。
2.UDP协议
UDP是一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。UDP包头的结构如下图:
UDP协议的特点:
- UDP是面向无连接的数据包服务,一方向另一方发送数据不需要建立连接。相当于发短信,别人是否收到,短信信息是否丢失都不能知道。
- 面向报文,从上层接收的数据如果报文不大于传输限制,则直接加上首部传输,如果报文过大,则进行IP分片后,再分别加入首部进行传输。
- UDP协议可以一对一通信,也可以一对多通信。
- UDP仅仅是尽最大的努力进行交付,只是做比较初级的检查,比如端头检查,差错检测,往往在传输过程中会出现分组丢失、乱序、重复传输等问题。
九、DNS域名系统
互联网需要通过IP地址来进行通信,但是IP地址记忆困难,所以使用英文字符组合的域名来代替。比如:为了进入百度首页,我们可以在浏览器中输入IP地址:119.75.217.109,也可以直接输入域名:htpts://www.baidu.com;显然第二种方式更加方便和记忆。
但是,这需要我们建立域名与IP地址的相互映射关系,DNS(Domain Name System,域名系统)正是为了解决这一问题而存在。
1.IP地址到主机名的映射有两种方式:
静态映射
其实,每台设备上都配置了域名到IP地址的映射,各设备独立维护自己的映射表,而且只供本设备使用;比如在windows电脑中,打开"window\system32\drivers\etc”路径下的hosts文件,其中就存在域名与IP地址的对应关系。
动态映射
建立一套域名解析系统,只在专门的DNS服务器上配置域名到IP地址的映射;网络上需要使用域名通信的设备,首先需要到DNS服务器查询域名所对应的IP地址。
本机静态映射文件的优先级高于DNS域名解析服务器;在访问网站的时,设备会首先在本机静态映射文件里查找对应关系,如果找不到才会使用DNS。但是静态映射不能包含大量的IP映射,而且域名维护也十分困难,所以只作为普通调试使用。
2.DNS服务器的原理
下图展示了客户机通过域名,访问远程Web服务器的流程,具体的步骤如下:
1客户机向DNS服务器发送域名查询请求;
2.DNS服务器告知客户机Web服务器的IP地址;
3.客户机使用DNS返回的IP地址,与Web服务器通信;
3.域名空间结构(完全合格域名)
通常 Internet 主机域名的一般结构为:主机名.三级域名.二级域名.顶级域名,如下图:
顶级域名:由Internet网络协会进行登记和管理,它还为Internet的每一台主机分配唯一IP地址;顶级域分为组织域、国家地区域。
二级域名:个人或者企业向域名分配组织申请得到
主机域名:常见的是www用于代表网页服务;
注意:"顶级域名.二级域名.三级域名”,三者通过“.”连接在一起后在全球唯一;
4.DNS查询过程
递归查询:
客户机向NDS服务器的查询是递归查询,即当客户机向DNS服务器发出请求后,若DNS服务器本身不能解析,则会向另外的DNS服务器发出请求,得到结果后转发给客户机;
迭代查询:
DNS服务器收到一次迭代查询结果回复一次结果,这个结果不一定是目标IP与域名的映射关系,也可以是其他DNS服务器的地址;
十、网关(Gateway)
"网关,又称网间连接器、协议转换器。网关在网络层以上实现网络互联,是最复杂的网络连接设备,仅用于两个高层协议不同的网络互联。网关既可以用于广域网互联,也可以用于局域网互联。” ——摘自百度
通俗的讲,网关其实就是一种充当转换重任的服务器或者路由器,通过下面的图会更加方便的理解:
图中显示了我们在生活中常见的两种网络设备:交换机和路由器,总结它们的功能如下:
交换机:
1.使用交换机时,网线连接在交换机的端口上,交换机会自动记录了各个主机的MAC地址;
2.交换机识别MAC地址,但不识别IP,因为它在数据链路层,而不是网络层;
2.交换机只负责同一网段的通信;
网关:
1.网关是计算机硬件设备,一般是路由器,负责在不同的网段通信,也可以在服务器上模拟路由功能;
2.网关负责连接不同网段的局域网,在所有内网计算机访问的不是本网段的数据时使用;
3.网关负责将内网IP转化为公网Ip,或者将公网IP转化为内网IP;
下面是在Windows系统计算机上的一个网关配置示例:
分析:如果不配置网关与DNS,当前计算机只能在局域网内通信,而不能连接互联网;
网关:网关负责将内网IP转化为公网Ip,或者将公网IP转化为内网IP;
DNS:将域名翻译为真正的IP地址;
总结
本文只是概括性的总结了计算机网络的基本知识,为了更深层次的学习,仍需要再不断的学习和探索,继续加油!