Skip to content

基本概念

为什么要学习网络协议

为了满足各种需求,有各式各样的网络协议(HTTPS、SMTP、MQTT、RTMP等)

随着物联网、音视频、直播等领域的发展,企业提高对开发人员网络基本功的要求,经常问网络协议的面试题

  • TCP 和 UDP 的区别?说一下它们的报文格式?
  • TCP 的流量控制和和拥塞控制?TCP 如何实现可靠性传输?
  • 为什么连接是 3 次握手,关闭是 4 次挥手?
  • 7 层模型与 4 层模型的区别?每一层的作用是什么?
  • 交换机与路由器的区别?

环境搭建

Java 8(JDK 1.8)升级更新至 Java 11(JDK 11)/ Java 17(JDK 17)

Tomcat安装及环境配置

IDEA2021配置Tomcat部署web应用

客户端-服务器开发环境

  • 客户端:浏览器(HTML+CSS+JS)
  • 服务器:Java

网络抓包

  • 浏览器(Chrome、Firefox)、Fiddler、Wireshark

模拟工具

  • Xshell(只有Windows版)、Packet Tracer(注册地址)、GNS3

安装环境可能出现的问题

跨平台的原理

Java 的跨平台:一次编译,到处运行。编译生成跟平台无关的字节码文件,由对应平台的 JVM 解析字节码为机器指令

image-20230607091158414

C\C++ 的跨平台:使用平台相关的编译器生成对应平台的可执行文件

image-20230607090113912

网络互连模型(OSI)

为了更好地促进互联网络的研究和发展,国际标准化组织 ISO 在 1985 年制定了网络互连模型

  • OSI 参考模型(Open System Interconnect Reference Model),具有 7 层结构

image-20230608172003659

  1. 物理层(Physical)
  2. 数据链路层(Data Link)
  3. 网络层(Network)
  4. 运输层(Transport)
  5. 会话层(Session)
  6. 表示层(Presentation)
  7. 应用层(Application)

请求过程

image-20230608172538509

计算机之间的联系方式

  • 首先需要得知对方的 IP 地址
  • 最终是根据 MAC 地址(网卡地址),输送数据到网卡,被网卡接收
    • 如果网卡发现数据的目标 MAC 地址是自己,就会将数据传递给上一层进行处理
    • 如果网卡发现数据的目标 MAC 地址不是自己,就会将数据丢弃,不会传递给上一层进行处理

网络直连

  • 需要用交叉线(不是直通线)

image-20230609144923568

为什么右边会出现 3 个 ARP 包

  • 实际上是一次完整的发送请求,接收响应的过程

image-20230609144841575

同轴电缆(Coaxial)

  • 半双工通信
  • 容易冲突
  • 不安全
  • 中间断了,整个都瘫了

image-20230609144425897

集线器(Hub)

集线器相比同轴电缆唯一的优点就是:哪怕连着集线器的某一个设备中间线路出问题,不会影响到连着集线器的其他设备

  • 半双工通信
  • 容易冲突
  • 不安全
  • 跟同轴电缆一样:没有智商(缓存)

image-20230609144651255

网桥(Bridge)

  • 能够通过自学习得知每个接口那侧的 MAC 地址
    • 从而起到隔绝冲突域的作用

image-20230609144727852

交换机(Switch)

全球所有的设备都用交换机连接:

  1. 他们必然处于同一网段,因此 IP 地址可能会不够用
  2. 即使使用交换机,第一次发送数据包仍然需要 ARP 广播,耗费大量时间
  3. 形成广播风暴,只要有一个设备发送 ARP 广播,全球设备都能收到

交换机

  • 相当于接口更多的网桥
  • 全双工通信
  • 比集线器安全

image-20230609172826797

路由器(Router)

网络直连、同轴电缆、网桥、交换机

  • 连接的设备必须在同一个网段
  • 连接的设备处在同一广播域

路由器

  • 可以在不同网段之间转发数据
  • 隔绝广播域

image-20230612102045797

常备不懈,才能有备无患