网络的相关知识
程序员文章站
2022-06-16 15:28:01
...
- 总线型网络:一根单线型网络,只能够存在一个信号发送,否则就会冲突,这就需要线路仲裁机制,称为介质访问控制
(MAC:Media Access Control)
;- 各个主机需要通过网络设备上面的地址来标识自己的身份,这个地址称为
MAC
地址,是计算机主机之间用来识别彼此的身份标准,对于数据包进行接收,然后在进行判断目的MAC
地址是否是自己; -
MAC
的首部(header)
包含目的主机的地址信息,同时还需要标识自己的地址; -
CSMA/CD
:Carrier Sense Multi Access Cllision Detection
载波侦听多路访问,冲突检测技术,使用这种机制的称为以太网,边听边发送,如果冲突,就会停止,过段时间再进行发送,该技术是以太网的核心;
- 各个主机需要通过网络设备上面的地址来标识自己的身份,这个地址称为
- 环形网络: 多台主机通过环形网络进行连接,在线路中游走着一个令牌环,令牌环是 IBM 的专用技术,是用来解决线路仲裁,成为
Token Ring
,持有令牌环才可以发送数据; - 星型网络:
HUB
总线上实现网络通信;从逻辑上来说只是总线型网络的一个变形;当网络上的主机越来越多时,冲突难所避免,而且受制于材料本身属性的制约,总线型网络不可能无限延伸,所以需要按照某种方式进行划分在信号传输时,需要进行信号的放大,使用中继器; - 当网络上的主机增多时,就需要进行网络的划分,但是各个网络之间需要进行信通信时,也就是跨网络之间的设备进行通信,就需要一个网桥设备,该网络设备需要将本地设备之间通信的信息进行本地之间的保留,将需要跨网络创数的数据按照网络的区域之间的协议进行传送;网桥设备内部之间维持有一个主机之间地址信息的一个表格,用于在就进行跨网络之间的信息传送的准确性;初始状态下,网桥设备是没有任何信息的,所以需要在所有的网络接口之间进行广播,当获得目的通信设备的信息之后,将返回信息,进行保存,生成一个记录,按照此方式一步一步的生成各个接口之间的网络设备的信息记录;
- 各种网络概念:
- 网桥:网桥是一个跨越两个局域网的交换设备.可以用来隔离广播域,在网桥的内部有一个存储空间,需要网络管理员将网络信息写入,或者通过算法自动添加,通过这种机制来区分不同网络的主机,这个机制是通过广播机制来实现的,这里使用的仍然是
MAC
地址,是工作在数据链路层的,通过维护这张表来表示不同接口上面的主机;- 第一次发送的广播报文是通过全
F
的机制来进行请求的,
- 第一次发送的广播报文是通过全
- 交换机:是局域网的第一个设备,隔离冲突域,不能够隔离广播域,减少冲突域,可以提升局域网的性能,交换机是网络功能更加强大的网桥,通过点阵设备可以实现
A-->B
,C-->D
的通信,可以用于隔离广播域,是智能的网桥; - 路由器是用来隔离广播域,路由器通过路由表来确定各个不同网络之间对应关系,是使用
IP
工作在网络层的设备; - 本地通信的地址必须是
MAC
地址,在存在IP
逻辑地址的前提下,同一个局域网里面的通信仍然使用的是MAC
地址;逻辑地址是用来区分不同网络的主机的,MAC
地址是用来区分同一网络内的不同主机的; -
ARP
:为了确定目的主机是否在线,首先应该进行广播,找到目的IP主机对应的MAC
地址; - 本地主机的
IP
和网关必须在同一个网络; - 网关:网关表示的就是网发送数据的一方在发送数据是发现自的
IP
地址也就是逻辑地址和目标主机的逻辑地址不在一个网络段时,可以将数据进行转发给一个网关地址,用于实现数据转发; - 路由器:是工作在网络层,用来隔离广播冲突的,并且使用
IP
地址来实现通信的一种机制,一个交换机用于连接不同的冲突域,而一个路由器用于连接不同的广播域,路由器的内部有 一张用于标识网络接口的信息,也就是网络可以通过那个接口可以到达,该表格称为路由表;如果需要跨几个路由进行通信是,首先和自己的子网掩码进行与运算得到是本地通信还是跨网络通信,当得到是跨网络通信后,交给路由设备,路由设备在和自己的所有网络接口进行与运算,如果发现都不符合那么应该使用某个不能相与的设备直接进行转发,到达下一个路由设备时,然后再分别和每一个子网进行相与运算,如果符合,进就行转发,如果仍然不符合,就继续交给某个不能相与的网络接口进行转发,一直到找个该子网为止,或者到达达到生存时间,将该数据包丢弃,或者到找到该目标主机,当进行数据返回时,同样需要进行这样的操作,但是在第一次进行通信时,路由表内部就会记录一个表格,当进行数据返回时,就会快的多;同时为了加快网络访问,需要使用协议来进行规范,比如每个路由器挡在配置好子网后,就会不停的向自己连接的路由器发送自己可以到达的子网的网关,当每个路由器得到这些信息后,就会完成自己的表格,同时会将自己更新后的表格信息在路由器之间进行转发,但是路由器 1,是不会存储和自己网络重复的信息,为了防止网络循环的出现;这个表格会按照一定的时间进行更新,以防止网络中断时,保证网络的可用性; - 路由表的收敛过程:当路由表内的信息由于里面的网络设备发生改变时,路由信息从一次稳定到下一次稳定所经历的时间;
- 网桥:网桥是一个跨越两个局域网的交换设备.可以用来隔离广播域,在网桥的内部有一个存储空间,需要网络管理员将网络信息写入,或者通过算法自动添加,通过这种机制来区分不同网络的主机,这个机制是通过广播机制来实现的,这里使用的仍然是
- 路由路径的选择是按照自己的协议进行选择的,每个路由里面都会有自己的路由成本的计算,进行考量后,进行选择成本最低的是路径进行路由,路由条目中目标地址是一个主机的路由是一个主机路由,目标地址是一个网络的是一个网络路由,以最佳匹配作为标准,
0.0.0.0
:表示的是缺省路由,或者称为默认路由;路由汇聚: - 本地通信的过程:
- 本地通信首先进行广播(使用六个
F
的MAC
地址),首先说明自己的IP
地址,然后
使用广播的方式查询目标主机的IP
,因为是广播所有统一网段(冲突域)的主机都可以接受到该报文,然后目标主机,收到后,按照自己接受的IP
地址进行回复,完成一次通信,这个过程中,是需要封装自己的MAC
地址的;
- 本地通信首先进行广播(使用六个
-
IP
地址对于局域网通信来说是用来实现路由器标记不同交换网络的一种逻辑地址,在是在通信的本地通信的过程中,局域网通信使用的是MAC
地址,但是仍然需要使用IP
地址作为主机标识,通过ARP
以及AARP
来进行地址转换 -
ARP
:正向地址解析,将MAC
地址转换成IP
地址; -
AARP
:反向地址解析,用于将 IP 地址解析成MAC
地址; IP
地址:分为网络地址和主机地址,其中子网掩码是用来判定网络地址和主机地址,子网掩码是根据IP
地址来选择网络地址;需要将IP
地址和子网掩码转换成二进制,然后执行相与运算,来计算网络地址,将自己的IP
地址和子网掩码相与后得到网络地址,比如172.25.23.0
,然后再和目标IP
地址相与。比如得到172.25.24.0
这样就可以判断两个IP
地址是处于不同的网段的,与运算:都为1,结果为
1,否则为
0`,当判断不在同一个网络时,就需要网关就进行转发;跨网络通信的一个过程
-
A
为172.25.23.0/24
网络,网关地址为172.25.23.255/24
主机包含A(172.25.23.1/24)
,B(172.25.23.2/24)
,C(172.25.23.3/24)
三个主机; -
B
为172.25.21.0/24
网络,网关地址为172.25.21.255/24
,主机包含D(172.25.21.1/24)
,E(172.25.21.2/24)
,F(172.25.21.3/24)
; - 当
23.1
需要和21.1
进行通信时,根据网关的 设定,报文在封装了sourceIP
和DestIP
之后,还会封装A
的MAC
地址以及Dest
网关172.25.23.255/24
的MAC
地址,当网关接收到这个报文之后,就会进行IP/netmask
的与运算,计算出目的网段和网关的网段是否在同一个网段,如果在同一个网段,就属于本地通信的过程; - 不在同一个网段时,查找自己上面的网段接口,如果有在同一个网段地址的,就封装
172.25.21.255/24
的MAC
地址,这里是在原有的基础上面再次进行封装,不会修改原有的封装信息 - 这个网关在得到报文后,确认是属于自己的网段,进行
ARP
解析,得到目的MAC
地址,这个网关同样的封装原MAC
为自己封装目标MAC
为21.1
将报文交给172.25.21.1/24
; - OSI七层模型
- 物理层:封装前导码,由于传输层传输的是电气信号,所以在物理层需要定义所使用传输设备的电压与信号,同时还必须了解数据帧转换成比特流的编码方式,最后连接实际的传输介质并接受发送比特信号;
- 数据链路层:封装
MAC
的报文,在此之上,还有一个用于标识报文标识,偏向硬件介质部分,主要负责的是MAC
的封装,称为MAC
数据帧的封装,MAC
是网络接口设备所能处理的主要数据包裹,也是最终被物理层编码成比特流的数据,MAC
必须要经过通信协议来取得网络介质的使用权,最常见的协议是IEEE 802.3
以太网络协议;偏向软件的部分则由逻辑链路层控制,主要在多任务处理来自上层的数据包裹,并转换成MAC
的格式,负责的工作包括信息交换,流量控制,差错控制等问题的处理,交换机和网桥工作在这一层了; - 网络层:封装
IP
报文,IP
地址,源IP
地址,目标IP
地址;IP
地址就是在这一层定义的,同时也定义计算机之间的连接建立,数据包传输的路径选择,还包括路由等概念; - 传输层: 用于封装
TCP/UDP
报文;定义发送端与传输端的连接技术(TCP
,UDP
技术),同时包括该技术的数据包格式,数据包的发送,流程的控制,传输过程中的侦测检查与重新传送等,用来确保各个数据包可以准确有序的发送到接收端; - 会话层: 定义了两个地址之间连接信道的建立和中断,此外,也可建立应用层之间的会话,提供其他加强型网络的管理,传输层是确保数据包准确的传送,会话层就是表示确认网络服务的建立;
- 表示层: 加密, 解密,是否进行压缩,将来自本地客户端的应用程序的数据格式转换成网络的标准格式,再交给传输层的协议来处理,同时也包括数据的加密,解密等处理都是在这个层次上的;
应用层; 具体的应用服务使用的协议;HTTP 协议,定义应用程程序如何进入该层的沟通接口,将数据接收并传送给应用程序
关于IP header协议报文里面的信息
- 解释以下上面各个字段的含义:
-
IP_Version
:-
4 bit
:表示IP
协议的版本号,用于说明IP
协议的版本号;
-
-
Header Length
:-
4 bit
:表示首部长度,首部长度是可以变的,因为里面包含Options
可选的段,标记的是行数,需要乘以4
表示真正的首部长度;
-
-
Type Of Service
:-
8 bit
:表示服务类型,表示报文的优先级,优先级高的优先发送;
-
-
Total Length
:-
16 bit
:表示整个长度,包含数据长度,整个长度-首部长度=数据长度
;
-
-
Identification [Fragment ID]
:-
16 bit
:表示标记符号,也就是片ID
,对于长度过于长的报文,可能会发生报文被切割成多个,这个字段用于标识各个报文之间是同一个报文,是否被切割取决于MTU
,最大传输单元;
-
-
Fargment Offset
:-
13 bit
:表示片偏移量,也就是上述被划分的片和片之间的逻辑关系,偏移量为0
作为报文的起始位置,偏移量一般是报文的长度; -
R
: -
MF
:表示这些片是被切割的,后面还由很多的片; -
DF
:表示片没有被切割是完整的;
-
-
Time-To-Live
-
TTL
:8 bit
, 表示生存时间,其实不是时间,是次数经过一个路由器就减一,为0
就丢弃这个报文,用于防止环形路由导致的幽灵包的出现;
-
-
Protocol
:-
8 bit
:用于说明这个报文的上层协议一般是TCP/UDP
,方便TCP/IP
协议栈进行处理;
-
-
Head CheckSum
:-
16 bit
:表示的是首部校验和,可以用于丢弃出错的报文;
-
-
Source IP
:-
32 bit
:源地址IP
;
-
-
Destination IP
:-
32 bit
:表示目标IP
;
-
-
Options
:- 表示可选项,如果存在,首部长度就会变长,最长支持
4
个字节;
- 表示可选项,如果存在,首部长度就会变长,最长支持
-
Data
:上层协议的所有数据;- 表示数据选项,应用层;具体的应用服务使用的协议;
-
IP地址
-
Internet Protocol Address
,表示的含义是网际协议地址,由IP
协议提供,IP
地址是一个逻辑地址的概念,用于区分为与不同网络上面的主机,通常使用点分十进制的方式来进行表示,一般是32
位的四段组成; -
IP
地址分为以下几类:-
A
类:第一段的8
位表示网络地址,剩下的表示主机地址,A
类地址0 000 0000
,其中第一个0
表示A
类地址,还剩下000 0000
,一共包含2^7
个地址其中127.0.0.1
用于回环地址,对于这里面的全0
和全1
的组合是不能够使用的,所以剩下1-->126
个地址,允许包含2^24-2
个主机; -
B
类:使用两段表示网络地址,10 00 0000. 0000 0000 --->10 11 1111. 1111 1111
,其中10
不能够使用,表示的网络范围从128.0-->191.255
,包含64个B
类地址,包含2^14[16383]
个网络地址,允许容纳2^16-2
个主机; -
C
类地址:使用三段表示网络地址110 0 0000. 0000 0000. 0000 0000 --> 110 1 1111. 1111 1111. 1111 1111
,表示的网络范围192.0.0-->223.255.255
,32
个C
类地址,2^21
个C
类子网; -
D
类:1110 0000--> 1110 1111
,这类地址多用于多播地址,从224-239
; -
E
类:1111
,表示范围从244-255
,属于保留地址;
-
-
IP
地址的私有地址-
A
类:10.0.0.0/8
-
B
类:172.16.0.0/16--->172.31.0.0/16
; -
C
类:192.168.0.0/24-->192.168.255.0/24
- 上面的地址属于私有地址,只允许在局域网内部进行使用,如果将这些地址在作为目标地址,那么数据包就会被丢弃;
-
TCP协议报文
-
TCP
:表示ransmission Control Protocol
,也就是传输控制协议,是面向连接的,保证数据可靠交付的,面向字节流传输层协议;
- 解释上面的报文里面的信息
-
Source Port Number
:-
16 bit
:表示源端口;
-
-
Destnation Port Number
:-
16 bit
:表示目标端口;
-
-
Sequence Numnber
:-
32 bit
:表示报文***;
-
-
Acknowledgement Number
:-
32 bit
:表示对于报文的确认号;
-
-
Header Length
:-
4 bit
:×4
表示真正的长度;
-
-
Reversed
:-
6 bit
:表示保留位;
-
-
URG
:- 表示紧急位;
-
ACK
:- 表示确认位,用于表示上面的确认位是否是有效的;
-
PUSH
:- 表示推送位,表示需要发送的数据,不能够放在缓存里面,应该立即进行发送;
-
REST
:- 表示重置,表示进行连接重置,但是不需要进行三次握手的过程,也不会进行连接断开的过程;
-
SYN
:- 表示同传请求,表示请求连接的请求;
-
FIN
:- 表示断开连接;
-
Windows_Size
:-
16 bit
: 滑动窗口,用于表示用于协调发送和接收数据的速度,防止数据发送接收的浪费,发送端的数据发送速度,需要考虑到接收端的接收速率;
-
-
TCP_Checksum
:-
16 bit
:表示TCP
的校验和,用于校验在传输过程中是否出错;
-
-
Urgent_Pointer
:-
16 bit
:需要结合上面URG
一起来使用,这个指针用于指向紧急数据最后一个字节的下一个字节,紧急数据字节号=TCP
报文***+紧急指针-1
;
-
-
Options
;-
32 bit
:表示可选的参数选项段;
-
-
data
:- 表示数据段;
-
TCP
连接建立的过程:-
send
将自己的的SYN
置为1
,并且生成一个随机数发送给recv
; -
recv
将自己的SYN
置为1
,并且将ACK
置为1
,同时将send
的随机数+1
,并生成随机数; -
send
:将自己的ACK
置为1
,将自己的随机数+1
,将对方的随机数+1
;
-
- 四次断开
-
TCP
连接断开的过程:-
send
将FIN
置为1
,将ACK
置为1
;
-
关于数据的封装以及协议对应
IP
需要注意的几项:- 对于网络来说,需要配置的信息:
IP
地址,NETMASK
子网掩码,GETWAY
默认网关,HOSTNAME
主机名,DNS
服务器地址; -
IP
地址是属于内核的,地址无论在哪个网卡上面,ping
这个主机都是可以Ping
通的; - 对于常见的网卡类型包括:
loopback
:本地回环地址,eth[0-9]
:表示以太网网卡,pppx
:表示点对点连接;
-
lo
:用于本地回环,多用于本地测试使用; eth[0-9]
:系统识别设 备是按照驱动程序提 供所关联的设备驱动号来识别的,在redhat5
上面网卡的别名定义在/etc/modprobe.conf
里面,对于rhel6
网卡别名是定义在/etc/udev/rules.d/
目录里面的;网络管理命令
-
ifconfig
: 用于显示处于活跃状态的网卡信息,
eth0 Link encap:Ethernet HWaddr 52:54:00:F1:3B:62
inet addr:172.25.23.2 Bcast:172.25.23.255 Mask:255.255.255.0
inet6 addr: fe80::5054:ff:fef1:3b62/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1123 errors:0 dropped:0 overruns:0 frame:0
TX packets:424 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:94530 (92.3 KiB) TX bytes:78974 (77.1 KiB)
- 解释上面显示的信息:
-
Link encap:Ethernet
:表示二层网络使用的协议; -
HWaddr
:表示硬件地址; -
inet addr
:表示IP
地址; -
Bcast
:表示广播地址; -
Mask
:表示子网掩码; -
inet6 addr
:表示IPv6
地址; -
Scope:Link
:表示地址的作用范围,Global
表示全局都可见,Link
,表示对于当前的网卡有效; -
UP
:表示启用状态; -
BROADCAST
:表示允许广播; -
RUNNING
:表示运行状态; -
MULTICAST
:表示允许多播; -
MTU
:表示最大传输单元; -
Metric
:度量; -
RX
:表示接收到的报文; -
packets
:表示接收到的报文的个数; -
errors
:表示错误的报文的个数; -
Drooped
:表示丢弃的报文个数; -
overruns
:表示溢出的个数; -
frame
:表示帧数; -
TX
:表示发送出去的; -
packets
:表示发送出去的报文的个数; -
collisions
:表示含有多少次冲突; -
txqueuelen
:表示传输的队列 - 选项:
-
-a
:用于显示所有的连接的配置信息;后面接网卡,用于显示某个网卡的详细信息; - 配置
IP
地址:ifconfig ethX IP/掩码 [up/down]
配置的同时可以启用或者停止这个网卡
-
- 网关配置
-
route
:-
-n
:表示以数字方式显示主机或者端口信息,不进行主机名或者端口信息的反解; -
add
:用于添加路由信息,-host
:表示主机路由;-net
:表示网络路由;例如:route add –net 10.0.0.0/8 gw 192.268.10.1
其中gw
表示网关;route
命令返回的信息:flags
里面U
表示启用状态,UG
表示网关路由; -
del
:用于删除路由-
-host
:用于添加主机路由; -
-net
:用于添加网络路由
-
-
- 添加默认路由:
- 删除路由信息
- 通过修改配置文件案来添加路由信息
- 路由信息的配置文件:
/etc/sysconfig/network-scripts/route-ethX
- 添加格式:
DEST(目标主机) via NEXTHOP(用于指定下一跳)
-
FLAG
的含义:-
U
:表示启用状态; -
G
:表示网络路由
-
- 对于通过命令进行的配置,在主机重启后就会失效,永久配置通过配置文件来进行更改
- 路由信息的配置文件:
- 添加文件
/etc/sysconfig/network-scripts/route-ehtX
,添加格式:
- 添加文件
1、DEST via NEXTHOP
192.168.10.0/24 via 10.10.10.254
2、ADDRESS0=目标地址 NETMASK0=子网掩码 GETWAY0=
上面两种格式是不能够同时使用的;
/etc/sysconfig/network
:网络配置文件;-
etc/sysconfig/network-scripts/ifcfg-
:网络接口配置文件; - 解释以下上面配置文件
/etc/sysconfig/network-scripts/ifcfg-
的信息
-
DEVICE
:表示关联的设备,要与ifcfg-NAME
保持一致; -
HWADDR
:表示主机的MAC
地址,与硬件地址一致,可以省略; -
TYPE
:表示网络类型; -
UUID
:全局统一标识符,用于识别不同的设备; -
BOOTPROTO
:表示网卡引导协议,-
static
:表示使用静态地址,使用none
含义是一样的; -
DHCP
:使用DHCP
服务器获取地址; -
bootp
:DHCP
协议的前身;
-
-
IPADDR
:ip
地址; -
NETMASK
:表示子网掩码; -
GATEWAY
:表示默认网关; -
PREFIX
:子网掩码的长度,和NETMASK
不同时使用; -
ONBOOT
:开机是否自动**设备; -
USERCTL={yes|no}
:表示是否允许普通用户禁止或者启用这个接口; PEERDNS={yes|no}
:是否在BOOTPROTO
为DHCP
时接收由DNS
服务器指定的DNS
地址;配置网卡别名
- 网卡别名也存在配置文件
/etc/sysconfig/network-scripts/ifcfg-ethX:X
,网卡别名的配置不允许使用DHCP
协议来进行配置,配置文件参考
DEVICE=eth1
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static //不能够使用DHCP协议
IPADDR=10.10.0.1
PREFIX=24
-
ip
命令:-
link
:与网络接口相关,用于配置网卡属性;-
show
:用于显示所有网络接口的属性信息,类似于ifconfig –a
得到的信息;
-
ip -s link show
:可以显示更加详细的信息:
-
-
set
:用于设定网络接口的属性;- 启用或者停止某块网卡
- 还可以用于设置以下的参数,例如:
-
dynamic
:表示静态地址; -
multicast
:表示多地址; -
txquenue name
:表示传送队列名称; -
address
:表示地址; -
mtu
:表示最大传输单元;
-
- 启用或者停止某块网卡
-
addr
:表示协议地址;一块网卡可以使用多个地址,网络设备可以用有别名,执行命令:ifconfig eth0:0 172.25.23.100/16
,地址是可以使用的 ,需要提供配置文件 , 编 辑/etc/sysconfig/network-scripts/ifcfg-ethX:X
添加:DEVICE=ethX: X
,因为是别名地址,所以不能够使用DHCP
来获取地址;-
add
:ip addr add ADDRESS dev DEVICE
,用于给设备添加另一个网络地址;使用ifconfig
是不能查看的,使用ip addr show
添加的是一个非主要地址;在上述命令后面添加关键字lable XXX
就会在ifconfig
命令后显示
-
del
:ip addr del IP 地址/子网掩码 dev device
用于删除添加的命令;
-
show
:ip addr show dev DEV to PREFIX
,用于显示前缀符合的设备; -
flush
:ip addr flush dev DEV to PREFIX
,用于删除前缀符合的设备;
-
-
route
:管理路由信息-
add
:ip route add to 10.0.0.0/8 dev eht0 via 172.16.0.1
,表示:经过eth0
的172.16.0.1
到达10.0.0.0/8
; -
del
:同样可以使用这个命令来删除;
-
-
主机名的配置
-
hostname HOSTNAME
,编辑/etc/sysconfig/network
文件里面的hostname=...
; -
NETWORKING=yes
:表示启用本机的网络功能; -
NETWORKING_IPV6=yes
:表示启用本机的 IPv6 功能; GETWAY
:也可以定义网关,这是小范围的定义,只对自己这个文件生效-
netstat
:- 网络管理命令:
-
-r
:用于显示路由表; -
-n
:表示不进行反解主机名; -
-t
:表示已经建立的TCP
链接; -
-u
:表示UDP
连接,无状态,一般显示不出来; -
-l
:表示Listen
状态的链接; -
-p
:显示监听指定套接字的进程的进程号以及进程名;
下一篇: PS 时间轴的使用