【JavaEE初阶】网络原理|认识协议|协议分层|TCP/IP模型|封装和分用

这篇具有很好参考价值的文章主要介绍了【JavaEE初阶】网络原理|认识协议|协议分层|TCP/IP模型|封装和分用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、认识协议

1.概念

2.作用(为什么需要协议?)

二、协议分层

1.为什么需要⽹络协议的分层?

2. 协议分层是什么

3.分层带来的好处

三、TCP/IP五层(或四层)模型

(1)物理层

(2)数据链路层

(3)网络层

(4)传输层

(5)应用层

四、封装和分用(协议的层和层之间是如何配合工作的?)

1.封装(和Java面向对象的封装,不是一个封装)

2.分用


一、认识协议

1.概念

简单来说:就是一种通信双方,对于通信规则的约定(标准),一定是通信双方都认可

但是这个协议不一定是认可面非常广的,即使是两个人之间的也可叫做协议

就好⽐⻅⽹友,彼此协商胸⼝插⽀玫瑰花⻅⾯,这就是⼀种提前的约定,也可以称之为协议

2.作用(为什么需要协议?)

两个用来通信的主机设备有着不同的硬件,不同的操作系统,不同的应用程序,有了协议,即使上述内容不同,通信也能正常进行

进行网络通信的时候,通信协议是非常关键的环节


二、协议分层

1.为什么需要⽹络协议的分层?

网络通信是一个非常复杂的事情,这个过程涉及到很多细节问题

如果你使用一个协议来约定上述所以的细节,这个协议就会非常的庞大,非常的复杂

——>拆分:为了管理复杂程度,不要让这个东西太复杂,每个部分负责一个功能

这样一个功能复杂的协议,就拆分成多个功能更单一的协议了

但是拆出来的协议太多了,就要对这个协议进行分类,甚至要“分层”

2. 协议分层是什么

协议分层:把很多的协议,按照功能分成不同的层级,每个层级都有对应的主线任务(目标/要解决的问题),上层协议会调用下层协议的功能,下层协议会给上次协议提供服务

注意:不能“越级调用”

3.分层带来的好处

【JavaEE初阶】网络原理|认识协议|协议分层|TCP/IP模型|封装和分用,JavaEE初阶,网络,智能路由器,java-ee,tcp/ip,服务器

好处主要有两个方面:

(1)封装的效果:某层协议,不必知道其他层协议的细节,降低学习使用成本

eg:只要会说汉语,不需要理解电话的工作原理,就能打电话;

        设计电话的人,可能是老外,不必懂汉语,也不妨碍他设计开发电话

(2)任意层次的协议,都是可以灵活替换的(也就是解耦合),这样就给整个网络体系,升级迭代,带来了很大的便利

eg:将电话机协议改为无线电协议:站在使用者的角度,完全感知不到任何的区别,电话该咋打还是咋打;

        将汉语协议改为英语协议:虽然语言变了,电话这一层,没有任何影响,设计电话的人不需要针对“英语”做任何的改变和特殊处理


当前网络的现状,就是有很多的协议,这些协议就是按照一定的分层规则组织起来的,业内普遍的分层方式有两种:

(1)OSI七层模型

只是存在于教科书上,实际客观世界中并不存在,因为它搞得有点复杂(这里就不作介绍了)

(2)TCP/IP五层(或四层)模型

可以认为是OSI的简化版本,就是真实世界采取的网络分成模型,目前接触到的网络,大部分都是TCP/IP模型的(电脑上网),当然,也有不是的,eg:4G/5G通信,就是一套专门的模型协议(手机流量上网)

三、TCP/IP五层(或四层)模型

(1)物理层

硬件层面上的相关约定,网线,网口

eg:金工实习,8根铜线穿到一起,接上水晶头,这样的一些接线规则

下面(2)(3)(4)以快递为例介绍 

(2)数据链路层

关注的是通信过程中,两个相邻节点之间的通信

eg:快递具体运输的,这是快递员自行进行确定的

例如,当前路线:
上海 -> 苏州 -> 南京 -> 西安
上海 -> 苏州大卡车 就运过去,有一个开着打开车的快递小哥
苏州 ->南京轮船,沿着长江,一路逆流而上,有一个开着船的快递小哥,
南京 ->西安 铁路 装上火车
西安 ->我家门口 电三轮

每个节点之间的运输方式,就相当于数据链路层

(3)网络层

关注的是通信中,通信路径的规划,规划出的路径就决定了,数据要经过哪些节点“点到点的传输

