【JavaEE】_网络通信原理

news2024/12/26 12:01:51

目录

1. 网络发展史

2. 网络通信基础

1.1 IP地址

1.2 端口号

1.3 协议

1.3.1 概念

1.3.2 五元组

1.4  协议分层

1.4.1 协议分层的优点

1.4.2 协议分层的分类

1.4.3网络设备所在分层

1.4.4 两台主机通过TCP/IP协议通讯过程

1.5 封装与分用

1.5.1 封装

1.5.2 分用


1. 网络发展史

(1)单机:计算机之间相互独立;

(2)局域互联网LAN:将多台电脑通过路由器、集线器、交换机等进行连接构成局域互联网;

组件局域网的方式:

① 网线直连; ② 基于交换器组建; ③ 基于集线器组建; ④ 基于交换机和路由器组建;

(3)广域互联网WAN:使用路由器连接多个局域网形成大范围网络,形成广域网;

(局域网与广域网之间没有明确的界限)

注:组件网络涉及到的重要设备:

① 集线器:一根网线分两路,但同一时刻只同一条,比较古早,现今不常见;

② 交换机:组件局域网(不能跨局域网),可以用于扩展路由器的端口,而今带有路由功能的交换机也较常见,故而交换机与路由器的界限也越来越模糊;

③ 路由器:将两个局域网进行连接(跨局域网),一般家用路由器常见是5个网口:I个WAN+4个LAN,其中WAN口用于连接上级路由器;

2. 网络通信基础

网络互联的目的是进行网络通信,即网络数据传输;

1.1 IP地址

1. 在组建的网络中,主机用于输出或是接收数据根据IP地址进行标识,标识了网络设备所在的位置,

即:IP地址用于定位主机的网络地址,唯一标识一个主机

2. 在计算机中,使用一个32位、4字节数字表示地址,一般会把IP地址表示成4个0~255之间的十进制数字,并且用3个点进行分割,这种表示方法称为点分十进制表示法。

1.2 端口号

1. 网络通信时,端口号可以标识主机中发送、接收数据的进程,标识了一个具体的应用程序;

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

2. 端口号也是一个整数,大小为2字节,相对IP地址,是一个比较小的数字,范围是0~65535。

3. 不同的程序可以关联/绑定到不同的端口号,要求同一个主机上的应用程序不能关联到同一个端口号。一个端口号只能被一个程序绑定,但一个程序可以绑定多个端口;

如:mysql服务器绑定了3306端口,与此同时mysql还可以绑定其他的端口,但其他的程序就不能绑定3306端口了。

4. 端口号的分类:

第1类:熟知端口号:1~1023,留给一些较常见的服务器程序进行使用的,如:DNS:53端口,HTTP:80端口;

第2类:登记/注册端口号:1024~49151,使用这类端口号必须在IANA登记;

第3类:临时端口(短暂端口号):49152~65535,仅在客户进程运行时才动态选择,通信结束后则端口号收回。

1.3 协议

1.3.1 概念

协议是网络协议的简称,网络协议是网络通信经过的所有网络设备都必须遵从的一组约定、规则;

1.3.2 五元组

在TCP/IP协议中,一次通信涉及到五元组,即:

源IP,源端口,目的IP,目的端口,协议类型

1.4  协议分层

1.4.1 协议分层的优点

基于复杂的网络编程,如果协议过于复杂会导致学习成本、维护成本等都非常高,故而实际情况是复杂的大协议被拆分成若干个相对简单的小协议,令每个协议负责一部分功能,某些协议之间的功能与作用是类似的,故而针对小协议再进行分层,类似于代码中功能类似的类在同一包中;

① 如甲乙用汉语使用电话机打电话时,协议就被分为语言层汉语协议与通信设备层电话机协议,两个协议之间没有必须相互熟知底层原理的必要,类似于封装,降低了学习和维护的成本;

② 如甲乙现用英文或使用无线电话打电话,同时可以灵活地针对某一层协议进行替换;

1.4.2 协议分层的分类

当前互联网的协议分层主要有两种风格:

第一种: OSI 七层网络模型:实际不存在,教科书用于教学;

第二种: TCP/IP 五层(四层)网络模型:实际存在的,是OSI七层模型的简化版本;

物理层:约定网络通信中基础的硬件设备种类,如通信使用的网线、网口等等;

数据链路层:负责相邻两个结点如何进行传输;

网络层:负责路径的规划;

传输层:负责设备之间的数据传输,即端到端之间的传输,关注起点和终点;

