计算机网络基础

计算机网络基础

分层的网络模型

网络发展到今天,规模很庞大,内容很复杂,不利于网络的管理和教学。网络分层可以:降低网络结构的复杂性、把各层的接口标准化、简化模块设计、确保技术的互操作性、加快发展速度以及简化教学过程。

OSI模型——国际标准:根据国际标准化组织( ISO,International Standards Orgnization)提案,计算机网络模型分为七层。也就是通常所说的七层协议(即OSI参考模型),即:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。由于七层协议实现起来较复杂,虽是标准但还是被五层协议替代,就是通常所说的 TCP/IP 参考模型。

计算机网络基础

每层的结构如下:

计算机网络基础


两个主机通信过程

计算机网络基础

IP报文传输过程包括:
  1. Host sends packet to default gateway(主机将数据包发送到默认网关)

  2. Packet placed in frame(数据包被封装入帧)

  3. Router receives frame(路由器接到帧)

  4. Router finds destination network in route table(路由器在路由表中发现目标网络)

  5. Router chooses next hop toward destination(路由器选择一个更接近目标的下一跳)

  6. MAC address of next hop determined(下一跳的MAC地址被确定)

  7. Packet placed in frame(数据包被封装入帧)

  8. Repeats steps 2 through 7 as necessary(如果需要的话,重复步骤2~7)

  9. Router receives frame(路由器接到帧)

  10. Router finds network directly connected(路由器发现直连网络)

  11. MAC address of end host determined(最终主机的MAC地址被确定)

  12. Packet placed in frame to final destination(帧中的数据包被发送到最终主机)

主机A与主机B通信,A Ping B,图:A-交换机-B,AB同一子网

(1)ping数据包用的是ICMP协议,IP协议的一个子协议,位于三层,包含A的IP,B的IP,三层进行IP封装成包,进入二层

(2)A,B处于相同子网,查看缓存中对与目的对应得B第2层mac地址,如果存在,直接进行第2层封装成帧,经物理层信号编码,以0101010010这样的bits流传输在网络介质上。

(3)如果不存在B的MAC,则发送ARP广播请求B的MAC,ARP数据包经物理层进入交换机端口,需要进行源端口号学习,目的端口查找,B响应ARP请求,交换机又可以学习一目的MAC地址与哪个端口对应,在下次传送数据时就不再需要对所有端口进行广播了。B通过ARP单播把B的MAC响应给A,此时再返回(2)的处理过程。

(4)当再进行A与B之间数据包转发,将直接用B的MAC地址封装,数据转发得以高速交换

主机A与主机C通信,A Ping C,图:A-交换机-路由器M-路由器N-交换机-C,AC不同子网

(1)两个机器不在同一子网内,A要与目的C通信,A要向“缺省网关”发出ARP包,而“缺省网关”的IP地址已经在A系统软件中设置。这个IP地址实际上对应路由器M的E0的IP地址。所以A对“缺省网关”的IP地址广播出一个ARP请求时,路由器M的E0口的MAC回复给A,此时A数据包的目的MAC替换为M的E0口MAC。

(2)MAC替换后,经物理层,传输到交换机物理层,再传到交换机数据链路层,再经数据数据链路层到物理层。

(3)经bit流传到路由器M的物理层,然后传到数据链路层,二层解封装,目的IP与路由器M三层IP路由表比较,若匹配正确,交给上层处理,否则会缓存数据包内容,然后根据目标地址查找路由表找到相关表项,得到NEXT HOP及出接口的MAC地址,用这两个地址作为新的目的及源MAC地址封装事先缓存的数据包,然后转发,这个过程称为帧的重写(REWRITE)。

(4)重复进行MAC替换后, 在路由器N中,找到与目的IP匹配表项,若N中存在C对应的MAC表项,则数据传输到C网络层,否则N发送ARP广播请求C的MAC。

(5)当C收到A的数据包后,再从A到C进行一次反向MAC替换过程。反向过程中,每一步省略掉ARP请求NEXT HOP的MAC,因为MAC表已经建立起来。

网络层

计算机网络基础

网络通信靠的三个地址

