欢迎光临
我们一直在努力

【JavaEE初阶 - 网络原理】网络分几层?从自定义协议聊到 DNS

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */
#content_views .toc,
/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */
#content_views.markdown_views > p:empty:has(+ .toc),
#content_views.markdown_views > .toc + p:empty,
/* 富文本旧版目录标记 */
#content_views.htmledit_views #main-toc,
#content_views.htmledit_views #hr-toc,
#content_views.htmledit_views p[id*=\”-toc\”] {
display: none !important;
}
/* 目录去掉后,紧跟的首个标题不再多出一块上边距 */
#content_views.markdown_views > .toc + h1,
#content_views.markdown_views > .toc + h2,
#content_views.markdown_views > .toc + h3,
#content_views.markdown_views > .toc + h4,
#content_views.markdown_views > .toc + p:empty + h1,
#content_views.markdown_views > .toc + p:empty + h2,
#content_views.markdown_views > .toc + p:empty + h3,
#content_views.markdown_views > .toc + p:empty + h4 {
margin-top: 0 !important;
}

在这里插入图片描述

🎁个人主页:User_芊芊君子 🎉欢迎大家点赞👍评论📝收藏⭐文章 🔍系列专栏:JavaEE

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

文章目录:

  • 摘要
  • 一、网络中协议分层
  • 二、应用层
    • 1.用外卖软件举一个例子,步骤:
    • **2. 数据格式** **组织方法:**
  • 三、DNS协议
    • 1.DNS
    • 2.DNS服务器
    • 3.DNS分级存储机制
  • 四、总结

摘要

网络通信为什么要分层?本文从五层模型(应用/传输/网络/数据链路/物理层)讲起,明确各层职责边界;随后聚焦离开发最近的应用层:什么是"自定义协议",如何约定请求与响应格式,纯文本、XML、JSON、Protobuf四种序列化方式各有什么优劣;最后讲解 DNS 域名解析——域名为什么存在、根域名服务器与分级存储机制如何把域名高效翻译成 IP地址。

在这里插入图片描述

一、网络中协议分层

应用层和传输层与我们编程息息相关。

  • 应用层:与应用程序直接相关
  • 传输层:端到端传输,不关心中间过程,只关心起点和终点
  • 网络层:点到点传输,规划传输的中间路径(操作系统内核中调用实现,由硬件和驱动程序实现,和应用程序的开发没啥关系)
  • 数据链路层:两个相邻点之间的传输
  • 物理层:底层基础设施,硬件设备

二、应用层

HTTP协议是应用层最重要的协议,这里我们先讲一下“自定义协议”。顾名思义,就是我们可以自己定义的一个约定。eg:在一个项目中,我们可能要新加一些功能,这个时候就需要约定“前后端进交互接口”,根据我们的需求,达成一致后,再进行开发。这个约定就是自定义协议。

1.用外卖软件举一个例子,步骤:

  • 先确定功能中,客户端和服务器需要哪些交互数据

需求:根据用户所在位置,寻找周围5km以内所有商家以及商家信息列表

请求:用户ID;用户位置

响应:商家列表(名称,图片,评分,距离…)

  • 再确定数据组织的格式

网络通信本质是传输“字节流”和“字符串()二进制”

序列化:结构化数据–>字符串;

反序列化:字符串–>结构化数据

2. 数据格式 组织方法:

  • 纯文本格式(给到一个拉);
  • 基于XML格式
  • 经典,通过成对“标签”描述某个值的含义。maven使用XML作为核心配置文件。

    缺点:及其消耗资源;格式不美观。

    <request>
    <userid>11</userid>
    <jingdu>38</jingdu>
    <weidu>28</weidu>
    </request>

  • JSON(流行)
  • 可读性高,带宽消耗少。一次请求中有多个{},用数组语法

    [
    {
    "userid":11,
    "name":“张记麻辣烫”,
    "distance":"1.0km",
    "rank":5
    },
    {
    "userid":22,
    "name":“李记麻辣烫”,
    "distance":"1.5km",
    "rank":5
    }
    ]

  • Protobuf
  • 纯二进制,人无法识别;传输效率高;搭配官方工具,方便扩展。

    三、DNS协议

    1.DNS

    域名解析协议,域名就是“网址”,eg:www.baidu.com。访问百度,本质就是在访问百度的服务器(通过服务器的IP建立通信)。

    IP地址是一段数字,比较抽象,所以我们使用一串有描述性的单词(域名)来代替IP地址,计算机通讯时会自动把域名转化为IP。这个过程就是DNS完成的。

    2.DNS服务器

    最初DNS通过hosts文件记录域名与IP地址的对应关系。的那随着设备和IP增多,无法满足需求,然后人们将hosts和IP映射关系提取出来,单独部署到服务器,这就是DNS服务器,后面用户访问网站时,就会先向DNS服务器发起查询请求,获取到IP地址后,在进行访问

    维护原始数据的DNS服务器称为“跟域名服务器”,只有11台,很多运营商/大型互联网公司就会搭建DNS镜像服务器

    3.DNS分级存储机制

    • 最顶层DNS服务器存储了各种一级域名;
    • 一级域名服务器存储了自身管辖范围内所有二级域名;
    • 二级域名服务器存储了自身故拿下范围内所有三级域名

    查询时,从根服务器向下依次查询。分级查询实现高效跳转

    img

    四、总结

    网络分层的本质是职责分离——应用层管业务、传输层管端到端、网络层管路径规划、链路层管相邻节点、物理层管硬件。自定义协议的核心是两步:先约定交互的数据内容(请求/响应字段),再约定数据的组织格式。序列化方案上,XML 可读但冗重,JSON平衡了可读性与带宽,Protobuf 用二进制换取最高效率。理解了自定义协议,就理解了 HTTP 协议设计的出发点。

    赞(0)
    未经允许不得转载:171主机测评 » 【JavaEE初阶 - 网络原理】网络分几层?从自定义协议聊到 DNS
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址