OSI与TCP/IP
1. OSI七层模型
Open System Interconnection ( 开放系统连接 )
每一层只能与其相同的层对话.
理论上的安全模型, 但现实中因繁琐而弃用.
7.应用层:
提供给应用程序服务接口, 同时将数据传出传入到应用程序.
6.表示层:
每个本地应用的数据类型不一定符合网络规范, 此层将本地数据格式化为网络标准数据.
同时encrypt和decrypt也在此层.
5.会话层:
不同地址建立或断开通道.
4.传输层:
TCP, UDP等传输协议.
3.网络层:
IP, route.
2.数据链路层:
此层最为特殊, 在数据包头加了一个FAC, 包尾加了一个chk检验码.
分为接近软件package的逻辑链路层(LLC, logical Line Control)和接近硬件的媒体访问控制, 即物理地址(MAC. Media Access Control).
LLC:
将package中的数据转化为MAC数据帧(frame).
MAC:
规定了MAC数据帧转化为比特流的编码方式.
1.物理层:
将数据包转化为比特流(bit, 一长串0和1), 能在介质上传输数据.
2. TCP/IP四层模型
现实中操作的模型.
summarize_TCP_IP.gif虚拟机的三种网络模式
在进行虚拟机实验时, 我们往往关注下面这三个问题:
- 1.虚拟机和主机能不能互相访问
- 2.虚拟机能不能访问Internet
- 3.外部网络如何访问虚拟机中的服务
通过后面的实验分别利用VMware的不同网络模式来解决这三个问题. VMware提供了三种不同的网络模式, 分别是Bridged
(桥接模式), NAT
(网络地址转换模式), Host-only
(主机模式). 不同的网络模式适用于不同的网络环境, 实现不同的需求, 你需要根据实际情况选择合适的模式. 就网络环境来说, 我们常见的家庭网络拓扑结构有下面两种:
- 主机通过拨号直接连接Internet
- 主机处于局域网环境中, 通过路由器拨号连接Internet
如果你是属于第一种网络环境, 由于是ISP分配你的公网IP(假设只有一个地址), 则不能使用桥接模式, 因为桥接模式需要你拥有属于你机器相同网段内的另一个IP地址. 这种情况下可以使用NAT
和Host-only
. 而如果是属于第二种网络环境, 则三种模式可以任意选用. 就需求来说, 你可能只是想简单配置一个虚拟机来玩玩, 也可能是为局域网内的其他机器提供服务, 或者是进行一些特殊目的的网络实验, 这个就要具体情况具体对待了.
1. 桥接模式
VMnet0
桥接模式是三种模式中最简单的一种, VMware安装的时候默认就使用这种配置方式. 在这种模式下, 虚拟机相当于局域网中的一台独立机器, 和主机处于同一个网段, 公用同一个网关. 桥接模式使用的是虚拟机的VMnet0
网卡, 一般情况下, 在虚拟机中将网络设置成自动获取IP就能直接联网.
2. NAT模式
VMnet8
上面也说了, 如果你不在局域网内, 只有一个IP, 那么NAT模式正适合你. 当然如果你在局域网内, NAT模式也未尝不可, 不过使用NAT模式后, 主机就变成了双网卡: 本身的网卡连接Internet或连接拨号的路由器, 另一个虚拟网卡VMnet8
连接由虚拟机组成的一个虚拟网络. 从外部网络来看, 无法直接访问这个虚拟网络. 虚拟网络则通过本机上的NAT虚拟服务器进行转发访问Internet.
NAT模式的网关要设置成VMworkstations中虚拟网络编辑器中配置的网关!!!
3. Host-only模式
VMnet1
Host-only模式和NAT一样, 也相当于主机双网卡, 网络拓扑和NAT也是一样, 只是主机不提供NAT功能了, 所以虚拟网络只能和主机访问, 不能访问Internet. 如果需要一个完全隔离的网络环境, 则Host-only最合适不过. Host-only相当于使用双绞线直接连接虚拟机和主机, 这是最原始的网络结构, 当然也是最灵活的. 这种情况下虚拟机就不能访问Internet了吗? 局域网下的其他机器就不能访问虚拟机上的服务了吗? 当然不是. 如果我们自己在主机上搭建起我们自己的NAT服务和DHCP服务, 那么Host-only其实和NAT是一样的. 从下面的示意图也可以看出, Host-only和NAT的唯一区别就在于, 主机上少了NAT这个部分.
reference: https://blog.csdn.net/u012486840/article/details/52648737
reference: https://www.linuxidc.com/Linux/2016-09/135521.htm
xshell远程时连接速度很慢肿么办?
#原因: ssh的服务端在连接时会自动检测dns环境是否一致导致, 修改为不检测即可.
#解决方法:
#1. 修改sshd服务的配置文件, 将UseDNS yes改为UseDNS no
vi /etc/ssh/sshd_config
#UseDNS yes
UseDNS no
#2. 重启sshd服务
/etc/init.d/sshd restart #restart包括了stop, start
#或
service sshd restart
网络参数配置
配置内容 | 所属文件 | 相关命令 |
---|---|---|
TCP\IP参数 | /etc/sysconfig/network-scripts<br />/etc/init.d/network restart | ifconfig eth0<br />route -n |
DNS | /etc/resolv.conf #nameserver 8.8.8.8 | dig www.baidu.com |
主机名 | /etc/sysconfig/network #NETWORKING=yes #HOSTNAME=linuxOfAlex #NTPSERVERARGS=iburst<br />/etc/hosts #192.168.1.150 linuxOfAlex |
hostname<br />ping $(hostname)<br />reboot |
配置网络参数使linux主机能够连网的5个步骤:
#一. 基本配置, 这一步配置完可实现ip上网
vim /etc/sysconfig/network-scripts/ifcfg-eth0
BOOTPROTO=none
IPADDR=192.168.235.112
NATMASK=255.255.255.0
GATEWAY=192.168.235.2
ifconfig eth0 #验证1
route -n #验证2
ping -c 3 192.168.235.2 #验证3, 出现ttl才表示正确的响应
#二. DNS配置, 这一步配置完可实现主机名上网
vim /etc/resolv.conf
nameserver 223.5.5.5 #阿里DNS服务器
dig www.baidu.com #验证4
#三. 主机名配置
vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=linuxOfAlex
vim /etc/hosts
192.168.235.112 linuxOfAlex
hostname #查看主机名, 修改/etc/sysconfig/network后需要用此命令查看主机名是否修改成功
ping -c 3 linuxOfAlex #检查5, 修改network文件后必须重启才会生效, 但在重启之前务必ping主机名且得到time响应才行!
traceroute
traceroute #跟踪两台主机之间通过的各节点的通信情况
-n
-w time
-T #TCP协议的报文
-U #UDP协议的报文
-I #ICMP协议的报文
-p port #指定使用的端口号
-i device #指定使用的网络接口
#实例: 使用TCP协议发送报文, 20001端口, lo接口检测本机到百度网站之间的通信情况
traceroute -T -p 20001 -i lo www.baidu.com
网络排错流程
#1. 查模块, 驱动加载情况
{dmesg|lspci}
#2. 查网络配置, 配置静态ip的文件为/etc/sysconfig/network-scripts/ifcfg-eth0
{ifconfig|ip addr show}
#3. 查网络节点间的连接情况
ping [node_ip]
#4. 查路由配置
{route|ip route show}
#5. 查DNS配置, 若有问题则查看/etc/resolv.conf
dig [-x] {host_name|ip}
host [host|ip]
#6. 查看主机名, 若有问题则查看/etc/sysconfig/networks和/etc/hosts, 注意前者修改后需reboot
hostname
ping $(hostname)
#7. 查节点之间的网络情况
traceroute -n [-TUI] [-i interface] [-p port] [-w wait_time] {ip|域名}
#8. 查看服务及端口
netstat -tulnp
#9. 查看权限, 防火墙配置
SELinux
本文基于<鸟哥的Linux私房菜>, 归纳整理, 在此致谢鸟哥.
网友评论