【JavaEE】网络通信中的一些基本概念及协议分层

这篇具有很好参考价值的文章主要介绍了【JavaEE】网络通信中的一些基本概念及协议分层。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【JavaEE】网络通信中的一些基本概念及协议分层

  • 博主简介:想进大厂的打工人
  • 博主主页:@xyk:
  • 所属专栏: JavaEE初阶

互联网是怎么来的?很多先进技术,都是先军用,用了之后太香了才逐渐民用~~

互联网也是如此,互联网之前,可以通过有线/无线,发电报~~缺点非常明显,通信链路容易被打击~~于是美国人开始研究,有没有办法,能够搞出一种通信手段,万一真的收到核打击了,通信链路仍然正常,因此可以发出指令,进行核反击,那么需要多搞几条链路【JavaEE】网络通信中的一些基本概念及协议分层

当这里的链路足够复杂的时候,意味着即使整个路径上,有一部分被摧毁了,仍然有很大可能找到一条能通过去的路~~

那么互联网也是如此,从最开始的局域互联网,到现在的广域网,广域网可以跨区域进行网络通信, 把很多的局域网连接起来,使用更多的路由器,交换机!!

单机阶段 => 局域网阶段 => 广域网阶段 => 移动互联网阶段

那么互联网中有哪些概念呢?请看下文~~


目录

文章目录

一、网络互连

1.1 局域网LAN(小范围)

1.2 广域网WAN

1.3 之后又进入了移动互联网阶段,无线联网~

二、网络通信基础

2.1 IP地址

2.2 端口号

2.3 协议

2.4 知名协议的默认端口

三、协议分层

         3.1 什么是协议分层

3.2 分层的作用

 四、真正的网络协议

4.1 OSI七层模型

4.2 TCP/IP五层网络模型

4.2.1 应用层

4.2.2 传输层

4.2.3 网络层

4.2.4 数据链路层

4.2.5 物理层

4.2.6 网络设备所在分层

五、封装&分用

5.1 封装

5.2 分用


一、网络互连

随着时代的发展,越来越需要计算机之间互相通信,共享软件和数据,即以多个计算机协同工作来完成业务,就有了网络互连。
网络互连:将多台计算机连接在一起,完成数据共享。

数据共享本质是网络数据传输,即计算机之间通过网络来传输数据,也称为网络通信。
根据网络互连的规模不同,可以划分为局域网和广域网。

1.1 局域网LAN(小范围)

一栋楼 或 大学校园中有限的, 狭小的, 区域内网络.

【JavaEE】网络通信中的一些基本概念及协议分层

局域网,即 Local Area Network,简称LAN。
Local 即标识了局域网是本地,局部组建的一种私有网络。
局域网内的主机之间能方便的进行网络通信,又称为内网;局域网和局域网之间在没有连接的情况下,是无法通信的。

基于网线直连
把两个电脑,通过一个网线直连,构成局域网~~(局域网联机)

【JavaEE】网络通信中的一些基本概念及协议分层

以机房为例,多个机器之间可以进行联机,这就相当于一个局域网

基于交换机也能进行联机,这也是局域网

【JavaEE】网络通信中的一些基本概念及协议分层 【JavaEE】网络通信中的一些基本概念及协议分层

  • 电脑越多,用网线直连就越复杂~
  • 区别于集线器:集线器是将一条网线转变成多条网线

【JavaEE】网络通信中的一些基本概念及协议分层

 1.2 广域网WAN

当局域网足够大时,就成了广域网;即使两个玩家,天南海北,也可以随时PK

【JavaEE】网络通信中的一些基本概念及协议分层 广域网,即 Wide Area Network,简称WAN。
通过路由器,将多个局域网连接起来,在物理上组成很大范围的网络,就形成了广域网。广域网内部的局域网都属于其子网。

【JavaEE】网络通信中的一些基本概念及协议分层

网络的组建(通过一些交换机/路由器搭建一个网络环境),其实也是一个专业性很强的技能——网管(网络管理员),不是网吧管理员,而是网络管理员!