真正完成一次通信需要三个地址。MAC地址用来实现本地通信。跨网络通信要靠IP地址,但是IP地址仅仅只是界定两个通信的主机,就是界定哪个主机是通信的源,哪个主机是通信的目标。真正实现通信的还是MAC地址。即为

互联网通信=多段接力的本地通信

但是问题来了,我用在主机上用qq给目标主机发送一个信息,目标主机运行着各种进程,是哪一个进程去接我的这个信息呢,这就涉及到第三个地址,port地址,也称为端口地址。互联网通信的实质是两个进程之间的通信

进程地址=IP+端口地址,叫socket,由内核提供。(端口是指用来标识本地主机上每一个进程的唯一的数字标识)

当进程要发起某个通信时要向内核注册一个进程地址,这个地址只是临时的。

Linux主机是如何接入网络中的

IP地址是最基础的了,用来标识源和目标,有了IP才有掩码,没有掩码没法判定谁是本地,谁是远端的,即为无法判断是本地通信还是跨网通信。

有了IP与掩码最多可以判定谁是本地,可以通信,远端的就通信不了了,想要远端通信还要加上网关,有了网关才能实现跨网通信。但是互联网也不会通过IP 地址来通信,像我们访问www.baidu.com,这叫主机名,通常讲是域名,拿一个域名是不能够通信的,要把名字转换为IP才可以,要依赖应用层来实现转换。

例如AB两个主机通信,A不知道B是谁,A要通过互联网层层路由找到另外一个网络主机,这个主机是DNS服务器(名称服务器,能够完成名称解析功能,就是转换,主机名<–>IP),DNS服务器有一个数据库,A要与B通信,第一步是A要向DNS服务器发送地址解析请求,但是如果直接访问IP 就不需要解析了,要知到www.baidu.com的IP 地址是什么,查找数据库,将查找结果响应到A主机,A就知道了,这个时候将报文封装起来,有传输层守护、IP守护,再将报文发个B主机。

如果要把一个主机接到网络中去,要配置 IP/NETMASK:能够实现本地通信 路由(网关)条目:跨网络通信 DNS服务器地址:基于主机名的通信

路由器

路由器是依靠路由表来判断某一主机通信的目标主机是在哪一个网络上,从而发往哪一个接口(下一跳),简单说就是数据进来后,路由器查看这个包的目的地址,然后根据自己的路由表转发到下个端口,这个端口就是下一跳的地址。路由表都知道自己在网络中处在什么位置,都要知道到达目标主机有哪些路可以走,这些记录的数据就是路由表条目。

所以Linux设置路由器就要设置到达目的以及经过哪个下一跳地址。

路由表生成: 静态指定 动态学习:rlp2、ospf协议


Linux网络配置命令

配置方式:

静态指定:

ifcfg家族:
    ifconfig:配置IP,NETMASK
    route:路由
    netstat:状态及统计数据查看
iproute2家族:(主要学习这个家族,功能强大)
    ip OBJECT:
    addr:地址和掩码;
    link:接口
    route:路由
    ss:状态及统计数据查看
CentOS 7:nm(Network Manager)家族
    nmcli:命令行工具
    nmtui:text window 工具

注意:
    (1) DNS服务器指定    
        配置文件:/etc/resolv.conf
    (2) 本地主机名配置
        hostname
        配置文件:/etc/sysconfig/network
        CentOS 7:hostnamectl                    
    配置文件:
        RedHat及相关发行版
        /etc/sysconfig/network-scripts/ifcfg-NETCARD_NAME

动态分配:依赖于本地网络中有DHCP服务
    DHCP:Dynamic Host Configure Procotol

ifcfg-IFACE配置文件参数含义

配置文件: IP/NETMASK/GW/DNS等属性的配置件:/etc/sysconfig/network-scripts/ifcfg-IFACE IFACE:接口名称; 路由的相关配置文件:/etc/sysconfig/networkj-scripts/route-IFACE

配置文件/etc/sysconfig/network-scripts/ifcfg-IFACE通过大量参数来定义接口的属性;其可通过vim等文本编辑器直接修改,也可以使用专用的命令的进行修改(CentOS 6:system-config-network (setup),CentOS 7: nmtui)

