网络编程入门——网络原理初识

news2024/11/5 14:53:24

一、网络发展史

1.1 独立模式

计算机之间相互独立,互不连通的。

 


1.2 网络互联

即将多台计算机连接在一起,完成数据共享。

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

根据网络互联规模的不同, 可以分为局域网和广域网。


1.3 局域网LAN

局域网,即Local Area Network,简称LAN。

Local 即标识了局域网是本地,局部组建的⼀种私有网络。

局域网内的主机之间能方便的进行网络通信,又称为内网;局域网和局域网之间在没有连接的情况 下,是无法通信的。 局域网组建网络的方式有很多种:

<1>网线直连

<2>集线器组建

<3>交换机组建

<4>交换机和路由器组建


1.4 广域网

广域网,即Wide Area Network,简称WAN。

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


二、网络通信基础 

网络互连的目的是进行网络通信,即网络数据传输,更具体⼀点,是网络主机中的不同进程间, 基于网络传输数据。

那么,在组建的网络中,如何判断到底是从哪台主机,将数据传输到那台主机呢?这就需要使用IP地址来标识

2.1 IP地址

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。 


2.2 端口号

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

比如向对方的QQ中发一条信息,需要先通过IP地址确定是哪台电脑,再通过端口号确定是电脑中的哪个进程(程序)接收这条信息。 

思考:

