网络初识

一 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.hqwc.cn/news/115505.html

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

相关文章

在github上设置不同分支,方便回滚

在github上设置不同分支,方便回滚 步骤可能出现的问题couldnt find remote ref gpuVersion1. 确保您处于正确的分支2. 添加并提交更改(如果还未进行)3. 推送本地分支到远程仓库4. 验证操作 步骤 之前在github上上传了一个项目代码&#xff0c…

GitHub Copilot Chat

9月21日,GitHub在官网宣布,所有个人开发者可以使用GitHub Copilot Chat。用户通过文本问答方式就能生成、检查、分析各种代码。 据悉,GitHub Copilot Chat是基于OpenAI的GPT-4模型打造而成,整体使用方法与ChatGPT类似。例如&…

多模态 多引擎 超融合 新生态!2023亚信科技AntDB数据库8.0产品发布

9月20日,以“多模态 多引擎 超融合 新生态”为主题的亚信科技AntDB数据库8.0产品发布会成功举办,从技术和生态两个角度全方位展示了AntDB数据库第8次大型能力升级和生态建设成果。浙江移动、用友、麒麟软件、华录高诚、金云智联等行业伙伴及业界专家共同…

JavaScript - canvas - 将图片保存到本地

效果 示例 项目结构&#xff1a; 源码&#xff1a; <!DOCTYPE html> <html><head><meta charset"utf-8"><title>将图片保存到本地</title></head><body><canvas id"canvas"></canvas><b…

【校招VIP】前端计算机网络之HTTP和HTTPS

考点介绍&#xff1a; 为了解决HTTP协议的缺陷&#xff0c;需要使用另一种协议&#xff1a;安全套接字层超文本传输协议HTTPS&#xff0c;为了数据传输的安全&#xff0c;HTTPS在HTTP的基础上加入了SSL/TLS协议&#xff0c;SSL/TLS依靠证书来验证服务器的身份&#xff0c;并为浏…

spring:实现初始化动态bean|获取对象型数组配置文件

0. 引言 近期因为要完成实现中间件的工具包组件&#xff0c;其中涉及要读取对象型的数组配置文件&#xff0c;并且还要将其加载为bean&#xff0c;因为使用了spring 4.3.25.RELEASE版本&#xff0c;很多springboot的相关特性无法支持&#xff0c;因此特此记录&#xff0c;以方…

ffmpeg抠图

1.不用png&#xff0c;用AVFrame 2.合流 3.图片抠图透明 (1.)mp4扣yuv图&#xff0c;(2)用1.把一张yuv标记为透明然后av_hwframe_transfer_data到GPU (3)用抠图算法函数对yuv进行处理 (4) qsv的h264_qsv只支持nv12和qsv&#xff0c;但qsv本身并不限制像素格式&#xff0c;比如在…

2023版 STM32实战3 按键外部中断(电路与代码都讲解)

常规电路(带上拉电阻) 阻值可选3.3/4.7/5.1/10 单位K 偷懒电路 利用GPIO内部的上拉模式 代码&#xff08;直接拷贝使用&#xff09; 这是一个外部中断控制变量a增加减少的demo 为了新手方便我直接都写在了main.c文件 #include "stm32f10x.h"u8 keyflag0; u8 a0…

鼠标拖拽拖动盒子时,与盒子内某些点击事件冲突问题解决

目录 问题解决思路解决代码&#xff08;标注【主要代码】的为重点&#xff09; 问题 拖动该悬浮球时&#xff0c;鼠标弹起可能会触发悬浮球内事件 解决思路 鼠标拖动盒子时&#xff0c;将 isMove 设为 true 意为正在拖动盒子&#xff0c;此时将 class"btns_move" 遮…

采用cv2和默认的人脸识别分类器实现人脸检测功能

人脸识别分类器 haarcascade_frontalface_default 提示&#xff1a;分类器文件地址在这里&#xff1a;https://github.com/opencv/opencv/blob/687fc11626901cff09d2b3b5f331fd59190ad4c7/data/haarcascades/haarcascade_frontalface_default.xml 文章目录 人脸识别分类器 haar…

终于把量化入门了,实盘权限已开,学习这件事也不难

多数人18岁就死了&#xff0c;但直到75岁才埋。 ——网易云热评《杀死那个石家庄人》 猫猫挺喜欢这句话的&#xff0c;为什么只活动75岁&#xff0c;于是我查了查现如今78.6岁&#xff0c;大差不差的。 那扣扣减减&#xff0c;人生短短57年&#xff0c;唯一十八岁那年&#xff…

C# 查找迷宫路径

1.导入图像&#xff0c;并且将图像转灰度 using var img new Image<Bgr, byte>(_path); using var grayImg img.Convert<Gray, byte>(); 2.自动二值化图像 using var inputGrayOut new Image<Gray, byte>(grayImg.Size); // 计算OTSU阈值 var threshol…