基础知识:
局域网内寻址通过MAC地址(物理地址)来实现
FF:FF:FF:FF:FF:FF为MAC的广播地址,主机间通信发起方如果不知道接收方MAC会用此MAC地址发一个广播包。
电缆传输过程:电流(电信号)------经过一段距离(电阻)-----电信号衰减—中继器
不同介质的传输距离不同,但都是有限的。
网桥、交换机:切割冲突域(有端口MAC对应表,定期清理---学习)
路由器:(有路由表,定期学习、清理),选路根据路由协议,逻辑寻址依靠被路由协议(如ip协议)切割广播域(引入IP等逻辑地址寻址)
网络模式:
单工:只能单向发送数据。
半双工:可以双向发送数据,但同一时刻只能有一方可以发送数据(如对讲机)。
全双工:如双绞线,传输数据只要用到2跟线(一个为发送数据用的,一个为接收数据用的),另外2根用来屏蔽干扰。双机互联必须使用交叉线(一端收,一端发),双方同时可以向对方发送数据,就如同电话机,电话线就只有两条线!---千兆网络需要使用双绞线全部8条线
主机要联网----必须设置一个网关(即默认路由)
***MAC地址不能跨网络,每次都由router封装为自己出口网口的MAC地址(主机间通信最终还是要靠MAC地址!)
RARP(MAC—IP, 已知对方MAC地址,请求IP地址)
IP地址分为2段:网络地址.主机地址;以子网掩码标识网络位。
子网掩码:是一堆连续的1和0组成的二进制数字。
路由过程:发信息前,系统判定目标主机是否属于本主机所在网络,若不是则通过网关发出去。
**端口(范围0~65535):系统通过端口来识别同一系统上的不同进程,以表示2台不同主机的进程间的通信。流程:数据包----网卡----内核空间(查看目标端口号)-----用户空间对应进程
*服务器需要监听在某端口上,它的端口号必须固定以便于客户端访问。
*一个端口只能对应一个进程,2者之间建立起对应关系,这种机制对于服务器端称为被动打开,对于客户端称为主动打开。
端口与IP有一一对应的关系,1台server上有多个ip,就可以有多个80端口可供使用(每个ip一个80端口),对于server程序来说,必须至少与其中一个ip绑定,这种绑定(1个ip、1个端口)称为套接字(socket)
ISO/OSI 7层网络模型
TCP/IP网络模型
IP地址分类A\B\C\D
127.0.00/8用于回环地址
*主机位全1为广播地址,全0为网络地址
*)国际组织ICANN管理IPv4地址,如需使用需要向他们注册购买
私有地址(这些地址不会被互联网上的路由器路由的,路由即选路):
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
术语:
主机路由:目标地址为主机IP的路由条目。
网络路由:目标地址为网络IP的路由条目。
*路由选路原则:一般以最佳匹配/最长匹配条目优先。
*默认路由/缺省路由:0.0.0.0 在路由表中找不到目标IP的条目时走这条路由。
超网(将几个小网络合并为一个大的网络,对应网络位转为主机位)
分网(变长子网掩码,将一个大网络分为几个小网络)
*远端主机之间底层(物理层)可能不同,可能是ethernet/ppp/ATM等不同的MAC算法的网络,这些都由router来屏蔽了不同。
TCP/IP网络模型
第四层:传输层
UDP协议:用户数据报协议,无连接的协议;不管接收方是否可以收到,只管发,效率高,用于例如QQ等即时通讯软件,UDP较简单,采用UDP的程序一般通过应用层来控制传输错误。
TCP协议描述:有连接的协议;先敲门,试探性地询问目的方在不在,如无响应则不发,如有相应则发送报文,并且每发一个报文接收方都要确认一下,TCP比UDP更加可靠,但传输效率低,目前网络服务90%以上都采用TCP
TCP协议通信过程:
1, 通信双方建立连接(3次握手)
2, 传输数据
3, 断开连接,发起方发送断开请求—timewait1----time wait2--关闭连接。
TCP3次握手过程(第1、2步为新建连接的过程,第3步为连接已建立的过程)
1) 发送方向接收方发起连接请求(将SYN位置为1,SN序列号,sn=100)
2) 接收方确认(syn=1,ack=1,an(确认号)=101(意思为:100号报文已收到,可以发101号报文),sn=300(这是响应方的报文序列号,是另外一套编号体系))
3) 发送方(Ack=1,sn=101,an=301)------此时连接状态为已建立(Established)
4) 接下来开始传输数据:接收方发送报文(ack=1,sn=301,an=102)
TCP断开连接过程(四次断开)
1) 发送方想接收方发起请求(fin=1,ack=1,an=xxx)
2) 略。。。。。。。
TCP有限状态机的概念:即tcp连接不管什么时候,总是处于一种状态中的!在TCP连接的不同的阶段有不同的状态!
linux网络配置命令
对于linux,内存分为:
用户空间:命令:配置ip,临时生效;配置文件:永久生效(系统启动时读取)
内核空间:网络功能(TCP/IP协议栈),网络的配置在内核生效
网络配置的内容:
ip地址,子网掩码,网关,本机的DNS服务器,路由,主机名,几块网卡绑定(用于网卡冗余/加大吞吐量)
以上配置可以手工指定,也可以动态从DHCP服务器获取
*linux也可以作为router来使用!
*本机的多个DNS服务器的配置:第一个dnsserver不在线则找第二个;不是第一个dns server解析不出再找第二个!解析不出就不解析了。所以应该把访问速度最快的dns server放在第一个。
*DHCP动态获取ip地址:如获取不到DHCP分配的地址,会随机生成一个169.254.0.0/16网段的ip,此ip只能用于本地网络间主机通信,无网关。
*linux内核:网络属于内核功能,ip地址属于内核,不属于网卡,只要当前主机有的ip,别人在另一块网卡的ip上ping进来,也会给予响应(即使与ping请求的源ip不属于同一网段)!
lo:本地回环网络接口(兼server,client,在内存中完成通信)
以太网卡名称:ethX范围从eth1~eth100
pppX:ppp1----ppp2
*系统一般将网卡模块定义为一个别名(配置文件:/etc/modprobe.conf),可以自己去改这个名字。例 :alias eth0 pcnet32
*(RHEL6)系统一般将网卡模块定义为一个别名
(配置文件:/etc/udev/rules.d/70-persistent-net.rules),可以自己去改这个名字。
ifconfig命令(显示当前系统上处于活动状态的网卡信息),显示信息关键字如下:
Rx:接受到的包的个数 Errors:错误包个数 dropped:丢弃报个数
Tx:发送的包的个数 collisions:冲突包个数overruns:溢出包个数
txqueuelen:传输队列长度 Rx bytes:接受到的字节数 Tx bytes:传出去的字节数
Interrput:中断号
ifconfig命令使用示例:
ifconfig -a 显示所有连接(接口)配置信息
ifconfig ethX显示指定连接(接口)配置信息
ifconfig ethX IP/mask(指定连接(接口)ip,2种风格:(1)x.x.x.x/24(2)x.x.x.x/255.0.0.0)
ifconfig ethX IP/mask [up|down] (指定连接(接口)ip并启用|关闭对应接口)
ifup/ifdown ethX 启用或关闭对应接口
以上配置方式是一次生效,重启网络服务后即失效
RHEL5上网络服务脚本:/etc/init.d/network
RHEL6上网络服务脚本:/etc/init.d/NetworkManager(建议禁用使用NetworkManager服务)
网关添加(临时):
route [add|del] [-host(主机路由)|-net(网络路由)]DEST gw NextHop
route命令不带参数为查看系统路由表,DEST为default为默认路由。
route命令输出详解:flags:U为本地网络,就是本机直连的。UG为网关路由,需要通过网关发出去。
route命令实例:
默认路由添加:#route add default gw NextHop
#routeadd -net 10.0.0.0/8 gw 192.168.10.1
route –n(以数字形式(不解析主机名)显示路由信息,这样执行速度会比较快)
配置文件配置网卡ip(永久有效)
示例:vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0 #表示关联的设备
BOOTPROTO={static|none|dhcp|bootp} #引导的协议
IPADDR=
NETMASK=
GATEWAY=
ONBOOT= #network服务启动时是否自动激活此接口
HWADDR= #硬件地址,要与硬件中的地址保持一致,可以省略
USERCTL={yes|no} #是否允许普通用户控制此接口
PEERDNS={yes|no} #是否在BOOTPROTO为dhcp时接收由dhcp服务器指定的DNS地址,并更新到/etc/resolve.conf
*这种方式配置网卡不会立即生效,但重启网络服务后会生效!
配置路由(配置文件形式):/etc/sysconfig/network-scripts/route-ethX(自己在这个目录下建一个对应网口的路由配置文件,通过那个网口出去就写那个网卡名称)
有两种添加格式:
1) Dest via NextHop
例如:vi route-eth1输入:
-
168.10.0/24 via 10.10.10.254 :x保存退出
#service network restart#route –n
2) 例如:vi route-eth1输入:
ADDRESS0=192.168.0.0
NETMASK0=255.255.255.0
GATEWAY0=192.168.0.1
ADDRESS1=
NETMASK1=
GATEWAY1=
*DNS Server指定方法:编辑/etc/resolve.conf(最多指定3个)用nameserverx.x.x.x来指定
可以指定的DNS Server被dhcp服务器指定的DNS地址给覆盖掉,将ifcfg-ethX中PEERDNS=no设置一下即可不被覆盖。
指定本地解析:
编辑/etc/hosts文件:输入:10.0.0.1(IP) www.a.com(主机名) www(别名)
本地解析主机名顺序一般为:1)先找hosts文件2)再找dns缓存3)再找dns服务器
这个顺序可以在/etc/nsswitch.conf文件中配置!
临时配置主机名:hostname命令
永久配置主机名:编辑/etc/sysconfig/network文件
HOSTNAME指令配置主机名
NETWORKING={yes|no}指令指定是否启用网络(IPv4)总开关,也可以在这个文件中定义GATEWAY=(全局的网关)-----*****在网卡配置文件中定义的GATEWAY更加优先,那个是专门对应于网卡的,这里的GATEWAY是全局的。
策略路由:某个网络采用哪一张路由表(系统可以有多张路由表)
软件包iproute2提供了很强大的命令集,其中包含ip命令,ip命令的有些高级功能是ifconfig命令无法替代的。它可以控制流量
ip link(网络接口属性) show
set ethX [up|down|arp {on|off}]
ip命令过于强大,此处略!
一个网卡可以有多个IP,用别名来配置
示例:
#ifconfig eth0:0 x.x.x.x/24
让别名永久生效:
新建一个配置文件/etc/sysconfig/network-scripts/ifconfig-ethx:x(注:别名不能使用dhcp协议,只能配置静态地址!)
*)/etc/init.d/NetworkManager(此服务不支持网络桥接功能,建议禁用此服务)
禁用此服务方法:
将网卡配置文件中
NM_CONTROLLED=no
#chkconfig NetworkManager off
#chkconfig network on
#service NetworkManager stop
#service network start
***实现网卡配置时,可以复制其他的网卡配置文件在此基础上改一下即可,但注意HWADDR一定要改过来,觉得麻烦删掉HWADDR这一行也可以!