eg:商家发货,就会把快递交给快递小哥,就会拿到快递公司,
快递公司,就会对这些包衷,进行分拣~~根据快递的目的地,分配到不同的运输线路上
发货地点是在 上海.如果收件地点是在西安
上海 -> 南京 ->西安
上海 -> 无锡 ->西安
上海 -> 徐州 ->西安
快递公司,就会把路线规划好,包裏就会按照这样的既定路线进行传输

(4)传输层

关注的是通信双方的“起点”和“终点”,“端到端的传输

eg:我和商家,我们俩只关注,发件人信息,和收件人信息(也就相当于起点和终点)

(5)应用层

和具体应用程序直接相关,传输的数据是干啥用的,如何用的,有啥意义

eg:我在淘宝上还是买了个东西,买了个床刷子~~
我拿着这个床刷子要干啥~~ 就是我需要关心的, 快递公司/商家,都是不关心的~~当我拿到刷子之后,用来刷床,还是用来刷沙发, 还是用来打儿子~~就是我自己来决定了~

 也有人把上述通信协议分层的模型,称为TCP/IP四层(没算物理层)

站在程序员的角度,物理层是纯硬件,其余的四层还是软件

但是物理层又和数据链路层联系紧密,所以有时也算五层

【JavaEE初阶】网络原理|认识协议|协议分层|TCP/IP模型|封装和分用,JavaEE初阶,网络,智能路由器,java-ee,tcp/ip,服务器

对于OSI模型:只是将TCP/IP模型中的应用层细分为应用层+表示层+会话层 

上图中:网络层==互联网层 ;数据链路层==网卡层;物理层==(硬件)只是名称不同而已

关注上图的侧面:分别涉及应用程序,操作系统(内核),设备驱动程序与网络接口

对于Java程序员,重点关注应用层+传输层(应用层是需要调用传输层提供的接口(api)来进行一些功能实现的),这些和日常开发息息相关,其他层简单了解即可


笔试题(选择题):

路由器是工作在上述协议中的哪一层

交换机是工作在上述协议中的哪一层

如果出现:这里的”路由器"和”交换机“就是"经典的路由器交换机"(课本上的)

路由器就是工作在网络层(三层转发)

交换机就是工作在数据链路层(二层转发) (稍后详细介绍)

但是真实的情况:现在的路由器和交换机功能越来越多,界限越来越模糊

eg:有些路由器/交换机可以工作在应用层,你通过wx发个信息,路由器/交换机就能感知到,你发的这个信息内容是啥(信息内容,属于应用层的范畴)


四、封装和分用(协议的层和层之间是如何配合工作的?)

上层协议调用下层协议,下层协议给上层协议提供服务

下面以A通过QQ给B发送hello为例分别介绍封装和分用

首先QQ里面就会有一个应用层网络协议,这个协议约定了数据按照什么样的格式来组织

这种数据的格式:本质上是(二进制的)字符串(更准确的说是二进制的bit流),因此要传输的发送人,接收人,消息时间,消息内容...就要组织到一个字符串中,组织的时候要按照一定的格式来

不同的协议,数据组织的格式是不同的

序列化和反序列化

序列化:把结构化数据(包含很多属性,很多字段) ——>字符串/二进制字符串

反序列化: 把字符串/二进制字符串——>结构化数据

发送和接收的过程中就进行了一个序列化和反序列化

1.封装(和Java面向对象的封装,不是一个封装)

A的在聊天窗口里,输入hello,点击发送,那么QQ应用程序就要负责实现上述逻辑,而这些逻辑都要通过网络来传输

(1)QQ应用程序首先就会把上述要传递的内容,组织成“应用层数据包”

假设QQ的应用层协议是这样的:发送人的qq号,接收人的qq号,发送时间,消息正文\n

【JavaEE初阶】网络原理|认识协议|协议分层|TCP/IP模型|封装和分用,JavaEE初阶,网络,智能路由器,java-ee,tcp/ip,服务器

(2)应用层数据包已经有了,QQ程序就要调用系统的api来进行传输

QQ 程序,就要调用系统的 api, 来进行传输.

应用层接下来要把数据交给,传输层.

怎么交给传输层?传输层(操作系统内核) 提供了 api,让应用程序去调用.

调用这样的 api, 就会把刚才的应用层数据交给传输层.(进入到系统内核了),称为 socket api

传输层拿到应用层数据包之后,就会把这个数据包进行进一步的封装,构造成 传输层数据包在传输层

典型协议有两个,TCP,UDP

此处假设使用 UDP 来作为传输层协议

【JavaEE初阶】网络原理|认识协议|协议分层|TCP/IP模型|封装和分用,JavaEE初阶,网络,智能路由器,java-ee,tcp/ip,服务器

整个是UDP数据包,前面是UDP报头,后面是UDP数据包的载荷(payload)

