网络协议基础学习(一): 环境搭建

898 阅读12分钟

一、安装JAVA JDK

1、下载安装

image.png

  • 下载后安装即可

2、配置环境

  • 安装Java后, 位置如下

image.png

  • 路径如下
/Library/Java/JavaVirtualMachines/jdk-17.0.1.jdk
  • 打开终端, 打开~/目录下的.zshrc
vim .zshrc
  • 然后配置Java路径
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-17.0.1.jdk/Contents/Home

image.png

  • 这句话等价于
export PATH="$PATH:$JAVA_HOME/bin"

二、安装Tomcat

1、下载

image.png

  • 在左侧选择要下载的版本

image.png

  • 我选择下载 Tomcat 10

image.png

2、配置

  • 解压后, 我放到了 ~\ 目录下

image.png

  • 打开~/目录下的.zshrc文件, .zshrc是隐藏文件, 可以使用快捷键command + shift + . 显示隐藏文件
  • 打开终端, 命令行输入
vim .zshrc
  • 打开.zshrc文件后, 导入Tomcatbin文件夹所在目录
export CATALINA_HOMR=/Users/bowen4/apache-tomcat-10.0.12

image.png

  • 这一句的意思是将CATALINA_HOMR加入到环境变量中, 相当于下面这句
export PATH="$PATH:$CATALINA_HOMR/bin"

3、启动和关闭

  • 配置好环境之后, 再次使用终端, 进入Tomcatbin目录
cd /Users/bowen4/apache-tomcat-10.0.12/bin
  • 获取执行文件的权限, 输入一下命令可以获取执行 .sh文件的权限
chmod +x *.sh
  • 然后启动Tomcat
./startup.sh
  • 看到Tomcat started.就算启动成功了

image.png

  • 打开浏览器, 输入http://localhost:8080/, 可以看到下面的界面

image.png

  • 可以在终端中关闭Tomcat
./shutdown.sh

image.png

  • 再次刷新浏览器, 可以看到无法链接到Tomcat

三、安装 IntelliJ IDEA

1、下载安装

image.png

2、创建项目

  • 打开IDEA, 创建一个项目

image.png

  • 选择创建一个空的项目

image.png

  • 选择项目创建位置, 输入项目名

image.png

  • 创建好Network后, 会自动弹出一个窗口, 每个项目都要有模块, 我们添加一个新的模块

image.png

  • 如果不小心关闭了这个弹窗, 可以点击 File->Project Structure... 打开

image.png

  • 点击Net Module后, 弹出下面的窗口, 选择JAVA和使用的JDK版本

image.png

  • 输入模块名, 点击Finish

image.png

  • 点击OK

image.png

  • 这时, 就可以看到01_HelloWorld模块, src文件中就存放我们开发的源代码

image.png

3、简单开发

  • 右键点击src, 创建一个Java Class文件

image.png

  • 我这里取名为Main

image.png

  • Main文件中编写代码

image.png

  • 右键点击, 选择 Run 'Main.main()'

image.png

  • 可以看到控制台的打印信息

image.png

  • 上面的代码属于自娱自乐, 并不能和服务器进行交互, 所以我们还需要额外的操作

4、创建 Web Application

  • 创建 Web Application, 右键点击01_HelloWorld, 选择Add Framework Support...

image.png

  • 选择Web Application

image.png

  • 下面的图片中, 就是创建的Web Application

image.png

  • Web Application中创建一个text.html文件, 并添加一张图片123.jpg

image.png

image.png

5、将 Web Application 配置到 Tomcat

  • 客户端加载后端项目的简单流程如下
    • 客户端发送请求
    • 请求来到服务器端口(我这里默认端口号为8080)
    • 端口将数据发送给Tomcat
    • Tomcat将数据发送给项目01_HelloWorld

image.png

  • 现在我们给项目的Web Application 配置到Tomcat上, 可以将Tomcat集成到IntelliJ IDEA

image.png

  • 选择Tomcat Server下的Local

image.png

  • 配置需要使用的 Tomcat

image.png

  • 直接选择 Tomcat的根目录即可

image.png

  • 可以给Tomcat起一个名字

image.png

  • 想要Tomcat在接收到请求时, 将数据发送给01_HelloWorld项目, 就必须将01_HelloWorld项目添加到Tomcat
  • 点击Deployment, 点击+, 点击Artifact..., 将01_HelloWorld项目添加到Tomcat

image.png

  • 因为当前只有一个项目01_HelloWorld, 所以点击Artifact...后会自动添加, 如果有多个项目, 会让你选择具体要添加的项目
  • 修改Application context, 可以使用hello访问01_HelloWorld

image.png

6、本地浏览器访问创建的项目

  • 使用Debug模式运行, 以后可以通过打断点的方式调试程序

image.png

  • Debug运行后, 可以看到成功启动Tomcat的打印提示

image.png

  • 同时会自动打开浏览器, 默认填充http://localhost:8080/hello/
    • http://localhost默认是本机
    • 8080是本机Tomcat对应的端口号
    • hello01_HelloWorld项目, 就是上面修改的Application context

