网络基础知识

本文根据《鸟哥的Linux私房菜-服务器架设篇》总结,会继续完善,欢迎你们评论交流,若是有错误或不足之处但愿你们可以指正node

网络

网络就是几部计算机主机或者是网络打印机之类的接口设备,经过网线或者是无线网络技术,将这些主机与设备链接起来、使得数据能够经过网络介质(网线以及其余网卡等硬件)来传输的一种方式。git

计算机网络组成组件

  • 节点(node):具备网络地址(IP)的设备的统称,如:通常PC
  • 服务器主机(server):以网络链接的方向来讲,提供数据以“响应”给用户的主机
  • 工做站(workstation)或客户端(client):以网络链接的方向来讲,主动发起链接去“要求”数据的,能够成为客户端
  • 网卡(Network Interface Card, NIC):内置或者是外接在主机上面的一个设备,主要用于提供网络链接
  • 网络接口:利用软件设计出来的网络接口,主要是提供网络地址(IP)的任务
  • 网络形态或拓扑(topology):各个节点在网络上面的链接方式,通常讲的数物理链接方式
  • 网关(gateway):具备两个以上的网络接口,能够链接两个以上不一样的网段的设备,如:IP路由器

计算机网络的范围

  • 局域网络(Local Area Network, LAN)
  • 广域网(Wide Area Network, WAN)

计算机网络协议:OSI 七层协议

注意:

协议层从物理层开始,分别对应Layer 1到Layer 7。 其中Layer2 数据链路层是比较特殊的一层,由于本层又分两个子层进行数据的转换操做。在偏硬件介质部分,主要负责MAC(Madia Access Control),咱们称这个数据包裹为MAC数据帧。在偏向软件的部分则是由逻辑链接层(Logical Link Control, LLC)所控制。主要在多任务处理来自上层的数据包数据(packet)并转成MAC格式,负责的工做包括信息交换、流量控制、失误问题的处理。浏览器

计算机网络协议:TCP/IP 协议

  • 应用程序阶段:打开浏览器,在浏览器的地址栏中输入网址,按下“Enter”键。此时网址信息与相关数据会被浏览器包成一个数据,并向下传给 TCP/IP 的应用层。
  • 应用层:由应用层提供的 HTTP 通讯协议,未来自浏览器的数据封装起来,并给予一个应用层报头,再向传输层丢去。
  • 传输层:因为 HTTP 为可靠链接,所以将数据丢入 TCP 封装内,并给予一个 TCP 封装的报头,向网络层丢去。
  • 网络层:将 TCP 数据封装到 IP 数据包内,在给予一个 IP 报头(主要就是来源与目标的 IP),向网络接口层丢去。
  • 网络接口层:若是使用以太网络时,此时 IP 会依据 CSMA/CD 的标准,封装到 MAC 数据帧中,并给予 MAC 帧头,再转成比特流后,利用传输介质发送到远程主机上。

TCP/IP 的网络接口层相关协议

广域网使用的设备

  • 传统电话拨号链接:经过PPP协议
  • 整合服务数字网络(Integrated Services Digital Network, ISDN)
  • 非对称数字用户环路(Asymmetric Digital Subscriber Line, ADSL):使用PPPoE协议
  • 电缆调制解调器(Cable Modem)

局域网使用的设备 -- 以太网

<a target="_blank" href="https://baike.baidu.com/item/%E4%BB%A5%E5%A4%AA%E7%BD%91/99684?fr=aladdin">以太网(Ethernet)</a>指的是由Xerox公司建立并由Xerox、Intel和DEC公司联合开发的基带局域网规范,是当今现有局域网采用的最通用的通讯协议标准。以太网络使用CSMA/CD(载波监听多路访问及冲突检测)技术,并以10M/S的速率运行在多种类型的电缆上。以太网与IEEE802.3系列标准相相似。 包括标准的以太网(10Mbit/s)、快速以太网(100Mbit/s)和10G(10Gbit/s)以太网。它们都符合IEEE802.3。 以太网的网线接头分为交叉线和直连线服务器

