[JavaEE] 网络初识(网络通信 及 TCP / UDP / IP 封装分用 )

news2024/9/22 20:08:38

Author:MTingle
major:人工智能

---------------------------------------

Build your hopes like a tower!

文章目录

目录

文章目录

一. 网络通信基础

1. 局域网LAN 

2. ⼴域⽹WAN

3. IP地址

4. 端口号

二.协议

1. 五元组

2. 协议分层

协议分层的优点:

3. OSI七层协议:

4. TCP / IP 协议

⽹络设备所在分层

三.封装和分用

1. 封装

2.分用

3. 路由器和交换机的封装分用



一. 网络通信基础

1. 局域网LAN 

局域⽹,即 LocalAreaNetwork ,简称 LAN 。 Local 即标识了局域⽹是本地,局部组建的⼀种私有⽹络。 局域⽹内的主机之间能⽅便的进⾏⽹络通信,⼜称为内⽹;局域⽹和局域⽹之间在没有连接的情况下,是⽆法通信的。

2. ⼴域⽹WAN

⼴域⽹,即 WideAreaNetwork ,简称 WAN 。 通过路由器,将多个局域⽹连接起来,在物理上组成很⼤范围的⽹络,就形成了⼴域⽹。⼴域⽹内部 的局域⽹都属于其⼦⽹。

3. IP地址

概念:IP地址⽤于定位主机的⽹络地址,就像我们发送快递⼀样,需要知道对⽅的收货地址,快递员才能将包裹送到⽬的地。(设备在网络上的位置)

格式:IP地址是⼀个32位的⼆进制数,通常被分割为4个“8位⼆进制数”(也就是4个字节),如: 01100100.00000100.00000101.00000110。 通常⽤“点分⼗进制”的⽅式来表⽰,即a.b.c.d的形式(a,b,c,d都是0~255之间的⼗进制整数)。 如:100.4.5.6。

4. 端口号

概念:端⼝号⽤于定位主机中的进程。类似发送快递时,不光需要指定收货地址(IP地址),还需要指定收货⼈(端⼝号)。有了IP可以确定主机,但是一个主机有多个程序在使用网络,这个时候就需要区分出主机收到的网络数据需要交给哪个程序

格式:端⼝号是0~65535范围的数字,在⽹络通信中,进程可以通过绑定⼀个端⼝号,来发送及接收⽹络数据。

二.协议

概念:协议,就是一种通信过程中的约定,发送方和接收方都提前商量好数据的格式,才能确保两者之间能够正确地进行沟通,确保不同厂商之间生产出的设备能够相互配合

1. 五元组

在TCP/IP协议中,⽤五元组来标识⼀个⽹络通信:

1. 源IP:标识源主机

2. 源端⼝号:标识源主机中该次通信发送数据的进程

3. ⽬的IP:标识⽬的主机

4. ⽬的端⼝号:标识⽬的主机中该次通信接收数据的进程

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

可以在cmd中,输⼊ netstat -ano 查看⽹络数据传输中的五元组信息

2. 协议分层

网络通信过程中,需要涉及到的细节很多,如果单纯用一个协议来完成网络通信,就需要约定要方方面面的内容,就会导致协议非常复杂,所以我们就要将协议拆分,拆分成一个个功能更单一,"小而美"的协议,拆分出来的协议多了,于是就引入了协议分层

网络通信协议拆分的多了之后也是分层了许多层,把功能相似的协议放到同一层之中,上层协议会调用下层协议的功能,下层协议给上层协议提供服务,只有相邻的层次之间可以进行沟通,不能跨层次调用

协议分层的优点:

1). 上层协议直接调用下层协议即可,不需要了解下层协议的细节,相当于下层协议直接被封装好了

2). 某一层协议被替换后,对于其他层协议没有影响

当前网络现状,有很多协议都是按照分层来组织的.

3. OSI七层协议:

7 应用层

6 表示层

5 会话层

4 传输层

3 网络层

2 数据链路层

1 物理层

最初设计的时候给出的方案,但是由于过于麻烦,后续被简化成了五层: => TCP / IP 协议

4. TCP / IP 协议

