网络编程(一)

网络编程(一)

  • 网络基础
    • 网络体系结构
    • **OSI的7层模型**:(理想化)
      • **每层的功能**
    • **TCP/IP的4层模型**:(在使用)
    • 常见的协议
    • IP地址
      • IPV4
        • 分类
        • A类(第1位固定为0)
        • B类(第1,2位固定为10)
        • C类(前3位固定为110)
        • D类(组播地址)(前4位固定为1110)
        • E类(保留地址)(前四位固定为1111)
      • IPV6
      • 网络协议
      • 端口号
        • 范围
    • 字节序
      • 主机字节序
      • 网络字节序(**本身大端序**)
      • 主机字节序转化成网络字节序(htons/htonl)
      • 网络字节序转化为主机字节序(ntohl/ntohs)
      • 如何实现网络通讯
      • 封包解包

网络基础

网络体系结构

定义:网络的分层模型和每层所使用的协议的集合

网络体系结构有两种:OSI的7层模型和TCP/IP的4层模型
在这里插入图片描述

OSI的7层模型:(理想化)

开放系统互连参考模型 (Open System Interconnect 简称OSI

七层(应用层、表示层、会话层、传输层、网络层、数据链路层、物理层)
在这里插入图片描述

每层的功能

物理层:定义物理设备的标准,主要对物理连接方式,电气特性,机械特性等制定统一标准,传输比特流,因此最小的传输单位——位(比特流)

数据链路层:主要是对物理层传输的比特流包装,检测保证数据传输的可靠性,将物理层接收的数据进行MAC(媒体访问控制)地址的封装和解封装,也可以简单的理解为物理寻址。交换机就处在这一层,最小的传输单位——帧

网络层:控制子网的运行,如逻辑编址,分组传输,路由选择最小单位——分组(包)报文

传输层:定义一些传输数据的协议和端口。传输协议同时进行流量控制,或是根据接收方接收数据的快慢程度,规定适当的发送速率,解决传输效率及能力的问题——tpdu

会话层:负责在网络中的两节点建立,维持和终止通信,在一层协议中,可以解决节点连接的协调和管理问题。包括通信连接的建立,保持会话过程通信连接的畅通,两节点之间的对话,决定通信是否被终端一斤通信终端是决定从何处重新发送,最小单位——spdu

表示层:确保一个系统的应用层发送的消息可以被另一个系统的应用层读取,编码转换,数据解析,管理数据的解密和加密,最小单位——ppdu

应用层:文件传输,文件管理,电子邮件的信息处理

在这里插入图片描述
TCP/IP协议:
在这里插入图片描述

TCP/IP的4层模型:(在使用)

“四层”:应用层,传输层,网络层,网络接口和物理层
在这里插入图片描述
TCP/IP与OSI参考模型的对应关系
在这里插入图片描述

常见的协议

IP(27)、tcp(77)、udp(110)、ping(64)
在这里插入图片描述

IP地址

定义:在网络中唯一标识一台主机的符号

MAC地址–》物理地址(硬件地址),唯一标识一台主机的符号

在这里插入图片描述

IPV4

4代表

  1. (版本号)
  2. (IPV4协议维护的IP地址的宽度是4byte=32bit)所以IPV4地址有2^32次方个,范围是0.0.0.0~255.255.255.255
分类

在这里插入图片描述

A类(第1位固定为0)

范围:0.0.0.0~127.255.255.255

A类地址 = 网络号(8bit)+主机号(24bit)

  1. A类地址网络号第一位固定为0,其他七位可以分配,主机号长度为24位
  2. 网络号分配的数量为2^7 = 128,地址范围为:1.0.0.0~127.255.255.255
  3. 10.0.0.0-10.255.255.255是私有地址(所谓的私有地址就是在互联网上不使用,而被用在局域网络中的地址,路由器接收到私有地址,不会向Internet转发该分组,私有地址与NAT相关)
  4. 127.0.0.0-127.255.255.255是保留地址,用做循环测试用的
  5. 0.0.0.0—0.255.255.255也保留用作特殊用途
  6. 因此网络号可分配的只有128-3 =125个,每个网络段的主机号可以分配的只有 2^24-2=16777214个(主机号全0和主机号全1保留
B类(第1,2位固定为10)

范围:128.0.0.0~191.255.255.255

B类地址 = 网络号(16bit)+主机号(16bit)

  1. B类地址网络号第1,2位固定为10,其它14位可以分配,主机号长度为16位
  2. 地址范围为:128.0.0.0—191.255.255.255
  3. 172.16.0.0—172.31.255.255是私有地址
  4. 169.254.0.0—169.254.255.255是保留地址(如果你的IP地址是自动获取IP地址,而你在网络上又没有找到可用的DHCP服务器。就会得到其中一个IP)
  5. 每个网络段可分配的主机号为2^16 - 2 = 65534(主机号全0和主机号全1保留
C类(前3位固定为110)

范围192.0.0.1 ~ 223.255.255.254(全0全1不用和1号地址)

2^8-3个主机

C类地址 = 网络号(24bit)+主机号(8bit)

  1. C类地址网络号前3位固定为110,其它21位可以分配,主机号长度为8位
  2. C类地址范围:192.0.0.0—223.255.255.255
  3. 192.168.0.0—192.168.255.255是私有地址
  4. 网络号可分配的块数为2^21 = 2097152,每个网络号可分配的主机号数为2^8-2 = 254(主机号全0和主机号全1保留)

在这里插入图片描述

D类(组播地址)(前4位固定为1110)

范围224.0.0.1 ~ 239.255.255.254

D类IP地址不标志网络,前4位固定为1110,地址范围为:224.0.0.0—239.255.255.255,用作特殊用途,如多播地址

E类(保留地址)(前四位固定为1111)

240~保留地址

E类地址不分网络地址和主机地址,它的第1个字节的前四位固定为1111。E类地址范围:240.0.0.0—255.255.255.255,用于某些实验和将来使用

总结:

  1. A类地址的第1块网络号和第2块网络号要保留
  2. ABC三类地址的主机号全0和全1都保留,主机号全1为子网广播地址,主机号全0为子网网络地址(一个网段中第一个IP地址为网络地址)

ABC三类地址中的特殊IP地址

  1. 直接广播地址
    如果主机号全1,例如191.1.255.255,那么这个地址为直接广播地址路由器将这个分组以广播的形式发送到网络号位191.1.x.x的全部主机
  2. 受限广播地址
    网络号与主机号的32位全为1(255.255.255.255)为受限广播地址用来将一个分组以广播方式发送给本网的所有主机
  3. “这个网络上的特定主机”地址
    网络号是全0 (如0.0.0.25) 的地址是这个网络号的特定主机地址路由器接到这样的分组,不向外转发,而是直接交付给本网络中主机号为25的主机
  4. 回送地址
    A类地址中127.0.0.0是回送地址,它是一个保留地址

IPV6

IPv6地址采用”冒号十六进制表示法“,将128位地址按每16位划分为一个位段,每个位段转换为一个4位的十六进制数

  1. 冒号十六进制表示法:
    21DA : 0000 : 0000 : 0000 : 02AA : 000F : FE08 : 9C5A

  2. 如果某段存在几位都是0的情况,可以使用零压缩法压缩:

    21DA : 0 : 0 : 0 : 2AA : F : FE08 : 9C5A

    零压缩法:00D3(D3),02AA(2AA),000A(A),0000(0),但是AB08不能压缩为AB8

  3. 如果存在几个连续位段都是0,可以用”双冒号表示法“(双冒号只能出现一次)

    21DA : :2AA : F : FE08 : 9C5A

    用”双冒号表示法“表示的一个问题:如何确定冒号省略的段数?
    8 - 现有段数 = 冒号省略的段数

网络协议

定义:在网络通信中对某种通信规则的约定
分类:

  1. 网络通用协议(TCP/IP协议)

  2. 行业专用协议

  3. 自定义协议

端口号

为了区分一台主机接受到的数据包应该转交给那个进程来进行处理,使用端口号来区别

TCP端口号与UDP端口号独立

端口号作用:用于区分应用程序

范围

端口号是一个16位的无符号整数,范围1-65535(0不用),其中1-1023已被占用。用户可用的是1024~65535之间

在这里插入图片描述
在这里插入图片描述

字节序

分类:主机字节序,网络字节序

主机字节序

概念:不同的CPU主机存储多字节整数的方式,有小端主机字节序和大端主机字节序(大小端由CPU决定)

小端序:将数据的低字节存放在内存的低地址

大端序:将数据的低字节存放在内存的高地址处
在这里插入图片描述
案例:验证虚拟机是大端序还是小端序

#include <stdio.h>
//功能:使用指针判断虚拟机是大端序还是小端序
int main(int argc, const char *argv[])
{int a = 0x12345678;char* p = &a;if(0x78 == *p){printf("虚拟机为小端序\r\n");}else{printf("虚拟机为大端序\r\n");}return 0;
}
#include <stdio.h>
//功能:使用共用体判断虚拟机是大端序还是小段序
typedef union myunion
{char a;int b;
}myunion;
int main(int argc, const char *argv[])
{myunion un;un.b = 0x12345678;if(0x78 == un.a){printf("虚拟机为小端序\r\n");}else{printf("虚拟机为大端序\r\n");}return 0;
}

在这里插入图片描述

网络字节序(本身大端序

把给定系统所采用的字节序称为主机字节序。为了避免不同类型主机之间在数据交换时由于对于字节序的不同而导致的差错,引入网络字节序

作用:用作适配不同类型的主机的主机字节序

提前转化:0x12345678–>转化0x78563412

主机字节序转化成网络字节序(htons/htonl)

u_long htonl(u_long hostlong);//32bit使用
u_short htons(u_short short);//小于32bit使用

网络字节序转化为主机字节序(ntohl/ntohs)

u_long ntohl(u_long hostlong);
u_short ntohs(u_short short);

如何实现网络通讯

在这里插入图片描述

封包解包

在这里插入图片描述
在这里插入图片描述

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

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

相关文章

大文件续传,文件分享

1. 最近各种文件分享平台&#xff0c;很多都要注册&#xff0c; 对于很多需要临时分享文件下的场景&#xff0c;不想被这种东西烦恼&#xff0c;于是借鉴网上代码&#xff0c;进行了一些修改&#xff0c; 写了一个文件分享项目&#xff0c; 该项目只是自用&#xff0c;数据库都…

Science Robotics 可实现中心聚焦与多光谱成像的鸟类视觉启发钙钛矿人工视觉系统

一、前沿速览 来自韩国基础科学研究所&#xff08;IBS&#xff09;纳米粒子研究中心的研究人员及其合作者提出了一个利用鸟类视觉注视点和多光谱成像的人工视觉系统。近日在Science Robotics 上发表的文章引入了人工中央凹和垂直堆叠的钙钛矿光电探测器阵列&#xff0c;其设计…

NLP基础——序列模型(动手学深度学习)

序列模型 定义 序列模型是自然语言处理&#xff08;NLP&#xff09;和机器学习领域中一类重要的模型&#xff0c;它们特别适合处理具有时间顺序或序列结构的数据&#xff0c;例如文本、语音信号或时间序列数据。 举个例子&#xff1a;一部电影的评分在不同时间段的评分可能是…

智慧校园的发展趋势

在21世纪的数字化浪潮中&#xff0c;教育领域正经历着前所未有的变革。智慧校园&#xff0c;作为这场变革的前沿阵地&#xff0c;其发展趋势正引领着未来教育的新模式。我们将探讨智慧校园在融合技术、全场景应用、生态建设、数据安全以及可持续发展等方面的崭新动向&#xff0…

特征交叉系列:FFM场感知因子分解机原理与实践

从FM到FFM知识准备 在上一节中[特征交叉系列&#xff1a;完全理解FM因子分解机原理和代码实战]介绍了FM算法&#xff0c;FM因子分解机通过在逻辑回归基础上增加所有特征的二阶交互项实现特征的交叉&#xff0c;但是随着特征数的增多二阶交互的数量呈平方级别增长&#xff0c;F…

ArcGIS模型构建器实例:一键拓扑(附模型下载)

ArcGIS模型构建器特别适用于流程固定的工作流。 要素的拓扑处理就非常符合这一特点&#xff0c;一个要素的拓扑过程基本固定&#xff0c;但是每次拓扑都要来一轮操作就很烦&#xff0c;这正是模型构建器的用武之地。 下面以ArcGIS Pro为例介绍在模型构建器中的整个拓扑流程&a…

CPU 使用率过高问题排查

文章目录 CPU 使用率过高问题排查1. CPU使用率过高常见问题2. 压力测试2.1 stress安装参数说明测试示例 2.2 stress-ng安装参数说明测试示例 3. 问题排查3.1 使用 top 命令3.2 使用 ps 命令3.3 使用 perf top3.4 vmstat 命令常用信息内存信息磁盘信息 CPU 使用率过高问题排查 …

第一篇 逻辑门(与门、或门、非门、异或门)

一、实验目的 了解DE1-SOC开发板一些外设。 掌握常用组合逻辑门电路的基本原理。 学习Verilog HDL的基本语法。 学习使用ModelSim工具对设计的电路进行仿真&#xff0c;包括编写Testbench仿真代码&#xff0c;以及ModelSim工具的使用。 熟悉使用Quartus软件从创建Quartus工…

算法金 | Python 中有没有所谓的 main 函数?为什么?

​大侠幸会&#xff0c;在下全网同名[算法金] 0 基础转 AI 上岸&#xff0c;多个算法赛 Top [日更万日&#xff0c;让更多人享受智能乐趣] 定义和背景 在讨论Python为何没有像C或Java那样的明确的main函数之前&#xff0c;让我们先理解一下什么是main函数以及它在其他编程语言…

javaweb——js

JavaScript是一种网页脚本语言。JavaScript代码可以很容易的嵌入到HTML页面中。 js引入 JavaScript嵌入到HTML页面中 <body><script>alert("Hello JS")</script> </body>再HTML页面中插入外部脚本JavaScript <body><script src&…

GIS数据快捷共享发布工具使用时注意事项

我们所有工具软件下载解压后&#xff0c;不要放在C盘或桌面&#xff0c;这样会产生权限冲突问题问题&#xff0c;这是WINDOWS的安全保护&#xff0c;大家要注意&#xff01;也不要让解压目录嵌套太深&#xff0c;Windows目录长度识别是有一定限制的!如果可以&#xff0c;最好是…

微收付系统让客户有钱花,让商家有钱赚!

微收付系统让客户有钱花&#xff0c;让商家有钱赚&#xff01; 作者按&#xff1a;随着那场呼啸全球的疫情&#xff0c;谜一样的消失&#xff01;给全球经济带来了沉重的打击&#xff0c;经济不振和战争笼罩着世界每一个角落&#xff0c;实体店面临着收款难&#xff0c;有钱人花…

C语言 数组——数组的其他应用之筛法求素数

目录 数组的其他应用 求100以内的所有素数 筛法求100以内的所有素数 自顶向下、逐步求精设计算法 数组的其他应用 求100以内的所有素数 筛法求100以内的所有素数 自顶向下、逐步求精设计算法 step 1&#xff1a;设计总体算法  初始化数组a&#xff0c;使a[2]2, a[3]3,..…

Flink系列六:Flink SQl 之常用的连接器(Connector)

一、动态表 & 连续查询(Continuous Query) 1、动态表&#xff08;Dynamic Tables&#xff09; 当流中有新数据到来&#xff0c;初始的表中会插入一行&#xff1b;而基于这个表定义的SQL查询&#xff0c;就应该在之前的基础上更新结果。这样得到的表就会不断地动态变化&…

SQL Developer 导入CSV数据

之前已经写过一篇文章&#xff1a;将文本文件导入Oracle数据库的简便方法&#xff1a;SQL Developer 本文是类似的&#xff0c;只不过使用的是官方提供的 CSV文件&#xff0c;确实是标准的CSV&#xff08;comma separated values&#xff09;。 COL1,COL2,COL3 "e40a9db…

2024年文艺文化与社会发展国际会议(ICLCSD 2024)

2024年文艺文化与社会发展国际会议 2024 International Conference on Literature, Culture and Social Development 【1】会议简介 2024年文艺文化与社会发展国际会议是一场汇集全球文艺文化和社会科学领域精英的盛会。本次会议以“文艺文化与社会发展”为主题&#xff0c;旨在…

[Java基础揉碎]坦克大战 java事件处理机制

目录 坦克大战游戏演示 ​编辑 为什么要写这个项目 java绘图坐标体系 java绘图技术 Graphics的常用方法 // 画直线 ​编辑 // 画矩形边框 // 画填充矩形 // 画填充椭圆 // 获取图片资源 // 写字 绘出坦克 新建一个tankgame包, 新建一个类Tank, 里面包含横…

01_初识微服务

文章目录 一、微服务概述1.1 什么是微服务1.2 对比微服务架构与单体架构1.3 微服务设计原则1.4 微服务开发框架1.5 简单理解分布式部署与集群部署 二、微服务的核心概念2.1 服务注册与发现2.2 微服调用&#xff08;通信&#xff09;2.3 服务网关2.4 服务容错2.5 链路追踪参考链…

CSAPP Lab04——Cache Lab大师手笔,匠心制作

浮沉浪似人潮 哪会没有思念 你我伤心到 讲不出再见 ——讲不出再见 完整代码见&#xff1a;CSAPP/cachelab-handout at main SnowLegend-star/CSAPP (github.com) Part A: Cache Simulator 这个lab描述背大锅&#xff0c;开始我是真有点没看懂题目的描述。特别是“M 20,1”“…

构建大型语言模型(LLM)产品的实战指南

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…