网络初识

一 IP 地址

概念:

IP 地址主要用于表示网络主机、其他网络设备(如路由器)的网络地址。简单说,IP地址用于定位主机的网络地址

格式

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

特殊IP

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

本机环回主要用于本机到本机的网络通信(系统内部为了性能,不会走网络的方式传输),对于开发网络通信的程序(即网络编程)而言,常见的开发方式就是本机到本机的网络通信。

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

二 端口号

概念

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

类似发送快递时,不光需要指定收获地址(IP地址),还需要指定收货人(端口号)。

格式

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

注意事项

两个不同的进程,不能同时绑定同一个端口号,但一个进程可以绑定多个端口号。

扩展:

一个进程启动后,系统会随机分配一个端口(启动端口)

程序代码中,进行网络编程时,需要绑定端口号(收发数据的端口)来发送、接收数据。

进程绑定一个端口号后,fork 一个子进程,可以实现多个进程绑定一个端口号,但不同的进程不能绑定同一个端口号。

三 TCP/IP 五层模型

• 应用层:关注传输过来的数据是干啥用的

• 传输层:不考虑中间路径,只关注起点和终点

• 网络层:主要负责两个遥远节点之间,路径的规划

• 数据链路层:主要关注的是两个相邻节点之间的传输

• 物理层:  网络通信的基础设施。网线,光纤,网络接口

封装与分用

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

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

• 首部信息包含了一些类似首部有多长,载荷有多长,上层协议是什么等信息

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

封装:发送方发送数据,要把数据从上到下,依次交给对应的层次的协议,进行封装

分用:接收方收到数据,要把数据从下到上,依次交给对应的层次的协议,进行分用

3.1 封装 

以 QQ 发消息为例,再编辑框输入一个消息:helloworld

3.1.1 应用层

应用层(qq应用程序)拿到上述用户数据,进行封装,封装成应用层数据包~

3.1.2 传输层 

应用层需要调用传输层的 api ,来处理这个数据,传输层有很多协议,最典型的时 TCP和 UDP

以 UDP 为例

UDP 针对上述数据包再进行封装

3.1.3 网络层 

UDP 数据报,已经有了,接下来就要把这个数据报交给网络层的协议。网络层最常见的协议,就是IP协议

上述 UDP 数据报,到达网络层,还需要进一步的封装,添加上IP协议报头

源 ip 和目的 ip 描述了这次传输中,最初的起点和终点

3.1.4 数据链路层

最典型的协议,叫做以太网,(数据链路层+物理层),最常见的数据链路层的网络,平时使用网线上网,就是在用以太网。

mac 地址,也叫做物理地址,也是描述一个主机,在网络上的位置,它的功能和 IP 很相似。但是当下就把这两个地址分别用于不同的用途,IP 用来进行网络层的路径规划,mac 用来进行描述数据链路层,两个即将进行传输的相邻节点。

3.1.5 物理层 

数据链路层就要把上述以太网数据帧交给物理层了。物理层要把上述 0101 的二进制数据转换成光信号\电信号\电磁波信号,进行传输了。

3.2 分用

3.2.1 物理层

网卡,收到高低电平二进制数据,就会对这里的信号进行解析,还原成 0101 这样的二进制序列。

3.2.2 数据链路层

此时把上述 0101 这系列数据当作一个以太网数据帧(此处是从以太网线,收到的数据,就是要交给以太网协议来处理了)

把帧头去掉,帧尾去掉,取出中间的载荷,再往上交给网络层。

以太网数据帧帧头中有一个消息类型,根据这个类型就知道了网络层 IP 协议了。

3.2.3 网络层 

此时就有网络层 IP协议进行解析数据报,也是去掉 IP 报头,同时会做一些工作

最重要的还是=取出载荷,交给更上层的传输协议。

3.2.4 传输层

此处是由 UDP 来解析处理,还是去掉报头,取出载荷,把数据交给应用层。

借助端口号来区分具体的应用程序,每个接收网络数据的程序都要关联上一个端口号。

3.2.5 引用层

 由 qq 这个程序,进行解析应用层数据报,取出上述字段,放到程序的界面中。

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

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

相关文章

23. 图论 - 图的由来和构成

文章目录 图的由来图的构成Hi, 你好。我是茶桁。 从第一节课上到现在,我基本上把和人工智能相关的一些数学知识都教给大家了,终于来到我们人工智能数学的最后一个部分了,让我们从今天开始进入「图论」。 图论其实是一个比较有趣的领域,因为微积分其实更多的是对应连续型的…

[Linux入门]---Linux项目自动化构建工具-make/Makefile

目录 1.背景2.make指令输入make默认为Makefile文件第一条指令执行Makefile文件对gcc指令特殊处理及原理特殊符号 3.总结 1.背景 会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力一个工程中的源文件不计数,其按类型、功能、模块分别放…

Lua学习笔记:词法分析

前言 本篇在讲什么 Lua的词法分析 本篇需要什么 对Lua语法有简单认知 对C语法有简单认知 依赖Visual Studio工具 本篇的特色 具有全流程的图文教学 重实践,轻理论,快速上手 提供全流程的源码内容 ★提高阅读体验★ 👉 ♠ 一级标题…

207.Flink(二):架构及核心概念,flink从各种数据源读取数据,各种算子转化数据,将数据推送到各数据源

一、Flink架构及核心概念 1.系统架构 JobMaster是JobManager中最核心的组件,负责处理单独的作业(Job)。一个job对应一个jobManager 2.并行度 (1)并行度(Parallelism)概念 一个特定算子的子任务(subtask)的个数被称之为其并行度(parallelism)。这样,包含并行子任…

