Linux中的网络管理——计算机网络基础

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_15096707/article/details/78159946

目录

OSI七层网络模型

ISO/OSI七层模型

  需要说明的是:当今互联网上使用的网络协议并不是建立在OSI的七层模型基础之上的,而是对应TCP/IP四层模型。也就是当今互联网真正使用的网络模型是TCP/IP四层模型,而OSI七层模型只是TCP/IP模型的基础,TCP/IP模型是由OSI模型演变而来,并做了优化。后续将会对TCP/IP模型进行说明。
  其中ISO表示的是国际标准化组织;OSI指的是开放系统互联模型。当然你可能会联想到IOS这一词,人们经常提到的IOS指的是苹果操作系统。而在计算机网络中,IOS是互联网操作系统,是思科公司为其网络设备开发的操作系统。
OSI七层模型,具体如下:

名称(由上到下) 作用
应用层 用户接口
表示层 数据的表现形式、特定功能的实现,如:压缩数据、加密等
会话层 对应用会话的管理、同步,确定是网络传输还是本地存储(如果是进行网络传输,则数据将进入下一层继续操作)
传输层 可靠与不可靠的传输、传输前的错误检测、流控,确定协议
网络层 提供逻辑地址、选路,确定源IP地址和目标IP地址
数据链路层 成帧、用MAC地址访问媒介、错误检测与修正,确定MAC地址(发送方的MAC地址和接收方的MAC地址)
物理层 设备之间的比特流的传输(数据转化成0和1组成的)、物理接口、电气特性

其中:

  1. OSI七层模型中上3层是为用户服务的,而下4层是为数据传递提供服务的。其中物理层负责真正的数据传输。
  2. 这里的逻辑地址指的是就是IP地址。
  3. 传输协议有两种,一种是TCP,也就是传输控制协议;另一种是UDP,也就是用户数据报协议。TCP协议可靠,传递数据时数据不丢失;UPD协议传递数据速度快,但不可靠,数据有可能会丢失。
  4. 会话层用于确定是网络传输还是本地存储。传输层的作用是确定端口号,确定计算机中的服务。而网络层的作用是确定IP地址,数据链路层则确定mac地址,mac地址用来局域网数据通信。(MAC地址:物理地址)
  5. MAC地址负责局域网通信,而IP地址负责外网通信。
  6. 每种传输协议都有自己的端口,端口号的范围是0到65535。

OSI七层模型的传输过程,具体如下:

主机A 协议 主机B 数据单位
7 应用层 <——应用层协议——> 应用层 APDU(应用协议数据单元)
接口 接口
6 表示层 <——表示层协议——> 表示层 PPDU(表示协议数据单元)
接口 接口
5 会话层 <——会话层协议——> 会话层 SPDU(会话协议数据单元)
接口 接口
4 传输层 <——传输层协议——> 传输层 TPDU(传输协议数据单元)
接口 接口
3 网络层 <——网络层协议——> 网络层 报文
接口 接口
2 数据链路层 <——数据链路层协议——> 数据链路层
接口 接口
1 物理层 <——物理层协议——> 物理层 比特

TCP/IP协议四层模型

TCP/IP协议四层模型,具体如下:

名称
4 应用层
3 传输层
2 网际互联层
1 网络接口层

  TCP/IP模型是由OSI模型演变而来,并做了优化。TCP/IP模型与OSI模型的对应关系,如下:

TCP/IP四层模型 对应关系 OSI七层模型
应用层
应用层 <——–> 表示层
会话层
传输层 <——–> 传输层
网际互联层 <——–> 网络层
数据链
网络接口层 <——–> 路层(续上)
物理层

TCP/IP协议四层模型的各层介绍:

  • 网络接口层:网络接口层与OSI参考模型(参考模型,可见在实际互联网中使用的并不是OSI七层模型,OSI的七层模型只作为参考)中的物理层数据链路层相对应。它负责监视数据在主机和网络之间的交互。事实上,TCP/IP本身并未定义网络接口层的协议,而由参与互连的各网络使用自己的物理层和数据链路层协议,然后与TCP/IP的网络接口层进行连接。(地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。该协议工作在该层。使用arp -a命令可以查看本机相关网络的IP地址与物理地址的对应关系。)
  • 网际互联层:网际互联层对应OSI参考模型中的网络层,主要解决主机到主机的通信问题。它所包含的协议设计数据包在整个网络上的逻辑传输。该层有三个主要协议:网际协议(IP)互联网组管理协议(IGMP)互联网控制报文协议(ICMP)。(其中ping命令采用的即是ICMP协议。)
  • 传输层:传输层对应OSI参考模型中的传输层,为应用层实体提供端到端的通信功能,保证了数据包的顺序传送及数据的完整性。该层定义了两个主要的协议:传输控制协议(TCP)用户数据报协议(UDP)。(TCP是可靠的、面向连接的协议;UDP是不可靠的、面向无连接的协议。)

TCP/IP三次握手
TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。参考:(TCP的三次握手(建立连接)和四次挥手(关闭连接)

1)第一次握手:建立连接时,客户端A发送SYN包(SYN=j)到服务器B,并进入SYN_SEND状态,等待服务器B确认。
(2)第二次握手:服务器B收到SYN包,必须确认客户A的SYN(ACK=j+1),同时自己也发送一个SYN包(SYN=k),即SYN+ACK包,此时服务器B进入SYN_RECV状态。
(3)第三次握手:客户端A收到服务器B的SYN+ACK包,向服务器B发送确认包ACK(ACK=k+1),此包发送完毕,客户端A和服务器B进入ESTABLISHED状态,完成三次握手。
完成三次握手,客户端与服务器开始传送数据。

为什么进行三次握手,而不是两次握手或多次握手呢?
  提到这样的问题,我们先来看一个经典的思想实验“两军问题”。该问题用来阐述在一个不可靠的通信链路上试图通过通信以达成一致是存在缺陷的和困难的。(参考:两军问题
  两军问题的描述大体如下:
  两支军队(这里我们假设是A1和A2两支军队)都驻扎在城市旁边的两个不同的山谷里。两军之间隔着第三个山谷,而该山谷中驻扎着第三支军队(这里我们假设是B军队)。为了保证取胜,A1和A2必须同时发起攻击,否则任何单独发起攻击的军队都有可能全军覆没。A1和A2想要通讯的唯一方法就是穿过第三个山谷传送信件。问题是,第三个山谷被城市的守卫军占据,并且经此传送的信件可能会被守卫军截获。两军怎么做才能达成一致,正确地做出推断和决定呢?
  为解决这样的问题,A1需要发送消息(如:x月x日x时x分发起进攻)给A2。发送消息后,A1并不知道A2是否收到消息,毕竟消息有可能被军队B截获,在这样的情况下,A1军队不敢贸然地发起进攻。因此,A2军队在收到A1的消息后,同样需要派人传送信件给A1:“我收到你的消息了,我会在x月x日x时x分对B发起进攻的。”同样地,A2军队也会犹豫A1军队是否收到了确认消息。因为,A1军队在没有收到确认消息的情况下,A1很有可能停止此次的攻击。为此,A1军队在收到A2的确认消息后,还需要发送一个确认消息用来说明:我知道你知道了。
  这也是为什么不进行两次握手的原因。
  尽管如此,最后的一次消息也不一定能得到确认,即多次握手也无法解决此问题。所以采用了三次握手。同样也证实了在一个不可靠的通信链路上试图通过通信以达成一致是存在缺陷的和困难的。两军问题是在计算机通信领域首个被证明无解的问题。


  • 应用层:应用层对应OSI参考模型中的应用层、表示层和会话层,为用户提供所需要的各种服务,例如:FTP、Telnet、DNS、SMTP等。

TCP/IP协议四层模型的数据封装过程

数据
应用数据 字节流(数据)
应用层 FTP头 数据
传输层 TCP头 FTP头 数据
网络层 IP头 TCP头 FTP头 数据
数据链路层 以太帧头 IP头 TCP头 FTP头 数据

OSI模型与TCP/IP模型的比较

  • 共同点
    1. OSI参考模型和TCP/IP参考模型都采用了层次结构的概念;
    2. 都能够提供面向连接和无连接两种通信服务机制。
  • 不同点
    1. 前者是七层模型,后者是四层结构;
    2. 对可靠性的要求不同(TCP/IP模型更高);
    3. OSI模型是在协议开发前设计的,具有通用性;TCP/IP是先有协议集然后建立模型,不适用于非TCP/IP网络;
    4. 实际市场应用不同(OSI模型只是理论上的模型,并没有成熟的产品,而TCP/IP已经成为”实际上的国际标准“)。

IP地址

IP地址分类

网络类别 最大网络数 IP地址范围 最大主机数(标准子网掩码下的) 私有IP地址范围
A 126(2^7-2) 1.0.0.0~126.255.255.255 2^24-2 10.0.0.0~10.255.255.255
B 16384(2^14) 128.0.0.0~191.255.255.255 2^16-2 172.16.0.0~172.31.255.255
C 2097152(2^21) 192.0.0.0~223.255.255.255 2^8-2 192.168.0.0~192.168.255.255

  
IP地址的说明

  1. IPv4中的IP地址长度为32位(bit),IP的范围为0.0.0.0~255.255.255.255,但是在该范围内的地址并不是都可以作为有效的IP地址。
  2. IP地址除了A、B、C三类地址外,还有D、E这两类地址。
  3. 127网段只有127.0.0.1可以使用,127.0.0.1代表当前计算机自身。因此A类的IP地址范围是到126而不是127。
  4. A类IP地址的第一个八位字节指明网络,后三个八位字节指明网络上的主机。而B类IP地址是用前2个字节指明网络,后2个字节指明网络上的主机。C类IP地址则用前3个字节指明网络,最后一个字节指明网络上的主机。如:1.0.0.1和2.0.0.1指的是A类地址,且这两个地址属于不同的网络。而1.0.0.1和1.0.0.2则属于同一网络。
  5. 不同网络的通信需要使用路由器。路由器是用来跨网络通信的。在同一个网络中通信我们只需要使用交换机就可以了。
  6. 每个网络的第一个地址都表示网络本身,不能分配;每个网络的最后一个地址则表示当前网络的广播地址,同样也不能被分配。因此,在上述表中”最大主机数“都进行了【减2】的操作。
  7. 内网IP(私有IP)不用申请,可以直接使用;但是私有IP不能直接访问,需要与公网IP进行转换才能访问互联网。
  8. 私有IP的设置有效地节约了我们有限地公网IP地址。
  9. 每个网段下可以有多少个主机是由子网掩码决定的,IP地址并不能决定。
  10. 内网是不可以直接访问公网的。

子网掩码

(参考:子网掩码
摘录自百度百科:
  子网掩码是一个32位地址,用于屏蔽IP地址的一部分以区别网络标识和主机标识,并说明该IP地址是在局域网上,还是在远程网上。
  子网掩码的设定必须遵循一定的规则。与二进制IP地址相同,子网掩码由1和0组成,且1和0分别连续。子网掩码的长度也是32位,左边是网络位,用二进制数字“1”表示,1的数目等于网络位的长度;右边是主机位,用二进制数字“0”表示,0的数目等于主机位的长度。这样做的目的是为了让掩码与ip地址做按位与运算时用0遮住原主机数,而不改变原网络段数字,而且很容易通过0的位数确定子网的主机数(2的主机位数次方-2,因为主机号全为1时表示该网络广播地址,全为0时表示该网络的网络号,这是两个特殊地址)。只有通过子网掩码,才能表明一台主机所在的子网与其他子网的关系,使网络正常工作。
  对于A类地址来说,默认的子网掩码是255.0.0.0;对于B类地址来说默认的子网掩码是255.255.0.0;对于C类地址来说默认的子网掩码是255.255.255.0。
  利用子网掩码可以把大的网络划分成子网,即VLSM(可变长子网掩码),也可以把小的网络归并成大的网络即超网。
  
变长子网掩码及子网规划
如:
  IP地址:172.16.2.121
  子网掩码:255.255.255.0
分析:
  从IP地址的第一个字节,我们可以知道该地址属于B类地址。并且其子网掩码为255.255.255.0,将IP地址前3位划分为网络位,最后一位为主机位,即不同IP地址前3位相同时,表示同属于同一网络;不同IP地址前3位相同,但最后一位不同,则表示同一网络下的不同IP地址。IP地址和子网掩码均转为二进制表示后进行按位与操作,可以得到网络地址。如下:

网络位 网络位 子网位 主机位
IP地址:172.16.2.121 10101100 00010000 00000010 01111001
子网掩码:255.255.255.0 11111111 11111111 11111111 00000000
网络地址:172.16.2.0 10101100 00010000 00000010 00000000

  因此,网络地址为172.16.2.0;主机地址为172.16.2.1~172.16.2.254;广播地址为172.16.2.255。在这样的子网掩码下,IP地址前3位表示网络位,最后一位表示主机位。所以,172.16.1.121和172.16.2.121是属于不同网络的IP地址,而172.16.2.120和172.16.2.121是属于同一网络的的不同IP地址。

端口

  在TCP/IP模型中传输层的作用是确定使用的协议(TCP或者UDP),确定源端口和目标端口,此外,还有差错校验、流量控制等作用。这里提到了的”端口“起到了什么作用呢?IP地址确定了网络上的某一台计算机,而计算机中开启了一个或多个服务。当计算机A向计算机B发送数据时,计算机B需要接收数据。那么由计算机B的哪个服务接收数据呢?在这里目标端口就确定了由B中的哪个服务进行接收,精确到计算机的某一具体服务。
  在传输层中确定协议后需要向上层数据中加入TCP协议包头或UDP协议包头。而在这样的包头中包含了源端口和目标端口。源端口和目标端口的长度均为16位。因此也确定了端口号的范围,即0~65535(2^16)。其中0~1023的端口被称为公认端口,这些端口号一般固定分配给一些服务。
常见端口

  • FTP(文件传输协议):端口号 20 21(FTP协议使用到两个端口:20和21。端口20是用来数据传递的;21则用来登录、传输命令的)
  • SSH(安全shell协议):端口号 22
  • telnet(远程登录协议):端口号 23(telnet是明文传递数据,23端口能不用则不用)
  • DNS(域名系统):端口号53
  • http(超文本传输协议):端口号 80
  • SMTP(简单邮件传输协议):端口号 25
  • POP3(邮局协议3代):端口号 110

额外扩展

  1. TCP协议对应于传输层,而HTTP协议对应于应用层,从本质上来说,二者没有可比性。
  2. Http协议是建立在TCP协议基础之上的,当浏览器需要从服务器获取网页数据的时候,会发出一次Http请求。Http会通过TCP建立起一个到服务器的连接通道,当本次请求需要的数据完毕后,Http会立即将TCP连接断开,这个过程是很短的。所以Http连接是一种短连接,是一种无状态的连接。
  3. 为什么Http是无状态的短连接,而TCP是有状态的长连接?Http不是建立在TCP的基础上吗,为什么还能是短连接?现在明白了,Http就是在每次请求完成后就把TCP连接关了,所以是短连接。而我们直接通过Socket编程使用TCP协议的时候,因为我们自己可以通过代码去控制什么时候打开连接什么时候关闭连接,只要我们不通过代码把连接关闭,这个连接就会在客户端和服务端的进程中一直存在,相关状态数据会一直保存着。
  4. 在TCP/IP协议族中,网络层IP提供的是一种不可靠的服务。也就是说,它只是尽可能快地把分组从源结点送到目的结点,但是并不提供任何可靠性保证。而另一方面, TCP在不可靠的IP层上提供了一个可靠的运输层。为了提供这种可靠的服务, TCP采用了超时重传、发送和接收端到端的确认分组等机制。由此可见,运输层和网络层分别负责不同的功能。

摘录自:

DNS

DNS服务

  在计算机网络中,通过IP查询某一主机进行数据交互。IP对于我们来说并不直观,也不容易被人们记住。于是人们通过域名,建立起域名与IP的对应关系。其中帮助我们查询域名与IP映射关系的系统,称之为DNS,DNS是Domain Name System的缩写,即域名系统。查询域名对应的IP的过程,称为DNS解析。
  当我们请求某个域名时,计算机会先查询本机中的hosts文件(该文件中记录着IP与域名的对应关系),将域名映射为IP。如果hosts文件中没有记录的话,将请求计算机配置的DNS服务器,通过DNS服务器查询得到域名对应的IP。计算机再通过IP请求对应的主机。(hosts文件的优先级高于DNS解析。

hosts文件的位置
windows: C:\Windows\System32\drivers\etc
linux: /etc/hosts

  单纯靠hosts文件解析域名存在着一些问题(如果将所有的域名同IP的映射关系放置在本机的hosts文件中,将导致):
1. 名称解析的效能下降(毕竟打开包含了所有的域名同IP的映射关系的hosts文件确实“不容易”);
2. hosts文件只能本机使用,主机维护困难。
  因此设置了DNS服务,DNS将域名解析为IP地址。
  1)客户机向DNS服务器发送域名查询请求;2)DNS服务器告知客户机Web服务器的IP地址;3)客户机与Web服务器通信。

