无线网络标准
IEEE 802.3
802.11a/b/g/n/ac 物理层,数据链路层data link layer
以太网是工作在物理层和数据链路层上
单工,双工(物理层概念)
单工:单向传输数据 (广播,收音机)
双工:双向传输数据
全双工:同时双向 (手机)
半双工:轮流双向 (对讲机)
Hub集线器
共享带宽(同一时间只能一台机器发数据)
半双工(一边发另一边不能发)
广播发送数据(没有安全性)
工作在物理层(不记忆MAC地址)
冲突域:指范围,一个主机发送单波数据另一个主机同时发送单波数据,数据冲突,这两台主机就在同一个
冲突域。如果两个主机同时向网络发信息,信息不冲突,就证明两个主机在不同的冲突域。
以太网桥
工作在数据链路层(记录MAC地址)
学习源地址填充MAC地址表(网桥表)
网桥可以隔离分割冲突域
学习时根据源地址记录机器位置,添加到网桥表
通过记录网桥表,实现数据隔离,分割冲突域
当学习完成,进入转发阶段时,以太网桥是通过目标地址来转发
网桥能够隔断冲突域不能隔断广播域
广播地址只能出现在目标地址,所以网桥表不可能出现广播地址
广播域:一个主机发送广播,其他机子收到广播,那就表示所有机子在一个广播域中。
交换机swich
工作在数据链路层(MAC地址)
全双工
每一个接口代表一个冲突域
无法隔断广播域
查看网卡信息
mii -tool -v eth0
ethtool eth0
路由器router
工作在网络层
隔断广播形成的广播域
选择路由表中到达目标最好的路径
维护和检查路由信息
连接广域网
路由表记录的不是MAC地址而是IP地址
路由器和电脑上都有路由表而且至关重要
只要要网络通讯,就必须有路由表告诉系统信息应该怎么走
路由器隔开的叫网段
注意:100M的网络传输100M的数据理论要8秒多,因为实际传输速率是要100M/8bit,还有报文首部等额
外验证信息等要传输,所以实际达不到那么高。
查看路由表(在电脑和路由器上都有)
route -n
网卡工作在数据链路层
wifi 802.11工作在数据链路层
交换机是局域网设备,路由器是广域网设备
局域网通讯是基于广播机制的,广域网通讯是基于单波(点对点)机制。
VLAN虚拟局域网
交换机隔断广播域的技术
VLAN=广播域=逻辑网络(Subnet)=网段
按照交换机端口来划分不同的VLAN,实现隔断广播的效果
VLAN一般使用数字来编号 10VLAN 20VLAN
在同一个广播域的机器必须使用同一个广播域的IP地址(网段)
172.20.x.x 不能直接访问 172.18.x.x 必须加路由器
因此可以在路由器上加安全访问策略,实现单向或双向或禁止访问。
两个VLAN间通讯必须有路由
因此用trunk连接路由器和交换机,实现不同VLAN之间的通讯。
trunk
干道线路
链接不同楼层同一VLAN接口的数据,可以同时传输多个VLAN数据。
trunk协议
为了区别不同VLAN数据,所以会修改数据包,为数据帧打标签,添加VLAN标签
国际标准:802.1Q (华为等)
思科:ISL
(另一个角度划分)分层的网络架构:
核心层 高速交换机 企业级应用快速转发
分布层 路由器 路由、安全策略
访问层 交换机 接入
TCP/IP 协议栈 OSI
应用层 data 应用层 表示层 会话层
传输层 tcp/udp 传输层
Internet层 ip 网络层
网络访问层 ethernet 数据链路层 物理层
应用层协议:
http80 https443 ftp21 nfs dns(tcp53 udp53) tftp69 smtp25 pop3 imap143 telnet23 ssh22 QQ
mysql 3306
oracle 1521
sql server 1433
查询协议
cat /etc/services
cat /etc/services | less
端口号就是标记
表示上层协议的区分
传输层
UDP TCP
里面含有上层协议的端口号,用于区分数据的类型
多会话
分段
流控制(需要时)
面向连接(需要时)
可靠性(需要时)
Internet层
里面也有标记体现上层是TCP还是UDP协议的类型
IP地址
TCP
传输控制协议
工作在传输层
可靠 (错误检查)
有序号 (可重传)
文件Email下载
UDP
用户数据包协议
高效
无序号
声音图像流
TCP特性
工作在传输层
面向连接协议(有协商过程)
全双工
半关闭
错误检查
数据包打包分段
确认机制
数据恢复重传
流量控制滑动窗口
拥塞控制,慢启动和拥塞避免算法
TCP包头
共32位
0-15位表示源端口
16-31位表示目的端口
因此理论最多通讯的应用程序
2^16=65536
IANA:互联网数字分配机构
0-1023:系统端口(仅管理员可用端口)
1024-49151:用户端口或注册端口
49152-65536:随机端口(客户端,上面是服务器的端口)
其范围的定义:/proc/sys/net/ipv4/ip_local_port_range
查看当前空余未被使用的端口号
cat /etc/services | grep 9527
源端口、目标端口:计算机上的进程要和其他进程通信是要通过计算机端口的,而一个计算机端口某个时刻只能被一个进程占用,所以通过指定源端口和目标端口,就可以知道是哪两个进程需要通信。源端口、目标端口是用16位表示的,可推算计算机的端口个数为2^16个NFS network file system
端口号不固定,且同时用好几个
序号
本方电脑端的数据包编号
最大编号
2^32
42亿多,用完就重新从0编(配合时间戳区分)
确认号
对方电脑端的序号
例如序号为100对方确认号就是101
表示100号包已收到并希望本方下次发101号包
ACK:表示是否前面的确认号字段是否有效。ACK=1,表示有效。只有当ACK=1时,前面的确认号字段才有效。TCP规定,连接建立后,ACK必须为1,带ACK标志的TCP报文段称为确认报文段
SYN:在建立连接时使用,用来同步序号。当SYN=1,ACK=0时,表示这是一个请求建立连接的报文段;当SYN=1,ACK=1时,表示对方同意建立连接。SYN=1,说明这是一个请求建立连接或同意建立连接的报文。只有在前两次握手中SYN才置为1,带SYN标志的TCP报文段称为同步报文段
FIN:表示通知对方本端要关闭连接了,标记数据是否发送完毕。如果FIN=1,即告诉对方:“我的数据已经发送完毕,你可以释放连接了”,带FIN标志的TCP报文段称为结束报文段
三次握手: A状态 B 状态
第一次握手:SYN位是1其他位全为0 CLOSED CLOSED/ LISTEN
第二次握手:SYN、ACK为1其他为0 SYN-SENT SYN-RCVD
第三次握手:ACK为1其他为0 ESTABLISHED ESTABLISHED
四次挥手: A状态 B状态
第一次挥手:FIN为1 ESTABLISHED/FIN-WAIT1 ESTABLISHED
第二次挥手:ACK为1 FIN-WAIT2 CLOSE-WAIT
第三次挥手:FIN、ACK为1 FIN-WAIT2 LAST-ACK
时间等待状态:2倍MSL时间,消息生存期
第四次挥手:ACK为1 TIME-WAIT /CLOSED CLOSED
有限状态机FSM:FiniteState Machine
CLOSED 没有任何连接状态
LISTEN 侦听状态,等待来自远方TCP端口的连接请求
SYN-SENT 在发送连接请求后,等待对方确认
SYN-RECEIVED 在收到和发送一个连接请求后,等待对方确认
ESTABLISHED 代表传输连接建立,双方进入数据传送状态
FIN-WAIT-1 主动关闭,主机已发送关闭连接请求,等待对方确认
FIN-WAIT-2 主动关闭,主机已收到对方关闭传输连接确认,等待对方发送关闭传输连接请求
TIME-WAIT 完成双向传输连接关闭,等待所有分组消失
CLOSE-WAIT 被动关闭,收到对方发来的关闭连接请求,并已确认
LAST-ACK 被动关闭,等待最后一个关闭传输连接确认,并等待所有分组消失
CLOSING 双方同时尝试关闭传输连接,等待对方确认 (比较少见)
窗口大小:表示现在允许对方发送的数据量,也就是告诉对方,从本报文段的确认号开始允许对方发送的数据量
校验和:提供额外的可靠性
紧急指针:标记紧急数据在数据字段中的位置
处于FIN_WAIT_2状态的客户端需要等待服务器发送结束报文段,才能转移至TIME_WAIT状态,否则它将一直停留在这个状态。如果不是为了在半关闭状态下继续接收数据,连接长时间地停留在FIN_WAIT_2状态并无益处。连接停留在FIN_WAIT_2状态的情况可能发生在:客户端执行半关闭后,未等服务器关闭连接就强行退出了。此时客户端连接由内核来接管,可称之为孤儿连接(和孤儿进程类似)
孤儿连接数最大数目:
/proc/sys/net/ipv4/tcp_max_orphans
孤儿连接最大保留时间:
/proc/sys/net/ipv4/tcp_fin_timeout
SYN攻击
通过不断发送2次握手耗光服务器内存,导致服务器无法响应普通用户访问
哪些端口处于监听状态
ss -ntul
Window size
固定窗口
滑动窗口
与TCP超时重传相关的两个内核参数:
/proc/sys/net/ipv4/tcp_retries1,指定在底层IP接管之前TCP最少执行的重传次数,默认值是3
/proc/sys/net/ipv4/tcp_retries2,指定连接放弃前TCP最多可以执行的重传次数,默认值15(一般对应13~30min)
UDP包头
16bit source port 16bit destination port
16bit UDP length 16bit UDP checksum
data
特性
工作在传输层
提供不可靠的网络访问
非面向连接协议
有限的错误检查
传输性能高
无数据恢复特性
Internet层
Internet Protocol IP
Internet Control Message Protocol (ICMP)
Address Resolution Protocol(ARP)
Reverse Address Resolution Protocol(RARP)
分层编址
无数据恢复功能
IP协议
ICMP协议
ping 命令就是用这种协议
默认每次发送一条
判断网络稳定性:把包调大 最大65507
ping 192.168.30.128 -s 65507
洪水攻击 dos攻击 拒绝服务
必须本机性能比目标性能好,或者组团PING
ping 172.20.108.10 -s 65507 -f
IGMP 多播应用
Internet Group Management Protocol
ARP
地址解析协议
把IP地址解析成MAC地址
查看APR
arp -n
注意:
tcp握手前一定要经过arp广播取得MAC地址才有可能进行
电脑上有一个类似路由表的表格,把取得的IP和MAC地址关系存放起来
ARP协议是基于广播机制
ARP广播不能跨路由
ARP会先行判断两台机子是否处于一个4网段:
1)如果是一个网段则发送ARP广播。
2)如果不是,就使用ARP广播发送IP地址给默认网关,以此取得路由网关的MAC端口地址,以后发送数据包直接使用对应端口的网关MAC地址,由路由再次使用ARP广播取得目标机器MAC地址,同时转发信息给目标IP机器。
3)由此可知,在跨路由情况下,MAC地址会变化,IP地址不变。
arp -d
清除目标IP地址对应MAC地址记录
systemctl restart network
重启网络
特殊ARP
机子重启后,通过自问自答形式取得IP,目的防止将使用的IP地址与网络上其他机子冲突(IP相同)。
RARP
反向地址解析协议
通过MAC地址获得绑定的IP地址
通常用于无硬盘工作站获取IP
通常获取的是固定的IP地址
面试:
当你打开网络浏览器访问网站,背后做了什么事
它详细的工作过程是什么?
应用层APP发出通讯请求,并提出数据包是基于可靠还是基于效率。
传输层响应上层APP的请求,准备建立通讯,基于可靠性则使用TCP协议,基于效率则使用UDP协议。在数据包里添加源端口号以及SYN等信息,并向下层INTERNET层提出通讯要求。
INTERNET层响应上层传输层的要求,准备建立IP通讯,把上层信息添加好本机以及对方IP地址信息,并通过查询ARP表来确定是否有对应IP的MAC地址,如果没有,则需要通过ARP广播向网路中寻找目标IP。于是向下层网络访问层提出ARP广播请求。
网络访问层响应INTERNET层要求,把源地址设为自己MAC,以48个1广播地址为目标MAC向网路发送广播信息。对方主机的网络访问层收到Frame后,向INTERNET层反映,目标主机INTERNET层收到广播信息后,添加对方IP以及MAC地址到自己的ARP table,要求网络访问层通过单波把自己的MAC地址信息发送回给主机。主机收到信息后,传送给本机ARP,并在ARPtable里添加上对方的IP以及MAC信息。
至此通讯双方的IP以及MAC地址信息都已经齐全,可以开始三次握手过程,SYN、SYN ACK 、ACK通过三次握手建立对话连接后,开始进入稳定数据传输模式。
Internet 协议特征
运行于OSI 网络层
面向无连接的协议
独立处理数据包
分层编址
尽力而为传输
无数据恢复功能
IP PDU 报头
含有上层协议的类型(tcp/udp)
版本:占4位 ipv4
标识: 大于1500数据帧大小的单位切割的标识,标识一样就代表来自同一个包
标志:占3位,表示包是拆分包还是不可拆分包,同时是否最后一个拆分包
目前只有后两位有意义
DF,中间的一位,只有当DF=0时才允许分片
MF,最高位,MF=1表示后面还有分片。MF=0表示最后一个分片。
源地址 目标地址 每个地址32位 2^32 总共42亿个地址
片偏移,实际就是切片包位于整个数据包的位置。
生存时间就是,ping命令看到的ttl,以经过路由器数量为单位,每经过一个路由器,ttl值就要减1。ttl为0则会被认为失效,会被抛弃。默认值为64。
ttl值可人为更改
echo 128 > /proc/sys/net/ipv4/ip_default_ttl
linux默认64,windows默认128,为防黑客通过ping判断系统类型,可以修改ttl来实现。
192.168.30.128
如何从10进制转换成2进制
实际范围就是:0-255 00000000-11111111
00000000 0
00000001 1
00000010 2
00000100 4
00001000 8
00010000 16
00100000 32
01000000 64
10000000 128
11111111 255
所以根据上图可知,
192=128+64
11000000
168=128+32+8
10000000+00100000+00001000=10101000
30=32-2
00100000-00000010=00011110
128
10000000
192.168.30.128
11000000 10101000 00011110 10000000
把这一串数字连起来用bc转化成10进制就是
3232243328
ping 3232243328 能ping通!
实验证明IP地址为2进制
协议域 Protocol Numbers
6表示TCP
17表示UDP
它们可唯一标识IP 网络中的每台设备
每台主机(计算机、网络设备、外围设备)必须具有唯一的地址
IP地址由两部分组成:
网络ID:netid
标识网络
每个网段分配一个网络ID
主机ID:hostid
标识单个主机
由组织分配给各设备
为什么有了唯一的MAC地址还要有IP地址来标识设备?
因为MAC地址体现不出管理性,IP地址则可以体现管理思路,例如通过网络ID体现主机处于哪个网段,主机ID体现哪个网段里哪一台主机。
网络ID肯定在前面,主机ID肯定在后面,具体看地址分类:
A类地址
0XXXXXXX.J.Y.Z
范围就是
00000000 0
01111111 127
0-127
但是0和127都是特殊地址必须去除,所以实际范围是1-126
前8位为网络ID
A类网络有几个?
公式:
网络(网段)数量=2^可变网络ID位数
一个网络的主机数量=2^主机ID位数-2
两个地址不能用所以减2:
X.0.0.0 X网段号
X.255.255.255 X网段广播
有类地址:
类别 地址 网段号 网络ID 主机ID
A 0xxxxxxx.j.y.z 1-126 前8位 后 24位
B 10xxxxxx.xxxxxxxx.y.z 128-191 前16位 后16位
C 110xxxxx.xxxxxxxx.xxxxxxxx.z 192-223 前24位 后8位
D 1110xxxxx.x.x.x 224-239 多播地址
E 11110xxx.x.x.x 240-255 保留地址
本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/101537