应用层:描述应用程序如何使用数据,可以使用现有协议,也可由程序员自行编写,是程序员最需要关注的一点;

注:(1)主机是五层转发,路由器是三层转发(需解析出IP协议),交换机是二层转发(只需关注下一步发展到哪个相邻的设备上);

(2)基于协议分层的网络数据传输的基础五元组:

(3)应用层协议往往是根据具体的场景与需要,由程序员自主决定的;

源IP、源端口、目的IP、目的端口、协议类型;

1.4.3网络设备所在分层

1. 对于一台主机,它的操作系统内核实现了从传输层到物理层的内容,即TCP/IP的全5层;

2. 对于一台路由器,它实现了从网络层到物理层,即TCP/IP五层的下3层;

3. 对于一台交换机,它实现了从数据链路层到物理层,即TCP/IP五层的下2层;

4. 对于一台集线器,它只实现了物理层;

注:(1)交换机的作用是对路由器的端口进行拓展。

1.4.4 两台主机通过TCP/IP协议通讯过程

注:(1)通信双方的协议必须一致,否则通信无法正常进行;

(2)发送方进行封装,接收方进行分用;

1.5 封装与分用

1. 不同的协议层的数据报有不同的称谓:在传输层叫做段,在网络层叫做数据报,在链路层叫做帧;

2. 每层协议层增加或剥离的首部信息中包含了一些类似于首部长度、载荷长度以及上层协议名称等信息;

1.5.1 封装

应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部,称为封装:

1.5.2 分用

数据封装成帧后发送到传输介质上,到达目的主机后每层协议剥离相应首部,根据首部中的“上层协议字段”将数据交给对应的上层协议处理:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1395316.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【EI会议征稿通知】第四届工业制造与结构材料国际学术会议(IMSM 2024)

