网络篇一---网络基础

一、网络基础知识

1、历史溯源

最开始,各大硬件厂商想通过一种技术将自己生产的硬件互相连接起来,比较著名的是全录公司的Ethernet(即以太网)技术。但是不同厂商的设备还是不能相互通信。后来由美国国防部牵头,研究一种在这些不同硬件上能够运行的一种软件,叫做ARPANET, 这就是tcp/ip技术的雏形。到了1975年,该技术已经兼容了Ethernet,即可以在使用Ethernet技术的硬件底下互通数据了,再后来,unix系统也接入了该技术,再后来就吸引了越来越多的使用者接入了该技术,于是tcp/ip就逐渐发展成为了一个通信标准,这种技术连接起来的网络也就成为Internet。再后来到了80年代,emil和图形化界面的出现,使得这个internet迅速蔓延在计算机世界中。只要你使用的是支持TCP/IP技术的硬件和操作系统,并且实际连上网络后,就进入了internet,可以全世界遨游。

2、硬件标准

平常说的买了网卡然后连上网,这个意思是说通过网卡这个硬件连上网。其实还有很多不同的网络硬件和软件,但最成功的的确是以太网络和Internet,这是因为两者都被标准所支持。举例子,以太网络被标准化组织所认可,并被制定为一项标准,因此,一项硬件只要符合以太网络的标准,理论上就可以加入以太网的世界。除此之外,tcp/ip协议也是有标准的,因此,任何会写程序语言的人,基于这个协议写出自己的TCP/IP软件,并且链接上INTERNET。

3、计算机网络的组件

(1)节点(node):凡是具有单独IP的设备就可以称之为一个节点

(2)服务器:提供服务的主机都可以称之为服务器

(3)网卡:内建或者插在机器内的一块设备,主要是提供网络联机的设备,目前大都使用RJ-45头的以太网卡;一般的节点上,都有一块以上的网卡,以提供网络联机功能;

(4)网络接口:利用软件设计出来的网络接口,主要在提供IP地址的任务。一张网卡至少可搭配一个以上的网络接口,而每个主机内部也都有一个内部的网络接口,就是(loopback)lo这个循环测试接口;

(5)网络形态或者拓扑:就是各个节点在网络上的链接方式,一般讲的是物理链接方式,一般的,有star形等

(6)路由器(route)或者网关(gateway):具有俩个以上的网络接口,可以链接俩个以上不同的网段的设备。调制解调器ADSL不可以算是一个网关,因为它被视为一个主机内的网卡设备,在一个PC上可以通过拨号软件将ADSL仿真为一个实体网卡。

4、OSI七层模型

由于网络连接的过程相当复杂,包括硬件、软件数据封包与应用程序的互相链接等等,因此,如果想要写一支将联网全部功能都串连在一块的程序,那么这段程序稍微出现错误,则代码就要重写,很麻烦。为了实现简单化,因此在网络连接时,分为7个层次(可以理解为分为7个模块)来进行组织整个连接的过程,这就是osi7层模型。可以理解为 原始数据为一个文件,然后由上往下,由这7层层层加了一个包裹,依次报装,最后到了物理层时,物理层转换为了硬件设备可以识别的电信号0和1。七层如下:

物理层:电信号

数据链路层:网络层的信号转换及和物理层的通信

网络层:主要承担的是IP及路由的任务

传输层:两个主机之间如何通话,这里定义标准即封包格式,如tcp、udp等

会话层:相当于高速路上的收费站出口,进行回话

表现层:格式转换为应用程序看的懂的信号,加密解密就发生在这一层;

应用层:接受或者传送数据给应用层;

5、TCP/IP四层模型

由于7层模型比较复杂,写程序不易,因此由ARPANET发展而来的TCP/IP技术参考了7层协议,但是做了简化,成为了4层模型,如下

链接层:数据链结层与物理层则整合成为一个链结层,包括定义硬件讯号、 讯框转位串的编码等等,因此主要与硬件 (不论是区网还是广域网) 有关

网路层:没有变,主要内容是提供了 IP 封包,并可选择最佳路由来到达目标 IP 地址

传输层:没有变,不过依据传送的可靠性又将封包格式分为连接导向的 TCP 及非连接导向的 UDP 封包格式

应用层:将应用、表现、会话整合为一个应用层,在该层上可以有很多程序协议,如HTTP、SMTP、DNS等

那 TCP/IP 是如何运作的呢?我们就拿常常连上的 baidu.com 入口网站来做个说明,整个联机的状态可以这样看:

1. 应用程序阶段:打开浏览器,在浏览器上面输入网址列,按下 [Enter]。此时网址列与相关数据会被浏览器包成一个数据, 并向下传给 TCP/IP 的应用层;

2. 应用层:由应用层提供的 HTTP 通讯协议,将来自浏览器的数据报起来,并给予一个应用层表头,再向传送层丢去;

3. 传送层:由于 HTTP 为可靠联机,因此将该数据丢入 TCP 封包内,并给予一个 TCP 封包的表头,向网络层丢去;

