JAVAEE之网络初识_协议、TCP/IP网络模型、封装、分用

前言

在这一节我们简单介绍一下网络的发展


一、通信网络基础

 网络互连的目的是进行网络通信,也即是网络数据传输,更具体一点,是网络主机中的不同进程间,基于网络传输数据。那么,在组建的网络中,如何判断到底是从哪台主机,将数据传输到那台主机呢?这就需要使用IP地址来标识

1.1 IP地址

  1. 基本概念:IP地址主要用于标识网络主机、其他网络设备(如路由器)的网络地址。简单说,IP地址用于定位主机的网络地址。

  2. 格式:IP地址是一个32位的二进制数,通常被分割为4个“8位二进制数”(4个字节),如:01100100.00000100.00000101.00000110。通常用“点分十进制”的方式来表示,即 a.b.c.d 的形式(a,b,c,d都是0~255之间的十进制整数),如:100.4.5.6。

  3. 特殊的IP地址:127.*的IP地址用于本机环回(loop back)测试,通常是127.0.0.1。

 IP地址解决了网络通信时定位网络主机的问题,但是还存在一个问题,传输到目的主机后,由哪个进程来接收这个数据呢?这就需要端口号来标识。

1.2 端口号

概念:在网络通信中,IP地址用于标识主机网络地址,端口号可以标识主机中发送数据、接收数据的进程。简单说:端口号用于定位主机中的进程。
格式:端口号是0~65535范围的数字,在网络通信中,进程可以通过绑定一个端口号,来发送及接收网络数据。
注意事项两个不同的进程,不能绑定同一个端口号,但一个进程可以绑定多个端口号

一个进程启动后,系统会随机分配一个端口(启动端口)
程序代码中,进行网络编程时,需要绑定端口号(收发数据的端口)来发送、接收数据。进程绑定一个端口号后,fork一个子进程,可以实现多个进程绑定一个端口号,但不同的进程不能绑定同一个端口号。

二、协议

2.1 协议的概念和三要素

概念:协议简单的来说就是大家都要遵守的规则。这里的协议是网络协议的简称。网络协议是所有要参与网络通信的设备都要遵守的规则。

协议三要素:

  1. 语法:数据和控制信息的结构或格式;
  2. 语义:需要发出什么样的控制信息,完成什么样的动作以及有什么样的响应;
  3. 时序:事件实现顺序的详细说明。

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

2.2 知名协议的默认端口

 系统端口号范围为 0 ~ 65535,其中:0 ~ 1023 为知名端口号,这些端口预留给服务端程序绑定广泛使用的应用层协议,如:

  1. 22端口:预留给SSH服务器绑定SSH协议
  2. 21端口:预留给FTP服务器绑定FTP协议
  3. 23端口:预留给Telnet服务器绑定Telnet协议
  4. 80端口:预留给HTTP服务器绑定HTTP协议
  5. 443端口:预留给HTTPS服务器绑定HTTPS协议

二、网络协议分层

为什么需要网络协议分层?
分层最大的好处,类似于面向接口编程:定义好两层间的接口规范,让双方遵循这个规范来对接。
 网络分层模型一般有OSI(Open System Interconnection)七层模型和TCP/IP五层模型两种。
在这里我们重点介绍TCP/IP五层模型。
在这里插入图片描述

2.1 TCP/IP 五层网路模型

在这里插入图片描述

三、封装和分用

3.1 封装

  1. 不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报(datagram),在链路层叫做帧(frame)。
  2. 应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装(Encapsulation)。
  3. 首部信息中包含了一些类似于首部有多长,载荷(payload)有多长,上层协议是什么等信息。
  4. 数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,根据首部中的 “上层协议字段” 将数据交给对应的上层协议处理。

下图是封装的步骤:
在这里插入图片描述

3.2 分用

在这里插入图片描述

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

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

相关文章

迪丽热巴与大姐的璀璨友情

迪丽热巴与“大姐”的璀璨友情:星光熠熠,友谊长存在娱乐圈的繁华舞台上,有两位耀眼的女星,她们如同夜空中亮的两颗星,交相辉映,共同谱写着一段段动人的佳话。她们,一个是被亲切称为“迪迪”的迪…

HarmonyOS-9(stage模式)

