网络Networks

基本认知

前端后端 与 前台后台

英文中文解释案例
Backend / Server后端服务器,看不见的逻辑Spring
Frontend前端网页 / 客户端 / CLI,看得见的React / iOS / aws cli
Admin Page后台给管理员看的订单管理
Customer Page前台给用户看的客户下单
事实

前台 和 后台 都是 前端,都有对应的后端

服务器 与 服务器

概念案例
硬件一个 用于运行服务器软件的 机器
软件一个 运行在服务器硬件上的 程序

通信

通信概念

比如 一台机器里的程序 想发送信息 给 另外一台机器里的程序

就像 一个大楼里的小明 想发送情书 给 另外一个大楼里的小红

问题

如何确保情书发到小红?

如何确保是小红收到了情书?

需要提出哪些概念来保障物流配送的运转?

IP 地址 与 街道号码

什么是

计算机里的虚拟的街道号码

99.17.00.02 IPv4

0-255 x 4

Mask 掩码 与 IP 范围

99.17.00.00 / 8

代表

99.xx.xx.xx

原因
99.17.00.00
01100011.00010001.00000000.00000000
--------/8
99.17.00.00 / 7
01100011.00010001.00000000.00000000
-------/7
0110001x.xxxxxxxx.xxxxxxxx.xxxxxxxx
98.x.x.x ~ 99.x.x.x

分配
01100010.xxxxxxxx.xxxxxxxx.xxxxxxxx / 8
01100011.xxxxxxxx.xxxxxxxx.xxxxxxxx / 8
99.17.00.00 / 8
可以分配多少个
            / 16

分配

国家、公司 都有 预分配的 ip 地址范围

特性分析

低可读性

不能作为广告内容

低稳定性

同一个 ip 地址,在不同的时间 可能是不同的真实用户

Domain Name 域名

是什么

人能看懂的地址的名称

zzax.io

DNS 域名服务器

用于域名解析

把 域名 变成 IP 地址

存储着 域名 -> ip 的映射

ping 指令

ping <domain name>

Mac 地址

背景

一台设备会在联网时绑定一个 ip

在换地址之后,会绑定新的 ip

诉求

不要把消息发错人

什么是

每台计算机的网卡都有自己的身份证号码

Port 端口号

是什么

一个网卡可以认为是一栋楼

里面会有多个房间

Port 是端口号

是程序 发给 程序

认知

一栋楼 有 2万多个 port 可以使用

一个 port 只能供给一个 program

一个 program 可以占用多个 port

物流公司

TCP / IP

IP + Port

我们家不会丢包,但是速度慢

相关名词

Socket

UDP

我们家发的快,但是丢包我不管

TCP 与 Socket 通信

TCP 基本步骤

建立连接

服务器等待连接

客户端发起连接

互发数据

接收方等待数据

发送方发送数据

服务器等待连接

需要监听端口

代码会在此行卡顿,类似 Console.readInt()

1
ServerSocket serverSocket = new ServerSocket(8080);

客户端发起连接

需要指明 host 地址(ip / 域名)

需要指明 端口号

1
Socket socket = new Socket("localhost", 8080);

接收方等待数据

等待输入流的数据

1 2+3+
ServerSocket serverSocket = new ServerSocket(8080);int value = socket.getInputStream().read();System.out.println(value);

发送方发送数据

发送数据

1 2+
Socket socket = new Socket("localhost", 8080);socket.getOutputStream().write(3);

备注

服务器返回数据给客户端

服务器不死

byte数组与序列化

使用 Connector

使用 connector 发送数据

ZZAX 微信公众

文档一更新,立刻告诉你