linux之网络

一 什么是网络,网络能干什么

 网络出现的主要目的就是实现主机和主机之间的通信,而互联网协议(Internet Protocol Suite)就是连接两台计算机之间的internet一系列统一的标准。互联网本就是一系列的协议。

互联网协议是为了定义计算机如何接入internet,以及接入internet的计算机通信的标准而存在的。

  如何实现主机和主机之间的通信:

   主要使用网线,光纤,wifi传输物质,需要拥有传输的介质。

   系统可以识别二进制,传输介质能识别的是电信号

   利用硬件网卡,进行数字和电信号之间的转换。接收时识别电信号转换为数字信号,将低电压转成0,高电压转成1。

    数字----->电信号  网卡的调制过程

    电信号----->数字  网卡的解调过程

   利用数据包传输的时间,进行数据包传输进行协商统计

    网课参数:xx bps  == 每秒钟接受多少个bit(0或1) 1Mbps 1Gbps

 多台主机之间的通信:

  每一台主机上面都会有一个身份标识:mac地址(物理地址 采用的是16进制)

  一个交换网络中,新加入的主机,想要和其他的网络进行通信,就得靠吼。主要采用广播的方式进行通信

  在多台主机在一个交换网中,利用广播通信容易造成广播风暴,所有主机都在发广播报文

  将一个大的交换网络进行切割,可以有效的降低广播风暴问题

  交换机的每一个接口同处于相同的广播域内

 交换机的作用:主要实现多台主机的通讯需求

 身份标识:mac地址,属于物理地址,不能改变,全球唯一

 路由器:

  主要实现不同交换网络之间主机的通信(实现不同网段之间主机之间的通信)

  路由器默认不关心主机地址信息,只关心网络地址

  路由器中有路由表,记录端口和网段地址的对应信息

  身份识别:IP地址(逻辑地址,可以改变,是否全球唯一???)

  Ip地址主要由两个部分组成:网络地址部分(局域网标识)+主机地址部分

 施乐公司最先提供了网络,主要用于家用

二 七层协议

 应用层:

  为应用软件提供接口,使应用程序能够使用网络服务

  协议:http,dns  telnet,ftp等等

 表示层:

  对象护具进行解码和编码

  数据的加密和解密

  数据的压缩和解压

 会话层:

  建立,维护管理应用程序之间的会话

  功能就是对话控制,同步

 传输层:

  负责建立端到端的链接,保证报文在端到端之间的传输

  一一对应设备:防火墙

  功能:服务点编址,分段与重组,连接控制,流量控制,插座控制

  协议:TCP,UDP

 网络层:

  负责将分组数据从源端传输到目的端

  为网络设备提供逻辑地址

  进行路由的选择,分组转发

  ip地址=网络位+主机位,ip地址是三层地址

 数据链路层:

  在局域网内实现主机与主机之间的通信

 物理层:

  作用:负责把逐个的比特从一个节点移动到另一个节点

  功能:

   定义街接口和媒体的物理特性

   定义比特的表示,数据传输速率,信号的传输模式

   定义网络物理拓扑

 TCP/IP模型  4部分

  接入层:物理层和数据链路层

  因特网层:网络层

  主机到主机层:传输层

  应用层

linux之网络

 smtp:跟邮件相关

 NFS:网络文件传输,ftp是比较老的文件传输协议

 DHCP服务:

  方式一:

   广播的方式获取ip地址

   谁都给不了的时候由系统自动分配地址

  方式二:

   如果有DHCP服务器

   DHCP服务器会从本地地址池中选出一个没有分配的地址

   主机获取到地址后需要进行确认

   服务器会给已经分配出去的地址设置有效的时间

  过期就要重新申请地址

 可用端口号:1--65536,0端口是TCP和UDP都不能用,1--10024是著名的端口号的范围

三 数据包的封装过程

 原始数据 (单元)-- TCP头部 -- IP头(段) -- mac头 -- 二进制信息 (包)-- 高低电平(帧)

  数据链路层中以太网的帧结构

linux之网络

  1)mac地址就是二层地址,全球网络设备唯一的地址

2)根据作用的域不同:IP作用在不同的网络之间,MAC地址作用在相同的网络内部

3)MAC地址48位的地址,采用16进制进行表示,MAC地址是硬件地址