第四届工业制造与结构材料国际学术会议(IMSM 2024) 2024 4th International Conference on Industrial Manufacturing and Structural Materials(IMSM 2024) 第四届工业制造与结构材料国际学术会议(IMSM 2024&#x…

TypeScript依赖注入框架Typedi的使用、原理、源码解读

简介 typedi是一个基于TS的装饰器和reflect-metadata的依赖注入轻量级框架,使用简单易懂,方便拓展。 使用typedi的前提是安装reflect-metadata,并在项目的入口文件的第一行中声明import ‘reflect-metadata’,这样就会在原生的R…

【图解数据结构】深度解析时间复杂度与空间复杂度的典型问题

🌈个人主页:聆风吟 🔥系列专栏:图解数据结构、算法模板 🔖少年有梦不应止于心动,更要付诸行动。 文章目录 一. ⛳️上期回顾二. ⛳️常见时间复杂度计算举例1️⃣实例一2️⃣实例二3️⃣实例三4️⃣实例四5…

Stability AI发布全新代码模型Stable Code 3B

Stable Code 3B: Coding on the Edge 要点: Stable Code 3B 是一个包含 30 亿个参数的大型语言模型 (LLM),可实现准确且响应灵敏的代码补全,其水平与大 2.5 倍的 CodeLLaMA 7b 等模型相当。即使在 MacBook Air 等普通笔记本电脑上没有 GPU&…

4D毫米波雷达——RADIal数据集、格式、可视化 CVPR2022

前言 本文介绍RADIal数据集,来着CVPR2022的。 它是一个收集了 2 小时车辆行驶数据的数据集,采集场景包括:城市街道、高速公路和乡村道路。采集设备包括:摄像头、激光雷达和高清雷达等,并且还包括了车辆的 GPS 位置和…

【Docker】contos7安装 Nacos容器部署单个部署集群

🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是平顶山大师,一个在CSDN分享笔记的博主。📚📚 🌟推荐给大家我的博客专栏《Docker】contos7安装 Nacos容器部署单个&…

基于springboot+vue的社区团购系统(前后端分离)

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目背景…

安卓Android studio读写EM4305卡源码

本示例使用的发卡器&#xff1a; https://item.taobao.com/item.htm?id718720660087&spma1z10.5-c.w4002-21818769070.15.57dc6f89txUhXE <?xml version"1.0" encoding"utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xml…

蓝桥杯备赛 day 2 —— 二分算法(C/C++,零基础,配图)

目录 &#x1f308;前言&#xff1a; &#x1f4c1; 二分的概念 &#x1f4c1; 整数二分 &#x1f4c1; 二分的模板 &#x1f4c1; 习题 &#x1f4c1; 总结 &#x1f308;前言&#xff1a; 这篇文章主要是准备蓝桥杯竞赛同学所写&#xff0c;为你更好准备蓝桥杯比赛涉及…

【音视频原理】图像相关概念 ② ( 帧率 | 常见帧率标准 | 码率 | 码率单位 )

文章目录 一、帧率1、帧率简介2、常见帧率标准3、帧率 刷新率 二、码率1、码率简介2、码率单位 一、帧率 1、帧率简介 帧率 Frame Rate , 帧 指的是 是 画面帧 , 帧率 是 画面帧 的 速率 ; 帧率 的 单位是 FPS , Frames Per Second , 是 每秒钟 的 画面帧 个数 ; 帧率 是 动画…

弗洛伊德循环查找算法-原理

本文灵感来自哔哩哔哩视频 视频链接: 弗洛伊德循环查找算法 算法代码(java) package rain;class ListNode {int value;ListNode next;public ListNode(int value) {this.value value;this.next null;}Overridepublic String toString() {return "ListNode{" &q…

Kotlin 移动端多平台

支持多平台编程是 Kotlin 的主要优势之一。它减少了为不同平台编写和维护相同代码所花费的时间&#xff0c;同时保留了本机编程的灵活性和优势。 1. 基本概念 KMM&#xff1a;Kotlin Multiplatform for mobile&#xff08;移动设备的 Kotlin 多平台&#xff09; KMM 多平台的主…

使用的uview 微信高版本 头像昵称填写能力

<template><view><button class"cu-btn block bg-blue margin-tb-sm lg" tap"wxGetUserInfo">一键登录</button><view><!-- 提示窗示例 --><u-popup :show"show" background-color"#fff">&…

pygame里实现导弹追踪效果,同时对python的指针机制有一点点思考

最近,儿子一直缠着让我把之前给他编写的游戏重做一下,要加一些功能.但是因为之前写代码的时候刚学会python,当时的想法就是能跑就行,现在回头看来,代码的可维护性几乎为零.所以没办法只能冲头再来,重构了几乎所有代码.在编写的时候遇到了一个有意思的问题,儿子让我给游戏添加一…

Pyside6入门教学——编写一个UI界面并显示

1、安装Pyside6 输入下列命令安装Pyside6。 pip install Pyside6 2、设计UI 打开Qt设计工具&#xff08;在安装Pyside6包的目录下&#xff09;。 【注】我这用的是anaconda虚拟环境&#xff0c;所以我的路径是D:\App\Anaconda3\envs\snake\Lib\site-packages\PySide6。设计…

【Python学习】Python学习19- 异常处理

目录 【Python学习】Python学习19- 异常处理 前言python标准异常异常处理带异常类型语法不带异常类型语法使用except而带多种异常类型try-finally 语句触发异常 参考 文章所属专区 Python学习 前言 本章节主要说明Python的异常处理。 python标准异常 BaseException 所有异常…

GNU Radio简介及流程图搭建

文章目录 前言一、GNU Radio 是什么&#xff1f;二、GNU Radio 安装三、搭建第一个流程图1、创建 GRC 文件2、添加块3、运行流程图 前言 欢迎来到无线通信的世界&#xff0c;初步接触 GNU Radio&#xff0c;对其学习进行一个记录。 一、GNU Radio 是什么&#xff1f; GNU Rad…

【C语言编程之旅 4】刷题篇-关键字

第一题 解析 C语言关键字&#xff1a;C语言定义的&#xff0c;具有特定含义、专门用于特殊用途的C语言标识符&#xff0c;也称为保留字 A&#xff1a;错误&#xff0c;关键字是语言自身定义的 B&#xff1a;正确 C&#xff1a;错误&#xff0c;关键字具有特殊含义&#xff…

docker部署项目,/var/lib/docker/overlay2目录满了如何清理?

docker部署项目&#xff0c;/var/lib/docker/overlay2目录满了如何清理&#xff1f; 一、问题二、解决1、查看 /var/lib/docker 目录&#xff08;1&#xff09;、containers 目录&#xff08;2&#xff09;、volumes 目录&#xff08;3&#xff09;、overlay2 目录 2、清理&…

Java开发分析 JProfiler 14 中文

JProfiler 14是一款强大的Java分析工具&#xff0c;专为帮助Java开发者优化应用性能而设计。它提供了实时监控、内存分析、线程分析、CPU分析等多种功能&#xff0c;帮助开发者快速定位和解决性能问题。JProfiler 14具有直观的用户界面&#xff0c;使用户能够轻松上手。此外&am…