IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 地址族 与 网络字节序(大端序) -> 正文阅读

[网络协议]地址族 与 网络字节序(大端序)

?关于IP地址?和?端口号 的区别,下面分别用一句话概括:

IP是?Internet?Protocol(网络协议)的简写,是为收发网络数据 分配给计算机的值

端口号?并非赋予计算机的值,而是为区分程序中创建的套接字?而?分配给套接字的序号。?

一、网络地址

为了使计算机接入网络并收发数据,必须向其分配IP地址。?IP地址分为两种类型

IPv4 (Internet Protocol version 6)? ? ? ? ? ? ? 4个字节地址族

IPv6 (Internet Protocol version 6)? ? ? ? ? ? ? 6个字节地址族

IPv4?与?IPv6的主要区别是? 表示IP地址所用的字节数不同。

IPv4标准的4字节IP地址 分为 网络地址 和 主机地址 , 分为 A ,B ,C , D, E 等类型。

网络地址(网络ID)?与?IP地址 的作用:

IP是为了区分计算机 ,?网络ID 是为了区分网络而设置的一部分IP地址。

假设向? WWW.WECHAT.COM?网站传输数据,该公司内部构建了局域网,?把所有计算机连接起来。?数据传输的流程如下:?

????????首先向WECHAT.COM传输网络传输数据,浏览4字节IP地址的网络地址(网络ID),先把数据传到WECHAT.COM的网络。? 然后 WECHAT.COM网络接收到数据后浏览传输数据的主机地址(主机ID)?并将数据传给目标计算机

? ? ? ? 向相应网络传输数据 ,实际上是向构成网络的路由器?或?交换机 传递数据,由接收数据的路由器根据数据中的主机地址向目标主机传递数据。?

二、 网络地址分类?与?主机地址边界

通过?IP?地址的第一个字节即可判断网络地址占用的字节数,即?可以判断是属于哪类网络。

? ? ? ? A类地址的首字节范围: 0~127

? ? ? ? B类地址的首字节范围:128~191

? ? ? ? C类地址的首字节范围:192~223

?另一种描述:

? ? ? ? A类地址 第一个字节的最高位 是?0?开始

? ? ? ? B类地址 第一个字节的最高位?是?10?开始

? ? ? ? C类地址?第一个字节的最高位?是110 开始

A类地址:

????????可以容纳 16777214(256*256*256 -2 )台主机 (减2的原因是:全0的主机号字段表示该IP地址是"本主机"所连接到的单个网络地址 ;?全1表示"所有的",表示该网络上的所有主机)。?A类地址适用于有大量主机的大型网络。

B类地址:

????????一个B类IP地址由2个字节的网络地址和2个字节的主机地址组成,网络地址的最高位必须是“10”,即第一段数字范围为128~191。每个B类地址可连接65534(256*256-2, 因为主机号的各个位不能同时为0,1)台主机,Internet有16383(2^14)个B类地址?(128.0.0.0该网段已可以被指派)

C类地址:

????????C类地址适用于校园网和办公网络等小型网络,每个C类网络最多可以有254台计算机,这类地址是所有的地址类型中地址数最多的,但这类网络所允许连接的计算机是最少的。这类IP地址可分配给任何有需要的人。其中192.168.0.0~192.168.255.255为企业局域网专用地址段。

????????C类地址,最高的3位是110,随后的21位是网络地址,最后8位是本地地址。一个C类IP地址由3字节的网络地址和1字节的主机地址组成,网络地址的最高位必须是“110”。范围从192.0.0.0到223.255.255.255。C类网络可达209万余个,每个网络能容纳254个主机。

三、用于区分套接字的端口号

IP应用于区分计算机:拥有IP地址就能向目标计算机传输数据,但仅凭IP无法传输给最终的应用程序。

计算机的NIC(Network Interface Card,网络接口卡)?数据传输设备,通过NIC向计算机内部传输数据时会用到IP。?操作系统?负责把传递到内部的数据? 通过端口号?分配给套接字

??

?端口号是在同一个操作系统内为区分不同套接字而设置的,因此无法将1个端口号分配给不同的套接字。

端口号?由16位构成,可分配的端口号范围是:?0 — 65535

0 — 1023?是知名端口(Well-known PORT),一般分配给特定应用程序,所以应当分配此范围之外的值。

四、网络字节序

CPU向内存保存数据的方式有2种,同时也意味着CPU解析数据的方式有2种:

大端序(Big Endian):? ? ?高位字节 存放到 低位地址

小端序(Little Endian):? ?高位字节 存放到?高位地址

比如在0x20开始的地址中保存4字节int类型数? 0x12345678 ,

大端序CPU保存方式如下图:

小端序CPU保存方式如下图:

?目前主流的Intel系列 和?AMD系列 CPU?都采用 小端序方式保存数据。

?在两个设备进行通信的时候,如果未考虑大端序?和?小端序的问题,会出现收发错乱的问题。

在通过网络传输数据时约定为统一方式,统一为大端序,这种约定称为?网络字节序

即先把数据数组转化为大端序格式再进行网络传输。

五、字节序转换

?在Linux系统中 头文件 <arpa/inet.h>?中提供了相应的字节序转换函数 ,在windows操作系统中?头文件 <winsock2.h>?中提供了相应的字节序转换函数,?函数名称?和?形参 都是相同的。

unsigned short htons(unsigned short);

unsigned short ntohs(unsigned short);



unsigned long htonl(unsigned long);

unsigned long ntohl(unsinged long);

其中:

????????htons?中的 h?代表主机(host)字节序,n代表网络(network) 字节序。

? ? ? ? s代表short, l指的是long。htons是h、to、n、s 的组合,解释为“把short型数据从主机字节序转化为网络字节序”

? ? ? ? ntohs?解释为“把short型数据从网络字节序转化为主机字节序”。

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-10-09 16:37:35  更:2021-10-09 16:37:37 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/31 4:49:19-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码