4)IP地址会被是逻辑地址

 首先将自己想要封装的数据嵌入到TCP数据包中,在位TCP数据包设置一个端口

 再将数据嵌入到IP数据包中,ip地址会设置发送方呵呵接收方的IP地址

 最后将 ip的数据包嵌入到以太网数据包,然后以太网在设置发送方和接收方的mac地址。

 经过多个网关的转发,发送到了接收方。然后接收方在按照顺序依次反向解包。

linux之网络

linux之网络

 不同的局域网之间的通信必须经过网关,不同的局域网之间的通信不能够依赖mac地址,要依赖ip地址

 完整 的网络通信过程:有去必有回。

 端口号范围:可用的随机的端口号的范围。

四 基础命令

netstat -lntup:查看当前网络的端口信息

 netstat -an  :查看链接状态

 netstat-lntup|grep sshd:查看条目信息

 dig  网址  :查看某个网址的解析记录    dig  网址 +trace

五 三次握手和四次挥手

 TCP报文结构:

  16位源端口,16位目的端口

  确认控制字段:ack

  请求建立 链接控制字段:syn

  请求断开连接 控制字段:fin

 TCP的三次握手:

  A给B发送syn字段设置为1的建立请求链接

  B个A发送ack字段设置为1的确认建立连接请求

  同时B给A发送syn字段设置为1的连理请求链接

  A给B发送ack字段设置为1的确认建立连接请求

 tcp:面向连接的网络协议,可靠,但是速度很慢,数据传输过程中始终会带着ack确认信息,所以说TCP是可靠协议

 三次握手中,还会发送序列号seq,接收到过后才会发送确认号ack

  序列号的作用:把所有的数据按照顺序拆分,再一个个按照顺序组装起来

  确认号的作用:接收到后会发送一个确认号,告诉发送端下次发送哪个包

linux之网络

 四次挥手过程:必须在已经建立连接的基础上

  A会发送FIN设置为1断开请求的链接

  B会接收到后发送ack设置为1的确认断开连接连接请求

  B然后又会发送FIN设置为1的端口请求链接

  A接收到后会发送设置为1的确认断开连接的请求

linux之网络

 为什么是三次握手 四次挥手:实际上断开链接请求的是会话层控制的,TCP层没有权力控制,所以端开链接必须是四次挥手

 socket条目是由五元组的概念组成的:

  协议,目标ip,目标端口,原IP,源端口

 tcp的状态集转换详细信息:http://blog.51cto.com/13055758/2062194

  udp:无连接的网络协议,不可靠,但是速度快,udp报文没有序列号和确认号,只管发送数据,不管对方有没有接收到。

 DNS协议:主要叫做域名解析协议

  将域名转换成对应的ip地址

  DNS主要作用:实现域名和ip之间的转换uocjgenc

 全球有13个根域名服务器

六 ip地址分类和子网划分

 什么是ip地址:

  ipv4的地址一共有2的32次方个,有32位二进制组成,采用点分十进制分为4段,每段为8位二进制

  ipv6的地址一共有2的128次方个

 二进制和十进制之间的转换:

  128 64 32 16 8 4 2 1 代表8位每一位是1时对应十进制数

  二进制--十进制  求和

  十进制--二进制  求差

 ip的分类:

linux之网络

 按ip的数值 范围划分5个类:

  常用地址为ABC三类地址:

  A类地址==网络位+主机位+主机位+主机位:前8位不能动(网络位),后24位随便动,是主机位,运营商能动的就是前8位的后7位,0开头

  B类地址==网络位+网络位+主机位+主机位:前16位是网络位,10开头

  C类地址==网络位+网络位+网络位+主机位:前24位是网络位,101开头

  D类地址为组播地址:每一个地址都作为一个网段:组播地址

  E类地址为科学研究使用:研究使用,预留的

 按IP地址的用途分类:公网地址,私网地址

  私网地址:每个局域网都可以使用的地址信息,并局域网内唯一,跨越不同局域网可以重复

  使用,因此私网地址有效缓解了地址枯竭问题

  私网地址的范围:

   A类:10.0.0.0  —— 10.0.0.255

   B类:172.16.0.0 —— 172.31.255.255

   C类:192.168.0.0 —— 192.168.2

   linux之网络

 公网地址:是互联网上可以识别的地址信息,并且是全球唯一

 网络通讯类型

  linux之网络

 主机位全为0的是网络地址,不能分配分配给主机

 正常的一个C类地址可以部署2的8次方-2=253-1=252太服务器,减2是减去网络地址和广播地址,再减去一个网关

 127.0.0.1:特殊的ip地址,本地地址,也叫回环地址

 子网划分:

  原因:

   避免网络资源的浪费,因为不可能部署到所有的主机数

   广播风暴问题

   避免网关设备的负载过高

  ip掩码:32位的二进制数

   A类地址掩码信息:255.0.0.0
      B类地址掩码信息:255.255.0.0
      C类地址掩码信息:255.255.255.0
      A :/8  B: /16 C:/24

   掩码作用:

  1)利用掩码快速得知是A类地址,还是B类,C类?

  2)利用掩码定位网络位信息

 子网划分计算过程:

linux之网络

七 主机克隆

 准备工作:一清空两删除
    cat /etc/sysconfig/network-scripts/ifcfg-eth0
    删除 sed -ri '/HWADDR|UUID/d' /etc/sysconfig/network-scripts/ifcfg-eth0
    清空 >/etc/udev/rules.d/70-presistent-net.rules
    echo '>/etc/udev/rules.d/70-presistent-net.rules' >>/etc/re.local(系统启动时会执行这个文件中命令)
关闭虚拟机
右键--管理--克隆
当前状态--创建链接克隆--可以改一下虚拟机名称--完成
修改ip地址信息:
    sed -i "s#200#10#g" /etc/sysconfig/network-scripts/ifcfg-eth0
重启网卡
    /etc/init.d/network restart

八 osi的五层模型。

第一层是物理层:就是链接两台计算机之间的组网。主要的功能是基于电器特性发送高低电压(电信号),高电压对应数字1,低电压对应数字0。

第二层是数据链路层:是为了规定电信号多少位一组,每组什么意思。主要的功能是定义了电信号的分组方式,【1  以太网协议(ethernet)是早期各个公司的分组方式,后期形成了统一的标准。一组电信号构成了一个数据包,叫做“帧”。每个帧又被分为报头(head)和数据(data)。每个head又被分别为18个字节,每6个字节为一组:(发送者?源地址6个字节;接收者/目标地址6个字节;数据类型6个字节)。而data最短46个字节,最长1500个字节。属于数据包的具体内容。head+data=最短64个字节;最长1518个字节(超过最长字节就会分片发送。2  mac地址发送端和接收端的网卡地址。每块网卡出场时都会有一个世界唯一的mac地址,长度为48位二进制。3  广播是两台计算机之间的通信方式。而计算机的通讯基本是靠吼。一台计算机用广播将数据包发给另外几台计算机,而每台计算机都会查看目标mac。发现不是自己的就会丢弃,是自己的就会响应的。】

第三层是网络层;是隔离每个小小的局域网。功能是用一套新的地址来区分不同的广播域或子网。这样就不会导致一台计算机发送的数据包让全世界的计算机都会收到。

第四层是传输层:是两台计算机之间端口和端口的通信(端口范围0-65535,0-1023为系统占用端口)。

第五层是应用层:不同的应用程序有着不同的协议,而这些而这些应用程序协议就构成了应用层。

九 用户的上网流程

1  本机获取本机的IP地址,子网掩码,网关的IP地址和DNS的IP地址。

2  打开浏览器,在网址栏输入自己想要访问的网址。

3  用DNS找到自己想要访问网址的IP地址。

4  自己将要发送的HTTP内容会被嵌入TCP数据包当中。

5  为TCP数据包设置一个端口,而接收方的HTTP端口默认为80,(而发送方的数据端口是1024~65535之间随机生成的)。

6  TCP数据再次被嵌入IP数据包,然后IP地址会设置发送方和接收方的IP地址。

7  最后TP数据包嵌入以太网数据包,然后以太网设置发送方和接收方的MAC地址。以太网的数据包最长为1500字节,加入IP包超过了1500,会自动生成多个包而且是每个包都是由IP的20字节开头的1500字节以太网包(最后余下的数据字节再加上IP的20字节会生成一个以太网包)。

8  经过多个网关的转发,接收方收到了以太网的数据包。经过IP字节标头的序号,接收方将几个包拼起来,取出完整的TCP数据包,读出数据的内容,根据内容做出相应的响应,然后再用TCP协议发送回来。本机接收到了相应的响应,就可以将自己想要访问的网址显示出来,这样就完成了一次网络通信。

上一篇:docker之容器访问和网络连接(三)


下一篇:Android编程: 界面组成、事件监听器