4. 网络层:将 TCP 包裹包进 IP 封包内,再给予一个 IP 表头 (主要就是来源与目标的 IP ),向链结层丢去;

5. 链结层:如果使用以太网络时,此时 IP 会依据 CSMA/CD 的标准,包裹到MAC 讯框中,并给予 MAC 表头,再转成位串后, 利用传输媒体传送到远程主机上。

等到 baidu.com收到你的包裹后,在依据相反方向拆解开来,然后交给对应的层级进行分析,最后就让 baidu.com 的 WWW 服务器软件得到你所想要的数据,该服务器软件再根

据你的要求,取得正确的资料后,又依循上述的流程,一层一层的包装起来, 最后传送到你的手上!就是这样啰!

PS:由于传输的数据一般很大,因此,一般的,在分层的包装时,就得把数据先拆开放到不同的包裹中,再给每一个包裹一个序号,好让目的端的主机根据这些信号将包重新组织成有效数据;

二、TCP/IP协议

1、局域网使用的设备---以太网络

局域网中,最长使用的就是以太网络,因为它被制定为了标准了。几个概念如下

(1)带宽:因为网络传输的信号就是0和1,因此数据传输的单位为每秒多少bit,也就是Mbits/second,Mbps的意思。注意:这里是Mbits,是字节,不是M或者KB(KB指的是K bytes)

(2)MAC:以太网网线上传输的最小数据单位,其中的数据大小为1500byte(IP 封包最大可以到 65535 bytes)  

 PS:因为其中有网卡卡号,而网卡卡号又是唯一的,也把网卡的地址成为MAC地址)

(3)集线器、交换机、路由器

集线器:是一个共享的网络设备,只允许两台机器一条信道进行互相通信,被占用后就需要等待,容易发生“碰车”;

交换机:是可以实现很多信道,且每一个信道的速度都一样,不会相互碰撞,且内部有一块内存区域;

路由器:由于局域网的两块网卡之间可以互相通信,而要和别的网域的网卡进行通信,则需要借助于路由器,实现网卡卡号转换的目的。

2、IP与路由

IP有两种版本,一种是现行的IPV4,一种是未来预期会热门的IPV6;

(1)IP的格式

IP其实就是一种网络封包方式,这个封包里最重要就是32位的来源与目标地址了,为了方便记忆,这个地址就称为网络地址。32位,即是32个0和1。由于人类对而二进制理解不清楚,就把它转换为十进制,即是

00000000  00000000  00000000  00000000  ---->0.0.0.0

111111111  111111111  111111111  1111111111  ---->255.255.255.255

这个地址还可以分为两段,前三段叫做网段号码(Net_ID),后面叫做主机号码(Host_ID),此外,Host_ID在二进制的表示法当中,不可同时为 0 也不可同时为 1 ,因为全为 0 表示整个网段的地址 (Network IP),而全为 1 则表示为广播的地址 (Broadcast IP),因此,一个网段内可用的IP地址为0.1到0.254。

PS:在同一个物理网段(机器在物理上通过同一个物理媒体串在一起,相互连接,则称之为在一个物理网段)之内,如果两部主机设定成不同的 IP 网段,则由于广播地址的不同,导致无法透过广播的方式来进行联机。 此时得要透过路由器 (router)来进行数据包的转递,才能将两个网段连结在一起。而相同的网段则不需要路由器。

(2)IP的分类

公有IP:能连接网络的IP,由机构分发的;

私有IP:局域网IP,以10、172、192开头的均为私有IP;

特殊的lo网段:即内部测试循环网段,默认的主机IP就是127.0.0.1,这个主要是没有装网卡的机器内部操作系统及程序来测试用的循环网段,即是本机器的内部(指的是机器内部,这个内部空间有的东西包括操作系统,各应用程序等)用的网址;

IP的取得,一般是通过设定为固定IP或者DHCP服务动态分配;

(3)子网的切分,子网掩码

通过子网掩码来讲网络切分为更小的子网,子网掩码的意思即为这32位的网址中,哪一段固定,哪一段可用。由于Net_ID是不可变的,因此就认为它已经被用光,即全部为1,Host_ID是可变的,就将它认为是保留着,即全部为0。因此,只要知道了Network和Netmask,就可以定义出该网段的所有IP了,因为可以根据Netmask推算出Broadcast,,进而得出所有可用的IP。

示例:172.16.0.0,当 Net_ID 占用 23 个位时,计算出这个网段的Netmask, Network, Broadcast 等参数

          由于 172.16.xxx.xxx 是在 Class B 的等级当中,亦即 Net_ID 是 16 位才对。不过题目给的 Net_ID 占用了 23 个位!等于是向 Host_ID 借了(23-16) 7 个位用在 Net_ID 当中。所以整个 IP 的地址会变成这样:预设: 172 . 16 .0000000      0.00000000
                                                                        |----Net_ID---------------| - Host_ID -|
                                                             Network: 172 . 16 .0000000  0.00000000               即  172.16.0.0
                                                          Broadcast: 172 . 16 .0000000  1.11111111                 即  172.16.1.255   ----->即Host_ID设置为最大,全部为1,换算之后即为172.168.1.255
                                               Netmask: 11111111.11111111.1111111  0.00000000               即   255.255.254.0

