| |
|
开发:
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>?中提供了相应的字节序转换函数,?函数名称?和?形参 都是相同的。
其中: ????????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地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |