网络初识

news2024/12/23 10:43:35

一些基本概念认识

IP地址
概念:

IP地址用于定位主机的网络地址,标识了网络上设备所在的位置。也就是说主机在哪。

格式:

IP地址是一个32位的二进制数,通常被分割为4个字节。通常我们使用“点分十进制”的方式来表示主机的IP地址——>表示为a.b.c.d的形式,其中abcd都是取值在0~255的十进制整数。(0~255的原因是因为4个字节,每个字节是8位二进制数,而8位二进制数最大的数转化为10进制为255)。

如:

127.0.0.1——>01111111.00000000.00000000.00000001。

01111111对应的就是127.

端口号
概念:

端口号标识了一个具体的应用程序,用于定位主机中的进程。也就是说有了IP地址仅仅是定位了主机的位置,但是我们的程序在哪里运行还不确定,这时就需要端口号来帮助我们确定具体的应用程序。

格式:

端口号是0~65535范围内的数字。至于为什么是这个范围,可以看一下为什么端口号最大为65535? - 日行一善g - 博客园 这篇文章。

协议
概念:

协议简单来说就是约定。网络协议是网络通信经过的所有网络设备都必须要遵守的一组约定。只有遵守了这个约定,计算机和计算机之间才能相互交流。

协议通常由三要素组成:

  1. 语法:数据与控制信息的格式或者结构。如:在打电话时,电话双方要使用相同的语言。

  1. 语义:要做什么,完成何种动作以及做出哪种反应。

  1. 时序:事情实现顺序的详细说明。(何时进行通信,先讲什么后讲什么)

作用:

类似于:让不同厂商生产的计算机之间能够进行流畅的通信这样的作用。

协议分层
概念:

在网络通信需求场景复杂的情况下,实现的功能呢也会比较复杂,也就是说协议也会变得复杂。

这时,针对这个复杂的大协议,将之拆分成若干个相对简单的小协议,随着将协议拆分成小协议(每个协议负责一部分的功能),此时可以发现某些小协议之间,起到的作用和功能是类似的。针对这些小协议再进行“分类”(将功能才不多的协议放在同一层)。

作用:
  1. 降低了学习和维护的成本。

  1. 可以灵活的针对某一层的协议进行替换。

最重要的就是TCP/IP五层(四层)模型和OSI七层模型。但是OSI七层模型目前只存在于课本中,所以我们重点了解TCP/IP五层(四层)模型。

TCP/IP五层(四层)模型

物理层:约定了网络通信中的基础硬件设备是什么样的。

数据链路层:相邻两个节点之间如何去传输。

网络层:负责地址管理和路由管理。

传输层:端到端之间的传递。

应用层:负责应用程序间沟通。

客户端

就是发送方,发送指令到服务器。

服务器

就是接收方,接收客户端的指令对其进行响应。

当然,客户端和服务器都是相对而言的。

请求

类似于在浏览器的搜索栏输入想要搜索的内容,然后敲回车。

响应

类似于敲回车后,浏览器页面向用户反馈的内容。

两台主机之间的网络通信流程

以QQ为例,A给B发送一个hello。

发送方

1.应用层

用户在输入栏输入hello这个字符串,QQ这个应用程序将这个字符串给构造成一个应用层数据报。

所谓的“应用层数据报”本质上就是一个遵守了约定格式的字样。

但是这个约定的格式只有开发该程序的程序员知道,所以我们在这里假设一下,假设这个格式为:发送方QQ号;发送时间;接收方QQ号;消息内容。

程序要调用操作系统的api,把这个应用层数据报交给传输层。

2.传输层

在传输层中,要把上述应用层数据,构造成传输层数据报。

传输层使用到的协议,最出名的就是UDP和TCP协议,比如此处是使用UDP,就要构造UDP数据报(在应用层数据基础上,加上UDP报头)

这是另一个特定格式的字符串,此处就像字符串拼接一样,将报头和后面的数据拼接到一起。

所谓的报头就是一个标签,通过标签表示出当前要把这个消息怎么去进行传输。

传输层将上面这个UDP数据报交给网络层。

3.网络层

网络层最知名的协议是IP协议。

IP协议要基于上述数据打包成一个IP数据报。

这个也相当于是一个字符串,包含了另外一组的信息。

网络层数据报准备好,还需要进一步交给数据链路层。

4。数据链路层

数据链路层最知名的协议是“以太网”。

