网络基础知识
1.网络的分层模型
OSI模型的七层结构
7.应用层 :网络进程访问应用层
6.表示层 :数据表示
5.会话层 : 主机间通信
4.传输层 : 传输问题
3.网络层 :传输数据
2.数据链路层 :访问介质
1.物理层 :二进制传输
当我们发送数据时,每一层要进行数据的封装 如图
同样受到数据时会进行解封装 如图
网线我们常用的网线为双绞线UTP 其线序有两种
T568B
白橙 橙 白绿 蓝 白蓝 绿 白棕 棕
T568A
白绿 绿 白橙 蓝 白蓝 橙 白棕 棕
100M宽带以下通信我们需要用的到的线其实只有四根
12 36 当带宽高了以后需要用到的线就多了
T568A 和T568B之间也就是把12 和36 相互掉一个位置
MAC地址
MAC地址是
网卡
在出厂时,
厂商
烧于
网卡芯片
内的12位的16进制
数字
,用于标识每一个网卡的,全世界没有一个相同的。MAC工作在第二层
数据链路层
,它的作用就是用来标识一台装有网卡的
计算机
,也就是工作于网络中的计算机。
TCP/IP 协议栈
TCP协议栈共分四层 他相对应的OSI模型的层级为
4.应用层 7.应用层 :网络进程访问应用层
6.表示层 :数据表示
5.会话层 : 主机间通信
3.传输层 4.传输层 : 传输问题
2.internet层 3.网络层 :传输数据
1.网络访问层 2.数据链路层 :访问介质
1.物理层 :二进制传输
1) 网络接口层:
主要是指物理层次的一些接口,比如电缆等.
2) 网络层:
提供独立于硬件的逻辑寻址,实现物理地址与逻辑地址的转换.
在 TCP / IP 协议族中,网络层协议包括 IP 协议(网际协议),ICMP 协议( Internet 互联网控制报文协议),以及 IGMP 协议( Internet 组管理协议).
3) 传输层:
为网络提供了流量控制,错误控制和确认服务.
在 TCP / IP 协议族中有两个互不相同的传输协议: TCP(传输控制协议)和 UDP(用户数据报协议).
4) 应用层:
为网络排错,文件传输,远程控制和 Internet 操作提供具体的应用程序
TCP协议包头为 如图
其中建立通讯比较重要的数据有 源端口 目的端口 序号 确认号 标记位中重要的有ACK , SYN
结束通讯的重要的数据有 源端口 目的端口 序号 确认号 标记位中重要的有ACK , SYN FIN
TCP协议是在ARP协议之后的
ARP广播是基于广播模式的
TCP协议的特性
工作在传输层
面向连接协议
全双工协议
半关闭
错误检查
讲数据打包成段,排序
确认机制
数据恢复重传
流量控制,滑动窗口
拥塞控制,慢启动么拥塞避免算法
TCP协议的三次握手
1. 建立连接时,客户端发送SYN包(SYN=i)到服务器,并进入到SYN-SEND状态,等待服务器确认
2. 服务器收到SYN包,必须确认客户的SYN(ack=i+1),同时自己也发送一个SYN包(SYN=k),即SYN+ACK包,此时服务器进入SYN-RECV状态
3. 客户端收到服务器的SYN+ACK包,向服务器发送确认报ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手
SYN攻击
在三次握手过程中,Server发送SYN-ACK之后,收到Client的ACK之前的TCP连接称为半连接(half-open connect),此时Server处于SYN_RCVD状态,当收到ACK后,Server转入ESTABLISHED状态。SYN攻击就是 Client在短时间内伪造大量不存在的IP地址,并向Server不断地发送SYN包,Server回复确认包,并等待Client的确认,由于源地址 是不存在的,因此,Server需要不断重发直至超时,这些伪造的SYN包将产时间占用未连接队列,导致正常的SYN请求因为队列满而被丢弃,从而引起网 络堵塞甚至系统瘫痪。SYN攻击时一种典型的DDOS攻击,检测SYN攻击的方式非常简单,即当Server上有大量半连接状态且源IP地址是随机的,则可以断定遭到SYN攻击了,使用如下命令可以让之现行:
#netstat -nap | grep SYN_RECV
四次挥手
1. 客户端A发送一个FIN,用来关闭客户A到服务器B的数据传送
2. 服务器B收到这个FIN,它发回一个ACK,确认序号为收到的序号加1,和SYN一样,一个FIN将占用一个序号。
3. 服务器B关闭与客户端A的连接,发送一个FIN给客户端A
4. 客户端A发回ACK报文确认,并将确认序号设置为收到序号加1
,
IP协议包头如图
IP地址有两部分组成
1.网络ID
2.主机ID
IP地址分为四类
A类
0 000 0000 - 0 111 1111: 1-127
网络数:126, 127
每个网络中的主机数:2^24-2
默认子网掩码:255.0.0.0
私网地址:10.0.0.0
B类
10 00 0000 - 10 11 1111:128-191
网络数:2^14
每个网络中的主机数:2^16-2
默认子网掩码:255.255.0.0
私网地址:172.16.0.0-172.31.0.0
C类
110 0 0000 - 110 1 1111: 192-223
网络数:2^21
每个网络中的主机数:2^8-2
默认子网掩码:255.255.255.0
私网地址:192.168.0.0-192.168.255.0
D类
1110 0000 - 1110 1111: 224-239
特殊地址有
0.0.0.0 0.0.0.0不是一个真正意义上的IP地址。它表示一个集合:所有不清楚的主机和目的网络。
255.255.255.255 限制广播地址。对本机来说,这个地址指本网段内(同一广播域)的所有主机
127.0.0.1~127.255.255.254 本机回环地址,主要用于测试。在传输介质上永远不应该出现目的地址为“127.0.0.1”的 数据包。
224.0.0.0到239.255.255.255 组播地址,224.0.0.1特指所有主机,224.0.0.2特指所有路由器。224.0.0.5指OSPF 路由器,地址 多用于一些特定的程序以及多媒体程序
169.254.x.x 如果Windows主机使用了DHCP自动分配IP地址,而又无法从DHCP服务器获取地址,系统会为主 机分配这样地址。
介于ABCD累的分类方式不一定能满足大多数要求所以现在生产中并不常用了 现在比较常用的是无类的IP地址
无类的IP地址
CIDR (无类域间路由):网络ID,主机不确定
CIDR表示法:172.20.0.1/22
无类IP地址需要用子网掩码(netmask)来定义
netmask: 是32位的二进制数,网络ID位数netmask对应是1 ,主机ID位数netmask为0
公式1:网段数量=2^可变网络ID位数
公式2:一个网段中可存在的主机数=2^(32-网络ID位数)-2
练习 :192.168.200.154/26的子网掩码是?
答案 :255.255.255.192
最多的主机数是多少
答案:2^6-2=62个
网络ID=IP地址和子网掩码相与
练习:172.20.222.123/20
172.20.222.123/20
在不在一个网段
答 172.20.208.0
172.10.224.0
不在一个网段
练习2
A:192.168.1.100/16和B:192.168.2.100/24在不在一个网段
答:从A的角度看在同一网段,B的角度看不在同一网段
划分子网
将一个大网络切割成多个小网络,需要借位(网络ID向主机ID借位)
一旦划分子网则主机ID数量减少两个(边界的两个主机ID不能用)
借N位,得到的子网数是2^N个子网数
练习 10.0.0.0/8分出32个子网
1)新的子网掩码是(netmask):10.00000 000.00000000.00000000
答:255.248.0.0
2)每个子网的主机ID是多少: 2^19-2
答:52万左右
10.248.0.0/13
希望再次把这个分成32个子网 10.00000000.00 000000.0
子网掩码:255.255.192.0 /18
主机数2^(32-18)-2个
新的最小IP是
10.248.0.0/18
最大是
10.255.192.0/18
3)最大的网络IP是 最小IP的是
10.00000 000.0.0 10.0.0.0/13 (与子网掩码相与)
10.11111 000.0.0 10.248.0.0/13 (与子网掩码相与)
合并超网
主机ID位向网络ID为借位
路由
路由器是为了实现多个网段互通的
路由器的工作原理是基于路由器里面的路由表的
搭建路由记录不需要搭建到单台主机,只需要到主机所在的网段就可以了
路由的分类有
主机路由
网络路由
默认路由
默认路由默认为0.0.0.0 路由器路由表中没有记录的就需要走默认路由
route -n 查看路由表
路由表的构成:
1) 目标IP : 数据包发送的目标路径
2) 子网掩码(netmask) : 配合目标IP使用
3) interface:路由器的出口(从哪个接口出去可以到达目标网络) (本路由器出来的接口)
4) gateway (网关):
如果是直连网络,网关可以不用配置
如果是非直连网络则是下一个路由器临近本路由器的地址 (下一个路由器临近我的口的IP地址)
练习
A ---1 R1 2 -----3 R2 4 ------ 5 R3 6-------B
A和B通讯需要的过程
1.判断B和自己是不是在同一个网段
2.ARP广播寻 通过IP1找R1的MAC地址
3.目标地址MAC R1 目标IP B 的IP 源IP A的IP 目标端口(如果用http端口是80)
4.R1查看自己的路由表查看到B 是否直连
5R1发送给R2 ,重复上面的步骤
详细步骤如图
LINUX 开启转发功能
echo 1 >> /proc/sys/net/ipv4/ip_forword 此文件是临时生效 如果想永久生效则
centos6 需要修改
/etc/sysctl.conf文件中的"net.ipv4.ip_forward 中的0 改为1
centos7 需要
echo
"net.ipv4.ip_forward=1"
> /etc/sysctl.d/ip_forward.conf
就可以了
IP路由的选择
网卡命名规则文件
/etc/udev/rules.d/70-persistent-net.rules
修改完之后可以重启让配置生效
但是服务器一般不能重启,我们可以用命令
dmesg | grep -i eth
先查看网卡的驱动模块
或者用ethtool -i eth#(#为你刚才修改的网卡)
命令modprobe -r e1000 (e1000是查到的网卡驱动名)
modrobe e1000启动网卡
就可以了
命令
ifconfig 查看网络状态
-a显示本机上所有活动的网络接口信息
ETH#:查看某个网卡名位ETH#的接口信息
ifconfig 网卡名 up 启用网卡
ifconfig 网卡名 down 禁用网卡
ifconfig eth1 1.1.1.1/24 : 把网卡eth1的地址改为1.1.1.1/24 (临时性更改)
ifdown 网卡名 : 禁用网卡 (需要有配置文件)
ifup 网卡名 :启用网卡 (需要有配置文件)
ip link :查看网络状态
route
route -n 查看路由表
添加路由
route add [-net|-host] target [netmask Nm] [gw Gw] [[dev] If]
添加默认路由
route add -net IP/#(网段) gw ########
route add default gw #######
网卡配置文件:
/etc/sysconfig/network-script/ifcfg-eth#
删除
route del -net IP/#(网段)
netstat 查看网络状态
常用选项
-a 所有的(可配合u 、t 等使用 )
-l :监听状态
-n:以数字格式显示
-u:显示utp协议的
-p :监听时使用,显示相关的进程及PID
-e :扩展格式的信息
-t:显示tcp协议的
-w :裸套接字相关
经常配合使用:-tan -uan -tnl -unl
显示路由表的信息
netstat:
-r:显示内核路由表
-n:数字显示
显示接口信息
netstat:
-i :显示总的接口信息
-I :后边跟单个接口信息
ip命令
ip link
set ETH# up |down (关闭|开启某接口)
show :显示接口信息 可以(加单个接口)查看单个接口
ip addr {add|del} NEWIP DEV 添加|删除IP地址
ip addr add 172.20.0.100/16 dev eth0
ip addr add 172.20.0.100/16 dev eth0 label eth0:0 (增加地址)(网卡别名方式)
ip addr del 172.20.0.100/16 dev eth0
ip route add
网卡的工作模式 scope
globe:全局 (一台机器上的两个网卡如果是全局模式。则无论开不开启内核转发都可以互联互通)
link :单网卡模式
host :单机模式
ss命令
格式 ss [OPTION]...[FILTER]
OPTION:
-t :tcp相关
-u :udp相关
-w :裸套接字相关
-x :unix sock相关
-l :监听模式的链接
-n: 数字模式
-p :相关程序及PID
-e :扩展的信息
-m:内存用量
-o :计时器信息的
常用组合:-tan -tanl -tanlp -uan
LINUX网络配置文件
/etc/sysconfig/network-scripts/ifcfg-IFACE :IP 掩码以及网关 DNS的配置文件
/etc/syaconfig/network-scripts/route_IFACE :路由的配置文件
/etc/sysconfig/network-scripts/ifcfg-IFACE中的参数
DEVICE= 此配置文件应用到的文件
HARDDR= 对应设备的MAC地址
BOOTPROTO= 激活此设备时使用的地址配置协议常用的有 dhcp static none bootp等
ONBOOT= 系统启动时候是否激活次设备
TYPE= 接口类型常见的有Ethernet ,Bridge
静态情况时
IPADDR= IP地址
NETMASK= 子网掩码
GATEWAY= 默认网关
DNS1 第一个DNS服务器
DNS2 第二个服务器
USERCTL= 普通用户是否可以控制此设备
PEERDNS= 如果BOOTROTP的值为0 是否允许dhcp 是否允许dhcp server分配的dns服务器指向信息直接覆盖至/etc/resolv.conf中
/etc/syaconfig/network-scripts/route_IFACE文件格式
地址 via 网关 (via是写到文件里的)
(2)ADDRESS0=
NETMASK0=
GATEWAY0=
如何给一个网卡加多个地址
ifconfig eth0:0 192.168.0.2/16 up
备注ifconfig所有的配置都是应用于内核的,所以只会临时生效,重启网络服务后会立即失效。
对于slave地址,即别名地址,若要永久生效,应该建立对应的别名接口配置文件,如/ets/sysconfig/network-scripts/ifcfg-eth0:0,然后在该文件中的DEVICE关键字上给定eth0:0名称,该DEVICE项必须配置正确。
ip 命令
配置文件
ifcfg-IFACE_ALIAS
DEVICE=IFACE-ALIAS
网络接口识别并命名的
查看端口与程序的对应关系
/etc/services