jinhucheung / blog

学习笔记

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Linux 学习之服务器篇 基础网络概念

jinhucheung opened this issue · comments

commented

1. 什么是网络

网络是将主机用网线或无线技术连接起来,使主机资源透过网络设备来传输的一种技术,其跨平台,一个标准用于不同操作系统间,这个标准为IEEE标准,其分为硬件标准(以太网络设备)与通信协议(TCP/IP)

1.1 网络组成元件

组成网络的元件有以下:

  • 节点: 主要是具有网络地址(IP)的设备
  • 服务器主机:一个提供资料的特殊节点
  • 工作站/客服端:任何可在网络上输入的设备都可是工作站/客服端,比如ATM机
  • 网络卡:以太网卡,内建或外插在主机上的设备,提供网络连线,一个节点至少有一个网络卡
  • 网络接口:提供网络地址,一张网卡至少可以搭配一个以上的网络接口,每台主机都有一个内部网络接口,其提供127.0.0.1/8这个IP
  • 路由或网关:其具有两个以上的网络接口,可连接两个以上的不同网段的设备
  • 网络拓扑:各个节点在网络上的连接方式

1.2 网络区域范围

通常以距离来划分网络分为区域网络(Local Area Network,LAN)与广域网络(Wide Area Network,WAN),区域网络通过用较好的设备来连接,而广域网络则用较便宜的设备

1.3 网络通信协议:OSI七层协议

因为网络通信涉及到相当多的环节,如硬件/软件封包等,故将网络通信的实现划分成多个层级,每个层级独立,只负责处理本层的任务

OSI七层模型如下图:

七层模型中越接近硬件的层为底层,越接近应用程序的为高层,每层只认识对方同一层的数据,且每层都有自己独特的表头资料(header)

每层负责的任务如下表:

OSI 模型
数据单元 功能
主机层 Dat(数据) 7. 应用层 网络进程到应用程序。提供为应用软件而设的界面,以设置与另一应用软件之间的通信。例如: HTTP,HTTPS,FTP,TELNET,SSH,SMTP,POP3等
6. 表示层 把数据转换为能与接收者的系统格式兼容并适合传输的格式
5. 会话层 负责在数据传输中设置和维护电脑网络中两台电脑之间的通信连接
Segments(数据段) 4. 传输层 把传输表头(TH)加至数据以形成数据包。传输表头包含了所使用的协议等发送信息。例如:传输控制协议(TCP/UDP) 等
媒介层 网络分组/数据报文 3. 网络层 决定数据的路径选择和转寄,将网络表头(NH)加至数据包,以形成分组。网络表头包含了网络数据。例如:互联网协议(IP) 等
Frame(数据帧) 2.数据链路层 负责网络寻址、错误侦测和改错。当表头和表尾被加至数据包时,会形成了帧。数据链表头(DLH)是包含了物理地址和错误侦测及改错的方法。数据链表尾(DLT)是一串指示数据包末端的字符串。例如以太网、无线局域网(Wi-Fi)和通用分组无线服务(GPRS)等
Bit(比特) 1.物理层 在局部局域网上传送帧,它负责管理电脑通信设备和网络媒体之间的互通。包括了针脚、电压、线缆规范、集线器、中继器、网卡、主机适配器等
commented

1.4 网络通信协议:TCP/IP

由于OSI过于严谨,所以实际使用时会将其简化,那就是TCP/IP协议,其为4层。

TCP/IP与OSI对应关系以及使用协议如下图:

TCP/IP如何运行,我们以打开一个网址为例:
0. 应用程序阶段: 在浏览器输入网址,此时网址与相关资料被浏览器包装成一个资料,向下传给TCP/IP的应用层

  1. 应用层阶段:由应用层提供的HTTP协议,将来自浏览器资料包装起来,并给予一个应用层表头,再向传输层送去
  2. 传输层阶段:由于HTTP为可靠连接,因此该包会被装入TCP封包中,并给予TCP包的表头,向网络层送去
  3. 网络层阶段:将TCP包装入IP封包,给予IP表头(包含来源IP:port与目的地IP:port),向链接层送去
  4. 链接层阶段:将IP包依据CSMA/CD标准,包装成MAC帧,并给予MAC表头,最后转换成位元串,利用传输设备送到远端主机上
  5. 服务器回应:服务器接受到此包后,会进行逆向地拆解,每个层级进行分析,最后取得想要的资料再根据上面的流程送回给客服端
commented

2. TCP/IP协议:链接层(Network Interface/link)

TCP/IP最底层的链接层主要与硬件有关,下面会说明WAN/LAN的硬件与以太网络的传输协议:CSMA/CD,以及MAC帧等概念