应用层: 程序拿到数据之后,要用来干啥,解决什么问题

传输层:负责关注 网络数据包 的 起点和终点 (从哪儿来到哪儿去) 端到端之间的传输 比如确定起点 西安到上海

网络层: 负责关注 起点和终点 之间,要走那一条路 (路径规划) 比如确定路线:西安 -> 南京 -> 上海

数据链路层:负责两个相邻节点直接的传输 无锡到西安 (火车运输)  南京到上海 (飞机空运) 

物理层: 通信过程中的基础设施. 例如: 公路,铁路,航线

⽹络设备所在分层

• 对于⼀台主机, 它的操作系统内核实现了从传输层到物理层的内容也即是TCP/IP五层模型的下四层;

• 对于⼀台路由器, 它实现了从⽹络层到物理层,也即是TCP/IP五层模型的下三层;(工作在网络层)

• 对于⼀台交换, 它实现了从数据链路层到物理层,也即是TCP/IP五层模型的下两层;(工作在数据链路层)

• 对于集线器,它只实现了物理层;

事实上 真实世界中的交换机/路由器要更复杂,功能更强大很多交换机,也具有一些路由器的功能,也能工作在网络层很多路由器,也具备一些交换机的功能,也能工作在数据链路层.

三.封装和分用

1. 封装

1. 应用层(应用程序)

此处用 QQ 举例:

QQ从消息输入框中获取到用户输入的 hello ,就要把这个字符串构造成一个应用层数据包,QQ这样的程序内部就设置了一个应用层协议,应用层数据包就是按照这个应用层协议约定的格式来构造的.

应用程序就会调用操作系统提供的 api ,把这个数据包交给传输层.

2. 传输层: TCP 和 UDP 协议

传输层就会把上述的数据作为一个整体,再构造成一个传输层的数据包,传输层涉及到的协议,最主要的就是 TCP 和 UDP 协议,此处假定使用 UDP 来进行通信,就会构造出一个 UDP 数据包

形如上述添加报头的过程就是封装,本质上字符串的拼接,只不过拼的报头,具有一定的结构

拼好的传输层数据包会被进一步交给下层(网络层),网络层继续封装 (交给下层指的是,下层协议提供一组 api ,上层调用这个 api 并且把刚刚构造好的参数传下去,下层协议就可以处理这个数据了)

3. 网络层: IP协议

网络层 IP 协议,把刚才得传输层的 UDP 数据包作为一个整体,再拼上 IP 协议的报头,构成一个 IP 数据包

这里构造成完整的 IP 数据包之后, IP 协议继续调用数据链路层的 api ,把数据交给数据链路层,数据链路层的协议继续对数据包进行处理

4.数据链路层: 以太网

数据链路层的核心协议是,以太网,此处的"以太"二字用于表述 网络数据传输的介质 ,以太网就是我们日常最常见到的 有线网络 ,日常用的网线称作 "以太网线" ,日常用到的网口叫做 "以太网口", 以太网数据帧 也是以 IP 数据包作为一个整体,在这个基础上添加帧头和帧尾.

这样的数据再往下交给物理层

5.物理层: 硬件设备

物理层把上述这样的以太网数据帧(二进制结构)转换成 光信号 / 电信号 / 电磁波

经过上述的一系列操作,数据终于从电脑上发出去了!!!

2.分用

我们暂时不考虑中间过程,假定数据包已经到达了 B 网卡,看一下 B 网卡会如何处理数据包,这个处理过程就叫做 "分用"

1. 物理层

B的物理层收到了 光信号 / 电信号 / 电磁波 ,就会把这些物理信号转换成数字信号(二进制的0/1),得到一个以太网数据帧,再进一步把这个数据帧交给数据链路层

2.数据链路层: 以太网

按照以太网数据帧的格式来解析,去除其中的载荷交给上层协议

3.网络层: IP协议

按照 IP 协议的格式进行解析,去除其中的载荷,再交给上层协议

4. 传输层: TCP / UDP 协议

按照 UDP 协议格式来解析,去除其中的载荷,再交给上层协议

5.应用层: QQ 应用程序

