计算机网络基础知识

计算机网络的知识与我们的生活息息相关,对于每一个开发者来说更是十分重要,深入理解它,将有助于我们在实际工作中迅速解决相关问题。本篇就计算机网络的基本知识进行概要性总结。

计算机网络基础

目录: 1.计算机网络常识 2.网络参考模型OSI与TCP/IP 3.理解数据封装传递过程 4.三次握手与四次挥手 5.理解IP地址 6.子网掩码 7.端口的作用 8.TCP与UDP 9.DNS的作用 10.网关

一、计算机网络常识

计算机网络指将地理位置不同的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。 根据不同的方式,计算机网络可以分类如下:

计算机网络分类.png

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七层参考模型.png

总结OSI参考模型的特点: 1.只是定义一种抽象结构,而并非具体实现的描述; 2.最上层应用层最接近用户,最下层物理层最接近实际的数据传递; 3.上三层用于为用户提供服务,下四层用于为实际数据传递提供服务; 下面是对于OSI七层模型的更为具体解释:

OSI七层模型详解.png

2.TCP/IP四层模型

OSI七层参考模型是理论上的网络通信模型,而我们在实际的互联网络中使用的是TCP/IP四层模型,它们的对应关系如下:

网络接口层: 网络接口层与OSI参考模型中的物理层和数据链路层相对应;它负责监视数据在主机和网络之间的交换。事实上,TCP/IP本身并未定义该层的协议,而由参加互联的各个网络使用自己的的物理层和数据链路层协议,然后与TCP/IP的网络接入层进行连接。地址解析协议(ARP)工作在此层,即OSI参考模型的数据链路层。

网际互联层

  • 网际互联层对应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网络;

三、理解数据封装过程

网络参考模型清晰的描述了网络中数据的传输过程,其中的每层都负责与其他机器的对等层进行通信,这也涉及到了数据的封装问题。现在,我们可以通过一个实例来具体分析数据封装的过程:

理解数据封装过程.png

FTP服务器向员工主机发送数据分为两个阶段:FTP服务器发送数据、员工主机接收数据 FTP服务器发送数据: 1.应用层将数据(目标文件)传递给传输层,传输层为其添加TCP头部和端口信息,此时数据单元被称为段; 2.传输层将数据段传递给网络层,网络层再次封装添加IP头部,此时数据单元被称为包; 3.数据链路层接收网络层包,继续封装为其添加Mac头部和尾部,此时数据单元被称为帧; 4.物理层将接收到的数据转化为比特流,在网络中传送;

员工主机接收数据: 员工主机接收数据的过程与FTP服务器发送数据过程相反,刚好是逐层的解封装操作,最终在其应用层,用户可以得到目标文件数据;

四、三次握手与四次挥手

TCP/IP协议中,TCP协议用于提供可靠的连接服务,这其中涉及到了三次握手与四次挥手过程,现在对它们进行具体的分析。

1.理解三次握手

三次握手是为了建立一个可靠的连接,此过程可参考下图:

三次握手.png

第一次握手: 建立连接时,客户端发送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个包,以确认连接的断开。此过程可参考下图:

四次挥手.png

“由于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状态,完成四次挥手。

特别注意:上述是客户端主动关闭,服务器端被动关闭的情况,实际中还可能出现双方同时发起关闭的情况,具体的流程可参考下图:

四次挥手,双方同时发起关闭.png

3.三次握手、四次挥手的原因

为什么建立连接协议是三次握手,而关闭连接却是四次挥手呢? 对于建立连接的过程,服务器端在接收到客户端SYN请求报文后,可以把ACK和SYN(ACK起应答用,而SYN起同步作用)在一个报文里来发送。

而对于关闭连接的过程,当服务器端收到客户端的FIN报文时,它仅仅表示客户端不再发送数据了,但未必服务器端所有的数据全部发送给客户端了。所以,此时的服务器端可以立即关闭,也可以继续发送一些数据给客户端之后,再发送FIN报文给客户端,来表示同意关闭连接。因此断开连接,服务器端的ACK报文和FIN报文多数情况下都是分开发送的。

五、IPv4地址详解

IP地址为互联网上的每一个网络和每一台主机分配一个逻辑地址,用于实现通信。我们目前正在大量使用的是IPv4(IP协议的第四版)。

1.IP包头结构

在讲到数据封装过程时,我们看到网络层添加了IP包头,其详细结构如下: 注:字段后面括号里的数字是指该字段在IP数据包头信息中所占的位(bit)数;

IP包头结构.png

上述是IP包头的结构,我们会看到IP包头中有待选加入的字段,所以IP包头不一定就是20个字节,IPV4在解包检测时需要判断包头的长度,比较浪费时间,这也是它比IPV6慢的原因。

2.IP地址分类

最初设计互联网络时,为了便于寻址及层次化构造网络,每个IP地址包括两个标识码ID,即网络ID和主机ID。同一个物理网络上的所有主机都使用同一个网络ID,网络上的一个主机(包括网络上工作站,服务器和路由器等)有一个主机ID与其对应。 IP地址根据网络ID的不同分为5种类型,A类地址、B类地址、C类地址、D类地址和E类地址,其中D和E为特殊地址,不对用户开放使用,分类的具体情况如下:

IP地址分类.png

我们真正用到的是A、B、C类IP地址,关于它们的详细信息如下:

IP地址分类A、B、C.png

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.png

TCP协议的特点:

  • TCP是面向连接的可靠的传输控制协议,建立连接需要三次握手,释放连接需要进行四次挥手。保证连接的建立,数据的同步传输。
  • 面向字节流,会把从上层传输下来的数据当作是无结构的字节流。
  • 只能一对一的通信。
  • TCP在IP协议的基础之上添加了序号机制,确认机制,超时重传机制,数据校验,从而保证传输的可靠性,同时保证不出现丢失或者是乱序。