image.png

  • 直接访问项目, 例如这里的hello, 会默认加载Hello项目的Web Application中的index.htmindex.htmlindex.jsp等文件, 所以才会有上面的内容显示

image.png

  • 当然我们可以修改浏览器加载的URL, 访问Hello中的test.html文件

image.png

  • 也可以访问Hello中的123.jpg图片

image.png

  • 创建file文件夹, 并将test.html文件移动到file文件夹中
  • 创建image文件夹, 并将123.jpg图片移动到image文件夹中

image.png

  • 重新点击Debug部署, 可以发现有一个弹窗, 系统默认选中Restart server
    • Restart server: 重启服务器, 然后部署
    • Redeploy: 服务器已经启动, 重新部署

image.png

  • 我们可以通过修改下图位置, 修改弹窗默认的选项

image.png

  • Restart server需要为Redeploy

image.png

  • 再次点击Debug时, 弹窗默认选中Redeploy

image.png

  • 重新部署后, 刷新浏览器, 发现无法加载图片

image.png

  • 此时需要访问新的路径 http://localhost:8080/hello/image/123.jpg 加载图片

image.png

四、发送网络

1、编写界面, 发送网络

  • file文件夹中创建login.html文件, 并编写代码如下

image.png

  • 通过浏览器打开界面

image.png

  • 输入用户名密码

image.png

  • 点击登录, 可以看到将用户名密码发送给了百度

image.png

2、导入Tomcat的库

  • 因为服务器就是本机, 所以form标签中的action如下指定即可

image.png

  • 需要引用Tomcat的两个库jsp-api.jarservlet-api.jar

image.png

  • 打开下面的窗口, 选择Dependencies, 添加 Library...

image.png

  • 选择之前配置的Tomcat

image.png

  • 勾选选择的Tomcat, 点击OK

image.png

  • 此时就可以在工程中看到引入的外部Tomcat

image.png

3、发送请求到本地服务器

  • src文件夹中创建Java Class类型的LoginServlet文件, 包名根据自己的想法随意命名

image.png

  • 默认情况下, 在浏览器中输入http://127.0.0.1:8080/hello, 会访问项目01_HelloWorldweb文件夹下的index.jsp文件

image.png

  • 此时添加了@WebServlet("/login")后, 可以通过http://127.0.0.1:8080/hello/login访问LoginServlet类中的方法

image.png

  • LoginServlet类中添加doGetdoPost方法, 并在方法实现中添加打印语句

image.png

  • login.html文件中的form标签的action修改为/hello/login, 就可以访问login中的方法, 方法类型使用get请求, 重新部署Web Application

image.png

  • 在网页中输入用户名密码, 点击登录

image.png

  • 可以看到网页空白, 此时就说明请求发送成功了, 参数在域名后拼接的形式传递

image.png

  • 可以在IntelliJ IDEA中看到打印doGet

image.png

  • 将方法类型修改为post, 重新部署

image.png

  • 刷新网页, 输入用户名密码, 点击登录

image.png

  • 界面变成空白, 说明请求发送成功, 并且可以看到域名后没有参数拼接
  • 通过检查, 可以看到参数通过Data的形式传递

image.png

  • 此时, 可以看到打印doPost

image.png

4、响应请求

  • LoginServlet文件中, 添加响应代码, 重新部署

image.png

  • 输入用户名: 123密码: 456

image.png

  • 点击登录, 显示Login Success!

image.png

  • 回到输入界面, 输入用户名: 123密码: 4567

image.png

  • 点击登录, 显示Login Failure!

image.png

五、安装 Packet Tracer

1、注册安装

11.png

  • 向下滑动, 找到在线自定进度学习, 点击了解详情

  • 进入注册界面, 选择国家出生日期

1.png

  • 填写注册的邮箱, 姓名, , 回答问题, 勾选必填项

2.png

  • 如下图, 此时已经有邮件发送到了注册的邮箱中

3.png

  • 打开收到的邮件, 点击快速入门

4.png

  • 输入密码

5.png

  • 当点击创建我的账号之后, 来到下面这个界面, 此时账号已经注册完毕

6.png

  • 滑到界面底部, 点击PACKET TRACER

7.png

  • 找到自己需要的版本下载

8.png

  • 安装并登录Cisco Packet Tracer后, 就可以操作下面的界面了

image.png

2、计算机间通讯

  • 计算机之间通讯, 需要知道目标ip目标网卡地址
  • 大致流程如下, PC1PC2通讯, 需要携带四个信息
    • PC1的ip地址
    • PC2的ip地址
    • PC1的网卡地址
    • PC2的网卡地址

image.png

计算机的MAC地址就是网卡地址

3、简单使用

  • 在桌面上放置两个PC计算机

image.png

  • 使用交叉线连接两个计算机, 如果不知道用什么线, 就选择第一个连接, 会自动使用需要的线的类型

image.png

  • 点击计算机0, 选择IP配置, 给计算机0配置IP地址

image.png

  • 输入IP地址后, 点击tab键, 会自动生成子网掩码, 我设置的IP地址是192.168.1.10

image.png

  • 同样的方式, 配置计算机1IP地址子网掩码, 我设置的IP地址是192.168.1.11

image.png

  • 可以使用笔记功能, 给不同的计算机分别进行标注

image.png

  • 再次点击计算机0, 选择命令提示符

image.png

  • 输入命令ping 192.168.1.11

image.png

  • 看到下面的输入信息, 就说明计算机0计算机1之间进行了通信

image.png

4、拆解通信过程

  • 点击右下角的仿真, 可以看到右侧出现仿真面板

image.png

  • 选择信件, 从选择计算机0发出, 选择计算机1接收, 可以在右侧的仿真面板中看到生成的一条事件

image.png

  • 点击事件, 看到以下信息

    • 输入: 其它设备输入的信息
    • 输出: 准备向其它设备输出的信息
    • 输入信息为空, 说明没有信息输入
    • 输出信息包含
      • 网络层: 计算机0的IP地址、计算机1的IP地址
      • 链路成: 计算机0的MAC地址(网卡地址)、计算机1的MAC地址(网卡地址) image.png
  • 点击播放按钮, 可以看到又生成两条事件

image.png

  • 点开第二条事件, 计算机0发送到计算机1
    • 输入:
      • 计算机0的IP地址, 计算机1的IP地址
      • 计算机0的MAC地址, 计算机1的MAC地址
    • 输出
      • 计算机1的IP地址, 计算机0的IP地址
      • 计算机1的MAC地址, 计算机0的MAC地址

image.png

  • 点开第二条事件, 计算机0发送到计算机1
    • 输入:
      • 计算机1的IP地址, 计算机0的IP地址
      • 计算机1的MAC地址, 计算机0的MAC地址

image.png

  • 上面三条事件, 就是计算机0计算机1之间一次完整的通信

5、获取MAC地址

  • IP地址是在发送通信的时候, 指定的具体地址, 那么计算机0是如何获取到计算机1MAC地址
  • 实际上, 计算机之间通信, 是通过ARP广播协议获取目标计算机的MAC地址
  • 在一开始的ping 192.168.1.10时, 计算机0就通过了ARP协议获取到了计算机1的MAC地址, 所以在后面的仿真通信中才看不到ARP协议的过程
  • 删除掉这次计算机0计算机1之间的邮件链接

image.png

  • 修改计算机0IP地址192.168.2.10
  • 修改计算机1IP地址192.168.2.11
  • 使用邮件计算机0发到计算机1, 此时可以看到有两条事件生成

image.png

  • 点开第一条事件, 看到输入信息为空, 输出信息只有源IP地址目的IP地址, 并没有MAC地址信息, 说明此时计算机0还不知道目标计算机MAC地址

image.png

  • 点开第二条事件, 看到输入信息为空, 输出信息的网络层为空, 链路层有数据

    • 链路层包含: 源MAC地址、目的MAC地址FFFF.FFFF.FFFF、源IP地址、目的IP地址
  • 当MAC地址为FFFF.FFFF.FFFF时, 说明此条信息会发送给同一网段内的所有计算机

  • 此时同一网段内, 只有计算机1计算机0相连, 所以只会发给计算机1 image.png

  • 点击播放按钮, 会生成新的事件

image.png

  • 点开第三条事件, 可以看到输入和输出信息
    • 输入信息的MAC地址是FFFF.FFFF.FFFF, 于是计算机1对比输入中目的IP地址自己的源IP地址是否相同
    • 对比后两个地址相同, 说明计算机0准备向计算机1发送信息, 于是给输入信息中的源IP地址(计算机0的IP地址)发送信息
    • 输出信息包含了计算机1的MAC地址

image.png

  • 点开第四条事件, 可以看到输入信息, 拿到了目的IP地址对应的MAC地址

image.png

  • 点开第五条事件, 可以看到计算机0向具体的MAC地址发送信息

image.png

  • 再次点击播放按钮, 可以看到新生成两条事件, 这些就是计算机0计算机1之间的具体通信了

image.png

  • 上面整个流程就是两台计算机之间的通信过程
  • 总结:
    • 计算机0想要向计算机1发送信息, 但是不知道计算机1MAC地址
    • 于是计算机1使用ARP广播协议对同一网段内的所有计算机发送消息, 携带了源IP地址目的IP地址源MAC地址目的MAC地址FFFF.FFFF.FFFF
    • 同一网段内的所有计算机收到计算机0发送的消息, 检查发现目的MAC地址FFFF.FFFF.FFFF
    • 此时所有计算机会对比计算机0发出信息中的目的IP地址, 与自己的源IP地址是否一致, 不一致将不会继续处理
    • 计算机1发现计算机0发送的目的IP地址与自己的源IP地址一致, 于是给计算机0发送了自己的MAC地址
    • 计算机0获取到计算机1发过来的消息后, 知道了计算机1MAC地址, 就可以进行计算机之间的通信了