以太网络的传输协议:CSMA/CD

以太网的传输主要是网卡对网卡之间的数据传递 CSMA/CD 我的简单理解为:判断何时能够发送数据出去(避免冲突),且发送的数据为 MAC。网络

<a target="_blank" href="https://baike.baidu.com/item/CSMA/CD/986847">如下来源百度:</a> 其原理简单总结为:先听后发,边发边听,冲突停发,随机延迟后重发 它的主要目的是:提供寻址和媒体存取的控制方式,使得不一样设备或网络上的节点能够在多点的网络上通讯而不相互冲突。 控制规程的核心问题:解决在公共通道上以广播方式传送数据中可能出现的问题(主要是数据碰撞问题) 控制过程包含四个处理内容:监听、发送、检测、冲突处理 有人将CSMA/CD的工做过程形象的比喻成不少人在一间黑屋子中举行讨论会,参加会议的人都是只能听到其余人的声音。每一个人在说话前必须先倾听,只有等会场安静下来后,他才可以发言。人们将发言前监听以肯定是否已有人在发言的动做称为"载波监听";将在会场安静的状况下每人都有平等机会讲话成为“多路访问”;若是有两人或两人以上同时说话,你们就没法听清其中任何一人的发言,这种状况称为发生“冲突”。发言人在发言过程当中要及时发现是否发生冲突,这个动做称为“冲突检测”。若是发言人发现冲突已经发生,这时他须要中止讲话,而后随机后退延迟,再次重复上述过程,直至讲话成功。若是失败次数太多,他也许就放弃此次发言的想法。一般尝试16次后放弃。less

MAC 的封装格式

上面提到的CSMA/CD发送出去的数据帧,就是MAC。这个数据帧有两个特别重要的数据,就是目标与来源的网卡卡号,所以咱们又简称网卡卡号为MAC地址。 能够简单的理解为:MAC是一个在网线上传递的包裹,而这个包裹是整个网络硬件上面传送数据的最小单位。MAC 包含了 IP 数据包,且IP数据包包含 TCP 数据包dom

注意:在这个MAC的传送中,仅在局域网内生效,若是跨过不一样的子网,那么来源与目的的硬件地址就会跟着改变了。这是由于变成不一样的网卡交流了,因此卡号固然不一样

集线器与交换器

集线器是一种网络共享介质设备,交换器(OSI第二层的交换器)为交换式的集线器,非共享设备。ide

TCP/IP 的网络层相关数据包与数据

IP 数据包的封装

IP 分为 IPv4 和 IPv6,其中 IPv4 的地址仅有32位,IPv6 能够达到128位,目前最为广泛的是 IPv4。IP 数据包能够达到65535 bytes,再比MAC大的状况下,操做系统会对 IP 进行拆解的动做oop

<a target="_blank" href="https://en.wikipedia.org/wiki/IPv4">IPv4</a> 测试

  • Version(版本)
  • IHL(Internet Header Length, IP 报头的长度)
  • Type of Server(服务类型)
  • PPP:表示此 IP 数据包的优先级,目前不多使用
  • D:若为0表示通常延迟(delay),若为1表示为低延迟
  • T:若为0表示通常传输量(throughput),若为1表示高传输量
  • R:若为0表示通常可靠度(reliability),若为1表示高可靠度
  • UU:保留还没有使用
  • Total Length(总长度)
  • Identification(识别码)
  • Flags(特殊标志)
  • D:若为0表示可分段,若为1表示不可分段
  • M:若为0表示 IP 最后分段,若为1表示非最后分段
  • Fragment Offset(分段偏移)
  • Time To Live(TTL,生存时间)
  • Protocol Number(协议代码)
  • ICMP
  • IGMP
  • GGP
  • IP
  • TCP
  • EGP
  • UDP
  • Header Checksum(报头校验码)
  • Source Address(来源的 IP 地址)
  • Destination Address(目标的 IP 地址)
  • Options(其余参数)
  • Padding(补齐项目)

路由

路由表:每台主机都有本身的路由表,当主机想要发送数据时,参考的就是路由表(Route table)。

