---
title: "网络工程基础知识"
author: "Perrin Yong"
author_profile: https://www.pystone.net/profile/
published_by: "Perrin Yong"
canonical: https://www.pystone.net/notes/networking-fundamentals/
type: note
content_role: unspecified
visibility: public
id_stability: rename-stable
source_path: "10-计算机、信息技术与工程/01-系统基础与网络安全/网络工程/网络工程基础知识.md"
content_hash: 34f0f9dc3349b01b4133749cb402fefca1d791a83a22775e0536433082622007
knowledge_version: 224c990773de.5fa8af6e39fa
site_commit: 224c990773de166d23a886306577dd90379529ce
notes_commit: 5fa8af6e39fa3891d1b9b4832bfa6c4e0ecaaf0a
---
# 网络工程基础知识
| **创建时间：** | _2021/3/28 20:57_ |
| --------- | ----------------- |

## 网络工程基础知识

  * 网络工程基础知识
    * 网络模型
      * OSI
      * OSI与TCP/IP
    * 基本概念
      * 网络主机（network host）
      * 地址
        * IP地址、子网掩码
        * MAC地址
      * 网关与路由器
        * 网关的设置方法
      * 域名与DNS服务器
        * 域名解析的过程
      * 其他概念
      * 服务器
        * 远程服务器
        * 本地服务器
      * 端口
        * 广义的端口概念
        * 端口的工作原理
        * 端口分类
          * 从端口的性质来分
    * HTTP协议相关
      * HOST字段
    * 概念区分
      * 因特网和以太网
    * Hyper-V
    * 一些技巧
      * IP查询
        * 内网IP(局域网IP)
        * 外网IP
      * 设置静态IP
      * 内网搭建
    * Ref

## 网络模型

### OSI

OSI（Open System Interconnect）- 即开放式系统互联

![Alt text](/media/611b5a799871d42b6153.png)

某一层的服务就是该层及其下各层的一种能力，它通过接口提供给更高一层。

### OSI与TCP/IP

  * OSI先有模型，后有协议，先有标准，后进行实践；而TCP/IP则相反，先有协议和应用再提出了模型，且是参照的OSI模型。

  * OSI参考模型是学术上和法律上的国际标准，是完整的权威的网络参考模型。而 **TCP/IP参考模型是事实上的国际标准** ，即现实生活中被广泛使用的网络参考模型。

  * TCP/IP他是一个协议簇；而OSI（开放系统互联）则是一个模型，且TCP/IP的开发时间在OSI之前。

![Alt text](/media/042e666c11e0f32fe79b.png)

![Alt text](/media/62444cc9982dd2eee9d0.png)

## 基本概念

### 网络主机（network host）

**网络主机（network host）** \- 是已连接到一个计算机网络的一台电子计算机或其他设备。
使用TCP/IP协议族参与网络的计算机也可称为IP主机。更具体来说，参与互联网计算机可称为互联网主机，有时还称作互联网节点。

每台网络主机都是一个物理网络节点（即一个网络设备），但不是所有物理网络节点都是一台主机。调制解调器、集线器或网络交换器等网络设备有可能不被分配主机地址（有管理目的除外），因此不被认为是网络主机。网络打印机、硬件路由器等设备有IP地址，但由于它们不是通用目的计算机，它们有时候不被认为是主机。

### 地址

#### IP地址、子网掩码
  * IP（网络之间互连的协议）：是能使连接到网上的所有计算机网络实现相互通信的一套规则，规定了计算机在因特网上进行通信时应当遵守的规则。任何厂家生产的计算机系统，只要遵守IP协议就可以与因特网互连互通。
  * IP地址：IP地址是IP协议提供的一种统一的地址格式，它为互联网上的每一个网络和每一台主机分配一个逻辑地址，以此来屏蔽物理地址（每个机器都有一个编码，如MAC上就有一个叫MAC地址的东西）的差异。是32位二进制数据，通常以十进制表示，并以“.”分隔。IP地址是一种逻辑地地址，用来标识网络中一个个主机，在本地局域网上是惟一的。