基于上述过程,还要打包成一个“以太网数据帧”。

接下来这个数据要继续往下层传递,交给物理层。

5.物理层

将上述二进制的数据转换成电信号/光信号。此时才是真正的将数据发送了出去。

封装

以上过程,从应用层到物理层,“层层加码”的这个过程称为“封装”。

接收方

1.物理层

网卡接收到的是光信号和电信号,是在物理层把这个信号转换成二进制数据的。

转换回的这个数据其实就是一个以太网数据帧。

将这个二进制数据传给数据链路层。

2.数据链路层

数据链路层需要去掉这个数据的帧头和帧尾,取出中间的载荷,交给更上层的网络层IP协议,以太网数据帧帧头里也会记录这个载荷是不是应该IP数据报。

3.网络层

IP协议对这个数据继续进行解析,解析出IP报头,取出IP协议的载荷,把这里得到的数据报再向上传递给上层传输层。

IP数据报里面记录,载荷是UDP还是TCP。

4.传输层

UDP再进行解析,取出报头,取出载荷,交给对应的应用程序。

UDP报头里面有一个重要的字段“目的端口”。目的端口是和一个具体的应用程序关联在一起的,因此可以根据这个端口来把数据交给应用程序。

5.应用层

qq应用程序会根据这个应用层协议对这个数据进行解析,显示到页面上。

至此,A向B传输一个hello这个过程完毕。

分用

上述过程中,从下到上层层解析,这个过程称为“分用”。

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

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

相关文章

2.2 SQL入门和实战

文章目录数据库介绍MySQL的入门应用SQL的基础与DDLSQL的分类:SQL的基础语法特性:DDL库管理:DDL表管理:SQL-DMLSQL-DQLDQL基础查询DQL分组聚合排序分页Python&MySQLcommit数据库介绍 数据库的层级:按照库->表-&…

WAL Write AheadLog

WAL即 Write Ahead Log,WAL的主要意思是说在将元数据的变更操作写入磁盘之前,先预先写入到一个log文件中 磁盘读取分为顺序读取和随机读取 内存读取也有顺序读取和随机读取 下图是磁盘,内存 顺序和随机读取的效率表 一般来说内存读取速度要…

硬件设计基础 —— 电流、电压、功率

目录 电流的形成 原子的结构 原子核与电子 电子的移动 电流的测量 电子的运动形成电流 电压的作用 功率 电流的形成 原子的结构 上图为原子结构示意图中间带正电的称为原子核带负电荷的电子围绕在他周围旋转原子核与电子 电子离原子核越远,外围电子越少&…

Cadence PCB仿真使用Allegro PCB SI进行数字电路毛刺容差设置的方法图文教程

⏪《上一篇》   🏡《总目录》   ⏩《下一篇》 目录 1, 概述2,配置方法3,总结1, 概述 数字信号的波形往往不是完美的低和高电平,经常会有一些毛刺。这在信号完整性仿真中也经常遇到,为了保证仿真顺利进行需要对接收电路的毛刺容差进行设置。本文简单介绍其配置方法。…

COCO_02 二值分割数据集制作为COCO数据集

文章目录1 前言2 分割数据集格式2.1 原始图像2.2 分割标注2.3 文件名信息3 制作COCO格式基本流程4 根据分割标注制作COCO标注(核心)Main1 前言 最近要开始实例分割任务,由于实例分割是建立再目标检测基础之上的,因此需要制作能用…

两道一年级数学题把我干废了

目录一、背景二、题目三、过程第一解:第二解:第三解:四、总结五、升华一、背景 最近在看小学一年级数学课本的时候,其中两道题让我感叹现在小学教育题的伟大和深厚,并且从中领悟到了…哈哈哈,先卖个官司&a…

【Ansible】Ansible 角色

Ansible 角色 文章目录Ansible 角色一、Ansible Roles 介绍二、Roles 结构三、role 的制作过程四、如何在PlayBook中使用 Role1. 经典(原始)方式2. 新方式五、如何使用 Galaxy一、Ansible Roles 介绍 一个数据中心有可能存在好多类型的服务器。比如&…

【博客588】ipvs nat模式下独立于iptables与conntrack的连接跟踪表和NAT机制

ipvs nat模式下独立于iptables与conntrack的连接跟踪表和NAT机制 ipvs的连接跟踪表和NAT机制 ipvs只有DNAT和de-DNAT功能 ,它独立与iptables和conntrack,实现了自己的一套连接跟踪表和NAT机制。ipvs仅仅在做DNAT后对conntrack连接进行更新,防止回包因为没有记录而被丢弃。 i…

邂逅Vue.js开发

1、认识Vue Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式 JavaScript框架。 全称是Vue.js或者Vuejs;它基于标准 HTML、CSS 和 JavaScript 构建,并提供了一套声明式的、组件化的编程模型;帮助你高效地开发用户…

学习笔记 一天学完JavaScript基础语法(全)

JavaScript 文章目录JavaScript第一章——初始JavaScript1.1 浏览器执行 JS 简介1.2 JS的组成1.2.1 ECMAScript1.2.2 DOM ——文档对象模型1.2.3 BOM ——浏览器对象模型1.3 JS的写法1.3.1 行内式写法1.3.2 内嵌式写法1.3.3 外部js文件1.4 注释1.5 变量1.5.1 变量声明1.5.2 变量…

【源码解析】Nacos配置中心的源码解析

POM文件添加依赖 <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency>在依赖中查看自动装配文件spring.factories org.springframework.cloud.bootstr…

String类详解

在Java编程中&#xff0c;除Object类外&#xff0c;最常用的类就是String类了。本文将从String类源码出发&#xff0c;对String类进行一个全面的分析&#xff0c;以帮忙我们更好的理解和使用String类。 String类概述 Java 使用 String 类代表字符串。Java 中的所有字符串字面…

已解决MemoryError

已解决Python读取20GB超大文件报错&#xff1a;MemoryError 文章目录报错问题报错翻译报错原因解决方法1解决方法2&#xff08;推荐使用&#xff09;帮忙解决报错问题 日常数据分析工作中&#xff0c;难免碰到数据量特别大的情况&#xff0c;动不动就2、3千万行&#xff0c;…

Linux——网络配置篇

1、前情提要&#xff1a; 今晚在配置Linux &#xff08;CentOS7完整版&#xff09;的时候 明明已经配好了网络环境&#xff0c;重启虚拟机后&#xff0c;又出现了Ping不通 主机、Ping不通网关&#xff0c;外网的情况 &#xff08;NAT&#xff09;。 让我很费解的一个情况是&am…

数据结构与算法基础(王卓)(8):线性表的应用

PPT&#xff1a;第二章P173&#xff1b; 并集集合&#xff1a;线性表的合并&#xff08;无需有序&#xff0c;不能重复&#xff09; 线性表&#xff1a; Status Union(Sqlist& A, Sqlist& B)//并集 {int len_A A.length;int len_B B.length;for (int i 1; i < …

SpringCloud学习(1)

SpringCloud学习 软件架构演进之路 对于单体架构&#xff0c;我们根据设计期和开发实现期的不同模式和划分结构&#xff0c;可以分为&#xff1a; 简单单体模式&#xff1a; 代码层面没有拆分&#xff0c;所有的业务逻辑都在一个项目&#xff08;Project&#xff09;里打包…

​力扣解法汇总2293. 极大极小游戏

目录链接&#xff1a; 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目&#xff1a; https://github.com/September26/java-algorithms 原题链接&#xff1a; 力扣 描述&#xff1a; 给你一个下标从 0 开始的整数数组 nums &#xff0c;其长度是 2 的幂。 对 n…

伪随机码序列

伪随机码又称伪随机序列&#xff0c;是用确定性方法产生的在一段周期内具有类似白噪声的随机特性的二&#xff08;或多&#xff09;进制数据序列。 伪随机序列在码分复用、码分多址和扩频通信中都有重要应用。常用的伪随机序列有m序列、M序列和Gold序列。 作为地址码和扩频码…

pycharm中commit/push撤销+分支合并

一、现在想撤销到打印3怎么操作&#xff1f; 1复制修订号 2鼠标右键 3去项目下执行git bash here&#xff0c;再输入git push -f 4此时&#xff0c;github中的push就已经回退成功&#xff1b;再进行一次新代码的commit和push&#xff0c;master分支的颜色就变成黄色了&#x…

Windows中安装 MySQL8.0.30 数据库

下载安装文件 访问MySQL官网下载安装文件https://downloads.mysql.com/archives/community/。 如下图所示&#xff0c;点击页面中的“DOWNLOAD”按钮。 然后&#xff0c;会出现如下所示页面&#xff0c;点击页面底部的“No thanks, just start my download”&#xff0c;就可…