域名

(参考:DNS服务器-域名空间结构
  在DNS中,域名空间结构采用分层结构,包括:根域,顶级域,二级域和主机名称。域名空间的层次结构类似一个倒置的树状,在域名层次结构中,每一层称作一个域,每个域用一个点号”.”分开。(这样便于分级管理)

- 根域
- 顶级域
- |- 组织域
- |- 国家或地区域
- 二级域
- 主机名

根域
  “.”表示根域名,根域名的服务器只有13台。在根域中保存了顶级域(一级域)这样一些域名。
顶级域
  顶级域由域名分配组织ISO决定的。常见的顶级域分为组织域、国家或地区域。

  • 组织域
顶级域 说明
gov 政府部门
com 商业部门
edu 教育部门
org 民间团体组织
net 网络服务机构
mil 军事部门
  • 国家或地区域
顶级域 国家或地区
cn 中国
jp 日本
uk 英国
au 澳大利亚
hk 中国香港

二级域
  顶级域之下就是二级域,二级域是由个人或企业向域名分配组织申请获取的。
三级域
  接着二级域下是三级域,我们也叫主机名,常见的有www(用来代表网页服务)。三级域名是申请完二级域名后自己规定的。
  三级域+二级域+顶级 域组成完整域名空间,并且域名全球唯一。
  互联网中的域名是有结构有规划的。域名进行了分级(根域名是负责管理一级域名,一级域名负责管理自己的二级域名,二级域名负责管理自己的三级域名)
  所有DNS服务器都知道全球的13台根DNS服务器的位置。

DNS查询

DNS查询过程

  这里以请求”http://www.sina.com.cn/“为例,描述客户机请求DNS解析该地址的过程。
1. 客户机先请求本地域名服务器,如果该服务器中存在该域名同IP的映射关系,则返回对应的IP,否则继续执行下一步;
2. 本地域名服务器在不知道该域名的情况下,请求根DNS服务器,(所有DNS服务器都知道全球的13台根DNS服务器的位置。)根DNS服务器同样也不知道该域名对应的IP,但是它知道cn域名服务器的IP;
3. 于是本地域名服务器去请求cn域名服务器,询问该域名对应的IP,cn域名服务器同样也有可能不知道该域名对应IP,但是它知道com.cn域名服务器的IP;
4. 接着本地域名服务器又去请求com.cn域名服务器,询问该域名对应的IP,com.cn域名服务器同样也有可能不知道该域名对应的IP,但是它知道sina.com.cn域名服务器的IP;
5. 本地域名服务器又去请求sina.com.cn域名服务器,询问该域名对应的IP,该域名服务器当然知道该域名对应的IP(因为该域名就注册在该服务器下),最后将IP返回给本地域名服务器;
6. 本地域名服务器将查询到的IP,返回给客户机;
7. 客户机根据该IP地址去请求对应的Web服务器。

DNS查询类型

(1)从查询方式分

  1. 递归查询
    • 要么做出查询成功响应,要么做出查询失败的响应。一般客户机和服务器之间属递归查询,即当客户机向DNS服务器发出请求后,若DNS服务器本身不能解析,则会向另外的DNS服务器发出查询请求,得到结果后转交给客户机。
  2. 迭代查询
    • 服务器收到一次迭代查询回复一次结果,这个结果不一定是目标IP与域名的映射关系,也可以是其他DNS服务器的地址。

(2)从查询内容上分

  • 正向查询由域名查找IP地址
  • 反向查询由IP地址查找域名

网关

  1. 交换机是低层设备,工作于OSI参考模型的第二层,即数据链路层,并不认识IP,只认识mac地址。
  2. 交换机是用来在一个内网(一个局域网)内进行数据交换的设备。而路由器是用来在不同网段之间进行数据交换的设备。
  3. 网关是一个计算机的硬件设备,一般情况下,是我们的路由器,也可以是具有路由功能的服务器。换句话说,网关就是一个具有路由功能的网络设备。
  4. 不同网段之间要想进行数据交互就必须通过路由器进行数据转换。

网关的作用

  1. 网关在所有内网计算机访问的不是本网段的数据报时使用。
  2. 网关负责将内网IP转换为公网IP,公网IP转换为内网IP。(内网是不可以直接访问公网的(因为某个内网IP可以在多个内网中进行使用,而IP却是网络上计算机的标识),他需要通过网关进行IP地址转换。)

猜你喜欢

转载自blog.csdn.net/qq_15096707/article/details/78159946