2.1 WAN使用的设备

LAN使用的设备较为便宜,但使用的设备非常多,一般用户通常接触到的主要是ADSL或光纤等

1) 传统电话拨号:通过ppp协议

早期网络只能通过数据机加上电话线以及电脑九针端口,通过点对点协议(Point-to-Point Protocol,PPP,它通常用在两节点间创建直接的连接),来访问网络,速度非常慢,通过打电话后就不能使用网络了

2) 综合业务数字网(Integrated Services Digital Network,ISDN)

利用现有的电话线路来达成网络连线的目的,只是连线两端都需要有ISDN数据机来提供连线功能,其有多种通道可以使用

3) 非对称数字用户线路(Asymmetric Digital Subscriber Line,ADSL)

采用频分多路复用技术把普通的电话线分成了电话、上行和下行三个相对独立的信道,从而避免了相互之间的干扰,注意ADSL中速度单位是bits/s,比如下行速度2Mbps,实际是256KB(types)ps

4) 线缆调制解调器(Cable modem)

是利用有线电视双向同轴电缆提供互联网相关应用服务的技术

2.2 LAN使用的设备:以太网

在局域网中使用的设备是以太网

1) 以太网速度与标准

  • 10Mbps/100Mbps/1Gbps/10Gbps/100Gbps以太网
  • 从10Gbps以太网标准包含7种不同类型,分别适用于局域网、城域网和广域网

2) 以太网网线接口

  • 目前以太网最常见的接口是RJ-45,共有8芯。因为每条芯线的不同RJ4-5分为568A与568B接口
  • 虽然RJ-45有8芯,实际使用的1,2,3,6芯
  • 跳线:一边接568A,一边接568B时称为跳线,用于直接连接两部主机的网卡
  • 平行线:两边同为568A或568B,用于连接主机与集线器的网卡
commented

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

以太网的传输主要就是网卡对网卡间的资料传递,每张网卡出厂时,都有独一无二的卡号,我们称为MAC(物理地址),其中传输遵循CSMA/CD协议

  • CS:载波侦听
    指任何连接到网络(LAN)上的设备在发送MAC帧前,先对网络进行监听,当通道空闲时,才发送
  • MA:多点传输
    一个设备发送的帧会被网络上其他设备所接收,接收的设备根据帧中目的地址来判断是否要处理此帧
  • CD:碰撞检测
    网络上帧碰撞时的一种解决方式,发送的帧具有检测功能,若网络上两帧发送碰撞损坏后,其发送端会随机等待一个时间再发送

2.4 链接层传输单位:帧及其最大传输量:MTU

1) 链接层传输单位:帧

CSMA/CD传输的单位就是帧(整个网络硬件上面传输资料的最小单位),一条网路一次只能通过一个帧,其内容如下

其中目的地址与来源地址就是MAC(物理地址),其范围是00:00:00:00:00:00FF:FF:FF:FF:FF:FF(6bytes,前3bytes是厂商编号,后3bytes是厂商定义编号) ifconfig可以查到MAC

帧实际数据大小范围:46bytes-MTU(1500bytes)

2) 最大传输量:MTU

以太网标准能传输的实际数据最大量称为MTU,通常是1500bytes,当IP包过大时,就会将IP包拆包装进帧中.

虽然MTU可以扩大,其需要硬件支持,不仅是自身的设备,还要求接收端的设备支持,所有通常不扩张

2.5 集线器与交换机

集线器与交换机都是以太网常用的设备

集线器:接收到帧,并向所有端口广播出去
交换机: 交换机内部的CPU会在每个端口成功连接时,通过将其MAC地址和端口对应,形成一张MAC表。在今后的通讯中,发往该MAC地址的数据包将仅送往其对应的端口,而不是所有的端口。

commented

3. TCP/IP协议:网络层

网络层提供路由和寻址的功能,使两终端系统能够互连且决定最佳路径,并具有一定的拥塞控制和流量控制的能力。TCP/IP协议体系中的网络层功能由IP协议规定和实现,故又称IP层

3.1 IP数据包

前面谈到链接层传输的数据单位是帧,而网络层传输的是IP包,由于IP有不同版本,目前广泛使用的是IPv4,其使用32位表示IP地址(IPv6用128位表示IP地址)

