计算机网络原理基础

news2024/11/24 14:50:14

目录

前言:

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.coloradmin.cn/o/1434096.html

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

相关文章

06-Java适配器模式 ( Adapter Pattern )

原型模式 摘要实现范例 适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁 适配器模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能 举个真实的例子,读卡器是作为内存卡和笔记本之间的适配器。您将内…

机器学习逻辑回归模型训练与超参数调优 ##3

文章目录 [TOC]基于Kaggle电信用户流失案例数据(可在官网进行下载)逻辑回归模型训练逻辑回归的超参数调优 基于Kaggle电信用户流失案例数据(可在官网进行下载) 数据预处理部分可见: 机器学习数据预处理方法&#xff0…

layui

基于复杂结构的自定义模版相关介绍 我这里的接口给的格式数据 我这里搜索往返时候要显示成这样的 layui.use([table,form], function(){ var table layui.table; var form layui.form;// 渲染表格 table.render({ elem: #test-table-reload,toolbar: #toolbarDemo, …

【PPT密码】ppt设置的编辑密码,如何取消?

不知道大家是否了解PPT文件的编辑密码,首先ppt中没有限制编辑功能,设置为只读模式后仍然可以编辑文件,但其实有一种类似于限制编辑的加密方式。在我们打开PPT文件的时候会有密码输入框。 如果我们没有输入密码,以只读方式进入&…

每日一题——LeetCode1403.非递增顺序的最小子序列

方法一 个人方法: 按题目要求,尽可能先取出nums里最大的值,这样才能满足子序列尽可能短且元素之和最大 var minSubsequence function(nums) {nums.sort((a,b)>a-b)let sum1nums.reduce((a,b)>ab,0),sum20,res[]while(sum1>sum2){…

libevent源码解析--evbuffer_chain,evbuffer,bufferevent,bufferevent_private

1.概述 前面我们已经分析了event,event_callback,event_base及监听套接字处理。 有了event_base我们便可实现事件监控,事件分发处理。 有了监听套接字处理,我们便可实现服务端监听,通过accept得到服务端通信套接字。 …

Linux---信号

前言 到饭点了,我点了一份外卖,然后又开了一把网游,这个时候,我在打游戏的过程中,我始终记得外卖小哥会随时给我打电话,通知我我去取外卖,这个时候游戏还没有结束。我在打游戏的过程中需要把外…

【Boost】:阶段性测试和阶段性代码合集(五)

阶段性测试和阶段性代码合集 一.编写测试程序-server.cc二.一些问题三.完整源代码 在这里添加了一些打印信息,方便我们观察,由于比较分散就不一一列举,可以看下面的完整源代码。 一.编写测试程序-server.cc 1.原版 只是简单的测试&#xff0…

多输入多输出 | Matlab实现PSO-LSTM粒子群优化长短期记忆神经网络多输入多输出预测

多输入多输出 | Matlab实现PSO-LSTM粒子群优化长短期记忆神经网络多输入多输出预测 目录 多输入多输出 | Matlab实现PSO-LSTM粒子群优化长短期记忆神经网络多输入多输出预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 Matlab实现PSO-LSTM粒子群优化长短期记忆神经网络…

Java Arrays 的相关操作数组排序

Java Arrays 的相关操作数组排序 package com.zhong.arrays;import java.math.BigDecimal; import java.util.Arrays; import java.util.Comparator;public class ArraysDemo {public static void main(String[] args) {int[] arr {10, 20, 40, 30, 90, 60, 10, 30, 50};// A…

ReactNative实现文本渐变

我们直接上图&#xff0c;可以看到上面文本的效果&#xff0c;使用SVG实现 1.首先还是要引入react-native-svg库 2.使用该库下面的LinearGradient和Text 好&#xff0c;话不多说&#xff0c;我们看具体代码 <Svg width{422} height{30} viewBox{0 0 422 30}><Defs&…

以真机促创新!玻色量子联合中国运筹学会共商量子生态新模式

2024年1月29日&#xff0c;中国运筹学会算法软件与应用分会的一行领导莅临北京玻色量子科技有限公司&#xff08;以下简称“玻色量子”&#xff09;&#xff0c;参观了玻色量子及光量子计算机真机“天工量子大脑”、自建的十万颗粒洁净度光量子信息技术实验室&#x1f517;&…

React 浮层组件实现思路

React 浮层组件&#xff08;也称为弹出组件或弹窗组件&#xff09;通常是指在用户界面上浮动显示的组件&#xff0c;它们脱离常规的文档流&#xff0c;并且可以在用户进行某些操作时出现在页面的最上层。React 浮层组件可以用于创建模态框&#xff08;Modal&#xff09;、下拉菜…

【TCP/IP】用户访问一个购物网站时TCP/IP五层参考模型中每一层的功能

当用户访问一个购物网站时&#xff0c;网络上的每一层都会涉及不同的协议&#xff0c;具体网络模型如下图所示。 以下是每个网络层及其相关的协议示例&#xff1a; 物理层&#xff1a;负责将比特流传输到物理媒介上&#xff0c;例如电缆或无线信号。所以在物理层&#xff0c;可…

解决hive表新增的字段查询为空null问题

Hive分区表新增字段&#xff0c;查询时数据为NULL的解决方案 由于业务拓展&#xff0c;需要往hive分区表新增新的字段&#xff0c;hive版本为2点多。 于是利用 alter table table_name add columns (col_name string )新增字段&#xff0c;然后向已存在分区中插入数据&#x…

centos间文件传输

scp /home/vagrant/minio zx192.168.56.34:/home/zx /home/vagrant/minio 是你要传输的文件而且是当前机器登录用户有权限操作的文件 zx是目标机器的用户192.168.56.34是目标机器的地址 /home/zx是要传到这个文件夹下 要确保zx有/home/zx这个文件夹的操作权限 本质就是ssh文…

黑豹程序员-ElementPlus选择图标器

ElementPlus组件提供了很多图标svg 如何在你的系统中&#xff0c;用户可以使用呢&#xff1f; 这就是图标器&#xff0c;去调用ElementPlus的icon组件库&#xff0c;展示到页面&#xff0c;用户选择&#xff0c;返回选择的组件名称。 效果 代码 <template><el-inpu…

【C语言】static关键字的使用

目录 一、静态本地变量 1.1 静态本地变量的定义 1.2 静态本地变量和非静态本地变量的区别 二、静态函数 2.1 静态函数的定义 2.2 静态函数与非静态函数的区别 三、静态全局变量 3.1 静态全局变量的定义 3.2 静态全局变量和非静态全局变量的区别 四、静态结构体变量 …

挑战杯 python+opencv+深度学习实现二维码识别

0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; pythonopencv深度学习实现二维码识别 &#x1f947;学长这里给一个题目综合评分(每项满分5分) 难度系数&#xff1a;3分工作量&#xff1a;3分创新点&#xff1a;3分 该项目较为新颖&…

两次NAT

两次NAT即Twice NAT&#xff0c;指源IP和目的IP同时转换&#xff0c;该技术应用于内部网络主机地址与外部网络上主机地址重叠的情况。 如图所示&#xff0c;两次NAT转换的过程如下: 内网Host A要访问地址重叠的外部网络Host B&#xff0c;Host A向位于外部网络的DNS服务器发送…