配置文件 {"module": {"requestPermissions": [ //权限{"name": "ohos.permission.EXECUTE_INSIGHT_INTENT"}],"name": "entry", //模块的名称"type": "entry", //模块类型 :ability类型和…

AWR设置工程仿真频率、原理图仿真频率、默认单位

AWR设置工程仿真频率、原理图仿真频率、默认单位 生活不易,喵喵叹气。马上就要上班了,公司的ADS的版权紧缺,主要用的软件都是NI 的AWR,只能趁着现在没事做先学习一下子了,希望不要裁我。 最近稍微学习了一下AWR这个软…

UMG绝对坐标与局部空间

在 Unreal Engine 的 UMG(Unreal Motion Graphics)中,“绝对坐标”和“局部空间”是两个常见的概念,主要用于描述 UI 元素的位置和大小。 概念与区别 绝对坐标(Absolute Coordinates):这是指相…

list~模拟实现

目录 list的介绍及使用 list的底层结构 节点类的实现 list的实现 构造函数 拷贝构造 方法一:方法二: 析构函数 赋值重载 insert / erase push_/pop_(尾插/尾删/头插/头删) begin和end(在已建立迭代器的基础上) 迭代…

kafka命令--简单粗暴有效

zookeeper bin目录下执行 启动:./zkServer.sh start 停止:./zkServer.sh stop 重启:./zkServer.sh restart 状态:./zkServer.sh status kafka bin目录下执行 启动:./kafka-server-start.sh -daemon …/config/server.…

直播预告|手把手教你玩转 Milvus Lite !

Milvus Lite(https://milvus.io/docs/milvus_lite.md)是一个轻量级向量数据库,支持本地运行,可用于搭建 Python 应用,由 Zilliz 基于全球最受欢迎的开源向量数据库 Milvus(https://milvus.io/intro&#xf…

使用python优雅的将PDF转为Word

使用python优雅的将PDF转为Word 先装这个优雅的库 pip install pdf2docx然后运行下面优雅的代码,将pdf路径和docx路径修改 from pdf2docx import Converter # path pdf_file C:\\Users\\phl\\Desktop\\软件工程期末\\软件工程模拟试题5.pdf docx_file C:\\User…

【iOS】UI学习——导航控制器、分栏控制器

UI学习(三) 导航控制器导航控制器基础导航控制器切换导航栏和工具栏 分栏控制器分栏控制器基础分栏控制器高级 导航控制器 导航控制器负责控制导航栏(navigationBar),导航栏上的按钮叫UINavigationItem(导航…

【STL源码剖析】deque 的使用

别院深深夏席清,石榴开遍透帘明。 树阴满地日当午,梦觉流莺时一声。 目录 deque 的结构 deque 的迭代器剖析 deque 的使用 ​编辑 deque 的初始化 deque 的容量操作 deque 的访问操作 在 pos 位置插入另一个向量的 [forst,last] 间的数据​编…

【人工智能Ⅱ】实验9:强化学习Q-Learning算法

实验9:强化学习Q-Learning算法 一:实验目的 1:了解强化学习的基本概念。 2:学习强化学习经典算法——Q-Learing算法。 3:通过Q-Learing算法解决问题。 二:实验内容 2.1 强化学习 强化学习(…

iOS18新功能大爆料,打破常规,全面升级,这些变化不容错过!

众所周知,苹果 iOS 操作系统近年来都没有发生重大变化,主要是添加小部件、锁屏编辑和手机屏幕编辑等功能,再加上bug偏多,以至于越来越多iPhone用户不愿意再升级系统了。这一点,从 iOS 17 明显降低的安装率中就能看出一…

对人脸图像进行性别和年龄的判断

判断性别和年龄 导入必要的库加载预训练的人脸检测模型加载预训练的性别和年龄识别模型定义性别和年龄的标签列表创建Tkinter窗口:定义选择图片的函数:创建一个按钮,用于打开文件选择对话框定义显示图片的函数创建预测性别和年龄的函数创建预…

Docker大学生看了都会系列(二、Mac通过Homebrew安装Docker)

系列文章目录 第一章 Docker介绍 第二章 Mac通过Homebrew安装Docker 文章目录 前言Mac通过Homebrew安装本机环境系统要求terminal命令安装查看安装信息配置阿里云镜像加速登陆阿里云配置加速地址其他国内加速地址 总结 前言 在上一章了解了Docker容器是什么之后,本…

solidworks二维样条曲线使用实例

单位mm 绘制一个圆 直径为50mm, 基准面 上视基准面,距离50mm, 2个六边形 一个内嵌圆 另一个直径60mm, 将两个六边形改成构造线 选择样条曲线,将六边形的顶点连接在一起 放样曲面 插入–曲面–放样曲面 平面区域…

RabbitMQ不完整的笔记

同步的不足 1、拓展性差,当要添加功能时,需要在原来的功能代码上做修改,高耦合。 2、性能下降,调用者需要等待服务提供者执行完返回结果后,才能继续向下执行 3、级联失败,由于我们是基于OpenFeign调用交易…

Visual Studio Code使用(C++项目新建,运行)

VS Code 直接在官网下载安装。 接下来安装插件,下图是C所需的对应插件 1.新建项目 VS Code下载安装完成后,直接进入欢迎页: 在访达/文件夹中新建一个文件夹,欢迎页点击【打开】,选择刚刚新建的文件夹。点击第一个图…

华为OD机试 - 最大坐标值(Java 2024 D卷 100分)

华为OD机试 2024C卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(A卷B卷C卷)》。 刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试…

数据结构第三篇【链表的相关知识点一及在线OJ习题】

数据结构第三篇【链表的相关知识点一及在线OJ习题】 链表链表的实现链表OJ习题顺序表和链表的区别和联系 本文章主要讲解关于链表的相关知识,喜欢的可以三连喔 😀😃😄😄😊😊🙃&#…

Makefile的入门学习

一、Makefile的入门学习 编译工具及构建工具介绍 在之前的课程,都是直接使用gcc对代码进行编译,这对简单的工程是可以的,但当我们遇到复杂的工程时,每次用gcc等编译工具去操作就会显得很低效。因此make工具就出现了,…