1.3 之后又进入了移动互联网阶段,无线联网~

智能手机的普及,尤其是小米和华为,从安卓赛道出发大大的降低了手机的价格成本~~(充话费送手机)

二、网络通信基础

网络互连的目的是进行网络通信,也即是网络数据传输,更具体一点,是网络主机中的不同进程间,基于网络传输数据。
那么,在组建的网络中,如何判断到底是从哪台主机,将数据传输到那台主机呢?这就需要使用IP地址来标识。

2.1 IP地址

概念
IP地址主要用于标识网络主机、其他网络设备(如路由器)的网络地址。简单说,IP地址用于定位主机的网络地址。
就像我们发送快递一样,需要知道对方的收货地址,快递员才能将包裹送到目的地。

格式
IP地址是一个32位的二进制数,通常被分割为4个“8位二进制数”(也就是4个字节),如:
01100100.00000100.00000101.00000110。
通常用“点分十进制”的方式来表示,即 a.b.c.d 的形式(a,b,c,d都是0~255之间的十进制整数)。如:192.168.0.136。

3个点,把整个IP分成4个部分,每个部分,1个字节

命令行输入ipconfig:

【JavaEE】网络通信中的一些基本概念及协议分层

 特殊IP

127.*的IP地址用于本机环回(loop back)测试,通常是127.0.0.1
本机环回主要用于本机到本机的网络通信(系统内部为了性能,不会走网络的方式传输),对于开发网络通信的程序(即网络编程)而言,常见的开发方式都是本机到本机的网络通信。

IP地址解决了网络通信时,定位网络主机的问题,但是还存在一个问题,传输到目的主机后,由哪个进程来接收这个数据呢?这就需要端口号来标识。

2.2 端口号

概念
在网络通信中,IP地址用于标识主机网络地址,端口号可以标识主机中发送数据、接收数据的进程。简单说:端口号用于定位主机中的进程。
类似发送快递时,不光需要指定收货地址(IP地址),还需要指定收货人(端口号)。

格式
端口号是0~65535范围的数字,在网络通信中,进程可以通过绑定一个端口号,来发送及接收网络数据。

注意事项
两个不同的进程,不能绑定同一个端口号,但一个进程可以绑定多个端口号。

一个进程启动后,系统会随机分配一个端口(启动端口)
程序代码中,进行网络编程时,需要绑定端口号(收发数据的端口)来发送、接收数据。
进程绑定一个端口号后,fork一个子进程,可以实现多个进程绑定一个端口号,但不同的进程不能绑定同一个端口号

2.3 协议

概念
协议,网络协议的简称,网络协议是网络通信(即网络数据传输)经过的所有网络设备都必须共同遵从的一组约定、规则。如怎么样建立连接、怎么样互相识别等。只有遵守这个约定,计算机之间才能相互通信交流。

作用:

为什么需要协议?

【JavaEE】网络通信中的一些基本概念及协议分层

计算机之间的传输媒介是光信号和电信号。通过 "频率" 和 "强弱" 来表示 0 和 1 这样的信息。要想传递各种不同的信息,就需要约定好双方的数据格式。

简单的来说,协议 就是 计算机与计算机之间通过网络实现通信时事先达成的一种"约定".两台计算机之间必须能够支持相同的协议,并遵循相同协议进行处理,这样才能实现相互通信.

【JavaEE】网络通信中的一些基本概念及协议分层

A和B语言不通,导致无法交流:协议不同

A和C用的都是中文,此时可以交流:协议相同

2.4 知名协议的默认端口

系统端口号范围为 0 ~ 65535,其中:0 ~ 1023 为知名端口号,这些端口预留给服务端程序绑定广泛使用的应用层协议,如:

22端口:预留给SSH服务器绑定SSH协议
21端口:预留给FTP服务器绑定FTP协议
23端口:预留给Telnet服务器绑定Telnet协议
80端口:预留给HTTP服务器绑定HTTP协议
443端口:预留给HTTPS服务器绑定HTTPS协议

餐厅的VIP包房是给会员使用,但会员也可以不坐包房,坐其他普通座位。

