【JavaEE】网络初识

系列文章目录


文章目录


前言

单机时代

局域网: 把电脑之间通过网线连接起来

局域网和局域网之间是隔离的

广域网时代 更大的局域网,也就是互联网时代

英特网最大的局域网

局域网和广域网没有明确的界线

路由器组件局域网

连接器增加接口

当年写JDBC的时候写过一串代码,写自定义的客户端,里面有ip地址和端口号,ip地址用来识别一个主机,端口号标识主机上的应用程序,比如浏览器和直播,所接收到数据格式是不一样的,每个使用网络的程序的端口号搜是不一样的

端口号是程序员定义或者是系统自动分配


一、协议

网络通信

网线 使用高低电压分别表示1和0

光纤,不同频率表示1和0

WIFI(无线)电磁波 不同频率表示

都属于协议

协议分层

协议会分几层来定义,

解耦合 通信协议中每一层都可以灵活替换

封装 上层不必知道下层协议细节,就可以直接使用


1.协议分层具体分法(背

OSI七层网络模型(仅存在于课本之上

经过简化之后

为

TCP/IP五层网络模型(四层网络模型

这是目前使用的

  1. 物理层
  2. 数据链路层
  3. 网络层
  4. 传输层
  5. 应用层

说四层是因为1和2可以合并成一个,都是和硬件设备直接相关的

物理层 硬件层面的基础设施,物理层协议约定了网线的结构,光纤的结构

数据链路层 负责两个节点的具体传输过程 , 负责具体的传输过程

网络层 负责通信中间过程 ,中间路线怎么走 , 就是确定路径

传输层 约定起点和终点之间的通信规则(不关心中间的通信过程

应用层(最重要) 代码主要是和应用层打交道的,决定了应用程序如何使用/构造传输的数据用来干什么

一级一级向上调用

传输层和网络层是操作系统内核内置功能

硬件和网卡层与硬件厂商相关

编写的代码就是应用层面,写的应用程序就是对应应用层


2.网络数据传输的基本流程

封装

分用

发送消息

  1. 应用层

    输入东西 , 输入的会构造成"应用层数据包"

    举个例子:时间 , 发送方qq号 , 接收方qq号 ,消息正文

    当然只是一个例子 , 我们不知道真实消息的格式

    调用传输层接口 , 把上述数据交给传输层

  2. 传输层

    传输层有多种协议 , 此处假设使用UDP , 在应用层数据包的基础上封装成传输包数据(字符串拼接

每一层协议都是会补充上一些信息 , 都是为了辅助网络传输的

UDP报头+UDP正文/载荷(应用层给的数据包

报头放源端口和目的端口

从哪个程序来

这个UDP数据包,交给网络层协议

  1. 网络层
    网络层也有很多协议 , 此处假设使用IP协议
    IP协议在传输层数据包的基础上 , 进一步封装成了网络层数据包

IP协议报头+IP协议载荷(传输包给的传输包数据

报头放源IP , 目的IP

从那个主机

上述数据 , 进一步的交给数据链路层协议

  1. 数据链路层
    数据链路层也有很多协议 , 此处假设使用的是"以太网"

帧头+载荷(网络层数据包)+帧尾

帧头放mac地址 , 和IP地址类似的一种机制 , 也是用来区分网络设备 , 它存在的意义是为了完成相邻设备的传输

  1. 物理层
    通过网卡 , 把上述二进制数据转为电信号/光信号/电磁波 , 传输出去了

接收方做的工作是反过来的

把发送方层层构造报文的过程称为封装

把接收方层层解析报文的过程称为分用

报文:特定格式的字符串 , 报头+载荷


发送方给交换机 , 交换机给路由器 , 路由器再给交换机 , 交换机给接收方

路由器接收到数据 , 也要分用/解析 , 只需要解析物理层 , 数据链路层 , 网络层即可 , 需要IP协议报头信息(三层转发 , 封装分用到网络层

有二层转发 , 需要封装分用到数据链路层

通信中的"五元组"

协议类型

源IP,源端口

目的IP,目的端口


二、


总结

例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

相关推荐
天河归来8 小时前
第三方接口不稳定,如何让核心任务继续完成
java·大数据
Knight_AL9 小时前
Java 文件下载时文件名中的 `#` 被转换成 `%23`?一次 URL 编码与解码问题排查
java·开发语言
砚底藏山河10 小时前
python量化自定义周期 K 线合成
java·开发语言·数据库·python·金融
猿究院_夏燊11 小时前
MySQL 的四种隔离级别
java·数据库·mysql
码流子11 小时前
移动收费怎么做?手持终端+App+收费中心的架构实践
java·开发语言·架构
霸道流氓气质12 小时前
AI 流式对话与实时聊天平台:SSE 解码竞态、有状态会话隔离与背压取消的 Vue3 + Spring AI 生产级实战
java·人工智能·spring
云创智城-yuncitys12 小时前
YunParking 4.0:JDK 17 与 Spring Boot 3.2 的停车云升级
java·开发语言·spring boot
文丑颜不良啊12 小时前
LeetCode1661~1680题目解析
java·leetcode
子非鱼@Itfuture12 小时前
关于前后端联调中登录状态/登录信息失效?
java·前端
郭小李12 小时前
openFeign入门
java·开发语言·前端