按照 QQ 应用程序内部的应用层协议格式来解析数据,QQ程序拿到这个数据后,就会在窗口给你弹出提示,消息就被显示到聊天框上

分用的过程,就是封装的逆过程

3. 路由器和交换机的封装分用

真实情况下,两个主机不太会直接通过网线直连的,而是通过一系列的交换机和路由器进行数据转发的.但是上述的封装分用过程同样适用.

如果是交换机,交换机就会把上述的光电信号转换成以太网数据帧数据,交给数据链路层,交换机的数据链路层就会对上述数据进行解析,这个解析过程,一方面要去除载荷部分,另一方面,就要解析帧头的关键信息,根据帧头的信息,决定下一步把数据往哪里发送,根据这个情况再进一步构造出新的以太网数据帧(交换机工作在数据链路层)

再把这个数据通过 物理层 发送出去

如果是路由器,情况会稍微复杂,此时就是封装分用到网络层

物理层先拿到光电信号,转换成二进制数据交给数据链路层,数据链路层再对数据进行解析,拿到载荷,交给网络层( IP 协议), IP 协议会对上述数据进一步解析,去除载荷(也会解析此处的报头),拿出数据后, IP 协议会进行重新封装,再交给数据链路层,数据链路层给数据加上新的帧头和帧尾,这个数据再交给物理层,转换成光电信号,继续传输


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

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

相关文章

OJ在线评测系统 后端开发数据库初始化工作 开发库表 建立数据库索引 Mybatis映射初始化接口开发

后端接口开发库表设计 项目主业务流程的开发 1.用户模块 注册(后端已实现) 登录(后端已实现 前端已实现) 2.题目模块 创建题目(管理员) 删除题目(管理员) 修改题目&#xff0…

基于SpringBoot+Vue+MySQL的校园一卡通系统

系统展示 用户前台界面 管理员后台界面 系统背景 随着现代社会的快速发展,校园一卡通已成为大学生活中不可或缺的一部分。它不仅承载着校园消费的功能,还集成了学生身份证明、图书馆借阅、门禁系统等多种服务。然而,传统的一卡通管理系统往往…

阿里HPN-用于大型语言模型训练的数据中心网络

阿里巴巴HPN:用于大型语言模型训练的数据中心网络 探索大规模语言模型训练新方法:阿里巴巴HPN数据中心网络论文。 摘要 本文介绍了阿里云用于大型语言模型(LLM)训练的数据中心网络HPN。由于LLM和一般云计算之间的差异(例如,在流量模式和容错性方面)&…

【机器学习】12-决策树1——概念、特征选择

机器学习10-决策树1 学习样本的特征,将样本划分到不同的类别(分类问题)或预测连续的数值(回归问题)。 选择特征,划分数据集,划分完成形成模型(树结构),一个…

新手必看:一步步教你绑定常见邮箱到第三方应用(如何绑定QQ、163、Hotmail、Gmail等邮箱)

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 邮箱绑定 📒📫 QQ邮箱📫 163邮箱📫 Hotmail邮箱📫 Gmail邮箱📫 Yahoo邮箱📫 iCloud邮箱📫 其他邮箱⚓️ 相关链接 ⚓️📖 介绍 📖 你是否曾经为绑定第三方邮箱而感到困惑?你不是一个人!许多人在尝试将QQ邮…

QT创建菜单

增加显示信息

MySQL数据库的增删改查以及基本操作分享

1、登录MySQL数据库 首先找到你安装MySQL数据库的目录,然后在终端打开该目录,输入以下命令 mysql -u root -p然后输入密码就可以登录数据库了,看到如下页面就是登陆成功了 ***注意在终端操纵数据库时所有语句写完之后一定要加 &#xff1…

【线程】线程的同步

本文重点:理解条件变量和生产者消费者模型 同步是在保证数据安全的情况下,让我们的线程访问资源具有一定的顺序性 条件变量cond 当一个线程互斥地访问某个变量时,它可能发现在其它线程改变状态之前,它什么也做不了,…

CSS 选择器的分类与使用要点一