以下是一个IPv4的数据包

  • Version IP包的版本,IPv4或IPv6
  • IHL(Internet Header Length) IP表头长度
  • Type of Service IP包的服务类型,如高传输T,高可靠R
  • Total Length IP包总大小=表头+实际数据,最大达65535bytes
  • Identification 识别码,用于表示IP包被拆包,分段后,这些小包是否属于同一个IP包
  • Flags 特殊标志,D为0表可分段,1表不可分段等
  • Fragment Offset IP分段在原始IP包中的偏移量
  • Time To Live(TTL) IP包存活时间,取值范围为0-255,通过网络上一个路由器就减1,当TTL为0时,此包会被丢弃
  • Protocol Number 协议代码 记录此包在传输层及网络层使用的协议是什么,如TCP=6,UDP=17等
  • Header Checksum IP表头检查码,用于检查IP包表头的错误
  • Source Address 来源IP地址
  • Destination Address 目的IP地址
  • Options 其他额外功能,如安全处理,路由记录
  • Padding 由于IP每条资料必须是32bit,由于Options没有固定位数,所有Padding用于补齐

3.2 IP地址的组成与分级

如上面提到,IPv4由32位组成,其中我们又将这32位IP划分出Net_ID(用于标识网段)和Host_ID(用于标识同网段下的主机),为了方便记录,我们通常将这32位IP以每8位写成十进制来表示.如11111111 11111111 11111111 @11111111通常写成255.255.255.255

我们将Host_ID全为0的IP用来标识某网段地址(Network IP),用Host_ID全为1来标识此网段的广播地址(Broadcast IP)

1) IP与网段

前面我们提到Net_ID用于标识网段,首先我们需要明白,网段是在同一个物理网段上划分出来的,不是说你们两IP的Net_ID一样(前提是同一个物理网段)就可以广播通信

当我们确定在同一个网段时,可以通过CSMA/CD直接在此网段上广播自己的数据包出去

当我们确定在同一个物理网,不同的子网段上时,可以路由或者网关,将我们传送的包转交至其他网段上,然后在其他网段上广播到目的主机

2) IP与门牌

IP地址中的Net_ID就像我们的街道,Host_ID就像我们的门牌.而Host_ID全为0标识街道的地址,当我们要找街道上某户人时,我们可以在街道的广播设备(Host_ID全为1)上呼叫,目标听到后回应,而当我们写信给不同地方的朋友时,那只能通过邮局了(route),通过这个街道上的邮局都是用Host_ID全为1再减1后的IP来标识

3) IP分级

为了规范Net_ID的位数,于是我们将IP进行分级,其中A类IP为0.0.0.0/8-127.255.255.255/8 B类IP为128.0.0.0/16-191.255.0.0/16 C类IP为192.0.0.0/24-223.255.255.255/24,其中IP/Num的Num是Net_ID的位数

commented

3.3 IP的类别与取得方式

1) IP类别

上面是对IP进行分级,下面我们对IP进行分类,其可以分成公有IP和私有IP,而我们要连上Internet须使用公有IP,私有IP用来构建局域网来划分主机,如果要将私有IP送上Internet,需要架设防火墙与NAT服务

IPv4规划好的私有IP:
A类私有IP : 10.0.0.0 - 10.255.255.255
B类私有IP : 172.16.0.0 - 172.31.255.255
C类私有IP : 192.168.0.0 - 192.168.255.255

此外还有一个特殊的IP网段(loopback),用于本地测试使用,就是127.0.0.0/8,本地服务都是在此网段的主机上启动,如127.0.0.1这个IP

2) IP取得方式

  • 直接手动设置:向网关询问IP相关参数
  • 通过拨号取得
  • 自动取得网络参数(DHCP):在局域网内架设一部主机负责管理所有主机的网络参数

3.4 子网掩码(Netmask)与无类别域间路由(CIDR)

1) 子网掩码

由于我们默认使用的IP地址,可能Host_ID过多,实际使用时,我们并没有这么多主机(如一个A类IP可使用2^24-2个主机),假设我们有这么多主机,如果我们同时向这些主机广播一个数据包,也是很痛苦的一件事

所以我们将我们获取的IP地址再进一步划分出不同的子网段,来管理网络(其实就是从Host_ID中分出子网的ID位)

Netmask就是用32位IP地址中Net_ID全为1,Host_ID全为0来表示

假设我要对192.168.0.0/24这个IP地址划分出2个子网
可以这么做Net_ID+1=24+1=25,由于划分出两个网段,原本192.168.0.0/24有256个IP,每个网段有128个IP,
那么第1个网段地址(Network IP)是192.168.0.0/25 而其广播地址(Broadcast IP)是192.168.0.127/25
第2个网段地址是192.168.0.128/25 而其广播地址是192.168.0.255
子网掩码是255.255.255.128

2) 无类别域间路由(CIDR)

打破原本IP分级,将Net_ID位用作Host_ID位,使得多个网段写成一个网段

commented

3.5 路由概念与查看本机路由表

