单机架构
- cs架构:客户端--->服务端
- bs架构:客户端---->浏览器---->服务端
网络通信原理
2.1互联网的本质就是一系列的网络协议
一台硬设有了操作系统,然后装上软件就可以正常使用了,然而你也只能自己使用像这样,每个人都拥有一台自己的机器,然而彼孤立。
结论:英语成为世界上所有人通信的统一标准,如果把计算机看成分布于世界各地的人,那么连接两台计算机之间的internet实际上就是一系列统一的标准,这些标准称之为互联网协议,互联网的本质就是一系列的协议,总称为'互联网协议'(internet Protocol Suite)。
互联网协议的功能:定义计算机如何连接internet,以及接入internet的计算机通信的标准。
边缘部分:客户端或服务端
核心部分:路由器、基站
2.2osi七层协议
互联网协议按照功能不同分为osi七层或tcp/ip五层或tcp/ip四层
每层运行常见的物理设备
OSI七层协议数据传输的封包与解包过程
tcp/ip五层模型
我们将应用层,表示层,会话层并作应用层,从tcp/ip五层协议的角度来阐述每层的由来与功能,搞清楚了每层的主要协议,就理解了整个互联网通信的原理。
首先,用户感知到的只是最上面一层应用层,自上而下每层都依赖于下一层,所以我们从最下一层开始切入,比较好理解,每层都运行特定的协议,越往上越靠近用户,越往下越靠近硬件。
1、物理层
- 光缆/网线:传输信号,连接两台计算机,如果有一根网线能够从中国连接到美国,那么只要一根网线就够了
物理层由来:两个孤立的计算机之间想要一起玩耍,就必须接入internet,言外之意就是两个计算机之间必须完成组网
物理层的功能:主要是基于电器特性发送高低电压信号,高电压对应的数字1,低电压对应的数字为0
2、数据链路层
让同一局域网下的计算机连接在一起
- 数据链路层的功能:让0和1变得有意义,每几位一组,
以太网协议:
规定物理层中传输的0和1的格式
head:
数据类型
data:内容
- 发件人的地址就是mac地址,计算机上网卡的地址,这个地址不变,并且唯一,每一台电脑有自己固定的mac地址
mac地址:
head中包含的源和目标地址由来:ethernet规定接入internet的设备必须都具备网卡,发送端和接收端的地址便是网卡的地址,即mac地址
mac地址:每块网卡出厂时都被烧制世界上唯一的mac地址,长度为48位2进制,通常由12位16进制数表示(前六位是厂商编号,后六位是流水线编号)
-
广播:你一定知道自己的mac地址,还有收件人的mac地址,通过某一台设备(交换机),但是交换机不知道mac地址对应的计算机是那一台,交换机就会以广播的形式发给所有的计算机,收件人的计算机收到了就会解析这条命令,就拿到内容了.之后交换机就会记录两个mac地址。
以上基于局域网
3、网络层
让不同局域网下面的计算机连接在一起
叫做IP地址,只知道mac地址,无法连接其他局域网内的计算机,因为mac地址只被交换机识别,然后不同局域网的交换机不一样,所以现在定义一个新的地址表明是哪个局域网,通过路由器
在数据链路层的基础上再包一层IP头
已经知道了淘宝的ip和mac地址,你会把自己的mac地址和ip地址一起发送出去,路由会接收淘宝的ip地址,路由发送淘宝的ip地址和mac地址,自带mac地址(路由器的)和ip地址(路由器的ip地址)
mac地址(局域网)+ip地址(互联网)就能找到世界上独一无二的电脑
4、传输层
组织网络带来的数据,
端口号,找到一个固定的应用程序,一个端口号对应一个应用程序
mac地址 + ip + port(端口号)——>独一无二的应用程序
数据0和1发给应用程序,TCP和UDP协议
5、应用程序
0和1转换成具体的功能
6、抽象层
客户端和服务端的应用程序想通信,两者传输的数据必须是一样的,
socket抽象层就是对全世界独一无二的计算机上的应用程序,既可以是客户端,也可以是服务端
ARP协议
arp协议由来:计算机通信基本靠吼,即广播的方式,所有上层的包到最后都要封装上以太网头,然后通过以太网协议发送,在谈及以太网协议时候,我门了解到通信是基于mac的广播方式实现,计算机在发包时,获取自身的mac是容易的,如何获取目标主机的mac,就需要通过arp协议
arp协议功能:广播的方式发送数据包,获取目标主机的mac地址
协议工作方式:每台主机ip都是已知的
例如:主机172.16.10.10/24访问172.16.10.11/24
一:首先通过ip地址和子网掩码区分出自己所处的子网
场景 | 数据包地址 |
---|---|
同一子网 | 目标主机mac,目标主机ip |
不同子网 | 网关mac,目标主机ip |
二:分析172.16.10.10/24与172.16.10.11/24处于同一网络(如果不是同一网络,那么下表中目标ip为172.16.10.1,通过arp获取的是网关的mac)
源mac | 目标mac | 源ip | 目标ip | 数据部分 | |
---|---|---|---|---|---|
发送端主机 | 发送端mac | FF:FF:FF:FF:FF:FF | 172.16.10.10/24 | 172.16.10.11/24 | 数据 |
三:这个包会以广播的方式在发送端所处的自网内传输,所有主机接收后拆开包,发现目标ip为自己的,就响应,返回自己的mac
TCP协议三次握手、四次挥手
TCP:
数据从服务端--->客户端的协议
三次握手建立连接:
如果你要去服务端去下载视频,客户端和服务端之间必须连接,连接就是三次握手:
在连接之前,客户端和服务端都是处于关闭状态的
- 客户端会像服务端发起一个请求,如下载视频,会有一个syn报头
- 服务端会接收到客户端的请求,然后会响应客户端,并且把syn报头改装好后又返回客户端,会有ack的报头
- 客户端开始进入连接状态,再发一条请求,请求带上ACK给服务端,让服务端也进入连接状态
四次挥手关闭连接:
- 客户端就会发送请求带上FIN报头给服务端说我够了,要断开连接
- 服务端接收到客户端的请求后,返回一个带有ACK报头的请求说确认了,1、FIN报头并没有返回,2、但是服务端此时可能还有数据传输
- 服务端数据传输结束之后,服务端又会发送一次报头FIN的请求,告诉客户端,我发完了,结束吧.
- 所以必须得有第四次确认,客户端向服务端进行一次确认,我收到了,否则第二次传入的数据有丢失的风险.