计算机网络基础

计算机网络基础

分层的网络模型

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

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

相关推荐

  • N28-第三周博客作业

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。
    2、取出最后登录到当前系统的用户的相关信息。
    3、取出当前系统上被用户当作其默认shell的最多的那个shell。
    4、将/etc/passwd中的第三个字段数值最大的后10个用户的信息全部改为大写后保存至/tmp/maxusers.txt文件中。
    5、取出当前主机的IP地址,提示:对ifconfig命令的结果进行切分。
    6、列出/etc目录下所有以.conf结尾的文件的文件名,并将其名字转换为大写后保存至/tmp/etc.conf文件中。
    7、显示/var目录下一级子目录或文件的总个数。
    8、取出/etc/group文件中第三个字段数值最小的10个组的名字。
    9、将/etc/fstab和/etc/issue文件的内容合并为同一个内容后保存至/tmp/etc.test文件中。
    10、请总结描述用户和组管理类命令的使用方法并完成以下练习:
    (1)、创建组distro,其GID为2016;
    (2)、创建用户mandriva, 其ID号为1005;基本组为distro;
    (3)、创建用户mageia,其ID号为1100,家目录为/home/linux;
    (4)、给用户mageia添加密码,密码为mageedu;
    (5)、删除mandriva,但保留其家目录;
    (6)、创建用户slackware,其ID号为2002,基本组为distro,附加组peguin;
    (7)、修改slackware的默认shell为/bin/tcsh;
    (8)、为用户slackware新增附加组admins;

    Linux干货 2017-12-19
  • free命令的介绍及参数的详细分析

           通过对free命令的深入学习,我觉得有必要整理一个文档,供自己和小伙伴们今后的复习使用。   free 命令的详细剖析      参数有:-b/k/m/g    分别以bytes/kilobytes/megabyte…

    2017-07-17
  • HA cluster原理

    HA cluster 一、什么是高可用集群   高可用集群就是当某一个节点或服务器发生故障时,另一个节点能够自动且立即向外提供服务,即将有故障节点上的资源转移到另一个节点上去,这样另一个节点有了资源既可以向外提供服务。高可用集群是用于单个节点发生故障时,能够自动将资源、服务进行切换,这样可以保证服务一直在线。在这个过程中,对于客户端来说是透明的。 …

    2016-11-27
  • 网络管理及其一些网络协议

    1,这周我们主要学的是有关网络的相关知识;下面我就介绍一下我感觉重要的一些内容。 首先介绍的是计算机网络协议的七层模型:从上到下依次分为:7,应用层(application):OSI模型的第七层,负责为操作系统或网络应用程序提供访问网络服务的接口。                …

    2017-09-02
  • N25-第一周博客

      第一周博客作业内容 1.描述计算机的组成及其功能 2.按系列罗列Linux的发行版,并描述不同发行版之间的联系与区别 3.描述Linux哲学思想,并按照自己的理解对其进行解释性描述。 4.说明Linux系统上命令的使用格式:详细介绍,ifconfg,echo,tty,startx,export pwd,history,shutdown,powe…

    Linux干货 2016-12-03
  • keepalived高可用lvs集群

    实验拓扑   keepalived高可用配置 HA01和HA02的keepalived安装及配置(安装及配置均相同) ~]# yum -y install keepalived HA01和HA02做时间同步,crontab中添加时间同步脚本 ~]# date; ssh 192.168.150.140 'date'   …

    Linux干货 2016-12-06

评论列表(1条)

  • luoweiro
    luoweiro 2016-11-30 23:49

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