1) 路由概念

在同一个网段内,我们可以通过IP广播来传输数据,而如上面提到的,当你要在不同网段上传输数据时,这时就只能借助邮局(路由或网关)了,路由其实就是路径选择

我们以下图为例

192.168.0.0/24192.168.1.0/24是不同网段,当PC01传输资料给PC11,其流程如下

  1. 查询IP包的目的IP地址
    当PC01要传输IP包时,查询到IP包表头的目的IP地址

  2. 查询本机的路由
    PC01查看其的路由表,发现目的IP与自己处于同网段时,就会广播数据包出去

  3. 查询默认路由器(default gateway)
    本例中由于PC01与PC11在不同网段,所以PC01会将IP包发给其设置的路由器,由路由器处理此包,本例是server A

  4. 路由器转交IP包到目的网段
    路由器查看自己的路由信息,将PC01的IP包转交给192.168.1.254,并将IP包在此网段广播出去,给目的IP

由上我们可以知道,每台主机都存在一个路由表,而且会设置其默认的网关/路由器地址,用于不同网段间的通信

2) 查看本机路由表:route

我们可以使用route来查看本机的路由表,其中第1列是网段地址,而default来表示缺省的网段

3.6 IP与MAC:ARP与RARP协议

我们知道,网络实际上是利用MAC来传输帧,并不是我们指定的IP,所以我们需要通过IP地址来获取MAC地址,则就是ARP协议

ARP协议:通过广播包含目标IP地址的ARP包出去,目标接收到此包后会返回其MAC地址,发送端接收到目标MAC地址后记录进ARP table中,并开始通信

RARP协议是MAC地址来获取IP地址

查看本机的MAC地址:ifconfig

查看本机的ARP table: arp

3.7 反馈信息:ICMP协议

网络控制消息协定(Internet Control Message Protocol,ICMP),通常用于返回的错误信息或是分析路由。ICMP错误消息总是包括了源数据并返回给发送者。 ICMP错误消息的例子之一是TTL值过期。每个路由器在转发数据报的时候都会把IP包头中的TTL值减一。如果TTL值为0,“TTL在传输中过期”的消息将会回报给源地址。 每个ICMP消息都是直接封装在一个IP数据包中的,因此,和UDP一样,ICMP是不可靠的。

commented

4. TCP/IP协议:传输层

网络层的IP只是负责将数据送到正确的目标上,而数据没有被接收,那是传输层的任务之一,传输层的封包分为连接导向的TCP封包,与非连接导向的UDP封包

4.1 可靠连接的TCP协议

通常传输层会将数据打包成TCP包,然后将其传入网络层,装入IP包中,TCP包/IP包/帧的关系如下图

TCP数据包如下

  • source port & destination port : 来源IP中的端口与目标IP中的服务端口,传输数据时,两个端口需要连接,其中一个IP与一个端口组成socket pair
  • sequence number: TCP包比IP包大时,TCP包进行分段,sequence number就是每个分段的序号
  • acknoledge number:回应代码
  • Data offsetOptions的补齐,保证TCP包的大小
  • Reserved 保留
  • Code 控制码,好让接收端明白这个封包的动作
    • ACK 回应
    • SYN 表示发送端希望与接收端建立同步连接
    • FIN 表示传输结束
    • URG 表示紧急包,接收端应紧急处理
    • PSH 要求接收端立即传输缓存区的对应的包
    • RST 强制结束连线
  • Window 主要用于控制包的流量
  • Checksum 发送端发送资料前,进行检验动作,检验码写到此项中
  • Urgent pointer 紧急资料,与URG对应,告知紧急资料所在位置
  • Options 表示接收端可以接收的最大数据容量
  • Padding 补齐包的大小

4.2 TCP的三次握手

TCP被称为可靠的连线传输,是因为客服端与接收端建立在同步连接的基础上的,而同步连接是通过三次握手来实现,如下图

通过客服端发起SYN连线请求,服务端发起ACK/SYN请求,最后客服端回应ACK建立连接

commented

4.3 非连接导向的UDP协议

在UDP传输过程中,不会建立连线,接收端在接收到包后不会回应(ACK)发送端,直接发送数据给与客服端,不管客服端是否正确接收到数据,UDP较为快速

UDP数据包如下

4.4 网络防火墙与OSI七层协议

防火墙针对OSI七层协议来说,每层可以抵挡的方面有:

  • 第二层: 可以针对来源与目标的MAC进行抵挡
  • 第三层: 可以针对来源与目标的IP,以及ICMP的类别进行抵挡
  • 第四层: 可以针对TCP/UDP的端口进行抵挡,也可以针对TCP的状态来处理