因此,常常以Network和Netmask来表示一个网段,如下:

Network/Netmask:192.168.0.0/255.255.255.0或者为192.168.0.0/24      (因为Netmask的 Net_ID 都是1,即全部固定,所以Network的Net_ID共有 24 个 bits,后面的均可变,所以可把后面写为24)

(4)路由的概念

不同网段之间的数据包发送,需要经过路由器和网关。

每部机器都有自己的路由表,在要发送数据包时,首先检测自己的目标IP是否在路由表内,若是则进过局域网直接发送;若不是,则将数据包发到默认的路由器(或者网关)上去,而路由器也会比对自己的路由表,重复以上的过程;

PS:可以利用 ICMP 来检验网络的状态,最简单的指令就是 ping 与traceroute

3、TCP/IP的传输层相关概念

IP只负责数据封包和发送出去,至于数据包会不会被接收、有没有正确接收则是传输层的TCP协议的任务。

(1)可靠连接的TCP协议

在 网络层之上的就是传送层,传送层的数据打包成什么?就是tcp数据包了,并且这个tcp数据包还必须能放进IP数据包内才可以,简化一下,将 MAC, IP 与 TCP 的封包数如下:

       

TCP数据包也有一个表头,用来说明相关信息,其中最重要的就是端口的信息(来源端口&目标端口),一般的,服务端的端口号是有一套默认的规范定义好的,并且小于1024的,端口号都是需要root才可以开启的,而客户端的端口号则不同,是随机取用一个大于1024的端口号的形式。

由于一个由于网络是双向的,要达成联机的话得要服务器与客户端均提供了 IP 与端口才行。因此,我们常常将这个成对的数据称之为 Socket Pair 

(2)三次握手和四次断开

省略

(3) 网络防火墙与OSI7层协议

封包的表头上面已经有这么多的重要信息, 那么我就利用一些防火墙机制与软件来进行封包表头的分析,并且设定分析的规则,当发现某些特定的 IP 、特定的端口或者是特定的封包信息(SYN/ACK 等等),那么就将该封包给他丢弃, 那就是最基本的防火墙原理。

如果以 OSI 七层协议来说,每一层可以抵挡的数据有:
  第二层:可以针对来源与目标的 MAC 进行抵挡;
  第三层:主要针对来源与目标的 IP ,以及 ICMP 的类别 (type) 进行抵挡;
  第四层:针对 TCP/UDP 的埠口进行抵挡,也可以针对 TCP 的状态 (code)来处理

三、连接INTERNET前的准备

1、DNS

由于人类对于IP不熟悉,不好记忆,因此将主机名和IP对应起来,这就是DNS。因此在主机中,首先要向 DNS 服务器查询 Hostname 对应 IP 的信息,那么那部 DNS 主机的 IP 就必须要在我的计算机里面设定好才行,并且必须要是输入IP ,不然我的计算机怎么连到 DNS 服务器去要求数据呢?其实,在 Linux 里面,DNS 主机 IP 的设定就是在下面的 这个目录中/etc/resolv.conf 

2、总结

从上面的所有说明当中,我们知道一部主机要能够使用网络,必须要有 IP ,而 IP的设定当中,就必须要有 IP, Network, Broadcast, Netmask 等参数,此外,还需要考虑到路由里面的 Default Gateway 才能够正确的将非同网域的封包给他传送出去。另外,考虑到主机名与 IP 的对应,所以你还必须要给予系统一个 DNS 服务器的 IP 才行~ 所以说,一组合理的网络设定需要哪些数据呢?就是:
  IP
  Netmask
  Network
  Broadcast
  Gateway
  DNS
其中,由于 Network 与 Broadcast 可以经由 IP/Netmask 的计算而得到,因此需要设定于你 PC 端的网络参数, 主要就是 IP, Netmask, Default Gateway, DNS 这四个就是了!

四、linux系统上的网络配置文件设定

1、/etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=网卡的代号
BOOTPROTO=是否使用dhcp
HWADDR=是否加入网卡卡号(MAC)
IPADDR=就是 IP 地址
NETMASK=只网络屏蔽啦
ONBOOT=要不要默认启动此接口
GATEWAY=默认的网关   提示:当有多块网卡时,不要设置多个,一个即可;
NM_CONTROLLED=额外的网管软件,鸟哥建议取消这个项目!

2、/etc/sysconfig/network

NETWORKING=要不要有网络
NETWORKING_IPV6=支持IPv6 否?
HOSTNAME=你的主机名
3、/etc/resolv.conf  

nameserver   DNS的IP

4、/etc/hosts  

私有IP    主机名   别名

5、/etc/services

记录架构在 TCP/IP 上面的总总协议,包括 http, ftp, ssh,telnet 等等服务所定义的 port number























  


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值