三、协议分层

对于网络协议来说,往往分成几个层次进行定义

3.1 什么是协议分层

协议分层类似于打电话时,定义不同的层次的协议:

【JavaEE】网络通信中的一些基本概念及协议分层

 在这个例子中,我们的协议只有两层;但是实际的网络通信会更加复杂,需要分更多的层次

3.2 分层的作用

一个协议太复杂了,就可以拆分成多个协议

协议是拆分出很多,存在有些小的协议,作用或者定位是类似的

就可以针对这些小协议,进行“分类”,同时针对这些不同的类别,进行分层~~

为什么需要网络协议的分层?

分层最大的好处,类似于面向接口编程:定义好两层间的接口规范,让双方遵循这个规范来对接。后续就可以比较容易的针对这里的某一层协议进行替换。

分层之后就可以做到,层次之间,耦合程度比较低

上层协议不必了解下层的细节,下层也不必了解上层的细节

方便的对某一层的协议进行替换

而分层,也需要约定层级与层级之间的调用关系

要求不能跨层级调用

要求上层协议调用下层协议,下层协议给上层提供支持

只有两个相邻的层级才能交互

【JavaEE】网络通信中的一些基本概念及协议分层

 四、真正的网络协议

4.1 OSI七层模型

OSI -> Open System Interrconnection 开放系统互连.

OSI 七层模型划分为以下七层:
【JavaEE】网络通信中的一些基本概念及协议分层

 【JavaEE】网络通信中的一些基本概念及协议分层

 OSI 七层模型既复杂又不实用:所以 OSI 七层模型没有落地、实现。

4.2 TCP/IP五层网络模型

当下最广泛使用的网络模型

TCP/IP通讯协议采用了5层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。(四层是因为没考虑物理层,软件方面看)
【JavaEE】网络通信中的一些基本概念及协议分层

【JavaEE】网络通信中的一些基本概念及协议分层

4.2.1 应用层

关注传输过来的数据,要做什么~~

4.2.2 传输层

不考虑中间路径,只关注起点和终点

我和淘宝卖家,都不关心中间是怎么传输的,只关心起点和终点~~

中间你怎么传输都无所谓,只要规定时间送到了就行了~~

4.2.3 网络层

主要负责两个遥远节点之间的路径规划

例如收货与发货之间有很多条路径可以走:

在众多路径中找一个合适的~~

上海 -> 北京 -> 西安

深圳 -> 杭州 -> 无锡 -> 北京

4.2.4 数据链路层

主要关注两个相邻节点之间的传输

上海 -> 南京  火车

南京 -> 北京 卡车

网络上的相邻节点,就是通过网线/光纤/无线直接连接的设备

4.2.5 物理层

网络通信的基础设施,网线,光纤,网络接口.....

网络上的高速公路

4.2.6 网络设备所在分层

对于一台主机,它的操作系统内核实现了从传输层到物理层的内容,也即是TCP/IP五层模型的 下四层;
对于一台路由器,它实现了从网络层到物理层,也即是TCP/IP五层模型的 下三层;
对于一台交换机,它实现了从数据链路层到物理层,也即是TCP/IP五层模型的 下两层;
对于集线器,它只实现了 物理层。

五、封装&分用

  1. 发送方发送数据,数据从上到下,依次交给对应的协议,进行封装加工
  2. 接收方接受数据,数据从下到上,依次交给对应的协议,进行分用解析

5.1 封装

以QQ发送消息为例子,解释一下封装分用的过程:

我是发送方,在编辑框输入一个消息发给滑稽老铁:在干嘛呢?

1.应用层到传输层:打包成应用层数据包发送

字符串拼接:【JavaEE】网络通信中的一些基本概念及协议分层

 2. 传输层拿到上述数据:

应用层调用传输层(API):封装成传输层数据报

传输层有很多协议,最经典的是TCP和UDP

此处以UDP为例~~

UDP针对上述数据包再进行封装~~

【JavaEE】网络通信中的一些基本概念及协议分层

 3.传输层到网络层:

