此处后台开发使用的是Java 需要安装Java SE Development Kit JDK 内已含JVM (java虚拟机)
篇幅将涉及到Java基础

服务器与客户端

两者其实皆计算机,不过两者的需求不一样
客户端通过端口发送请求给服务器,端口用于监听,以运行一个软件(为服务器软件) 来处理客户端发送的请求/数据 即服务器软件占用一个端口用以监听数据的传输
返回数据: 同样的,返回数据即是服务器通过之前的端口将数据发送到客户端(中间过程会比较复杂,可能会牵扯到网卡接口等····)

要接收到数据,必须由一个服务器软件占有一个端口并监听数据
既然此处使用java作为后台开发,使用Tomcat作为服务器软件,正好其就是使用java开发的服务器软件,需要在使用jvm启动后才能使用
所以整个过程大概就是 客户端发送请求到监听某端口的服务器软件(由JVM启动),再运行服务器中对应的Java代码

互联网环境下,每台计算机都有自己唯一的IP地址,此处则使用Ip地址来访问指定服务器
若是使用http协议访问服务器,那提供的目标地址格式差不多如下
http://IP地址:端口号/项目

网络互联模型

国际标准化组织ISO 于 1985年制定了 网络互联模型 OSI

OSI参考模型具有 7层结构。 为ISO制定
而TCP/IP协议具有 四层结构 广为人知
在学术研究中 一般将物理层数据链路层分开讲解,具有 五层结构

数据由客户端发送到服务器,途中会经过包装和解包、

LocalHsot\127.0.0.1 属于环回地址 Lookback Address(即访问当前主机)

搭建Java服务器开发环境

使用IDEA + Tomcat搭建完毕本地服务器后,
通过 本机ip/localhost/127.0.0.1 + 端口号 + 项目名即可访问本地服务器项目,
建立服务器后,服务器将查找 index.htm / index.html / index.jsp 作为主页打开

Java的工程结构由 包(文件夹层级?。。) + 类名构成 —- 相当于C#中的命名空间
其包有个约定俗成的命名方式:即将域名倒过来 如在下的博客域名 fxlabtinystar.cn
那包名可以是 cn.fxlabtinystar.xxxx(模块、功能啥的)
在实际目录中则变成了以 点号 分层目录

网络环境模拟

这一部分使用了Cisco Packet Tracer(一款网络仿真程序)
使用ping测试网络状态,两台计算机的首次连接,ping的发起机通过ARP协议获取了接收机的MAC地址(只知道IP地址可不行,数据输送必须知道MAC网卡地址)走完ARP协议后,即已经获取了目标机器的MAC地址,此时可以使用ICMP协议进行ping的实现了

关于Packet Tracer事件列表中显示连续三个一样类型的协议:这并不是三次使用该类型协议,而是完整的一次,从开始 - 发出数据 - 接收数据

两台电脑(相同设备)之间直接互联需要用到的网线是交叉线而非直通线

计算机之间的连接方式

同轴电缆 Coaxial

  • 属于半双工通信(同一时间只允许一台设备发送数据)
  • 容易冲突 (由 冲突域)
  • 不安全
  • 中间断了,整个网络环境会瘫痪
  • 无智商!

集线器 Hub

“集线器的英文称为“Hub”。“Hub”是“中心”的意思”

  • 也属于半双工模式
  • 容易冲突
  • 不安全
  • 也无智商!
    HUB无存储功能,无法缓存MAC地址,
    可以使用arp -a 查看当前计算机的缓存MAC地址

网桥 Network Bridge

也是用于连接同一个网段

  • 能够通过自学习得知每个接口那侧的MAC地址
  • 起到隔绝冲突域的作用(这样同一冲突域内的计算机传数据就不会占用另一冲突域的数据链路)
    网桥会记录MAC地址

交换机 Switch

  • 相当于接口更多的网桥(每个接口能记录对应的MAC地址)
  • 全双工通信 ★
  • 比集线器安全
    和上面所提设备一样连接的设备必须处于同一个网段
    关于全世界都是用交换机连接网络的后果:在首次与另一台计算机通信的时候,为了获取MAC地址而使用ARP协议进行广播,即为全世界的计算机发送了广播…..会导致造成广播风暴

路由器 Router

  • 可以在不同网段之间转发数据
  • 隔绝广播域 (处于不同广播域的计算机无法转换数据

主机发送数据之前,首先判断目标主机的IP地址是否和当前主机处于同一个网段
若是处于同一个网段:发ARP、再通过交换机或集线器传送数据

不在同一个网段:则通过路由器转发数据

那么此时就有了一个新的概念:网关 - Gateway由路由器提供
网关拥有MAC地址
跨网段传输数据的时候需要通过网关,由主机广播ARP以获取路由器当前局域网网关的MAC地址并发送数据,再由另一网段网关ARP获取目标主机的MAC地址并发送数据
所以路由器一大作用显著: 跨网段传输数据

📌 注意:数据跨网段传输,主机需要设置默认网关,和所在局域网网关处于同一网段内。

MAC 地址

MAC地址 (Media Access Control Address) 直译为媒体存取控制位址,也称为局域网地址(LAN Address),MAC位址,以太网地址(Ethernet Address)或物理地址(Physical Address)

每个网卡都有一个6字节(48bit)的MAC地址
MAC地址是全球唯一的,固化在网卡的ROM中,由IEEE802标准规定

前三个字节为Organizationally unique identifier (OUI) “组织唯一标识符”由IEEE的注册管理机构分配给厂商
后面的三个字节为 网络接口标识符,由厂商自行分配

MAC地址是可修改的,可分为静态MAC地址(Static)和动态MAC地址( Dynamic ),一般
动态MAC地址有时效性,根据操作系统的不同这个时间也会有所不同,过期后会自动删除,而静态MAC地址可以长时间保留,其可以通过手动添加,指令如下

1
2
3
4
5
6
7
8
9
arp -s [主机地址] [MAC地址]

#查询ARP缓存
arp -a [主机地址]

#删除ARP缓存
arp -d [主机地址]

如果上述两条指令未添加主机地址,则是对所有ARP缓存做出指令执行。

IP地址 Internet Protocol Address

所有主机都具有一个IP地址,最初是IPV4版本,32bit(4字节) 2019年11月25日,全球的IP地址已经用完
后来有了IPV6版本,128bit (16字节)

IP地址由网络标识(网络ID)主机标识(主机ID)两部分组成
同一网段的计算机,网络ID相同。

可以通过子网掩码(Subnet mask)计算出网络ID 计算式:
子网掩码 & IP地址

IP地址分为了 A-E类地址。

如果ping主机的ip地址 的主机ID部分 为 全1 (即255) ,那么此IP为广播IP地址,
即将数据包发送到此网段内的所有计算机
而网络ID部分为全0的话,即表示此IP代表一个网段

子网掩码的CIDR表示法

CIDR (Classless inter-Domain Routing) : 无类别域间路由
子网掩码的CIDR表示方法
192.168.1.100/24 表示子网掩码由24个1,也就是255.255.255.0