2.UDP协议

UDP是一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。UDP包头的结构如下图:

UDP协议.png

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服务器的流程,具体的步骤如下:

DNS服务器的原理.png

1客户机向DNS服务器发送域名查询请求; 2.DNS服务器告知客户机Web服务器的IP地址; 3.客户机使用DNS返回的IP地址,与Web服务器通信;

3.域名空间结构(完全合格域名)

通常 Internet 主机域名的一般结构为:主机名.三级域名.二级域名.顶级域名,如下图:

域名空间结构(完全合格域名).png

顶级域名:由Internet网络协会进行登记和管理,它还为Internet的每一台主机分配唯一IP地址;顶级域分为组织域、国家地区域。

二级域名:个人或者企业向域名分配组织申请得到 主机域名:常见的是www用于代表网页服务; 注意:"顶级域名.二级域名.三级域名”,三者通过“.”连接在一起后在全球唯一;

4.DNS查询过程

DNS查询过程.png

递归查询: 客户机向NDS服务器的查询是递归查询,即当客户机向DNS服务器发出请求后,若DNS服务器本身不能解析,则会向另外的DNS服务器发出请求,得到结果后转发给客户机;

迭代查询: DNS服务器收到一次迭代查询结果回复一次结果,这个结果不一定是目标IP与域名的映射关系,也可以是其他DNS服务器的地址;

十、网关(Gateway)

"网关,又称网间连接器、协议转换器。网关在网络层以上实现网络互联,是最复杂的网络连接设备,仅用于两个高层协议不同的网络互联。网关既可以用于广域网互联,也可以用于局域网互联。” ——摘自百度

通俗的讲,网关其实就是一种充当转换重任的服务器或者路由器,通过下面的图会更加方便的理解:

网关(Gateway).png

图中显示了我们在生活中常见的两种网络设备:交换机和路由器,总结它们的功能如下: 交换机: 1.使用交换机时,网线连接在交换机的端口上,交换机会自动记录了各个主机的MAC地址; 2.交换机识别MAC地址,但不识别IP,因为它在数据链路层,而不是网络层; 2.交换机只负责同一网段的通信;

网关: 1.网关是计算机硬件设备,一般是路由器,负责在不同的网段通信,也可以在服务器上模拟路由功能; 2.网关负责连接不同网段的局域网,在所有内网计算机访问的不是本网段的数据时使用; 3.网关负责将内网IP转化为公网Ip,或者将公网IP转化为内网IP;

下面是在Windows系统计算机上的一个网关配置示例:

Windows系统计算机上的一个网关配置示例.png

分析:如果不配置网关与DNS,当前计算机只能在局域网内通信,而不能连接互联网; 网关:网关负责将内网IP转化为公网Ip,或者将公网IP转化为内网IP; DNS:将域名翻译为真正的IP地址;

总结

本文只是概括性的总结了计算机网络的基本知识,为了更深层次的学习,仍需要再不断的学习和探索,继续加油!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏黑泽君的专栏

7层OSI网络模型概述

612
来自专栏玄魂工作室

Web应用系统介绍-TCP/IP协议

大家先冷静一下上了一天班的大脑先~~~ 然后我们再讲理论~ 以下内容非常枯燥,但是也是非常有用~ 在我们开始CTF的道路之前,希望你们能知道并理解下面基本概念...

3434
来自专栏代码世界

计算机网络基础

计算机网络的发展及基础网络概念 问题:网络到底是什么?计算机之间是如何通信的? 早期 : 联机 ?  以太网 : 局域网与交换机 ? 广播   主机之间“一对所...

37412
来自专栏Golang语言社区

TCP、UDP、IP 协议分析

互连网早期的时候,主机间的互连使用的是NCP协议。这种协议本身有很多缺陷,如:不能互连不同的主机,不能互连不同的操作系统,没有纠错功能。为了改善这种缺点,大牛弄...

4403
来自专栏用户画像

第30章 生成树协议

STP(SpanningTree Protocol,生成树协议)是用于在局域网中消除数据链路层环路的协议

813
来自专栏Java进阶架构师

一篇文章带你详解 TCP/IP 协议

不难看出,TCP/IP 与 OSI 在分层模块上稍有区别。OSI 参考模型注重“通信协议必要的功能是什么”,而 TCP/IP 则更强调“在计算机上实现协议应该开...

991
来自专栏编程之旅

2.25 网络

发送——》接收 应用层 - 会话层 - 数据层 - 传输层 - 网络层 - 数据链路层 - 物理层

892
来自专栏菜鸟计划

加深理解HTTP请求---网络基础TCP/IP

为了了解HTTP,必须的了解TCP/IP协议族。 通常使用的网络实在TCP/IP协议族的基础上运作的。而HTTP就属于他的一个子集。 1、TCP/IP 协议族 ...

2907
来自专栏java一日一条

每个程序员应该知道的计算机网络知识

作为一名程序员, 不可能不与网络打交道. 现在我们的手机, 电脑, 不夸张地说, 离开了网络就是一块’废铁’, 它们的作用将大打折扣.. 本文的作用呢, 主要是...

3461
来自专栏LanceToBigData

TCP/IP(四)网络层

前言 前面给大家介绍了计算机网络的基本概述,物理层和数据链路层。这一篇给大家介绍面试中经常会被问到的网络层。在介绍之前我们回顾一下之前学习的知识!   CP/I...

2755

扫码关注云+社区

领取腾讯云代金券