计算机网络原理基础

目录

前言:

1.网络发展史

2.网络通信基础

2.1IP地址

2.1.1定义

2.1.2格式

2.2端口号

2.2.1定义

2.2.2格式

2.3协议

2.3.1定义

2.3.2作用

2.3.3分层

2.4五元组

2.4.1定义

2.4.2组成

3.TCP/IP五层网络模型

3.1模型概念

3.2模型构成

3.3网络分层对应

3.4封装和分用


前言:

JavaEE大体主要分为:1.多线程编程;2.文件/IO;3.网络原理。

在介绍完JavaEE中多线程编程和文件/IO后,下边就是网络编程原理,这也是JavaEE中最重要、最核心的一部分内容。

本节主要介绍计算机网络通信的基础知识和发展史,以及通信理论原理。

序列:网络编程 - 001


1.网络发展史

 互联网的发展经历了比较长的时间,在此之内,互联网一直在不断更新迭代,在这个时间段内主要有五个大的发展时代。

网络发展时代:独立模式(单机)->网络互联时代->局域网LAN->广域网LAN->移动互联网时代。

(1)独立模式(单机):计算机之间相互独立,并没有通信。

(2)网络互联时代:将多台计算机连接到一起,完成数据共享。

(3)局域网时代:局域内的计算机之间可以方便的进行通信。局域网与局域网之间没有连接的,无法进行通信。

(4)广域网时代:通过路由器将多个局域网连接起来的,在物理上组成很大范围的网络,就形成了广域网。广域网内部的局域网都属于其子网。

(5)移动互联网时代:集成广域网的优点,且网络连接不在局限于固定的计算机,扩大至各种移动设备。

上图为广域网与其子网的结构图,在广域网与局域网之间并没有明显的界限而言。

2.网络通信基础

数据共享的本质就是网络数据的传输,即计算机之间通过网络来传输数据也称网络通信

2.1IP地址

2.1.1定义

 网络互联的目的是进行网络通信,也就是网络数据的传输。更具体一点,网络主机不同进程间,基于网络进行数据的传输。

 那么如何在庞大的互联网系统中知道网络数据是从哪个主机到哪个主机之间传输的吗?这就需要IP地址来标识计算机。

IP地址:主要用于标识网络主机和其他网络设备的网络地址。简单说:IP地址用来定位主机的网络地址。

2.1.2格式

 IP地址是一个32位的二进制数,通常被分割为4个“8位二进制数”(也就是4个字节),如00100101.00100010.10000010.00010010。

 通常用“点分十进制”的方法表示,即a.b.c.d的形式(a、b、c、d都是0~255范围内的十进制整数),如:100.4.5.6。

在cmd命令行中输入ipconfig,可以查看计算机的IP地址为多少。127.0.0.1表示自引用时本主机IP地址。

2.2端口号

2.2.1定义

 端口号:在网络通信中IP地址用来标识主机的网络地址,端口号可以用来标识主机中发送、接收数据的进程。简单说:端口号就来定位主机中的进程。

一个端口号只能被一个程序绑定,但是一个程序可以绑定多个端口号。

2.2.2格式

 端口号是0~65535范围内的数字。在网络通信中,进程可以通过绑定一个端口号,来发送、接收网络数据。

1~1023范围内的端口号为知名端口号,系统留作特殊用途。

2.3协议

2.3.1定义

 协议:是网络通信经过所有网络设备都必须共同遵守的一组约定、规则。如怎样建立连接、怎样相互识别等。只有遵守这个约定,计算机之间才能相互进行通信交流。

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

2.3.2作用

 为什么要有协议?计算机之间的传输媒介是光信号和电信号。通过“频率"和"强弱"来表示0和1这样的信息。

计算机之间要想传递各种不同的信息,就需要约定好双方的数据格式。

  • 计算机生产厂商有很多;
  • 计算机操作系统,也有很多;
  • 计算机网络硬件设备,还是有很多;

 为了让这些不同厂商之间生产的计算机能够相互顺畅的通信,就需要约定一个共同的标准,大家都来遵守,这就是网络协议作用。

2.3.3分层

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

 分层最大的好处,类似于面向接口编程:定义好两层间的接口规范,让双方遵循这个规范来对接。上层协议调用下层协议,下层协议会给上层协议提供支持,这样协议就不会出现混乱。

 在代码中,类似于定义好一个接口,一方为接口的实现类(提供方,提供服务),一方为接口的使用类(使用方,使用服务):

  • 对于使用方来说,并不关心提供方是如何实现的,只需要使用接口即可;
  • 对于提供方来说,利用封装的特性,隐藏了实现的细节,只需要开放接口即可。

2.4五元组