目录 非 VIP 用户可前往公众号进行免费阅读 标签选择器 id 选择器 类选择器 介绍 公共类 CSS 中优先用 class 选择器,慎用 id 选择器 后代选择器 交集选择器 以标签名作为开头 以类名作为开头 连续交集 并集选择器(分组选择器) 通配符* 儿子选择器 >(IE7…

Elasticsearch——介绍、安装与初步使用

目录 1.初识 Elasticsearch1.1.了解 ES1.1.1.Elasticsearch 的作用1.1.2.ELK技术栈1.1.3.Elasticsearch 和 Lucene1.1.4.为什么不是其他搜索技术?1.1.5.总结 1.2.倒排索引1.2.1.正向索引1.2.2.倒排索引1.2.3.正向和倒排 1.3.Elasticsearch 的一些概念1.3.1.文档和字…

基于单片机的智能温控风扇系统的设计

[摘 要] 设计一种基于单片机的智能温控风扇系统,系统由 STC 系列的 51 单片机 、 温度传感器 、 LED 数码管和风扇等模块组成。 本系统具有对外界温度感知以及对感知数据进行分析处理 、 智能调节等功能,避免因温度过高而产生…

【全部更新】2024华为杯数学建模研赛F题思路代码文章全国研究生数学建模-X射线脉冲星光子到达时间建模

截止9.22 14:00 已更新全部文章内容完整求解代码(正版授权) ### https://docs.qq.com/doc/DVVBUREF2SmFhRUl3X射线脉冲星光子到达时间建模 摘要 脉冲星是一类高速自转的中子星,其自转形成规律性脉冲信号,类似于“宇宙中的灯塔”,因此被认为是…

鸿蒙 WebView 如何 Debug

前置: hdc chrome //----------------------------------------------------------------------------------------------- hdc shell cat /proc/net/unix | grep devtools 0: 00000002 0 10000 1 1 81134005 webview_devtools_remote_62479exit执行&…

[001-02-001].第2节:java开发环境搭建

4.1.书籍推荐: 4.2.人机交互方式 1.图形化界面(Graphical User Interface GUI)这种方式简单直观,使用者易于接受,容易上手操作2.命令行方式(Command Line Interface CLI):需要有一个控制台,输入特定的指令&#xff0c…

828华为云征文|云服务器Flexus X实例|MacOS系统-宝塔部署Nuxt项目

文章目录 1. Flexus云服务器X实例1.1 与Flexus应用服务器L实例相比具备以下优势1.2 服务器的详细配置 2.宝塔部署Nuxt项目2.1 登录实例2.1 宝塔面板 3. Nuxt 项目与部署3.1 Nuxt3.2创建Nuxt项目3.3 部署3.4 部署成功 4.结语 1. Flexus云服务器X实例 华为云的Flexus云服务是为中…

股指期权交易详细基础介绍

股指期权是期权市场中的一种特定类型,其标的资产为股票指数。简而言之,它允许投资者在未来某个特定时间,以预先约定的价格,买入或卖出股票指数的权利。在中国,已上市的股指期权包括上证50、沪深300和中证1000股指期权&…

【C++ Primer Plus习题】17.5

大家好,这里是国中之林! ❥前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。有兴趣的可以点点进去看看← 问题: 解答: #include <iostream> #include <fstream> #include <…

数据库系统基础概述

文章目录 前言一、数据库基础概念 1.数据库系统的组成2.数据模型3.数据库的体系结构二、MySQL数据库 1.了解MySQL2.MySQL的特性3.MySQL的应用场景总结 前言 MySQL数据库是一款完全免费的产品&#xff0c;用户可以直接从网上下载使用&#xff0c;不用花费任何费用。这点对于初学…

react开发环境搭建

文章目录 准备工作创建 React 项目使用 create-react-app 创建 React 项目使用 Vite 创建 React 项目启动项目效果安装出现的情况 react项目文件讲解1. 项目根目录2. 其他可能的目录和文件3. 配置文件 准备工作 Node.js 安装方法&#xff1a; 方式一&#xff1a;使用 NVM 安装…

制作一个rabbitmq-sdk以及rabbitmq消费者实现定时上下线功能

目录结构 pom.xml <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">&l…