IP地址 = 网络地址 + 主机地址(又称：主机号和网络号组成)
192.168.1.168（IP地址） = 192.168.1.0 (网络地址) + 0.0.0.168（主机地址）
  * 子网掩码(subnet mask)：互联网是由许多小型网络构成的，每个网络上都有许多主机，这样便构成了一个有层次的结构。IP地址在设计时就考虑到地址分配的层次特点，将每个IP地址都分割成 **网络号** 和 **主机号** 两部分，以便于IP地址的寻址操作。子网掩码只有一个作用，就是将某个IP地址划分成网络地址和主机地址两部分子网掩码的设定必须遵循一定的规则。

#### MAC地址
MAC地址（Media Access Control，介质访问控制）地址。全球唯一性

### 网关与路由器

  * 网关：网关(Gateway)又称网间连接器、协议转换器。网关在网络层以上实现网络互连，是复杂的网络互连设备，仅用于两个高层协议不同的网络互连。
是子网与外网连接的设备，通常是一个路由器。当一台计算机发送信息时，根据发送信息的目标地址， **通过子网掩码来判定目标主机是否在本地子网中** ，如果目标主机在 **本地子网** 中，则 **直接发送** 即可。如果目标 **不在本地子网** 中则将该信息 **送到缺省网关/路由器** ，由路由器将其转发到其他网络中，进一步寻找目标主机。

  * 默认网关/缺省网关（Default Gateway）：一台主机可以有多个网关。默认网关的意思是一台主机如果找不到可用的网关，就把数据包发给默认指定的网关，由这个网关来处理数据包。现在主机使用的网关，一般指的是默认网关。

**网关地址就是网关设备的IP地址。**

> TCP/IP协议也会根据子网掩码（255.255.255.0）判定两个网络中的主机处在不同的网络里。而要实现这 **两个网络之间的通信，则必须通过网关** 。如果网络A中的主机发现数据包的目标主机不在本地网络中，就把数据包转发给它自己的网关，再由网关转发给网络B的网关，网络B的网关再转发给网络B的某个主机。网络B向网络A转发数据包的过程也是如此 所以说，只有设置好网关的IP地址，TCP/IP协议才能实现不同网络之间的相互通信。那么这个IP地址是哪台机器的IP地址呢？ **网关的IP地址是具有路由功能的设备的IP地址** ，具有路由功能的设备有 **路由器** 、 **启用了路由协议的服务器** （实质上相当于一台路由器）、 **代理服务器** （也相当于一台路由器）。

  * 路由器：又可以称为网关设备。连接两个或多个网络的硬件设备，在网络间起网关的作用，是读取每一个数据包中的地址然后决定如何传送的专用智能性的网络设备。它能够理解不同的协议，例如某个局域网使用的以太网协议，因特网使用的TCP/IP协议。

> 路由器可以分析各种不同类型网络传来的数据包的目的地址，把非TCP/IP网络的地址转换成TCP/IP地址，或者反之；再根据选定的路由算法把各数据包按最佳路线传送到指定位置。所以路由器可以把非TCP/ IP网络连接到因特网上。

#### 网关的设置方法

  * 手动设置：手动设置适用于电脑数量比较少、TCP/IP参数基本不变的情况，比如只有几台到十几台电脑。因为这种方法需要在联入网络的每台电脑上设置“默认网关”，非常费劲，一旦因为迁移等原因导致必须修改默认网关的IP地址，就会给网管带来很大的麻烦，所以不推荐使用。需要特别注意的是：默认网关必须是电脑自己所在的网段中的IP地址，而不能填写其他网段中的IP地址。

  * 自动设置：自动设置就是利用DHCP服务器来自动给网络中的电脑分配 **IP地址、子网掩码和默认网关** 。这样做的好处是一旦网络的默认网关发生了变化时，只要更改了DHCP服务器中默认网关的设置，那么网络中所有的电脑均获得了新的默认网关的IP地址。这种方法适用于网络规模较大、TCP/IP参数有可能变动的网络。另外一种自动获得网关的办法是通过安装代理服务器软件（如MS Proxy）的客户端程序来自动获得，其原理和方法和DHCP有相似之处。

> DHCP（Dynamic Host Configuration Protocol, 动态主机配置协议）服务器 - DHCP指的是由服务器控制一段IP地址范围，客户机登录服务器时就可以自动获得服务器分配的IP地址和子网掩码。提升地址的使用率。

### 域名与DNS服务器

域名是由一串用点分隔的名字组成的，通常包含组织名，而且始终包括两到三个字母的后缀，以指明组织的类型或该域所在的国家或地区。

在Internet上域名与IP地址之间是一一对应的，域名虽然便于人们记忆，但机器之间只能互相认识IP地址，它们之间的转换工作称为域名解析，域名服务器(Domain Name Server)就是进行域名解析的服务器。

DNS 维护着 域名(domain name)和IP地址 (IP address)的对照表表，以解析消息的域名。

#### 域名解析的过程

![Alt text](/media/d7d986077386da416c14.png)

1、在浏览器中输入<http://www.qq.com>域名，操作系统会先检查自己本地的hosts文件是否有这个网址映射关系，如果有，就先调用这个IP地址映射，完成域名解析。

2、如果hosts里没有这个域名的映射，则查找本地DNS解析器缓存，是否有这个网址映射关系，如果有，直接返回，完成域名解析。

3、如果hosts与本地DNS解析器缓存都没有相应的网址映射关系，首先会找TCP/ip参数中设置的首选DNS服务器，在此我们叫它本地DNS服务器，此服务器收到查询时，如果要查询的域名，包含在本地配置区域资源中，则返回解析结果给客户机，完成域名解析，此解析具有权威性。

4、如果要查询的域名，不由本地DNS服务器区域解析，但该服务器已缓存了此网址映射关系，则调用这个IP地址映射，完成域名解析，此解析不具有权威性。