2.4.1定义

 在计算机通信中,有很多需要的信息,其中有五个核心的信息是必不可少的,称为网络通信“五元组”,每一次网络通信这五个信息都必须存在。

在cmd命令行中输入netstat -ano,可以查看网络传输中的五元组信息。

2.4.2组成

五元组的构成如下:

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

网络通信五元组模型图如下:

3.TCP/IP五层网络模型

3.1模型概念

 TCP/IP五层网络模型(是OSI七层模型的简化版本):是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇。

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

3.2模型构成

TCP/IP通讯协议层级构成如下:

  1. 物理层:负责光/电信号的方式,描述网络通信的硬件设备(计算机硬件层)。
  2. 数据链路层:负责设备之间的数据帧的传输与识别,两结点间数据传输。
  3. 网络层:负责地址管理与路由选择,进行路径规划。
  4. 传输层:负责两台主机间数据的传输。
  5. 应用层:负责应用程序间的沟通(计算机网络编程主要针对这层)。

3.3网络分层对应

网络设备所在分层:

  • 对于一台主机,它的操作系统内核实现了从传输层到物理层的内容,也即是TCP/IP五层模型的下四层;
  • 对于一台路由器,它实现了从网络层到物理层,也即是TCP/IP五层模型的下三层;
  • 对于一台交换机,它实现了从数据链路层到物理层,也即是TCP/IP五层模型的下两层;
  • 对于集线器,它只实现了物理层; 

  上图为TCP/IP通讯协议各层级所对应的主要协议。

3.4封装和分用

 不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报(datagram),在链路层叫做帧(frame)。

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

 首部信息中包含了一些类似于首部有多长,载荷(payload)有多长,上层协议是什么等信息。

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

各层协议封装图:


以上便是计算机网络通信的基础与原理。

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

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

相关文章

Redis-缓存问题及解决方案

本文已收录于专栏 《中间件合集》 目录 概念说明缓存问题缓存击穿问题描述解决方案 缓存穿透问题描述解决方案 缓存雪崩问题描述解决方案提高缓存可用性过期时间配置熔断降级 总结提升 概念说明 Redis是一个开源的内存数据库,也可以用作缓存系统。它支持多种数据结构…

Unity3d Cinemachine篇(完)— TargetGroup

文章目录 前言使用TargetGroup追随多个模型1. 创建二个游戏物体2. 创建TargetGroup相机3. 设置相机4. 完成 前言 上一期我们简单的使用了ClearShot相机,这次我们来使用一下TargetGroup 使用TargetGroup追随多个模型 1. 创建二个游戏物体 2. 创建TargetGroup相机 3…

Packet Tracer - Configure IOS Intrusion Prevention System (IPS) Using the CLI

Packet Tracer - 使用CLI配置IOS入侵防御系统(IPS) 地址表 目标 启用IOS入侵防御系统(IPS)。 配置日志记录功能。 修改IPS签名规则。 验证IPS配置。 背景/场景 您的任务是在R1上启用IPS,扫描进入192.168.1.0网络…

npm install express -g报错或一直卡着,亲测可解决

问题描述: 最近学习vue3前端框架,安装Node.js之后,在测试是否可行时,cmd窗口执行了:npm install express -g,发现如下图所示一直卡着不动,最后还报错了,网上找了好久,各…

【Redis】深入理解 Redis 常用数据类型源码及底层实现(3.详解String数据结构)

【Redis】深入理解 Redis 常用数据类型源码及底层实现(1.结构与源码概述)-CSDN博客 【Redis】深入理解 Redis 常用数据类型源码及底层实现(2.版本区别dictEntry & redisObject详解)-CSDN博客 紧接着前两篇的总体介绍,从这篇开始&#x…

Android14音频进阶:MediaPlayerService如何启动AudioTrack 上篇(五十五)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒体系统工程师系列【原创干货持续更新中……】🚀 人生格言: 人生从来没有捷径,只…

有趣的CSS - 按钮文字上下滑动

目录 整体效果核心代码html 代码css 部分代码 完整代码如下html 页面css 样式页面渲染效果 整体效果 这个按钮效果主要使用 :hover 伪选择器以及 transition 过渡属性来实现两个子元素上下过渡的效果。 此效果可以在主入口按钮、详情或者更多等按钮处使用,增加一些鼠…

[软件工具]文档页数统计工具软件pdf统计页数word统计页数ppt统计页数图文打印店快速报价工具

文档页数统计工具软件——打印方面好帮手 在信息化时代,文档已成为我们工作、学习、生活中不可或缺的一部分。无论是学术论文、商业报告,还是个人日记,都需要我们对其进行有效的管理。而在这个过程中,文档页数统计工具软件就显得…

深度学习之循环神经网络