UDP数据报,已经有了,接下来就是把这个数据报交给网络层的协议

网络层最常见的协议,就是IP协议~~

上述UDP数据报,到达网络层,还需要进一步的封装,添加上IP协议报头

【JavaEE】网络通信中的一些基本概念及协议分层

 4. 网络层到数据链路层:

最经典的协议,叫做以太网(数据链路层+物理层)

【JavaEE】网络通信中的一些基本概念及协议分层mac地址,也叫做物理地址.
也是描述一个主机在网络上的位置.
它的功能和IP很相似的.但是当下就把这两个地址分别作用于不同的用途.

IP用来进行网络层的路径规划
mac用来进行描述数据链路层,两个即将进行传输的相邻节点~

mac和网卡绑定的,每个设备都会有一个自己唯一的mac地址

5.数据链路层到物理层

数据链路层就要把上述以太网数据帧交给物理层了.

物理层要把上述0101的二进制数据~~
转换成光信号/电信号/电磁波信号,进行传输了~~
【JavaEE】网络通信中的一些基本概念及协议分层


5.2 分用

接受过程和上述过程,刚好相反

  1. 发送,从上到下,依次封装,新增报头
  2. 接受,从下到上,依次分用,去掉报头

1.物理层,网卡,收到高低电平二进制数据.
就会对这里的信号进行解析,还原成0101这样的二进制序列.

