Linux 学习之服务器篇 基础网络概念
jinhucheung opened this issue · comments
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七层协议
因为网络通信涉及到相当多的环节,如硬件/软件封包等,故将网络通信的实现划分成多个层级,每个层级独立,只负责处理本层的任务
七层模型中越接近硬件的层为底层,越接近应用程序的为高层,每层只认识对方同一层的数据,且每层都有自己独特的表头资料(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.物理层 | 在局部局域网上传送帧,它负责管理电脑通信设备和网络媒体之间的互通。包括了针脚、电压、线缆规范、集线器、中继器、网卡、主机适配器等 |
1.4 网络通信协议:TCP/IP
由于OSI过于严谨,所以实际使用时会将其简化,那就是TCP/IP协议,其为4层。
TCP/IP如何运行,我们以打开一个网址为例:
0. 应用程序阶段: 在浏览器输入网址,此时网址与相关资料被浏览器包装成一个资料,向下传给TCP/IP的应用层
- 应用层阶段:由应用层提供的HTTP协议,将来自浏览器资料包装起来,并给予一个应用层表头,再向传输层送去
- 传输层阶段:由于HTTP为可靠连接,因此该包会被装入TCP封包中,并给予TCP包的表头,向网络层送去
- 网络层阶段:将TCP包装入IP封包,给予IP表头(包含来源IP:port与目的地IP:port),向链接层送去
- 链接层阶段:将IP包依据CSMA/CD标准,包装成MAC帧,并给予MAC表头,最后转换成位元串,利用传输设备送到远端主机上
- 服务器回应:服务器接受到此包后,会进行逆向地拆解,每个层级进行分析,最后取得想要的资料再根据上面的流程送回给客服端
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,用于连接主机与集线器的网卡
2.3 以太网的传输协议:CSMA/CD
以太网的传输主要就是网卡对网卡间的资料传递,每张网卡出厂时,都有独一无二的卡号,我们称为MAC(物理地址),其中传输遵循CSMA/CD协议
- CS:载波侦听
指任何连接到网络(LAN)上的设备在发送MAC帧前,先对网络进行监听,当通道空闲时,才发送 - MA:多点传输
一个设备发送的帧会被网络上其他设备所接收,接收的设备根据帧中目的地址来判断是否要处理此帧 - CD:碰撞检测
网络上帧碰撞时的一种解决方式,发送的帧具有检测功能,若网络上两帧发送碰撞损坏后,其发送端会随机等待一个时间再发送
2.4 链接层传输单位:帧及其最大传输量:MTU
1) 链接层传输单位:帧
CSMA/CD传输的单位就是帧(整个网络硬件上面传输资料的最小单位),一条网路一次只能通过一个帧,其内容如下
其中目的地址与来源地址就是MAC(物理地址),其范围是00:00:00:00:00:00
到FF: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地址的数据包将仅送往其对应的端口,而不是所有的端口。
3. TCP/IP协议:网络层
网络层提供路由和寻址的功能,使两终端系统能够互连且决定最佳路径,并具有一定的拥塞控制和流量控制的能力。TCP/IP协议体系中的网络层功能由IP协议规定和实现,故又称IP层
3.1 IP数据包
前面谈到链接层传输的数据单位是帧,而网络层传输的是IP包,由于IP有不同版本,目前广泛使用的是IPv4,其使用32位表示IP地址(IPv6用128位表示IP地址)
Version
IP包的版本,IPv4或IPv6IHL(Internet Header Length)
IP表头长度Type of Service
IP包的服务类型,如高传输T,高可靠RTotal Length
IP包总大小=表头+实际数据,最大达65535bytesIdentification
识别码,用于表示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的位数
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位,使得多个网段写成一个网段
3.5 路由概念与查看本机路由表
1) 路由概念
在同一个网段内,我们可以通过IP广播来传输数据,而如上面提到的,当你要在不同网段上传输数据时,这时就只能借助邮局(路由或网关)了,路由其实就是路径选择
192.168.0.0/24
与192.168.1.0/24
是不同网段,当PC01传输资料给PC11,其流程如下
-
查询IP包的目的IP地址
当PC01要传输IP包时,查询到IP包表头的目的IP地址 -
查询本机的路由
PC01查看其的路由表,发现目的IP与自己处于同网段时,就会广播数据包出去 -
查询默认路由器(default gateway)
本例中由于PC01与PC11在不同网段,所以PC01会将IP包发给其设置的路由器,由路由器处理此包,本例是server A -
路由器转交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是不可靠的。
4. TCP/IP协议:传输层
网络层的IP只是负责将数据送到正确的目标上,而数据没有被接收,那是传输层的任务之一,传输层的封包分为连接导向的TCP封包,与非连接导向的UDP封包
4.1 可靠连接的TCP协议
通常传输层会将数据打包成TCP包,然后将其传入网络层,装入IP包中,TCP包/IP包/帧的关系如下图
source port & destination port
: 来源IP中的端口与目标IP中的服务端口,传输数据时,两个端口需要连接,其中一个IP与一个端口组成socket pairsequence number
: TCP包比IP包大时,TCP包进行分段,sequence number就是每个分段的序号acknoledge number
:回应代码Data offset
对Options
的补齐,保证TCP包的大小Reserved
保留Code
控制码,好让接收端明白这个封包的动作ACK
回应SYN
表示发送端希望与接收端建立同步连接FIN
表示传输结束URG
表示紧急包,接收端应紧急处理PSH
要求接收端立即传输缓存区的对应的包RST
强制结束连线
Window
主要用于控制包的流量Checksum
发送端发送资料前,进行检验动作,检验码写到此项中Urgent pointer
紧急资料,与URG
对应,告知紧急资料所在位置Options
表示接收端可以接收的最大数据容量Padding
补齐包的大小
4.2 TCP的三次握手
TCP被称为可靠的连线传输,是因为客服端与接收端建立在同步连接的基础上的,而同步连接是通过三次握手来实现,如下图
通过客服端发起SYN连线请求,服务端发起ACK/SYN请求,最后客服端回应ACK建立连接
4.3 非连接导向的UDP协议
在UDP传输过程中,不会建立连线,接收端在接收到包后不会回应(ACK)发送端,直接发送数据给与客服端,不管客服端是否正确接收到数据,UDP较为快速
4.4 网络防火墙与OSI七层协议
防火墙针对OSI七层协议来说,每层可以抵挡的方面有:
- 第二层: 可以针对来源与目标的MAC进行抵挡
- 第三层: 可以针对来源与目标的IP,以及ICMP的类别进行抵挡
- 第四层: 可以针对TCP/UDP的端口进行抵挡,也可以针对TCP的状态来处理