DEVICE:此配置文件对应的设备的名称; ONBOOT:在系统引导过程中,是否激活此接口; UUID:此设备的惟一标识; IPV6INIT:是否初始化IPv6; BOOTPROTO:激活此接口时使用什么协议来配置接口属性,常用的有dhcp、bootp、static、none; TYPE:接口类型,常见的有Ethernet, Bridge; DNS1:第一DNS服务器指向; DNS2:备用DNS服务器指向; DOMAIN:DNS搜索域; IPADDR: IP地址; NETMASK:子网掩码;CentOS 7支持使用PREFIX以长度方式指明子网掩码; GATEWAY:默认网关; USERCTL:是否允许普通用户控制此设备; PEERDNS:如果BOOTPROTO的值为“dhcp”,是否允许dhcp server分配的dns服务器指向覆盖本地手动指定的DNS服务器指向;默认为允许; HWADDR:设备的MAC地址;

iproute家族:

ip命令:

show / manipulate routing, devices, policy routing and tunnels

ip [ OPTIONS ] OBJECT { COMMAND | help }
    OBJECT := { link | addr | route | netns  }

注意: OBJECT可简写,各OBJECT的子命令也可简写;

ip  OBJECT:

    ip link: network device configuration

        ip  link  set - change device attributes
            dev NAME (default):指明要管理的设备,dev关键字可省略;
            up和down:
            multicast on或multicast off:启用或禁用多播功能;
            name NAME:重命名接口
            mtu NUMBER:设置MTU的大小,默认为1500;
            netns PID:ns为namespace,用于将接口移动到指定的网络名称空间;

        ip  link  show  - display device attributes

        ip  link  help -  显示简要使用帮助;

    ip netns:  - manage network namespaces.

        ip  netns  list:列出所有的netns
        ip  netns  add  NAME:创建指定的netns
        ip  netns  del  NAME:删除指定的netns
        ip  netns   exec  NAME  COMMAND:在指定的netns中运行命令

    ip address - protocol address management.

        ip address add - add new protocol address
            ip  addr  add  IFADDR  dev  IFACE
                [label NAME]:为额外添加的地址指明接口别名;
                [broadcast ADDRESS]:广播地址;会根据IP和NETMASK自动计算得到;
                [scope SCOPE_VALUE]:
                    global:全局可用;
                    link:接口可用;
                    host:仅本机可用;                                             

        ip address delete - delete protocol address
            ip addr  delete  IFADDR  dev  IFACE 

        ip address show - look at protocol addresses
            ip  addr   list  [IFACE]:显示接口的地址;

        ip address flush - flush protocol addresses
            ip  addr  flush  dev  IFACE

    ip route - routing table management

        ip route add - add new route
        ip route change - change route
        ip route replace - change or add new one
            ip  route   add  TYPE PREFIX  via GW  [dev  IFACE]  [src SOURCE_IP]

    示例:
        # ip route add 192.168.0.0/24  via 10.0.0.1  dev eth1 src  10.0.20.100
        # ip  route  add default  via  GW                       

        ip route delete - delete route
            ip  route  del  TYPE PRIFIX 

    示例:
        # ip  route delete  192.168.1.0/24

        ip route show - list routes
            TYPE PRIFIX  
        ip route flush - flush routing tables
            TYPE  PRIFIX

        ip route get - get a single route
            ip  route  get  TYPE PRIFIX

    示例:ip route  get  192.168.0.0/24

ss命令:

ss  [options]  [ FILTER ]
    选项:
        -t:TCP协议的相关连接
        -u:UDP相关的连接
        -w:raw socket相关的连接
        -l:监听状态的连接
        -a:所有状态的连接
        -n:数字格式
        -p:相关的程序及其PID
        -e:扩展格式信息
        -m:内存用量
        -o:计时器信息

