1,网络介绍python
为何要存在互联网?shell
为了数据传输更加方便快捷。数组
主要讲互联网的各类协议。如:浏览器
osi七层协议服务器
2,子网划分(经过控制子网页码来达到划分不一样局域网的目的)网络
192.168.10.11/24架构
192.168.10.230/24 并发
在/24的子网页码的时候,是一个网段的,可是若是改了子网页码,即便它们链接在同一个交换机上,也不是一个网段的,也没法通讯。运维
3,vlan (virtual lan ,虚拟局域网,一个交换机就一个局域网,可是如今一个交换机能够当多个局域网,也算是虚拟化技术的一种。)tcp
交换机的基础知识
而后讲配置网络,ip,地址,路由的配置,路由条目等等。
路由器,也是硬件,操做系统,只不过专门为路由转发的硬件和操做系统。
运维,就是维护软件的稳定,而软件,基本上都基于网络通讯的软件,操做系统,网络的稳定。因此网络很重要。
一,网络介绍
1,基于网络通讯的软件有俩种架构:
cs架构 clienk(客户端)------------网络----------------server(服务器)
bs架构 browser(浏览器,在早期至关于万能客户端)------------网络-------------server(服务器)
cs架构的软件,优势:客服端,服务端都是本身开发,客户端服务端如何通讯,本身说了算。
缺点:客户端,服务端都要本身开发。用户必须下载客户端才能访问问服务端。
bs架构的软件,优势:只开发服务端,
缺点:开发的服务端的规则须要受制别人,由于客户都下载好了浏览器客户端。
注意:如今开发,既有本身配套的客户端,也能被浏览器访问,如腾讯视频。
2,什么是网络
底层的物理链接介质要准备好,如同打电话,首先须要一个电话,而后是电话线链接在一块儿,而后打电话为了互相能听懂,都学了普通话,就等于你们一块儿商讨出来的统一标准,就是通讯的协议。
网络=物理连接介质+通讯的标准(互联网通讯协议)
互联网通讯协议如同互联网界的英语。等于你们必须都能听懂才行
物理连接介质主要是网络工程师来管,更多的是将各类通讯协议。
云计算
原本本身电脑若是看高清视频的压力,或者玩大型网络游戏,本地资源的压力都在本身这一端,有了云计算,只须要保证网速,显卡,本身其余电脑的性能不须要特别高,就能轻松使用,复杂的操做性能方面的问题,都在服务端解决。我的pc计算机的发展也会愈来愈小。
3,互联网通讯协议(osi七层协议)如同计算机界的英语,你们都会才能通讯:
主要学5层和7层
第一层,物理层:发送高低电平,单纯的电信号没有意义,计算机只能发送高低电平,就规定高电平对应1,低电平对应0,发出来的信号101001010110.....
第二层,数据链路层:可是即便如此单纯的二进制数依然没有意义,因此想让它有意义,必须进行分组附加对应的意义。这个划分的协议就是,ethernet以太网协议,研究以太网协议,就是看它如何规定。
以太网协议:规定三件事
1,规定了名字:称为数据帧,每一组数据帧,
2,规定了数据格式,都分为头,和数据俩部分,
头(至关于快递单,地址,简单描述):一共14个字节,前6个是源地址/发送者,紧接着6位是目标地址/接收者,后俩位是数据类型,数据的一些描述信息。
数据部分(至关于要送的快递):最短46,最长1500字节
3,以太网协议规定,一台计算机但凡进入网络,必须有一块以太网卡,而每一块以太网卡,在出厂的时候都烧制一块地址,这个地址叫mak地址。
mak地址
mak地址,由12位16进制数组成的,前6位是厂商地址,后6位是流水线地址,为了让每一块mak地址都是独一无二的地址。以太网的工做方式是广播,广播包是在局域网里发的,若是只是在一个局域网里通讯,只须要以太网的工做方式,加上mak地址就够了。但是网络实际上是由一个个局域网组成的,因此若是不在一个局域网,那么就须要跨局域网,就须要先找到对方在哪一个小局域网,这时候就须要新的协议,地址,专门标识局域网的地址。
第三层,网络层:
ip协议,如今一般使用ip的第四个版本,因此又叫ipv4协议。
iPv4协议,规定每台计算机必需要有一个ip地址。
点分十进制,0.0.0.0 这是最小值,分4个位,每一位都是8个二进制数,8个二进制数的最小值就是00000000,最大值是11111111,8个1转换成10进制,255.255.255.255,不够用,后来诞生ipv6,目前主流仍是ipv4,子网页码和ip地址结构同样。
可是,单纯的ip地址是没有意义的,须要搭配子网页码,一般都是搭配出现的。
例子:
172.16.10.2/24 (24,表明连续写24个1)
10101100.00010000.00001010.000000001 -》172.16.10.2 ip地址
11111111.11111111.11111111.00000000 -》 255.255.255.0 子网页码
ip地址和子网页码,会进行按位与运算,俩个二进制数,上下同时为1,就为1,不然就为0
10101100.00010000.00001010.000000000 -》172.16.10.0 子网地址,或者叫网络地址,用来标识别人在哪一个局域网里。
可是只是拿到子网地址,还不够,须要找到局域网里究竟是那台机器,就须要加上mak地址。
ip(ip+子网页码)+mak地址 -》标识全世界范围内独一无二的一台计算机。
arp协议:就如同不知道对方地址,想给对方寄快递,arp协议如同打电话问对方的地址在哪。经过ip问对面mak地址是什么。
须要拿到对方的ip地址
计算机怎么知道对面的计算机跟本身在不在一个局域网
例:
源:172.16.10.10/24 经过和子网页码按位与运算,得172.16.10.0
目标:172.16.10.11/24 得172.16.10.0
1,计算机基于arp协议,会把本身和目标的ip地址和对应的子网页码进行按位与运算,算出一个网络地址,两个若是同样,就能够肯定对方和本身在一个局域网内。(xshell,使用python,bin()括号内输入数字,就能够转为10进制数,而后再和子网页码进行按位与运算,得出一个网络地址)
2,判断本身的子网地址与对方的子网地址是否同样
子网地址若是同样,证实本身与对方是在一个局域网,须要拿到对方的mak地址就能够通讯了。
(1)本机,封一个arp协议的包
网络层,数据包 源ip 目标ip 数据部分
172.16.10.10/24 172.16.10.11/24 要你的mak地址
数据链路层,数据帧 源mak 目标mak
本身mak地址 FF-FF-FF-FF-FF-FF (谁看到都会明白这是在要本身的mak地址,给不给就看目标ip地址是否是本身。)
(2)交换机
物理层,把上面的打成2进制数,传给交换机(2层设备),收到一堆二进制数,而后汇总成一个包,交换机会解析到数据链路层,看到以太网协议的数据的包,目标mak地址是FF,直接广播的方式发在局域网内,
(3)局域网内机器
从物理层-》数据链路层-》网络层。每一个人都拆开看看,发现FF,知道要本身的mak地址,而后看ip头,看看目标ip是否是本身,不是就丢掉,是本身就发回信息,对方知道本身的mak地址,之后用mak地址通讯。 返回的流程略。
至此,本身的计算机就拿到了,172.16.10.11/24的mak地址,为发数据最好了准备工做。并非完成通讯。
交换机:
自带mak地址学习功能,交换机都有一个mak地址表,最开始是空的,1号端口什么也没对应,其余号端口也是,可是当有人把机器经过网线链接在交换机上,总有机器向交换机发包,交换机就会把二进制汇总到数据链路层,它能够基于以太网协议拆数据链路层的包,前6个字节是源mak地址,它立刻就知道例如,10号端口对应的mak地址是谁,而后再拆6位,知道目标机器的mak地址是多少,而后广播,而后总有一台机器相应,那么又知道一个端口对应的mak地址,最后这张mak地址表就会被填满。之后就会直接发给目标mak地址。若是没记的,仍是广播。
在什么状况下交换机才广播:
1,目标mak是FF-FF-FF-FF-FF-FF
2,目标mak地址不存在与mak地址中去
总结:若是两台计算机在同一个局域网内,ip地址做用只是用来获取对方的mak地址。而mak地址才是真正用来通讯的
若是经过ip和子网页码算出来的网络地址发现不同,那么就须要跨局域网通讯。首先须要获得网关的mak地址,那就和上面同样经过arp协议,由于路由器和交互机是连在一块儿的,就至关于和咱们在同一个局域网内。
(1)本机,封一个arp的包
网络层,数据包 源ip 目标ip 数据部分
172.16.10.10/24 172.16.10.11/24 要你的mak地址
数据链路层,数据帧 源mak 目标mak
本身mak地址 FF-FF-FF-FF-FF-FF (这里要的mak就是网关路由器的mak地址,交互机就会广播,网关拆到ip,发现是本身,就会给我mak地址)
(2)交换机广播
(3)目标机器,也就是网关,发现ip是本身,返回我mak地址,我拿到了网关的mak地址。
网关是有俩个地址,一个是对内,一个是对外网,
(4)如今要发数据,源mak是本身的mak地址,而目标mak地址,不是想发给目标的mak地址,由于根本不在一个局域网,没法拿到mak地址,因此目标mak地址是网关的mak地址。源ip是本身的,目标ip是目标ip,不是网关的ip地址
1)本机,封一个arp的包
网络层,数据包 源ip 目标ip 数据部分
172.16.10.10/24 不在同一个局域网的目标ip 数据
数据链路层,数据帧 源mak 目标mak
本身mak地址 网关的mak
拓展:路由器是三层设备。路由器拆到第三层,发现源地址是一个内网的ip地址,而目标ip是外网的ip地址,就知道这个包要往外网发,不过路由器自己就是一边链接内网,一边链接之外的设备。路由器会作一个源地址转换,换成本身的地址,目标地址不变,再往外发,之后就是做为运营商的地址,再往外发。。。。一旦路由器往外发了,就是网络工程师的事了,走的事路由协议。
以上讲的是经过ip地址和mak地址来找到计算机在哪,应该是找到某台计算机,上面运行的多个软件的其中一个。
第四层,传输层 tcp,udp(端口号0-65535,其中1024之前的都被系统占用了)
凡是基于tcp协议和udp协议通讯的软件都会被操做系统分配一个端口号,表示一台计算机上经过网络通讯的软件,每个端口号对应一个。
ip+mak+port(端口号)-》表示全世界范围内独一无二的一个基于网络通讯的应用软件。
端口:端口号,是操做系统管理的,客服端的端口号,每次都是随机的,服务端的客户端是固定的。
第五层,应用层(若是是cs架构的软件,想怎么定义协议,想用哪些协议随便,可是若是是bs架构的软件,就必须属于如http,fto等协议,由于客户端不是本身开发的。)
整个流程:
应用层数据包处理好以后,交给传输层
传输层加了一个头,是源端口和目标端口,交给网络层
网络层,加个头,源ip,目标ip,交给下一层
数据链路层,加上头,源mak地址,和目标mak地址,给下一层
物理层,所有打散成二进制
先到交换机,而后分析,给对方计算机了。
而后物理层,汇总
数据链路层,基于以太网协议,看源mak,目标mak,发现是本身再往上交
网络层,根据ip协议,这里意义不大
传输层,根据tcp/udp协议分析,源端口意义不大,关键是目标端口,把包交给对应的端口的软件。
应用层,这个数据包被处理过,可是,客户端服务端都是本身开发的,随便,确定能够反解出来。
目的就是把客户端把数据送给了服务端,为何这么复杂,缘由就是由于,网络是通过一个个不一样种类的物理介质链接起来的,因此每次日后发,必须让不一样的设备之间清楚这个包下一步要往哪里发。
tcp协议(好人协议,有弊端,不会拒绝):传输层的
tcp传数据可靠:是由于它每发一个数据包过去,内存里的数据包是不删除的,等到对面回一个ack=1确认信息,它才删除内存里的数据。若是没回,会再发一次
udp传数据不可靠:每发一个数据,udp立刻就会把数据删掉。
tcp协议是基于连接
udp协议没有连接
udp传数据的效率更高
但凡一个应用程序是基于tcp工做的,在通讯以前必须先创建一个双向通路。
如同打电话问一下对面是否赞成挖一个到他家的通道,挖通以后,他也打电话问我,也挖通道。一共4次。可是中间他赞成和请求能够合并,变成3次完成。
tcp三次握手,
好人协议
客户端,俩种状态,syn_sent(寄出) established(创建成功,可是客户端看到的建议成功,有可能这个链接尚未真正的创建成功)
syn_sent
established
服务端,三种状态,listen(倾听,监听,netstat -按 | grep 80 ,会发现服务器在listen状态),syn_rcvd (收到) established (创建成功)
listen
syn_rcvd (已经收到的状态)基本看不到这个状态,由于传输速度很是快,若是长期属于这样的状态,多是本身的服务器,正在遭受syn洪水攻击,dos拒绝服务攻击,ddos分布式攻击。
dos拒绝服务攻击,如同拍一群人堵住对方饭店的门,让正经常使用户进不去。(通常都是有预谋有组织的攻击)
established
若是服务器长时间停留在syn_rcvd状态,一直没有进入创建状态,极可能正遭受洪水攻击。
syn洪水攻击,服务端收链接,是一个个收的,在半链接池里,为何叫半链接池,由于收到syn链接时,并非一个完整的链接创建成了,因此叫半链接池。每发一个syn请求
,服务端都会把半链接放这个半链接池里,请求都是按照先进先出法则,客户端不停的往里放请求,操做系统不停的从里面往外拿,正常状况下,协做很好,速度很是快,这时候有人模拟大量的syn无效请求,让正经常使用户请求没法进入,直接报错,池子默认128个。因此遇到洪水攻击,须要把半链接池调大,可是会占用内存空间,同时还颇有可能无济于事,属于内核的优化,不如硬件方面的优化,直接加内存条。
tcp断开链接,4次挥手,中间俩步不能合并,由于极可能有数据在传输
若是是客服端先发完数据,上面的隧道就没有存在的意义。可是服务端的数据不必定就发完了,因此中间不能合并。
客户端 服务端
fin_wait_1证实你是断链接的发起方, close_wait 等待关闭
fin_wait_2表明被动断开链接,表明客户端到服务端的通道断开了 last_ack服务端断开请求
time_wait表明链接立刻就要断了
一般状况下,服务端都是第一个发起断链接的,若是服务端一直处于time_wait的状态下,说明服务端正处于高并发的状态下。
拓展:上网为何要花钱,若是是局域网,本身和本身玩,不用花钱。由于属于后来者,其余各个组织,机构,开始尝试把个个网络设备链接在一块儿,若是本身想去外网,去哪一个网站,必须链接到别人链接好的网络。