当前位置: 首页 > article >正文

[JAVAEE] 网络基础

目录

一. IP Port

二. 网络协议

三. 五元组

四. 协议分层

五. OSI七层模型

六. TCP/IP五层模型

七. 其他补充

八. 总结


一. IP Port

IP地址: 标记网络中一台设备的位置, 即用来定位主机的网络地址.

IP地址是一个32位的二进制数, 被分割成4个 "八位的二进制数".

例如: 00000000.00000000.00000000.00000000.

通常用点分十进制的方法表示, 即a.b.c.d.

例如: 127.0.0.1

所以, IP地址表示的最大范围是, 255.255.255.255  (2^8-1)

端口号: 区分一台主机上的不同应用程序, 即用来定位主机上的进程.

端口号是0~65535之间的数字. (2^16-1)

端口号之间存在竞争的关系.


二. 网络协议

网络协议, 简称协议. 是通信双方发送/接受数据的约定, 是双方共同的规范.

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


三. 五元组

在TCP/IP协议(后面介绍)中, 用五元组来标记一个网络通信:

源IP: 标识源主机.

源端口: 标识源主机中此次网络通信发送数据的进程.

目的IP: 标识目的主机.

目的端口: 标识目的主机中此次网络通信接收数据的进程.

协议:标识发送进程和接收进程双方约定的数据格式.


四. 协议分层

每一个层次, 定义不同的协议.(相同层次, 协议相同)

同一层之间的设备通讯, 不需要关注底层是如何实现的, 只需要调用底层的接口进行信息传输即可.

注意: 不能够跨层交互, 而是每两层之间进行交互.

协议分层的好处: 1. 封装 2. 解耦合

分为使用方和提供方:

对于使用方来说, 不需要关系接口内部是如何实现的, 只需要会使用即可.

对于提供方来说, 利用封装的特性, 隐藏了接口内部的实现细节, 对外只提供一些接口.

  

 


五. OSI七层模型

OSI open system interconnection, 即开放系统互连.


六. TCP/IP五层模型

但是OSI七层模型既复杂也不使用, 因此使用更多的还是 TCP/IP五层模型.

应用层: 负责应⽤程序间沟通,如简单电⼦邮件传输(SMTP)、⽂件传输协议(FTP)、⽹络远 程访问协议(Telnet)等。我们的⽹络编程主要就是针对应⽤层.

传输层: 负责两台主机之间的数据传输。如传输控制协议 (TCP),能够确保数据可靠的从源主机发 送到⽬标主机.

网络层: 负责地址管理和路由选择。例如在IP协议中,通过IP地址来标识⼀台主机,并通过路由表 的⽅式规划出两台主机之间的数据传输的线路(路由)。路由器(Router)⼯作在⽹路层。

数据链路层: 负责设备之间的数据帧的传送和识别。例如⽹卡设备的驱动、帧同步(就是说从⽹线上 检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就⾃动重发)、数据差错校验等⼯作。 有以太⽹、令牌环⽹,⽆线LAN等标准。交换机(Switch)⼯作在数据链路层。

物理层: 负责光/电信号的传递⽅式。⽐如现在以太⽹通⽤的⽹线(双绞 线)、早期以太⽹采⽤的的同 轴电缆(现在主要⽤于有线电视)、光纤,现在的wifi⽆线⽹使⽤电磁波等都属于物理层的概念。物理 层的能⼒决定了最⼤传输速率、传输距离、抗⼲扰性等。集线器(Hub)⼯作在物理层

一些网络设备所在分层:(重要)

集线器: 物理层

交换机: 物理层, 数据链路层

路由器: 物理层, 数据链路层, 网络层

主机: 物理层, 数据链路层, 网络层, 传输层 


七. 其他补充

1. 序列化: 结构化的数据 => 二进制/字符流

    反序列化: 二进制/字符流 => 结构化的数据

2. 数据报/包 = 报头 + 载荷

    报头中存储的是IP/Port, 载荷中存储的是数据信息.


八. 总结

1. IP地址和端口号 IP定位主机的网络地址, 端口号定位主机中进程

2. 网络协议, 通信双方发送/接收数据的约定, 共同遵守的规范.

3. 五元组(源ip, 源端口, 目的ip, 目的端口, 网络协议)

4. 协议分层(封装, 解耦合)

5. OSI七层模型, TCP/IP五层模型

6. 数据包 = 报头 + 载荷 (报头中存储的是IP/Port, 载荷中存储的是数据信息)

7. 序列化, 反序列化


http://www.kler.cn/a/385147.html

相关文章:

  • Redis-07 Redis哨兵
  • RabbitMQ客户端应用开发实战
  • 2024MoonBit全球编程创新挑战赛参赛作品“飞翔的小鸟”技术开发指南
  • 一篇文章入门docker!
  • ArcGIS Pro SDK (二十五)工作流管理器
  • springboot图书管理系统(一个简单的单体架构项目,适合小白)
  • 气象监测软件的程序设计
  • 富格林:安全步骤交易稳健出金
  • sql-Incorrect string value
  • wordpress ripro-v5-8.3开心版主题源码
  • 操作系统学习笔记-5.1-IO设备
  • 使用BaGet快速搭建nuget服务
  • SQL,力扣题目1225,报告系统状态的连续日期【窗口函数】
  • 数据库Redis篇
  • 数学建模学习(135):使用Python基于WSM、WPM、WASPAS的多准则决策分析
  • 第10章 多表查询
  • DiskGenius工具扩容Mac OS X Apple APFS分区
  • 高效管理iPhone存储:苹果手机怎么删除相似照片
  • 【论文复现】MSA+抑郁症模型总结(二)
  • 使用最新版的wvp和ZLMediaKit搭建Gb28181测试服务器
  • Spring Boot中集成MyBatis操作数据库详细教程
  • ARXML汽车可扩展标记性语言规范讲解
  • JavaScript 实现文本转语音功能
  • 倒反天罡?程序员没有被AI替代,却间接用AI替代了产品经理
  • C++_判断文件是否存在_access函数
  • Redis - Set 集合