跨网段传送数据的流程:

  • 查询 IP 数据包的目标 IP 地址
  • 查询是否位于本机所在的网络路由表中
  • 查询默认路由(Default Gateway)
  • 送出数据包值 Default Gateway 后,不理会数据包流向,有服务器分析路由信息继续处理

IP 的分类、种类

如上图,IP分为五种等级,其中前三个等级较经常使用,Class D 是用来做为组播(multicast)的特殊功能之用(最经常使用在大批计算机的网络还原),Class E 则为保留网段。

IPv4又分为两个种类,分别为:

  • Public IP:公共 IP,经由 Inter NIC 所统一规划的 IP,只有这种 IP 才能够链接上Internet
  • Private IP:私有 IP 或保留 IP,不能直接连上 Internet 的 IP,主要用于局域网络内的主机链接规划

Loopback IP 网段: 属于 Class A的网络,为lo网络,lo网络是当初被用来做为测试操做系统内部循环所用的一个网络,同事也可以提供给系统内部本来就须要使用网络接口的服务(daemon)所使用。简单的说在没有安装网卡时想测试机器上的服务器环境,就可使用用了,例如 127.0.0.1

IP 的取得方式

  • 直接手动配置(static)
  • 经过拨号取得
  • 自动取得网络参数(DHCP)

子网与CIDR(Classless Interdomain Routing)

上图咱们看到了 子网掩码(Netmask)和 IP 各个分类的关系,从中能够观察到子网掩码的取值和 Net_ID 是相关的。当咱们想要更多网段时,能够将 Class C 继续进行子网的划分,且子网划分一样和 Net_ID 相关。 将 Class C 分红两个子网示例: 本来: 11000000.10101000.0000000.00000000 Network:192.168.0.0 11000000.10101000.0000000.11111111 Broadcast:192.168.0.255 其中 Net_ID 为:11000000.10101000.0000000 Netmask:255.255.255.0

划分以后: 11000000.10101000.0000000.0 0000000 Network:192.168.0.0 11000000.10101000.0000000.1 1111111 Broadcast:192.168.0.255 其中 Net_ID 为:11000000.10101000.1 Netmask:255.255.255.128

第一个子网 11000000.10101000.0000000.0 0000000 Network:192.168.0.0 11000000.10101000.0000000.0 1111111 Broadcast:192.168.0.127 Netmask:255.255.255.128 第二个子网 11000000.10101000.0000000.1 0000000 Network:192.168.0.128 11000000.10101000.0000000.1 1111111 Broadcast:192.168.0.255 Netmask:255.255.255.128

注意:Class C 中 Net_ID 是24位,若是 Net_ID 位26位分多少网段呢?由于26 - 24 = 2,2^2 = 4,所以分为4个网段,同理能够计算其余网段。

若是 Net_ID 为16则由192开头的 Class C 降为 Class B,这种打破本来 IP 等级的方式(经过 Netmask 的规范)就被称为无类别域间路由(CIDR)

IP 与 MAC:网络接口层的 ARP 与 RARP 协议

APR(Address Resolution Protocol,网络地址解析)协议,RARP(Revers ARP,反向网络地址解析)协议。 当咱们想要了解某个 IP 配置与哪张以太网卡时,咱们的主机就会对整个局域网发送出 ARP 数据包,对方收到 ARP 数据包就会返回他的 MAC 给咱们,以后开始传递数据。由于每次请求比较麻烦,所以使用 ARP 协议取得目标 IP 与他的网卡卡号后,就会将该笔记录写入咱们的主机 ARP table 中(内存内的数据),这个 ARP table 是动态信息(通常记录20分钟)

ICMP 协议

ICMP(Internet Control Message Protocol,即因特网信息控制协议):是一个错误检测与报告的机制,最大的功能是确保咱们的网络链接状态与链接的正确性。ICMP是网络层的重要数据包之一,不过是经过 IP 数据包来进行数据传送的(归入到了 IP 数据包中)

TCP/IP 的传输层相关数据包与数据