前言 卷积神经网络CNN在图象处理领域起到了重要的作用,在自然语言处理中还要看循环神经网络RNN,RNN对具有序列特性的数据非常有效,它能挖掘数据中的时序信息以及语义信息. 为什么要发明循环神经网络 我们先来看一个NLP很常见的问题,命名实体识别&…

[Python 安装]

进入Python的官方下载页面 http://www.python.org/download/ 然后进行软件的下载 下载好之后点击exe会出现安装界面,接着进行安装,选择安装路径。 运行Python 安装成功后,打开命令提示符窗口(winR,在输入cmd回车&#xf…

qt -chart控件设计器可拖拉

qt -chart控件设计器可拖拉 一、演示效果二、安装过程三、核心程序四、程序链接 一、演示效果 二、安装过程 三、核心程序 #include <QtGui> #include <QColor>#include <cstdlib> #include <cassert> #include <numeric>#include <chartwor…

okhttp 的 拦截器

拦截器有很多作用&#xff0c;实现就是责任链模式&#xff0c;细节&#xff0c;等我有时间补上。 后面有时间更新一下。 OkHttp最核心的工作是在 getResponseWithInterceptorChain() 中进行&#xff0c;在进入这个方法分析之前&#xff0c;我们先来了 解什么是责任链模式&…

Gson源码解读

一&#xff0c;概述 gson作为流行的json工具&#xff0c;笔者使用较多。本文主要目的是解读下Gson的源码实现&#xff0c;就没有然后了。 二&#xff0c;实例 实例如下图所示&#xff0c;笔者简单调用gson的toJson方法获得json字符串&#xff0c;fromJson则从json字符串解析…

无人零售模式下,“IoT+鸿蒙”实现零代码搭建自动售货机监控大屏的可能性摸索

前言 新零售模式下&#xff0c;对loT的探索与应用还在继续。 而数字时代&#xff0c;数字化转型在零售行业中蔓延&#xff0c;而对于新的消费方式的探索&#xff0c;也在如火如荼的进行中。于是&#xff0c;一种新零售的形式——无人零售逐渐形成概念。 如果说&#xff0c;人…

PySpark(四)PySpark SQL、Catalyst优化器、Spark SQL的执行流程

目录 PySpark SQL 基础 SparkSession对象 DataFrame入门 DataFrame构建 DataFrame代码风格 DSL SQL SparkSQL Shuffle 分区数目 DataFrame数据写出 Spark UDF Catalyst优化器 Spark SQL的执行流程 PySpark SQL 基础 PySpark SQL与Hive的异同 Hive和Spark 均是:“分…

掌握CSS网格函数fit-content()的妙用

CSS网格布局是一种强大的布局系统&#xff0c;它提供了灵活的网格化设计能力。其中&#xff0c;fit-content()函数是一项重要的功能&#xff0c;它可以帮助我们在网格容器中自动调整网格项的尺寸。本文将详细讲解fit-content()函数的使用方法及其常见应用场景&#xff0c;助你掌…

【笔记】React Native实战练习(仿网易云游戏网页移动端)

/** * 如果系统看一遍RN相关官方文档&#xff0c;可能很快就忘记了。一味看文档也很枯燥无味&#xff0c; * 于是大概看了关键文档后&#xff0c;想着直接开发一个Demo出来&#xff0c;边学边写&#xff0c;对往后工作 * 开发衔接上能够更顺。这期间肯定会遇到各种各样的问题&a…

12. onnx转为rknn测试时有很多重叠框的修改(python)

我们下载rknn-toolkit2-master后并进行前面的处理后&#xff0c;进入到rknn-toolkit2-master\examples\onnx\yolov5文件夹&#xff0c;里面有个test.py文件&#xff0c;打开该文件&#xff0c;其代码如下&#xff1a; # -*- coding: utf-8 -*- # coding:utf-8import os import…

<.Net>使用visual Studio 2022在VB.net中新添自定义画图函数(优化版)

前言 这是基于我之前的一篇博文&#xff1a; 使用visual Studio 2019在VB.net中新添自定义画图函数 在此基础上&#xff0c;我优化了一下&#xff0c;改进了UI&#xff0c;添加了示例功能&#xff0c;即以画圆函数为基础&#xff0c;添加了走马灯功能。 先看一下最终效果&#…

计算机毕业设计 | SSM 医药信息管理系统(附源码)

1&#xff0c; 概述 1.1 课题背景 本系统由说书客面向广大民营药店、县区级医院、个体诊所等群体的药品和客户等信息的管理需求&#xff0c;采用SpringSpringMVCMybatisEasyui架构实现&#xff0c;为单体药店、批发企业、零售连锁企业&#xff0c;提供有针对性的信息数据管理…