【方案】浅析AI视频分析与视频监控技术的工厂车间智能化监管方案

一、方案背景 工厂生产车间一般是从原材料到成品的流水作业,有大量器械和物料。为保障车间财产安全并提高生产效率,需要进行全面的监管。在生产制造流水线的关键工序中,不仅有作业过程监管需求,同时,也存在生产发生异…

第七章 查找

一、树形查找-二叉排序树和红黑树 二叉排序树 // 二叉排序树节点 typedef struct BSTNode{ElemType key;struct BSTNode *lchild, *rchild; } BSTNode, *BSTree;五叉查找树 // 5叉排序树的节点定义 struct Node{ElemType keys[4]; // 5叉查找树一个节点最多4个关键字struct…

【二、安装centOS】

下载 地址:https://mirrors.aliyun.com/centos/ 地址 1、https://mirrors.aliyun.com/centos/7.9.2009/ 2、https://mirrors.aliyun.com/centos/7.9.2009/isos/ 3、https://mirrors.aliyun.com/centos/7.9.2009/isos/x86_64/ 选哪一个 可以选择第一个&#xff0…

Openresty(二十二)ngx.balance和balance_by_lua终结篇

一 灰度发布铺垫 ① init_by_lua* init_by_lua init_by_lua_block 特点: 在openresty start、reload、restart时执行,属于master init 阶段机制: nginx master 主进程加载配置文件时,运行全局Lua VM级别上的参数指定的Lua代码场景: …

java版Spring Cloud+Mybatis+Oauth2+分布式+微服务+实现工程管理系统

鸿鹄工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离构建工程项目管理系统 1. 项目背景 一、随着公司的快速发展,企业人员和经营规模不断壮大。为了提高工程管理效率、减轻劳动强度、提高信息处理速度和准确性,公司对内部工程管…

(二)随机变量的数字特征:探索概率分布的关键指标

文章目录 🍋1. 随机变量的数学期望🍋1.1 离散型随机变量的数学期望🍋1.2 连续型随机变量的数学期望 🍋2. 随机变量函数的数学期望🍋2.1 一维随机变量函数的数学期望🍋2.2 二维随机变量函数的数学期望 &…

基于SpringBoot的网上超市系统的设计与实现

目录 前言 一、技术栈 二、系统功能介绍 管理员功能实现 用户功能实现 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 网络技术和计算机技术发展至今,已经拥有了深厚的理论基础,并在现实中进行了充分运用,尤其是基于计…

linux升级glibc-2.28

1.准备工作 1.1升级gcc到gcc8 # 安装devtoolset-8-gcc yum install centos-release-scl yum install devtoolset-8 scl enable devtoolset-8 -- bash# 启用工具 source /opt/rh/devtoolset-8/enable # 安装GCC-8 yum install -y devtoolset-8-gcc devtoolset-8-gcc-c devtoolse…

open62541开发:添加sqlite3 历史数据库

历史数据库在OPCUA 应用中十分重要,例如OPCUA 网关和OPCUA 汇聚服务器中都需要历史数据库功能。但是open62541 协议栈中仅包含了基于内存的历史数据库,在实际应用中是不够的。本博文讨论open62541 中添加sqlite3 为基础的历史数据库若干问题。 借鉴 Gi…

某手新版本sig3参数算法还原

Frida Native层主动调用 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81…

Lua学习笔记:探究package

前言 本篇在讲什么 理解Lua的package 本篇需要什么 对Lua语法有简单认知 对C语法有简单认知 依赖Visual Studio工具 本篇的特色 具有全流程的图文教学 重实践,轻理论,快速上手 提供全流程的源码内容 ★提高阅读体验★ 👉 ♠ 一级…

ruoyi框架修改左侧菜单样式

菜单效果 ruoyi前端框架左侧的菜单很丑,我们需要修改一下样式,下面直接看效果。 修改代码 1、sidebar.scss .el-menu-item, .el-submenu__title {overflow: hidden !important;text-overflow: ellipsis !important;white-space: nowrap !important;//…

微软宣布推广数字助理 Copilot;GPT 应用开发和思考

🦉 AI新闻 🚀 微软宣布推广基于生成式人工智能的数字助理 Copilot 摘要:微软宣布将基于生成式人工智能的数字助理 Copilot 推广到更多软件产品中。新的 AI 助理 Microsoft Copilot 将在 Windows 中无缝可用,包括 Windows 11 桌面…

【C++面向对象侯捷】12.虚函数与多态 | 13.委托相关设计【设计模式 经典做法,类与类之间关联起来,太妙了,不断的想,不断的写代码】

文章目录 12.虚函数与多态举例:委托 继承【观察者模式】13.委托相关设计Composite 组合模式Prototype 原型模式 12.虚函数与多态 纯虚函数 一定要 子类重新定义的 继承和复合 关系下的构造和析构 举例:委托 继承【观察者模式】 13.委托相关设计 问题…

BOM与DOM--记录

BOM基础(BOM简介、常见事件、定时器、this指向) BOM和DOM的区别和联系 JavaScript的DOM与BOM的区别与用法详解 DOM和BOM是什么?有什么作用? 图解BOM与DOM的区别与联系 BOM和DOM详解 JavaScript 中的 BOM(浏览器对…

蓝桥杯 题库 简单 每日十题 day8

01 扫雷 题目描述 在一个n行列的方格图上有一些位置有地雷,另外一些位置为空。 请为每个空位置标一个整数,表示周围八个相邻的方格中有多少个地雷。 输入描述 输入的第一行包含两个整数n,m。 第2行到第n1行每行包含m个整数,相邻整…