首先明确大端、小端概念:

大端:高字节存放低地址,低字节存放高地址;
小端:低字节存放低地址,高字节存放高地址。
再明确一个概念,网络字节序
网络传输的数据为字节流。对于像占 4 个字节的 int 这样的多字节数值,在进行网络传输时,需明确先传递哪个字节。也就是说,接收端收到第一个字节后,要确定将其作为高位字节还是低位字节处理,这是一个有意义的问题。
UDP/TCP/IP 协议规定:需将收到的第一个字节视为高位字节。这意味着发送方发送的第一个字节必须是高位字节。然而,发送方在发送时,只能从存储该变量的起始地址开始,逐个字节地进行发送。只有大端字节序能够满足这一要求。网络要求先发出去的必须是变量的高地址,而实际机器中是要从低地址开始一字节一字节地发,这两句话结合起来就意味着只有机器是大端字节序才刚好能满足要求。所以网络字节序是大端字节序,并且网络协议会使用大端字节序来传输数据。
我们可以发现一个问题,若机器是大端,它就会按照大端的要求发出;若机器是小端,不做任何处理发出去的就是小端。是的,这就出现了以下现象:
我们的机器一般是小端字节序。在进行网络数据传输时,最初建立连接并进行初始化操作时,常常需要先将 IP 和端口转换为大端模式(通过使用 htons 函数)。
网络传输协议规定了传输使用大端字节序。那为什么只把 IP 地址、端口等转成大端格式呢?而数据部分却不进行大小端转换呢?
我纠结这个问题还纠结了很久,答案是没有必要。
首先明确 IP 地址和端口需要大端化的原因。网络传输协议规定要进行大端化,所以各级交换机和路由器在提取报文中的 MAC、IP 时也应该采用大端化方式。这样做的好处是统一规范,便于进行比对以查找路由表。
为什么数据部分不大端化呢?数据大小端的差异和机器的存储方式相关,与传输方式没有关系。也就是说,网络包是以大端的方式进行传输的,当传输到本地对包进行解析时,不管是按大端传来的还是按小端传来的,接收方把变量赋值给本地变量时,都只能将先拿到的字节存放在低地址。如果发送端和接收端都是大端,那么解析存储的变量就没有问题;如果发送端和接收端都是小端,那么存储的变量在解析时也没有问题。然而,如果一端是大端机器,另一端是小端机器呢?大端机器会按照先发出的是高字节来发出数据,小端机器也会在分配好的内存位置按照顺序一个一个地存储数据,但是当从地址处取值读取时就会出现问题。所以网络传输只是规定要以大端字节序进行传输,然而它自身并不负责转换的事宜,内核也不会负责。至于具体是否要进行转换、转换哪些以及如何转换等问题,都需要各位依据具体的情况亲自去处理,而不是将其交给网络传输让它在传输过程中为你转换好。
所以与之相对应的现象是,在接收到数据之后,若想要获取发送方的 IP 地址和端口,就需要将大端字节序进行本地化。数据部分,你那边的存储方式是什么,你发给我后我就按照你发的方式存储。只要不是一个大端一个小端,我接收完后就能正常解析。所以没必要在发送时转换一次,接收时又转换回来。交换机和路由器不需要关心你传输的数据是什么,你只需将它们所需的 IP 和端口按照大端转换好,这样它们才能正确找到路由。对于数据而言,无论你以何种方式发送,亦或是按照何种格式发送,网络都会将其认定为大端。然而,实际上是否为大端,你自己心中有数即可。
附加一点笔记有个知识点有点忘记了:
和是什么关系?
先放点代码在这
<p style='margin-bottom:15px;color:#555555;font-size:15px;line-height:200%;text-indent:2em;'> <pre><code> intsockfd; 定义了一个名为 m_addr 的 sockaddr_in 结构体。 创建一个用于网络通信的套接字,将其赋值给 sockfd 。该套接字的地址族为 AF_INET ,类型为 SOCK_STREAM ,协议参数为 0 。 m_addr 的 sin_family 被设置为 AF_INET 。 m_addr 的 sin_port 被设置为 htons(MYPORT) 。 inet_addr("192.168.0.106") 被赋值给 m_addr 的 sin_addr 的 s_addr 。 将 my_addr.sin_zero 清零,清零的长度为 8 。 将 sockfd 与 (struct sockaddr *)&m_addr 进行绑定,绑定的长度为 sizeof(struct sockaddr)。</code></pre></p>它只是一个用于通信的符号,所存储的是具体通信需要的信息。将其绑定在上,如此一来,这个管就能负责与里面地址的通信。
# 大端与小端字节序详解:网络传输中的高低字节存储顺序解析
# 大端与小端字节序详解
# 网络传输中的高低字节存储顺序解析
# 将其
# 的是
# 都是
# 网络传输
# 是一个
# 绑定
# 第一个
# 就能
# 设置为
# 多字
# 长度为
# 也就是说
# 传输协议
# 清零
# 我就
# 这一
# 就会
# 给我
# 放在
# 有个
# 网站建设架构布局
# 四川seo推广公司价格
# seo怎么变成框架
# 江油关键词seo
# 黄冈网站建设哪里好
# 黄石网站建设的工作室
# 周口seo优化教程
# 嘉兴网站优化技术
# 浙江seo网络优化推广公司
# 关键词排名好几个
# 福田全网营销整合推广
# 宁波化妆品营销推广公司
# 网站网络推广怎么做的呢
# 无影剑seo
# 营销推广成本费用分析
# 交易网站建设需要多久
# 点击精灵seo优化
# 亦庄网站关键词优化
# 公司网站建设风险
# 国内网站推广怎么做好呢
相关文章:
在做推广时,怎样才能让推广的广告吸引潜在用户关注?
SEO译为:网站排名背后的优化策略,沈阳网站模板建设用途
SEO文案:如何通过巧妙布局提升网站排名,吸引更多流量,重复关键词搜索排名
做广告联盟之前要了解的3个准备工作和5个专业名词术语!
分享两个不一样联盟赚钱玩法,亲测效果非常棒!
广告联盟上日赚1000+的方法和经验分享!
SEO词的魔力:如何通过关键词优化打破流量瓶颈,美国建设网站
为什么选择老域名注册,打造品牌价值的秘密武器,推广亲子鉴定网站
全面解析“查收录工具”:网站优化必备的利器,怎么写好seo原创
SEO白帽:提升网站排名的绿色正道,专业关键词排名趋势
代哥SEO-让您的网站迅速登顶搜索引擎的秘密武器,巩义网站建设报价方案
南宁SEO优化,让你的品牌在数字海洋中脱颖而出,冠县网站建设多少钱
一般人如何靠广告联盟赚钱实现网络副业收入逆袭?
将网站封装成APP利用广告赚钱的操作思路玩法!
SEO差价如何用SEO优化帮助企业实现成本与效益的完美平衡,乐山抖音seo收费
从镜像中汲取力量,探索自媒体的SEO奥秘,贵阳贸易网站建设
乘风SEO:突破困境,领航网络营销新时代,谷歌seo推广有效果吗
SEO外,如何提升网站整体营销效果?,沈阳企业网站推广服务
相亲粉、交友粉、引流思路分享,这么做快速有效!
优方法-高效生活与工作的秘密武器,修文网站优化
免费爬虫-轻松抓取网络数据,打造个人化数据神器,铁岭网站推广哪家便宜
怎么让自己的网站更赚钱?利用网站广告赚钱的四大方法!
福建百度推广点击率高却无人加好友,问题出在哪?,德江网络营销推广
分享10个很火的淘客联盟赚钱渠道,副业搞起来!
关键词“大”,开创成功之道,做出巨大改变,服务器优化网站
资深app运营人员总结出来的18个app推广经验分享!
社交app推广引流的6大方式
探索数字营销的奥秘,SEO与SEM的完美融合,网球项目营销策略与推广计划
日付广告联盟怎么样,怎么在上面赚钱?
推广之利用微信引流吸粉的四个方法
什么叫改写-解读“改写”背后的艺术与技巧,哪里有人推广网站
SEO目标:让您的网站轻松登顶搜索引擎,天津软文营销推广报价表
SEO站内优化:提升网站排名的核心策略,seo短视频1
选择一个靠谱的联盟,这几点你必须知道!
三个日赚300500的收益快、无门槛、几乎零成本的网络赚钱项目分享!
网站上挂的广告联盟平台上的联盟广告不赚钱怎么办?
免费赋能,让你的未来无限可能,太康网站seo优化哪家便宜
网络推广方法大全!100种网络推广方法和技巧全在这了!
关键品牌:在竞争激烈的市场中如何脱颖而出,市场推广营销效果评估报告
探索南京SEO网站的奥秘,如何让您的网站在搜索引擎中脱颖而出,浦东新区营销媒体推广费用
SEO开发:数字营销的核心驱动力,贵阳营销策划推广方案
探索自媒体营销的奥秘,如何在不使用SEO插件的情况下实现内容的有效传播,沈阳网站建设开发费用
世界上最热门的十款社交软件,你知道是哪些吗?
你不得不知的22个可以实现网络赚钱的优秀平台分享!
移动互联网下手机广告联盟营销存在着哪些问题?
做网赚想要月入过万所必须要经历的四个阶段!
app运营人员必须知道的4大APP推广策略!
引流之如何利用评论来进行引流?
湖南网站 *** ,助力企业打造高效 *** 营销平台,湖南专业网站 *** 服务,赋能企业高效 *** 营销
如何获取优质网站外链?可以从这四个方面入手!
*请认真填写需求信息,我们会在24小时内与您取得联系。