网络层的 IP 数据包只负责将数据送到正确的目标主机去,数据包的接受已经正确接受是传输层的任务之一。传输层有两个重点,一个是面向链接的 TCP 数据包,一个是无链接的 UDP 数据,数据能不能正确的被送达目的地,与这两个数据包有很大的关系。

面向链接的可靠 TCP 协议

  • Source Port & Destination Port(源端口 & 目标端口)
  • Sequence Number(数据包序号)
  • Acknowledge Number(回应序号)
  • Data Offset(数据补偿)
  • Reserved(保留)
  • Code(Control Flag,控制标志码)
  • URG(Urgent):若为1,表明该数据宝为紧急数据包
  • ACK(Acknowledge):若为1,表明这个数据包为响应数据包
  • PSH(Push function):若为1,表明要求对方当即传送缓冲区内的其余对应数据包,而无须等待缓冲区满了才送
  • RST(Reset):若是为1,表示链接会被立刻结束,而无须等待终止确认手续。
  • SYN(Synchronous):若为1,表示发送端但愿双方创建同步处理,也就是创建链接。主动链接到对方
  • FIN(Finish):若为1,表示传送结束通知对方,等待对方响应
  • Window(滑动窗口)
  • Checksum(确认校验码)
  • Urgent Pointer(紧急数据)
  • Option(任意数据)
  • Padding(不足字段)

通讯端口(Port):若是 A (port:1025) 要找 B 谈事情,先根据 B 的门牌号(IP)找到他家,再根据 B 的信息(好比他在家里的代号为2026,则Port:2026),找到他,而后和他一我的谈事情 特权端口(Privileged Ports):规范好的固定 port,这些 port number 一般小于 1024,且是提供给许多知名的网络服务软件用的(好比古代皇帝的名字,平民就要避讳)

TCP 的三次握手

  • 数据包发起
  • 数据包接收与确认数据包发送
  • 回送确认数据包
  • 取得最后确认

网络是双向的,因此不管是服务端仍是客户端,都必须经过一次 SYN 和 ACK 来创建链接,因此总共会进行三次交谈。

无链接的 UDP 协议

TCP 须要互动确认是否都在线,UDP 不须要确认 UDP 比较适合须要实时反应的一些数据流,例如影响实时传输软件等。

网络防火墙与 OSI 七层协议

利用一些防火墙机制与软件来进行数据包报头的分析,而且设定分析的规则,当发现某些特定的 IP 、特定的端口或者是特定的数据包信息(SYN/ACK等),那么就讲该数据包丢弃,这就是最基本的防火墙原理

以 OSI 七层协议来讲,每一层能够阻挡的数据有:

  • 第二层:能够针对来源与目标的MAC进行阻挡
  • 第三层:主要针对来源与目标的 IP,以及 ICMP 的类别(type)进行阻挡
  • 第四层:针对 TCP/UDP 的端口进行阻挡,也能够针对 TCP 的状态(code)来处理

连上 Internet 前的准备事项

在 Internet 上面使用的是 TCP/IP 通讯协议,须要用 Public IP 链接上 Internet

IP 地址、主机名与 DNS 系统

IP 地址是由32位二进制数字组成,虽然咱们使用时已经简化为十进制,可是仍然很差记忆。计算机都有本身的主机名称,将主机名称与 IP 对应起来,这样链接主机只要记住主机名就能够了。将主机与 IP 对应的系统,就是鼎鼎有名的的 DNS(Domain Name System)了。也就是 说,DNS 的主要功能就是在进行“主机名称与该主机 IP 的解析”,一项协议,好比:主机名(域名)为:www.baidu.com IP为:180.97.33.107(不肯定),很显然www.baidu.com 比 IP 容易记忆,咱们访问 www.baidu.com时,DNS就会自动帮咱们解析主机名,获取 IP,链接到主机。 在 Linux 中,DNS 主机 IP 的设定在/etc/resolv.conf 这个文件里面

连上 Internet 的必要网络参数

  • IP
  • Netmask
  • Network
  • Broadcast
  • Gateway
  • DNS
相关文章
相关标签/搜索