网络介绍
- 软件架构分类
-
CS架构
Client-----------网络--------------Server
CS架构的软件,需要开发写客户端和服务端
优点 : 开发可以根据自己的想法制定标准,可以按照自己的想法写软件
缺点 : 开发的工作量增大 -
BS架构(浏览器本质就是一个万能客户端,也是一个解析代码的工具)
Browser---------------网络----------------Server
BS架构的软件,客户端是浏览器,只需要写服务端软件
优点 : 开发的工作量减少了,开发效率比BS架构的软件高
缺点 : 需要按照浏览器的标准去写软件
-
什么是网络 ?
网络 = 物理连接介质 + 互联网通信协议
-
什么是互联网通信协议?
互联网通信协议是为了让计算机与计算机之间进行通信而制定的规则,等同于计算机界的英语 -
什么是云计算?
举例来说明,比如我们平时看的电影,需要占用CPU,显卡等本地资源
云计算服务是把一些需要在本地处理的操作在服务端处理好了,本地只需要保证网络就可以了
互联网通信的七层协议(osi)
-
应用层 : 客户端软件(http协议,ftp协议)(开发自己开发客户端,可以自己制定协议的标准)
-
表示层
-
会话层
-
传输层(数据段) : tcp协议 / udp协议 (端口号,客户端的端口号是临时的,服务端的端口号是固定的,端口号的范围值0~65535之间)
-
网络层(数据包) : IP协议(ipv4,ip的第4个版本),IP地址 + 子网掩码 地址按照位置运算得到网络地址,通过网络地址可以找到局域网位置。 mac地址(网卡地址)可以找到局域网内计算机位置。
-
数据链路层(数据帧) :etherent以太网协议(以太网协议一次性最大发送1500个字节,以太网报头默认占用14个字节,网卡就是归以太网协议管),以太网协议,以广播的方式,通过mac地址进行通信。
-
物理层 : 发送电信号(1,0表示高低电频,二进制位),对电信号进行分组(统一标准)
- ip+mac ==>标识全世界范围独一无二的计算机
- ip+mac+port ==> 标识全世界范围内的独一无二的一个基于网络通信的应用软件
网络层的ARP协议
arp协议主要的作用:将ip地址解析成mac地址
-
源地址 : 172.168.10.10/24
-
目标地址 : 172.168.10.11/24
- 先根据自己的ip与子网掩码计算出源地址的网络地址(按位运算)
按位运算的换算方法:IP与子网掩码都为1,那么网络位地址为1。如果IP或者子网任意一个不为1,那么网络位为0。
172.168.10.10 /24
IP 10101100.10101000.00001010.00001010
子网掩码 11111111.11111111.11111111.00000000 =>255.255.255.0
网络地址 10101100.10101000.00001010.00000000
- 再根据对方的ip与子网掩码计算出目标地址的网络地址(按位运算)
按位运算的换算方法:IP与子网掩码都为1,那么网络位地址为1。如果IP或者子网任意一个不为1,那么网络位为0。
172.168.10.11/24
IP 10101100.10101000.00001010.00001011
子网掩码 11111111.11111111.11111111.00000000 =>255.255.255.0
网络地址 10101100.10101000.00001010.00000000
- 判断自己的子网地址和对方的子网地址是否一样
- 如果网络地址一样
那么就证明自己与对方是在一个局域网内,拿到mac地址就可以通信了,那么问题就指向了如何让拿到目标的mac地址。
- 本机
先封装一个arp协议的包,格式如下:
源mac 目标mac 源ip 目标ip 数据部分
自己的mac地址 FF-FF-FF-FF-FF-FF 172.16.10.10/24 172.16.10.11/24 要你的mac地址
- 交换机 (二层设备 : 只能解析到数据链路层)
然后,将该包送给交换机,交换机会解析到数据链路层,交换机会基于ethernet协议,拆出head(源码与目标mac),
如果交换机发现目标mac地址FF-FF-FF-FF-FF-FF,交换机会默认把这个地址当成一个广播的地址。
并且会将这个包重新封装好,然后广播发送给局域网内所有的计算机。
- 目标机器
所有计算机都会确认收到交换机发来的广播包,确认目标IP地址是不是自己的地址,如果不是就直接丢弃该包,
如果是自己的IP地址,就通过交换机直接把自己的mac地址返回给对方。
- 总结 : 局域网内,ip只用来找mac地址。mac地址才是真正用来通信的。
交换机自带mac地址学习功能 :
交换机的一个物理接口对应一个mac地址,会记录源目标的mac地址。
什么情况下才会广播 ???
1. 目标mac地址 : FF-FF-FF-FF-FF-FF
2. 目标地址不存在mac地址表中
- 如果网络地址不一样
那么证明自己与对方是不在一个局域网内,那么就需要通过网关(路由器)进行外网的转发,这里之后就是涉及到路由协议了。
- 本机
先封装一个arp协议的包,格式如下:
源mac 目标mac 源ip 目标ip(网关) 数据部分
自己的mac地址 FF-FF-FF-FF-FF-FF 172.16.10.10/24 网关的ip 要你的mac地址
- 交换机 (二层设备 : 只能解析到数据链路层)
然后,将该包送给交换机,交换机会解析到数据链路层,交换机会基于ethernet协议,拆出head(源码与目标mac),
如果交换机发现目标mac地址FF-FF-FF-FF-FF-FF,交换机会默认把这个地址当成一个广播的地址。
并且会将这个包重新封装好,然后广播发送给局域网内所有的计算机。
- 目标机器
所有计算机都会确认收到交换机发来的广播包,但是只有网关(路由器)会响应请求,返回自己的mac地址
拿到网关的mac地址(网关做外网的转发)
- 拿到网关的mac地址之后,再次向网关发送真正的数据包
源mac 目标mac 源ip 目标ip 数据部分
自己的mac地址 网关的mac地址 172.16.10.10/24 172.16.10.11/24 真正的数据
网关第二次接收到真正的数据包后,网关会把源ip转换成网关对外的ip地址,网关是三层设备。
传输层的TCP协议详解
- 可靠协议,基于链接进行数据传输(端口与端口之间建立链接)
· 为什么叫Tcp协议为可靠协议?
- Tcp协议每发完一个数据包,一定要等到客户端回应之后,才会删除在内存里面的数据的,否则会过一段时间再给客户端发送一次。
- 查看半连接池最大的内存
cat /proc/sys/net/ipv4/tcp_max_syn_backlog
# 128
- 洪水攻击的解决办法
- 增加syn内存空间(内核优化)
- 加个内存条
传输层的Udp协议
- 不可靠协议,不需要建立数据链接,Udp协议传输的效率高于Tcp协议,报头占用8个字节。
· 为什么叫Udp协议为不可靠协议?
- 服务端发完数据包后,不会等待客户端的回应,直接删除内存的数据,释放内存。
· 什么时候用Udp协议?
- 偏向于查询操作的软件,一般会用Udp协议,比如查询时间等操作。
socket套接字
- 网络通信的软件大多数都是基于套接字写出来的
- 套接字程序把传输层,网络层,数据链路层,物理层打包好之后进行了封装,写成了一个软件。
- 开发只需要做应用层开发即可,程序写好之后,只需要调用套接字的接口就可以进行网络通信了。
应
===》socket《===
传
网
数
物
互联网通信的流程图