有了IP地址和端口号,可以定位到网络中唯一的一个进程,但还存在一个问题,网络通信是基于二进制0/1数据来传输,如何告诉对方发送的数据是什么样的呢?网络通信传输的数据类型可能有多种:图片,视频,文本等。同⼀个类型的数据,格式可能也不同, 如发送一个文本字符串“你好!”:如何标识发送的数据是文本类型,及文本的编码格式呢?(程序已经收到数据,但如何理解数据的含义? 基于网络数据传输,需要使用协议来规定双方的数据格式。


2.3 认识协议

概念:协议,网络协议的简称,网络协议是网络通信(即网络数据传输)经过的所有网络设备都必须共同遵从的⼀组约定、规则

怎么样建立连接、怎么样互相识别等。只有遵守这个约定,计算机之间才能相互通信交流。 协议(protocol)最终体现为在网络上传输的数据包的格式。


2.4 五元组

我们在进行一次网络通信的时候,会涉及到5个非常关键的信息,这就叫五元组

在TCP/IP协议中用五元组来标识一个网络通信:

<1>源IP:标识源主机

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

<3> 目的IP:标识目的主机

<4>目的端口号:标识目的主机中该次通信接收数据的进程

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


2.5 协议分层

将一个大的协议,拆分成若干个小的、功能单一的协议,就叫协议分层(只有相邻两层协议之间可以进行交互,上层协议可以调用下层协议,而下层协议可以给上层协议提供服务,不能跨层

2.5.1 OSI七层模型

OSI:即Open System Interconnection,开放系统互连 

• OSI 七层网络模型是⼀个逻辑上的定义和规范:把网络从逻辑上分为了7层。

• OSI 七层模型是⼀种框架性的设计方法,其最主要的功能使就是帮助不同类型的主机实现数据传 输;

OSI分为以下七层:

OSI七层模型既复杂又不实用实际组建网络时,只是以 OSI 七层模型设计中的部分分层,也即是以 TCP/IP 五层(或四层)模型来实现


 2.5.2 TCP/IP 五层(或四层)模型

TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇。

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

应用层即应用程序。

传输层也是连个任意设备之间的通信,但不考虑中间过程,只考虑终点和起点

网络层两个任意设备之间如何进行通信(如两个设备之间隔着很多路由器/交换机,这两个设备如何通信)

数据链路层完成两个相邻的设备之间是如何进行通信的(如通过网线将电脑连接到路由器/交换机上,那么电脑和路由器/交换机就属于两个相邻的设备)

物理层规定了网络通信中的一些硬件设施符合的要求

数据链路层和物理层耦合性比较高,因此也可以叫做 TCP/IP 四层模型。 


2.6 网络设备所在分层

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

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

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

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

随着现在网络设备技术的不断发展,也出现了很多3层或4层交换机,4层路由器。我们以下说的网络设备都是传统意义上的交换机和路由器。


2.7 网络数据通信基本流程

列如:向对方发送一条QQ信息

发送方:

1.应用程序获取到用户输入,构造一个应用层数据包,这个数据包就会遵守应用层协议,这个协议比较特殊,往往是开发这个程序的程序员自己定义的。

2.应用程序调用传输层提供的接口(API),把数据交给传输层,传输层拿到数据包之后,构造出“传输层数据包”。(传输层的协议主要是TCP、UDP)

3.传输层构造好数据后,继续调用网络层的API,把传输层的数据包交给网络层,网络层继续处理。(主要是IP协议)

IP协议继续对传输层数据包进行加工——>加上IP报头变成传输层数据包。

4.IP协议继续调用数据链路层的API,把IP数据包交给数据链路层(核心协议主要是“以太网”)

5.以太网将以太网数据包交给硬件设备(网卡),网卡会把上述二进制数据,以 光信号/电信号/电磁波信号 传播出去。

 上述过程中,从上层到下层,数据都要进一步加工(添加报头),这叫做封装。

收件方:

收件过程与发件过程完全相反,是从下到上依次解析(去掉报头),这个过程叫分用。

1.数据到达收件方的网卡,网卡把信号还原为二进制数据并交给数据链路层。

2.数据链路层按照以太网协议解析,取出报头报尾,将载荷传递给网络层。

3.网络层按照IP协议的格式解析,去掉报头,将载荷传递给传输层。

4.传输层按照TCP协议解析数据,去掉报头,将载荷传递给应用层。

5.QQ解析应用层数据,取出信息。


2.8 封装和分用

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

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

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

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

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

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

相关文章

关于爬虫需要了解的基础知识 (一、 http协议)

声明 文章仅供学习与交流&#xff01;严禁用于任何商业与非法用途&#xff01;否则由此产生的一切后果均与作者无关&#xff01; 一、何为爬虫 爬虫&#xff08;Crawler&#xff09;是一种按照既定规则&#xff0c;在网络上自动爬取信息的程序或脚本&#xff0c;也称为网际网…

VidPanos:从随手拍摄的平移视频生成全景视频

在当今数字化时代,视频拍摄已经成为人们记录生活和分享经历的重要方式。然而,普通手机拍摄的视频往往受到视角的限制,无法完整地展现一个广阔的场景。今天,我们要介绍的 VidPanos 技术,为解决这个问题提供了一种创新的方法。 VidPanos 是由来自华盛顿大学、谷歌 DeepMind…

【05】如何解决tomcat命令提示符控制台乱码问题

Web项目开发过程中&#xff0c;直接在命令提示符窗口中通过输入startup.bat命令运行tomcat&#xff0c;在新弹出的tomcat命令提示符窗口中输出的中文是乱码问题的处理。 如何解决tomcat命令提示符控制台乱码问题 文章目录 如何解决tomcat命令提示符控制台乱码问题1.解决问题思路…

02- 模块化编程-003 LCD1602液晶显示时间与日期

1、液晶显示电路 2、电路原理简介 1. 电路组件与功能 PIC单片机&#xff08;PIC16F887&#xff09;&#xff1a; 主控制器&#xff0c;负责处理输入输出。 LCD显示屏&#xff08;LM061&#xff09;&#xff1a; 驱动数码管显示器&#xff0c;以显示时间和日期信息。 支持多个段…

conda下jupyterlab安装问题以及交互绘图问题记录

安装 1. 直接conda install jupyterlab就好&#xff0c;只要在base环境下安装就行&#xff0c;可以在任意环境下执行jupyter lab启动。 2. 打开jupyter lab后显示Could not determine jupyterlab build status without nodejs&#xff0c;可以执行conda install nodejs安装no…

华为OD机试 - 预订酒店(Java 2024 E卷 100分)

华为OD机试 2024E卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;E卷D卷A卷B卷C卷&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;私信哪吒&#xff0c;备注华为OD&#xff0c;加…

LM Head weights;ChatGPT-3词汇量:175,000;llama7b 词汇量,词嵌入维度:4096

目录 LM Head weights ChatGPT-3词汇量:175,000 llama7b 词汇量 词汇量:32000 max_position_embeddings: 4096 LM Head weights ChatGPT-3词汇量:175,000 ChatGPT-4 确切的词向量种类数量公开信息。但可以根据一些语言模型的相关知识进行推测分析。 一般来说,语言模…

极简实现酷炫动效:Flutter隐式动画指南第二篇之一些酷炫的隐式动画效果

目录 前言 1.弹性放大按钮效果 2.旋转和缩放组合动画 3.颜色渐变背景动画 4.缩放进出效果 前言 在上一篇文章中&#xff0c;我们介绍了Flutter中的隐式动画的一些相关知识&#xff0c;在这篇文章中,我们可以结合多个隐式动画 Widget 在 Flutter 中创建一些酷炫的视觉效果&…

【ONLYOFFICE 文档 8.2 版本深度测评】功能革新与用户体验的双重飞跃

引言 在数字化办公的浪潮中&#xff0c;ONLYOFFICE 文档以其强大的在线协作功能和全面的办公套件解决方案&#xff0c;赢得了全球用户的青睐。随着 8.2 版本的发布&#xff0c;ONLYOFFICE 再次证明了其在办公软件领域的创新能力和技术实力。 一.协作编辑 PDF&#xff1a;团队合…

高频电子线路---倍频器与振荡器

目录 倍频电路原理 丙类倍频器原理电路 问题: 提升滤波方法: 导通角 振荡器 振荡器基本工作原理 首先是怎么维持 那么如何振荡呢? 思考题: 组成要素 振荡器的起振条件 平衡条件 要点提示 稳定条件 振幅平衡 硬激励起振时: 稳定条件 相位平衡 倍频电路原理 简单原理 : …

自杀一句话木马(访问后自动删除)

在做安全测试时&#xff0c;例如文件上传时就要上传可以解析的脚本文件解析证明存在漏洞&#xff0c;这个时候就需要(访问后自动删除文件的一句话木马) PHP <?php echo md5(1);unlink(__FILE__); ?> 访问后自动删除

Windows配置Nodejs及nmp简明教程(2024可用)

一、下载及安装Nodejs 下载 Node.js 中文网 (nodejs.com.cn)在此下载windows长期维护版本的.msi安装包&#xff0c;64位 安装&#xff1a; 双节安装包一直点击Next下一步&#xff0c;注意安装路径选择C盘默认路径&#xff08;C:\Program Files\nodejs\&#xff09;即可&#x…

使用ffmpeg和mediamtx模拟多通道rtsp相机

首先下载ffmpeg&#xff0c;在windows系统上直接下载可执行文件&#xff0c;并配置环境变量即可在命令行当中调用执行。 下载地址&#xff1a; https://ffmpeg.org/再在github上下载mediamtx搭建rtsp服务器&#xff0c;使用ffmpeg将码流推流到rtsp服务器。 下载地址&#xff1…

Unreal5从入门到精通之如何在VR中使用3DUI

文章目录 前言创建3DUI1.新建控件蓝图2.添加控件到画布上3.新建Actor蓝图MyUIActor4.添加控件组件Widget5.设置控件类和画布大小6.创建MyUIActor实例到场景中3DUI和VR射线交互1.添加按钮的点击事件2.设置MyUIActor碰撞响应3.VRPawn添加控件交互组件4.添加手柄Trigger点击事件绑…

ai数字人分身123口播克隆数字人小程序源码_博纳软云

功能配置 一、用户 用户管理小黑屋用户反馈登录设置短信参数 二、作品 视频作品背景音乐库背景音乐分类 三、形象分身 上传记录视频要求参数配置 四、声音克隆 克隆记录参数配置声音要求文案示例 五、AI文案 生成记录创作模型模型分类Al配置 六、充值 充值订单积分套…

活动回顾丨艾体宝《开源软件供应链安全的最佳实践》线下研讨会圆满落幕!

10月&#xff0c;艾体宝联合Mend成功举办了一场主题为“开源软件供应链安全最佳实践”的研讨会。此次活动吸引了众多业内专家、技术领袖和企业代表参与&#xff0c;共同探讨在当今数字化转型浪潮中&#xff0c;企业如何应对开源软件供应链安全的挑战。会议围绕三大核心议题展开…

java项目之校园周边美食探索及分享平台(springboot)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的校园周边美食探索及分享平台。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 项目简介&#xff1a; 校园周边美食…

esp32cam+Arduino IDE在编译时提示找不到 esp_camera.h 的解决办法

多半是因为你的ESP32库升级了&#xff0c;不再是 1.02版本&#xff0c;或者根本就没有 ESp32 库。如果被升级了&#xff0c;还原为1.02版本就可以了。如果没有&#xff0c;按照下述方法添加&#xff1a; 首先&#xff0c;在"文件"->"首选项"->"…

Rust 力扣 - 1461. 检查一个字符串是否包含所有长度为 K 的二进制子串

文章目录 题目描述题解思路题解代码题目链接 题目描述 题解思路 长度为k的二进制子串所有取值的集合为[0, sum(k)]&#xff0c;其中sum(k)为1 2 4 … 1 << (k - 1) 我们只需要创建一个长度为sum(k) 1的数组 f &#xff0c;其中下标为 i 的元素用来标记字符串中子串…

Edit Data. Create Cell Editors. Validate User Input 编辑数据。创建 Cell Editors。验证用户输入

Goto Data Grid 数据网格 Edit Data. Create Cell Editors. Validate User Input 编辑数据。创建 Cell Editors。验证用户输入 Get and Modify Cell Values in Code 在代码中获取和修改单元格值 仅当 Grid 及其列已完全初始化时&#xff0c;才使用以下方法。如果需要在表单仍…