2.从物理层交给数据链路层.
此时就把上述0101这系列数据当做一个以太网数据帧.(此处是从以太网线。,收到的数据,就是要交给以太网协议来处理了

【JavaEE】网络通信中的一些基本概念及协议分层

把帧头去掉,帧尾去掉,取出中间的载荷,再往上交给网络层.
以太网数据帧帧头中有一个消息类型根据这个类型就知道了网络层是ip协议了.

3. 网络层

此时就由网络层的IP协议进行解析数据报.也是去掉IP报头.同时会做一些工作.最重要的还是取出载荷,交给更上层的传输层协议.
ip 数据报,报头中也有一个字段,标识当前传输层用的是哪个协议.
【JavaEE】网络通信中的一些基本概念及协议分层

 4. 传输层

此处是由UDP来解析处理,还是去掉报头,取出载荷,把数据交给应用层.
借助端口号来区分具体的应用程序.
每个要接受网络数据的程序都需要关联上一个端口号.

【JavaEE】网络通信中的一些基本概念及协议分层

5. 应用层

 由qq这个程序,进行解析应用层数据报取出下列字段,放到程序的界面中.

【JavaEE】网络通信中的一些基本概念及协议分层

总结:

发送方,层层分装,包装快递

接收方,层层分用,拆快递

真实的网络环境中,数据的传输中间可能要经历很多节点进行转发~~

 【JavaEE】网络通信中的一些基本概念及协议分层

中间的 交换机,只需要封装分用到 数据链路层(只需要改源mac和目的mac)

中间的 路由器,则需要分装分用到 网络层 (也需要改mac,同时还需要根据目的ip进行下一个阶段的传输)

通常也说,交换机是进行“二层转发”,路由器进行“三层转发”文章来源地址https://www.toymoban.com/news/detail-425432.html

到了这里,关于【JavaEE】网络通信中的一些基本概念及协议分层的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【JavaEE】_网络通信原理

    目录 1. 网络发展史 2. 网络通信基础 1.1 IP地址 1.2 端口号 1.3 协议 1.3.1 概念 1.3.2 五元组 1.4  协议分层 1.4.1 协议分层的优点 1.4.2 协议分层的分类 1.4.3网络设备所在分层 1.4.4 两台主机通过TCP/IP协议通讯过程 1.5 封装与分用 1.5.1 封装 1.5.2 分用 (1)单机:计算机之间相互独立;

    2024年01月19日
    浏览(22)
  • 【JavaEE】_基于UDP实现网络通信

    目录 1. 服务器 1.1 实现逻辑 1.2 代码 1.3 部分代码解释 2. 客户端 2.1 实现逻辑 2.2 代码 2.3 客户端部分代码解释 3. 程序运行结果 4. 服务器客户端交互逻辑 普通服务器:收到请求,根据请求计算响应,返回响应; 回显服务器:忽略计算,直接将收到的请求作为响应返回; (

    2024年01月21日
    浏览(25)
  • 关于网络通信安全协议的一些知识(ssl,tls,CA,https)

    首先了解一下http协议的变迁。 http1.0默认短连接,1.1默认长连接并且可以管道传输,但是存在队头阻塞问题; https就是在tcp和http之间加了SSL/TLS层。 http2也是安全的,改进是hpack二进制和编码压缩减小体积,stream没有队头阻塞了(TCP层还有),以及服务器主动推送功能; http

    2024年02月15日
    浏览(42)
  • Java中网络的基本介绍。网络通信,网络,ip地址,域名,端口,网络通信协议,TCP/IP传输过程,网络通信协议模型,TCP协议,UDP协议

    - 网络通信 概念:网络通信是指 通过计算机网络进行信息传输的过程 ,包括数据传输、语音通话、视频会议等。在网络通信中,数据被分成一系列的数据包,并通过网络传输到目的地。在数据传输过程中,需要确保数据的完整性、准确性和安全性。常见的网络通信协议有T

    2024年02月10日
    浏览(53)
  • 卫星网络中的量子通信

    当今社会,通信已经成为人类生活中不可或缺的一部分,而随着科技的迅猛发展,我们的通信方式也在不断革新和进化。近年来,量子通信作为一项引人瞩目的领域,正逐渐走入人们的视野。与传统通信方式相比,量子通信以其异常的安全性和传输效率的潜力,为构建更加可

    2024年02月10日
    浏览(26)
  • 【netty系列-01】深入理解网络通信基本原理和tcp/ip协议

    Netty系列整体栏目 内容 链接地址 【一】深入理解网络通信基本原理和tcp/ip协议 https://zhenghuisheng.blog.csdn.net/article/details/136359640 【二】深入理解Socket本质和BIO https://zhenghuisheng.blog.csdn.net/article/details/136549478 在最初的网络中,是借鉴于这个OSI七层网络模型,而在实际开发应用中

    2024年03月17日
    浏览(49)
  • 【Unity】UnityWebRequest学习——Unity中的HTTP网络通信

    Unity中的HTTP通信主要依赖的是Unity自带的UnityWebRequest类。UnityWebRequest 提供了一个模块化系统,用于构成 HTTP 请求和处理 HTTP 响应。 UnityWebRequest 生态系统将 HTTP 事务分解为三个不同的操作: 向服务器提供数据 从服务器接收数据 HTTP 流量控制(例如,重定向和错误处理) 对于

    2024年01月23日
    浏览(48)
  • 辨析Java与网络通信中的编码与解码

    编码(在Java字符流中) :当我们将字符数据写入字符流时,Java会根据我们指定的字符集(如UTF-8、ISO-8859-1等)将字符转换为相应的字节序列。这个过程就是编码。Java的 Writer 类及其子类负责执行这个编码过程。 解码(在Java字符流中) :当我们从字符流中读取字符数据时,

    2024年03月10日
    浏览(27)
  • Flask服务器与客户端基本通信【Unity网络编程(三)】

    这里先演示基于Python的客户端和服务器的登录实现。 1.Flask服务器端(GET和POST请求接收实现) 1.GET和POST区别:(简单理解) 1.GET因为是读取,就可以对GET请求的数据 做缓存 (浏览器)。不能随意多次执行。POST不能缓存(所以如果重新执行POST请求,浏览器会弹框提示你可能对丢

    2023年04月09日
    浏览(36)
  • 计算机网络中的通信子网主要有哪些功能?

    计算机网络中的通信子网主要具有以下功能: 负责全网的数据通信:通信子网通过使用各种通信协议和传输控制功能,能够确保数据从一台主机安全、准确地传输到另一台主机。这包括数据的封装、解封装、传输控制、差错控制等过程。 完成各种网络数据的处理、转换和交换

    2024年02月04日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包