网络初识

一 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.mzph.cn/news/85325.shtml

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

相关文章

排序算法(一)

排序算法(一) 冒泡排序选择排序插入排序希尔排序堆排序 冒泡排序 冒泡排序是一种十分稳定的排序,其思想是通过两两比较,改变位置,从而每次让一个数出现在其该出现的位置该排序由于很稳定,所以不论数据是否有序&#xf…

什么是语法糖?Java中有哪些语法糖?

什么是语法糖?Java中有哪些语法糖? 语法糖 语法糖(Syntactic Sugar),也称糖衣语法,是由英国计算机学家 Peter.J.Landin 发明的一个术语,指在计算机语言中添加的某种语法,这种语法对…

小米笔试题——01背包问题变种

这段代码的主要思路是使用动态规划来构建一个二维数组 dp,其中 dp[i][j] 表示前 i 个产品是否可以组合出金额 j。通过遍历产品列表和可能的目标金额,不断更新 dp 数组中的值,最终返回 dp[N][M] 来判断是否可以组合出目标金额 M。如果 dp[N][M…

thinkphp8路由

thinkphp8已出来有好一段时间了。这些天闲来无事,研究了下tp8的路由。默认情况下,tp8的路由是在route\app.php的文件里。但在实际工作中,我们并不会这样子去写路由。因为这样不好管理。更多的,是通过应用级别去管理路由。假如项目…

2023华为杯研究生数学建模C题分析

完整的分析查看文末名片获取! 问题一 在每个评审阶段,作品通常都是随机分发的,每份作品需要多位评委独立评审。为了增加不同评审专家所给成绩之间的可比性,不同专家评审的作品集合之间应有一些交集。但有的交集大了,则…

conda的安装和使用

参考资料: https://www.bilibili.com/read/cv8956636/?spm_id_from333.999.0.0 https://www.bilibili.com/video/BV1Mv411x775/?spm_id_from333.999.0.0&vd_source98d31d5c9db8c0021988f2c2c25a9620 目录 conda是啥以及作用conda的安装conda的启动conda的配置…

redis如何清空当前缓存和所有缓存

Windows环境下使用命令行进行redis缓存清理 redis安装目录下输入cmdredis-cli -p 端口号flushdb 清除当前数据库缓存flushall 清除整个redis所有缓存keys * 查看所有key值del key 删除指定索引的值 注意: 我们清空缓存的时候,需要确保redis-…

JCEF中js与java交互、js与java相互调用

jcef中js与java相互调用,java与js相互调用,chrome与java相互调用,java与chrome相互调用、jcef与java相互调用 前提:https://blog.csdn.net/weixin_44480167/article/details/133170970(java内嵌浏览器CEF-JAVA、jcef、…

Go 常用命令介绍

Go 常用命令 文章目录 Go 常用命令一、Go 常用命令1.1 go build1.1.1 指定输出目录1.1.2 常用环境变量设置编译操作系统和 CPU 架构1.1.3 查看支持的操作系统和CPU架构 1.2 go test1.3 go vet1.4 go clean1.5 go fmt1.6 go get1.7 go install1.8 go tool1.9 go generate1.10 go…

智思Ai企联系统去授权版本+uniapp前后端(内含教程)

智思AI企联系统是一款企业级AI系统,与普通版AI产品相比具备显著差异。该系统允许企业按需选择和定制二开任意功能,以满足不同企业的个性化需求和场景要求。企业可以根据实际业务需求扩展和改进系统功能模块,使之更好地适应企业独特需求。

【word格式】mathtype公式插入 | 段落嵌入后格式对齐 | 字体大小调整 |空心字体

1. 公式嵌入 推荐在线latex编辑器,可以截图转 latex 识别率很高 https://www.latexlive.com/home 美中不足,不开会员每天只能用3次识别。 通过公式识别后,输出选择align环境,然后在mathtype中直接粘贴latex就可以转好。 2.公式…

网络爬虫——HTTP和HTTPS的请求与响应原理

目录 一、HTTP的请求与响应 二、浏览器发送HTTP请求的过程 三、HTTP请求方法 四、查看网页请求 五、常用的请求报头 六、服务端HTTP响应 七、常用的响应报头 八、Cookie 和 Session 九、响应状态码 十、网页的两种加载方法 十一、认识网页源码的构成 十二、爬虫协议…

【Linux 之二】Ubuntu下开发环境的搭建(NFS \ SSH \ FTP \ Smba \ ...)

目前正在进行Linux相关项目的开发,而我的Linux开发是在Ubuntu(版本20.04)下进行的,为此需要搭建很多Linux相关的开发环境,方便工作的进行。这里主要是对各种开发环境的搭建做一个总结记录,方便后面查阅&…

LeetCode【69. x 的平方根】

给你一个非负整数 x ,计算并返回 x 的 算术平方根 。 由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去 。 注意:不允许使用任何内置指数函数和算符,例如 pow(x, 0.5) 或者 x ** 0.5 。 示例 1&#xff1…

FPGA原理与结构(0)——目录与传送门

一、 简介 FPGA的设计和软件设计不同,我们所设计的RTL代码最终还是要落实到硬件底层来进行实例化,因此理解硬件底层的内容是很有意义的。 二、可编程逻辑块CLB 可配置逻辑块CLB(Configurable Logic Block)是xilinx系类FPGA的基本…

操作系统--------调度算法篇

目录 一.先来先服务调度算法(FCFS) 二.短作业优先调度算法(SJF) 2.1.SJF调度算法缺点 三.优先级调度算法 3.1优先级调度算法的类型 1.非抢占优先级调度算法 2.抢占优先级调度算法 3.2优先级的类型 3.1静态优先级 3.2动态…

肖sir__mysql之存储练习题__013

实验 一、 实验要求: 理解存储过程的概念掌握存储过程的语法格式、使用方法掌握存 储过程的创建、执行 二、实验前提: – drop table if exists student; – Create table student – (Id varchar(255), #学号 – Name varchar(255), #姓名 – Roomid…

生成式模型和判别式模型区别

目录 1.概念 2.定义​ 3.举例​ (1)例子 A​ (2)例子 B​ 4.特点 5.优缺点 6.代表算法 1.概念 首先我们需要明确,两种不同的模型都用于监督学习任务中。监督学习的任务就是从数据中学习一个模型,并用…

golang优先级坑

看如下代码,我本以为a1, a2是相同的 package mainimport "fmt"func main() {b, c, d : 1, 0, 1a1 : b ^ c&(^d) // 1 ^a2 : c ^ b&(^d) // 0 ^fmt.Println(a1, a2) // 1 0 }但结果却是不同的,在golang中&的优先级^和|…

使用 PyTorch 的计算机视觉简介 (1/6)

一、说明 Computer Vision(CV)是一个研究计算机如何从数字图像和/或视频中获得一定程度的理解的领域。理解这个定义具有相当广泛的含义 - 它可以从能够区分图片上的猫和狗,到更复杂的任务,例如用自然语言描述图像。 二、CV常见的问…