【javaEE】网络原理(应用层)

网络原理 涉及到的内容很多,会分成几个部分分别进行介绍。
但是:网络原理在面试中会常考!
常考部分以及面试题会重点标出,如果没时间直接挑重点标出看。


前言+回顾

一定要未来明朗啊!
Hi,这里是不想秃头的宝贝儿!
秃头

本文主要介绍网络原理中的【应用层】部分,以及关于应用层部分的协议。
但是本部分基本不涉及面试题!

【回顾】

  1. UDP:DatagramSocket网卡的代言人,借助这个类来读写网卡; DatagramPacket一个数据报的代言人,UDP中传输数据的基本单位。
  2. TCP:ServerSocket:给服务器用的,监听端口; Socket:给服务器和客户端用的,用来传输数据。
  3. socket API是一切网络编程的基础,未来接触到的大部分高大上的框架/库/组件,底层都是基于socket的。

生活原本沉闷,但是跑起来就会有风!

一、网络原理简介

  1. 网络原理主要介绍TCP/IP协议中每一层里面的核心内容
  2. TCP/IP协议的内容(从上到下):应用层(程序员打交道)、传输层(起点终点)、网络层(中间过程)、数据链路层(相邻结点)、物理层(底层建设设施)

二、【应用层】

  1. 与应用程序密切相关。不同的应用程序里面可能会涉及到不同的应用层协议。
  2. 我们进行代码开发的时候相当一部分的工作量就是在自定义应用层协议上的。
  3. 那么:如何进行自定义应用层协议呢?
    ① 考虑要在客户端和服务器之间要传输那些信息?【跟着需求走:请求、响应】
    ② 考虑信息/数据按照啥格式进行组织?【同样根据需求走】

网络上传输的数据本质上都是bit流(一堆二进制位),也可以把这些数据视为“字符串”。
基于常用的格式来传输数据就可以更加通用、也更加方便。

  1. 常用协议举例:
    1) HTTP协议:应用层中最最重要,最最常用的协议。
    2) XML:比较典型的数据组织格式,经典古老的格式。格式非常有特点,是通过“标签”的形式来组织 键值对 数据的。如 标签开始 …标签内容… 标签结束。

① 【注:HTML也是标签化的格式,但是最本质的区别是:XML的标签名字是自定义的,而HTML的标签名字都是约定好的
② XML缺点:丑;数据多了编写复杂;数据要通过网络传输是消耗网络带宽的,而XML中包含了大量的标签就导致网络带宽占用更高了

3)JSON(重点理解一下):当前最流行的一种数据组织格式,相当于XML的替代品。(JSON源自于js的对象,但是仍然是不一样的,如:js对象的属性可以是函数的,但是JSON中没有函数这样的说法

JSON首先使用{},然后{}中包含多组键值对,键值对之间使用 ,来分隔 ;键和值之间使用:分隔键只能是字符串类型,值可以是字符串、数组、数字、json等。
① JSON优点:可读性非常好;看起来美观;扩展性强
② JSON缺点:引入额外的字符串,传输数据量变大了,消耗更多的带宽

4)上述的XML和JSON都是属于带宽占用比较高、效率比较低的格式,也存在一些格式能够高效的组织数据。这类格式有很多,其中最典型的是protobuffer(谷歌搞的一个东西)。Protobuffer既是一个数据格式,同时也是一个库,用于操作这种格式的数据。

① protobuffer是一个二进制格式,不太方便研究这里具体是怎么组织的;但是要清楚,这种格式下组织出来的数据空间占比要比JSON和XML都,明显提高了传输效率。
② protobuffer缺点:二进制不方便人肉眼观察,阅读和调试比较复杂。
③ 适合于对运行效率要求比较高的场景来使用。


三、应用层重点协议

1. DNS

  1. DNS,即Domain Name System,域名系统。DNS是一整套从域名映射到IP的系统。
  2. TCP/IP中使用IP地址来确定网络上的一台主机,但是IP地址不方便记忆,且不能表达地址组织信息,于是人们发明了域名,并通过域名系统来映射域名和IP地址。
  3. 网络通信发送数据时,如果使用目的主机的域名,需要先通过域名解析查找到对应的IP地址:

① 域名解析的过程,可以简单的理解为:发送端主机作为域名系统树形结构的一个子节点,通过域名信息,从下到上查找对应IP地址的过程。如果到根节点(根域名服务器)还找不到,即找不到该主机。
② 域名解析使用DNS协议来传输数据。DNS协议是应用层协议,基于传输层UDP或TCP协议来实现

2. NAT、NAPT

  1. NAT技术是当前解决IP地址不够用的主要手段,是路由器的一个重要功能。

① NAT能够将私有IP对外通信时转为全局IP。也就是就是一种将私有IP和全局IP相互转化的技术方法:
② 很多学校、家庭、公司内部采用每个终端设置私有IP,而在路由器或必要的服务器上设置全局IP;
全局IP要求唯一,但是私有IP不需要。在不同的局域网中出现相同的私有IP是完全不影响的。

  1. 那么问题来了,如果局域网内,有多个主机都访问同一个外网服务器,那么对于服务器返回的数据中,目的IP都是相同的。那么NAT路由器如何判定将这个数据包转发给哪个局域网的主机?
    这时候NAPT来解决这个问题了。使用IP+port来建立这个关联关系。

这种关联关系也是由NAT路由器自动维护的。例如在TCP的情况下,建立连接时,就会生成这个表项;在断开连接后,就会删除这个表项。

  1. NAT技术的缺陷
    由于NAT依赖这个转换表,所以有诸多限制:

① 无法从NAT外部向内部服务器建立连接;
② 转换表的生成和销毁都需要额外开销;
③ 通信过程中一旦NAT设备异常,即使存在热备,所有的TCP连接也都会断开。

3. HTTP/HTTPS

在后面内容中再进行详细介绍。


THINK

  1. 本部分没有面试题,大致了解应用层相关协议
  2. DNS域名解析、NAT运行不同局域网中私有IP一样。
  3. 重点理解一下JSON
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

'Dream是普通小孩耶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值