JavaEE|网络初识

网络通信的基础

路由器

组成网络重要的核心设备

交换机

交换机可以视为是对路由器的接口进行了扩展

IP地址

IP地址用于定位主机的网络地址,表示网络一台设备所在的位置

如JDBC中的的URL

jdbc:mysql://127.0.01:3306/java?characterEncoding=utf8

端口号

一台主机上可能有多个程序同时使用网络,端口号区分一台主机上多个应用程序的

端口号用于定位主机中的进程

认识协议

网络协议就是通信双方对于发送/接受数据格式的约定,网络通信中协议非常关键

协议最终体现为在网络上传输的数据包的格式

五元组

在TCP/IP协议中,用五元组来标识一个网络通信:

  1. 源IP:标识源主机
  2. 源端口号:标识源主机中该次通信发送数据的进程
  3. 目的IP:标识目的主机
  4. 目的端口号:标识目的主机中该次通信接收数据的进程
  5. 协议号:标识发送进程和接收进程双方约定的数据格式

协议分层

对于网络协议来说,往往分成几个层次进行定义。

OSI七层模型

OSI:开放系统互连

|---|-------|--------------------------------------------|
| | 分层名称 | 功能 |
| 7 | 应用层 | 针对特定应用的协议。 |
| 6 | 表示层 | 设备固有数据格式和网 络标准数据格式的转换。 |
| 5 | 会话层 | 通信管理。负责建立和断 开通信连接(数据流动的 逻辑通路)。 管理传输层以下的分层。 |
| 4 | 传输层 | 管理两个节点之间的数 据传输。负责可靠传输 (确保数据被可靠地传送 到目标地址)。 |
| 3 | 网络层 | 地址管理与路由选择 |
| 2 | 数据链路层 | 互连设备之间传送和识别数据帧。 |
| 1 | 物理层 | 以"0"、"1"代表电压的高低、灯光的闪灭。界定连接器和网线的规格。 |

OSI 七层模型既复杂又不实用:所以 OSI 七层模型没有落地、实现。

TCP/IP五层(或四层)模型

TCP/IP通讯协议采用了5层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。

应用层:负责应用程序间沟通。我们的网络编程主要就是针对应用层

传输层:负责两台主机之间的数据传输。只考虑两个任意设备之间的通信,不考虑中间过程

网络层:负责地址管理和路由选择。两个任意设备如何进行通信

数据链路层:负责设备之间的数据帧的传送和识别。完成两个相邻设备之间如何通信

物理层:负责光/电信号的传递方式。规定网络通信中的一些硬件设施符合的要求

物理层我们考虑的比较少。因此很多时候也可以称为 TCP/IP四层模型。

网络设备所在分层

主机

  • 工作过程涉及到 从物理层->应用层
  • 通过应用程序满足网络通信的需求

路由器

  • 工作过程涉及到 从物理层->网络层
  • (注释)组建局域网,进行网络数据包的转发

交换机

  • 工作过程涉及到 从物理层->数据链路层
  • (注释)对路由器的接口的扩展,不需要考虑组网的问题

网络通信的基本流程

谈到网络传输的"基本数据单位" 涉及到多个术语

网络数据包/帧/报/段

  • 段 (segment) ------ TCP 用段
  • 报 (Datagram) ------ UDP 用的
  • 包 (packet) ------ IP 用的
  • 帧 (frame) ------ 数据链路层 以太网数据帧

加工和封装

1.应用程序获取到用户输入,构造一个应用层的数据包

将用户的数据结构化,转化成字符串/二进制bit流,这个过程称为序列化(反序列化是将二进制数据

转化为结构化数据),获得的应用层数据包就会遵守应用层协议(这个应用层的协议往往是程序的程

序员自己定义的)

示例数据

2.应用层调用传输层提供的接口(API),把数据交给传输层

传输层拿到数据包之后,构造出"传输层数据包",传输层的协议主要是TCP和UDP

TCP数据包=TCP报头+TCP载荷

TCP报头中包含了源端口/目的端口

3.传输层构造好数据之后,继续调用网络层的API把传输层的数据包交给网络层

网络层继续处理,网络层最主要的协议是IP协议

IP协议继续对上述数据包进行加工=>拼上IP报头

IP数据包=IP报头+IP载荷(整个传输的数据包)

IP报头包含源IP/目的IP

IP 协议和TCP 协议本身不关心载荷内容是啥.

协议类型其实不只是一份数据有很多层,其中 IP 报头里就会记录当前的传输层使用的是哪个协议

传输层报头中, 也会记录应用层使用哪个协议(准确的说是数据交给哪个应用程序)

4.IP协议继续调用数据链路层的API,把IP数据包交给数据链路层

数据链路层中, 核心协议"以太网"。以太网这个协议也会在网络层数据包的基础上进一步加工

以太网数据帧=帧头+载荷+帧尾

5.以太网继续这样的数据交给硬件设备(网卡)

网卡会把上述二进制数据一光信号/电信号/电磁波信号传播出去

从上层到下层数据都要一步步加工(添加报头)和封装(和面向对象的封装不是一个封装)

分用

分用是数据到达接收方数据,逐层进行解析

分用的步骤

1.数据到达接收方的网卡。网卡将光电信号还原成二进制0101

把二进制数据交给上层数据链路层,物理层数据信号是咋来的, 和数据链路层是直接相关的

网线/光纤来的数据, 数据链路层 => 以太网.

wifi 来的数据, 数据链路层 => 802.11 协议

2.数据链路层按照以太网协议进行解析把报头和报尾取出来, 剩下的载荷往上传递给网络层

以太网的帧头就有专门的属性描述网络层使用哪个协议

3.网络层拿到这个数据之后,按照IP协议的格式进行解析,再把载荷数据交给传输层

IP报头中也有专门的属性描述了传输层使用哪个协议

4.传输层拿到数据之后也是类似,按照TCP协议来解析取出载荷,交给应用层

传输层报头中通过目的端口号告知数据要交给哪个应用程序

5.应用程序解析应用层数据拿到关键信息,展示到界面上给出提示

不同的应用程序会使用不同的应用层协议来解析

补充

无线用的协议是 802.11和以太网是并列的关系,本质是一样的,同样的封装分用,分装分用啥的帧

头帧尾不一样的,数据格式不一样, 功能略有差别

相关推荐
砍材农夫2 小时前
物联网 MQTT订阅性能优势
网络·物联网
无名的小三轮2 小时前
VMware的三种网卡模式介绍
网络·智能路由器
yyuuuzz2 小时前
国际云服务商使用的常见问题分析
运维·服务器·网络·云计算·github·aws
minji...2 小时前
Linux 网络基础(五)守护进程化,前后台进程组,作业,会话,setsid(),daemon(),端口号频繁更换问题
linux·运维·服务器·网络·c++·tcp/ip
Tipriest_2 小时前
【TBB】多生产者、多消费者(MPMC) 队列concurrent_queue介绍
网络·数据库
录大大i2 小时前
javaWeb中使用AES256+RSA网络数据加密
java·网络·网络安全
key_3_feng2 小时前
TCPDump 实际抓包案例及故障分析
网络·测试工具·tcpdump
jimy12 小时前
Oracle的e2.1.micro免费实例安装tailscale后,设置为出口节点(Exit Node)
服务器·网络·oracle
辉视广播对讲10 小时前
医院IPTV,让医疗服务更有温度
网络·人工智能