常用组合:   -tan,  -uan,  -tnl,  -unl,  -tunlp

    FILTER := [ state TCP-STATE ]  [ EXPRESSION ]

        TCP的常见状态:
            TCP FSM:
                LISTEN:监听
                ESTABLISEHD:建立的连接
                FIN_WAIT_1:
                FIN_WAIT_2:
                SYN_SENT:
                SYN_RECV:
                CLOSED:

        EXPRESSION:
            dport = 
            sport = 
        示例:'( dport = :22 or sport = :22)'
        ~]# ss   -tan    '(  dport = :22 or sport = :22  )'
        ~]# ss  -tan  state  ESTABLISHED

实例:ip,增删查

1.查看网卡协议地址

计算机网络基础

2.显示网卡eno16777736

计算机网络基础

3.在网卡eno16777736上增加一个IP 地址192.168.0.3/24,标准广播地址,指定别名为eno16777736:0.

ip addr add IP dev IFACE(接口)

计算机网络基础

4.删除网卡eno16777736上的ip地址192.168.0.3/24.

计算机网络基础

5.添加静态主机路由。

计算机网络基础

6.启用网卡eno16777736

ip link set dev eno16777736 up

7.更改网卡名称

计算机网络基础因为我只有一个网卡,要修改名称必须先停掉,我的网卡停掉后,就连不上忘了。

8.显示路由表

计算机网络基础

9.添加静态网络路由

#ip route add 192.168.1/24 via 192.168.0.1

10.添加静态主机 路由

#ip route add 192.168.1.2 via 192.168.0.1

11.删除路由

#ip route delete

12.ss命令

-tnl   -tan     
#ss -tan state ESTABLISHED

原创文章,作者:N24_yezi,如若转载,请注明出处:http://www.178linux.com/60340

(0)
N24_yeziN24_yezi
上一篇 2016-11-22 12:31
下一篇 2016-11-22

相关推荐

  • 处理文本的工具sed,vim 编辑器的使用 Linux版

    处理文本的工具sed Stream EDitor 行编辑器 sed一次处理一行的内容,处理时,将当前处理的行存储在临时缓冲区,称为“模式空间”,接着用sed命令处理缓冲区中的内容,处理完成后,将缓冲区的内容送往屏幕,接着处理下一行不断重复,直到末尾。            一次处理一行 文件&#82…

    Linux干货 2016-08-11
  • 加油吧!少年!—至我和我M25期的伙伴

    引用 衣带渐宽终不悔,为伊消得人憔悴。—王国维《人间词话》 转眼已到了27岁的年纪,不知道自己是否还称得上少年。公交上让座被小朋友成为叔叔也都是很多年的事了。哪怕再有一颗少年心现在也要肩负起整个家庭的责任。 从毕业已工作了将近六个年头,无聊的工作平凡的薪水已经使我厌倦。闭上眼睛以后需要赡养四个老人,还要照顾孩子以后这些难题映入脑海。曾经以为遥远的…

    Linux干货 2017-07-11
  • zabbix部署(Linux上部署/监控端/被监控端)

    zabbix部署 一、监控系统的简单介绍 (1)cacti:存储数据能力强,报警性能差 (2)nagios:报警性能差,存储数据仅有简单的一段可以判断是否在合理范围内的数据长度,储存在内存中。比如,连续采样数据存储,有连续三次不在合理范围内的数据就报警 (3)zabbix:结合上面两种工具的优点,又可以存储数据,又可以报警 二、zabbix特性 (1)数据采…

    Linux干货 2017-01-06
  • iptables 实现应用层过滤

        在linux环境中,工作于内核空间的netfilter和工作于用户空间的iptables共同组成了其功能强大且操作灵活的防火墙系统,对进出主机或内外网之间的流量基于IP地址、通信协议、端口以及连接状态等进行管控,然而,对于一些使用非固定端口或者通信协议的应用程序,默认是没有办法做限制的,比如聊天软件QQ、下载工具迅雷等,不过我们可…

    Linux干货 2015-07-10
  • 一起学DHCP系列(一)开篇、概述

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://jeffyyko.blog.51cto.com/28563/162108     从本节开始,我们将开始讨论有关DHCP服务器的相关问题,从易到难一步步理解DHCP服务。还是一样,在…

    Linux干货 2015-03-25

评论列表(1条)

  • luoweiro
    luoweiro 2016-11-30 23:49

    网络知识总结看的很全面,值得大家学习,加油。