报头里放着一些UDP相关的属性(比如发件人和收件人的端口号就在UDP报头中)

传输层 构造好数据包之后,就会继续把数据包,交给网络层,(传输层会调用网络层提供的 api,这个调用的过程
都是系统内核,自行负责了,咱们程序员感知不到

(3)网络层 典型的协议IP协议【JavaEE初阶】网络原理|认识协议|协议分层|TCP/IP模型|封装和分用,JavaEE初阶,网络,智能路由器,java-ee,tcp/ip,服务器

整个是IP数据包,前面是IP数据包的报头,后面是IP数据包的载荷(IP协议不关心后面的载荷里头是啥,只关心IP报头里的数据)

IP报头中就包含收件人的IP地址和发件人的IP地址

又进一步的调用数据链路层的 api, 把上述 IP 数据包,交给数据链路层的协议.

同样也是系统内核负责完成的.程序员感知不到了,

这里的 api 往往是 网卡 的驱动程序提供的.

硬件厂商,发布硬件的时候,提供配套的软件(驱动程序)通过驱动程序,可以让操作系统实现对硬件的精细控制

(4)数据链路层 典型协议 以太网

以太在物理中是光在真空中传输的介质,此处传输网络数据,也需要介质所以引入这个词

电脑, 通过有线网, 传输数据, 走的就是"以太网"协议~~

咱们电脑上插的网线,也叫做"以太网线

以太网,也有自己的数据包格式,就会拿到上述 IP 数据包,进一步的封装

【JavaEE初阶】网络原理|认识协议|协议分层|TCP/IP模型|封装和分用,JavaEE初阶,网络,智能路由器,java-ee,tcp/ip,服务器

上述数据已经进入到网卡驱动中了,接下来就是要真正的发送出去了 

(5)物理层:上述的以太网数据帧,本质上还是0101二进制数据

硬件设备,要把上述的二进制数据,转为光信号/电信号/电磁波才会真正的进行发射

上述层层包装数据,不停的加数据报头的过程,称为”封装“ ,类似包装快递

2.分用

上述数据,并非直接到达B,而是要先到和A连接的交换机/路由器,数据经过交换机/路由器的一系列转发之后,最终到达B

当数据到达B之后,又要做哪些事情呢? 就是上述过程的“逆过程”(拆快递)

(1)物理层

收到一系列光电信号,把这些信号转为0101二进制数据,交给数据链路层

(2)数据链路层

按照以太网协议,对数据进行解析(解析报头中的关键信息,为后续的传输/转发打下基础,还需要拿到载荷数据)【JavaEE初阶】网络原理|认识协议|协议分层|TCP/IP模型|封装和分用,JavaEE初阶,网络,智能路由器,java-ee,tcp/ip,服务器

解析出来的载荷数据,是要交给上层(网络层)

(3)网络层 IP协议

IP协议拿到IP数据包,按照协议格式进一步解析,解析报头中的关键信息,取出载荷

【JavaEE初阶】网络原理|认识协议|协议分层|TCP/IP模型|封装和分用,JavaEE初阶,网络,智能路由器,java-ee,tcp/ip,服务器

把载荷再进一步交给上层(传输层)

(4)传输层  UDP

拿着UDP数据包,按照UDP格式进一步解析,解析出关键的信息(要交给哪个端口号对应的进程),以及解析成载荷数据

 【JavaEE初阶】网络原理|认识协议|协议分层|TCP/IP模型|封装和分用,JavaEE初阶,网络,智能路由器,java-ee,tcp/ip,服务器

再把载荷交给对应的应用程序

(5)应用层

QQ程序拿到了应用数据包

【JavaEE初阶】网络原理|认识协议|协议分层|TCP/IP模型|封装和分用,JavaEE初阶,网络,智能路由器,java-ee,tcp/ip,服务器

QQ按照自己的协议格式,进行解析,拿到这里的结构化数据(反序列化),显示到界面上

这个过程就是分用,就相当于拆快递


中间的路由器,交换机,也要进行封装分用,也是上述的过程

只不过,交换机,封装分用到数据链路层,即可知道下一步如何转发(工作在数据链路层

路由器,封装分用到,网络层,即可知道下一步如何转发(工作在网络层文章来源地址https://www.toymoban.com/news/detail-856372.html

到了这里,关于【JavaEE初阶】网络原理|认识协议|协议分层|TCP/IP模型|封装和分用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 【JavaEE初阶】万字详解TCP/IP协议!!!(一)

    在网络通信过程中,应用层描述了应用程序如何理解和使用网络中的通信数据。 而程序猿在应用层这里最主要的工作就是自定义协议,自定义协议主要做两件事: 结合业务场景和需求,明确协议数据要传递哪些信息。 明确数据组织格式。(比如:可以按照纯文本方式,也可

    2024年02月07日
    浏览(44)
  • 解析TCP/IP协议的分层模型

    了解ISO模型:构建通信的蓝图 为了促进网络应用的普及,国际标准化组织(ISO)引入了开放式系统互联(Open System Interconnect,OSI)模型。这个模型包括了七个层次,从底层的物理连接到顶层的应用程序,为网络通信的不同方面提供了统一的架构,包含从物理层到应用层的层次

    2024年02月12日
    浏览(36)
  • 【网络原理】TCP/IP协议五层模型

    🥊作者:一只爱打拳的程序猿,Java领域新星创作者,CSDN、阿里云社区优质创作者。 🤼专栏收录于:计算机网络原理 本期讲解协议、OSI七层模型、TCP/IP五层模型、网络设备所在的分层、数据的封装和分佣。 目录 1. 什么要有协议? 2. 协议的分层 2.1 协议分层的好处 3. OSI七层

    2024年02月08日
    浏览(52)
  • 【网络原理】TCP/IP四层模型中的重点网络协议

    目录 🌟一、应用层协议 🌈1、XML协议  🌈 2、JSON 🌈 3、其他协议 🌟二、传输层协议(UDP与TCP重点) 🌈1、UDP协议格式 🌈 2、TCP协议格式 🎉TCP的10条机制(必会) 1、确认应答机制(可靠机制) 2、超时重传机制(可靠机制) 3、连接管理机制(三次握手,四次挥手)(

    2024年02月04日
    浏览(47)
  • 协议分层与OSI参考模型【图解TCP/IP(笔记三)】

    协议的分层 OSI参考模型将通信协议中必要的功能分成了7层。通过这些分层,使得那些比较复杂的网络协议更加简单化。 在这一模型中,每个分层都接收由它下一层所提供的特定服务,并且负责为自己的上一层提供特定的服务。上下层之间进行交互时所遵循的约定叫做“接口

    2024年02月13日
    浏览(45)
  • 网络编程1—— IP地址 + 端口号 +TCP/IP协议 + 协议分层的封装与应用

    本人是一个刚刚上路的IT新兵,菜鸟!分享一点自己的见解,如果有错误的地方欢迎各位大佬莅临指导,如果这篇文章可以帮助到你,劳请大家点赞转发支持一下! 从本篇文章开始就要分享网络编程的内容了,越发的感受到了编程的魅力,鸡汤来喽!! 1️⃣单机阶段:计算机跟计算

    2024年02月12日
    浏览(42)
  • 网络分层模型 | OSI七层模型、TCP/IP四层模型

    欢迎关注博主 Mindtechnist 或加入【Linux C/C++/Python社区】一起学习和分享Linux、C、C++、Python、Matlab,机器人运动控制、多机器人协作,智能优化算法,滤波估计、多传感器信息融合,机器学习,人工智能等相关领域的知识和技术。 专栏:《网络编程》 ① 物理层:主要定义物理

    2024年02月05日
    浏览(55)
  • OSI 和 TCP/IP 网络分层模型详解(基础)

    OSI模型 : 即 开放式通信系统互联参考模型 ( Open System Interconnection Reference Model ),是国际标准化组织(ISO)提出的一个试图使各种计算机在世界范围内互连为网络的标准框架,简称OSI。 OSI 七层模型 是国际标准化组织提出一个网络分层模型,其大体结构以及每一层提供的功

    2024年02月16日
    浏览(39)
  • JavaEE-轻松了解网络原理之TCP协议

    TCP,即Transmission Control Protocol,传输控制协议. 16位源端口号与16位目的端口号表示数据 从那个进程来要到那个进程去 . 32位序号表示 一次TCP通信(从TCP连接建立到断开)过程中某一个传输方向上的字节流的每个字节的编号 (TCP将每个字节的数据都进行了编号,称为序列号). 32为

    2024年02月01日
    浏览(52)
  • 【网络奇缘】- 计算机网络|分层结构|深入探索TCP/IP模型|5层参考模型

    ​ 🌈个人主页:  Aileen_0v0 🔥系列专栏:  一见倾心,再见倾城  ---  计算机网络~ 💫个人格言: \\\"没有罗马,那就自己创造罗马~\\\" 目录 OSI参考模型与TCP/IP参考模型相同点 OSI参考模型与TCP/IP参考模型不同点 面向连接三阶段(建立,传输,释放) 面向无连接(直传) 通用的5层参考

    2024年02月05日
    浏览(84)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包