5、如果本地DNS服务器本地区域文件与缓存解析都失效，则根据本地DNS服务器的设置（是否设置转发器）进行查询，如果未用转发模式，本地DNS就把请求发至13台根DNS，根DNS服务器收到请求后会判断这个域名(.com)是谁来授权管理，并会返回一个负责该顶级域名服务器的一个IP。本地DNS服务器收到IP信息后，将会联系负责.com域的这台服务器。这台负责.com域的服务器收到请求后，如果自己无法解析，它就会找一个管理.com域的下一级DNS服务器地址(<http://qq.com>)给本地DNS服务器。当本地DNS服务器收到这个地址后，就会找<http://qq.com>域服务器，重复上面的动作，进行查询，直至找到<http://www.qq.com>主机。

6、如果用的是转发模式，此DNS服务器就会把请求转发至上一级DNS服务器，由上一级服务器进行解析，上一级服务器如果不能解析，或找根DNS或把转请求转至上上级，以此循环。不管是本地DNS服务器用是是转发，还是根提示，最后都是把结果返回给本地DNS服务器，由此DNS服务器再返回给客户机。

### 其他概念

  * 客户端:应用 C/S（客户端/服务器） B/S（浏览器/服务器）
  * 服务器：为客户端提供服务、数据、资源的机器
  * 请求：客户端向服务器索取数据
  * 响应：服务器对客户端请求作出反应，一般是返回给客户端数据
  * URL（Uniform Resource Locator统一资源定位符）： 网络中每一个资源都对应唯一的地址——URL

### 服务器

#### 远程服务器

别名：外网服务器、正式服务器
使用阶段：应用上线后使用的服务器
使用人群：供全体用户使用
速度：服务器的性能、用户的网速

#### 本地服务器

别名：内网服务器、测试服务器
使用阶段：应用处于开发、测试阶段使用的服务器
使用人群：仅供公司内部的开发人员、测试人员使用
速度：由于是局域网，所以速度飞快，有助于提高开发测试效率

### 端口

#### 广义的端口概念

端口包括：
  * 物理端口，如计算机的串口、并口、输入/输出设备以及适配器接口等
  * 软件端口

随着计算机网络技术的发展，原来物理上的接口（如键盘、鼠标、网卡、显示卡等输入/输出接口）已不能满足网络通信的要求。在TCP/IP协议中引入了一种称之为”Socket（套接字）”应用程序接口。TCP/IP协议集成到操作系统的内核中，这就相当于在操作系统中引入了一种新的输入/输出接口技术。有了这样一种接口技术，一台计算机就可以通过软件的方式与任何一台具有Socket接口的计算机进行通信。

端口在计算机编程上也就是”Socket接口”。

#### 端口的工作原理

一台服务器为什么可以同时是Web服务器，也可以是FTP服务器，还可以是邮件服务器等等。
不同的程序采用不同的端口分别提供不同的服务。
**如果多个程序使用相同的端口号会发生冲突。**
通过访问服务器时，如果输入地址+端口号，自然会通过端口访问相应的程序。如果程序没有配置端口号，就会使用默认端口，例如，HTTPS走的端口号是443，HTTP走的端口是80。
如果两个程序都没有配置端口号，并且使用的是同一个端口。那么在不使用HTTP协议的Host配置的情况下，通过IP地址访问进来，是无法区分访问哪个程序的，会导致端口冲突。

> 木马攻击原理：黑客程序都可以采用某种方法，定义出一个特殊的端口来达到入侵的目的的原因所在。为了定义出这个端口，就要依靠某种程序在计算机启动之前自动加载到内存，强行控制计算机打开那个特殊的端口。这个程序就是”后门”程序，这些后门程序就是常说的 **木马程序** 。

#### 端口分类

##### 从端口的性质来分

公认端口（WellKnownPorts）：这类端口也常称之为”常用端口”。这类端口的端口号从0到1024，它们紧密绑定于一些特定的服务。通常这些端口的通信明确表明了某种服务的协议，这种端口是不可再重新定义它的作用对象。

注册端口（RegisteredPorts）：端口号从1025到49151。它们松散地绑定于一些服务。程序可根据实际需要自己定义

动态和/或私有端口（Dynamic and/or PrivatePorts）：端口号从49152到65535。理论上，不应把常用服务分配在这些端口上。实际上，有些较为特殊的程序，特别是一些木马程序就非常喜欢用这些端口，因为这些端口常常不被引起注意，容易隐蔽。

> 常用端口号：
>  21 - FTP
>  25 - 邮件
>  443 - HTTPS
>  80/8080/3128/8081/9080 - HTTP

## HTTP协议相关

### HOST字段

Http请求头信息里面会带有一个Host字段

我们可以把几个网站假设在同一个服务器上面，几个域名（www.abc.com, www.123.com, www.prin.com）都解析到同一个IP地址，通过不同的Host可以区分出我是访问这个服务器上的哪个站点。

例如，使用Tomcat搭建网站，在Tomcat目录中创建3个子目录来放我上面的3个站点就可以了。编辑conf目录下的server.xml，把3个Host关联到以上3个目录下即可。

![Alt text](/media/88da6974cd17b762bb34.png)

## 概念区分

### 因特网和以太网

这是两个不同分类方式下的概念。
按照区域和范围来分 - 互联网 Internet 、广域网 WAN、局域网LAN

按照传输技术来分类，属于OSI参考类型的数据链路层 - 太网Ethernet 、ATM网、FDDI网

## Hyper-V

Hyper-V是微软提出的一种系统管理程序虚拟化技术，能够实现桌面虚拟化，是微软第一个采用类似Vmware ESXi和Citrix Xen的基于hypervisor的技术。

## 一些技巧

### IP查询

#### 内网IP(局域网IP)

命令行： ipconfig
设置->网络和Internet->状态->查看网络属性
控制面板->网络和Internet->网络和共享中心->以太网

![Alt text](/media/847d3026322500e1c4d4.png)

控制面板->网络和Internet->网络连接->双击网络连接->详细信息

![Alt text](/media/17584333342713cd9366.png)

#### 外网IP

百度搜索IP

### 设置静态IP

动态IP地址会在你每次重启电脑或者路由器的时候变更。如果你的设置需要固定IP地址（例如：端口转发），则这些设置无法运作，因为IP地址已经变更了。

静态IP不会变化。这是为何我们在结合其他联机排查步骤的时候，建议设置一个静态IP地址。

「控制面板」->「网络和Internet」-> 「网络和共享中心」-> 「更改适配器设置」

右键使用中的连接，并选择「状态」-> 「详细信息」-> 通过截屏等记录状态

![Alt text](/media/f3132bce4b3cf7557bae.png)

右键使用中的连接，并选择「属性」。通过提供的选项，勾选Internet Protocol Version 4 (TCP/IPv4)并点击「属性」按钮。

选择「使用下面的IP地址」并输入你之前记录的IP地址等。

### 内网搭建
<https://www.zhihu.com/question/268465533/answer/339793472>
<https://www.zhihu.com/question/291275274/answer/1275695454>

## Ref
<https://zhuanlan.zhihu.com/p/65226634>
<https://baike.baidu.com/item/%E8%B7%AF%E7%94%B1%E5%99%A8/108294?fr=aladdin>
<https://support.ubisoft.com/zh-CN/Article/000061001>
<https://www.zhihu.com/question/19918493>
<https://blog.csdn.net/qq_39521554/article/details/79894501>
