【Java】网络通信基础、协议分层及封装分用

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


网络互连的目的是进行网络通信,也就是网络数据传输,更具体一点,是网络主机中的不同进程间基于网络来传输数据。

IP地址:端口号

概念

ip地址表示了主机在网络上的地址,类似于收发快递时的收件人地址和发件人地址。
端口号表示了主机中某一个进程,使用网络的进程在启动时系统会分配一个端口号。做服务端需要主动申请端口号,做客户端则是被动分配端口号。
【Java】网络通信基础、协议分层及封装分用
127.0.0.1这个IP表示的是本机的环回网卡的IP,每台计算机都一样,表示本机。

内网IP在当前内网中不能重复,但在不同的内网中可以重复; 公网IP在整个公网中都不能重复。
内网范围:
A类网段:10.0.0.0 - 10.255.255.255
B类网段:172.16.0.0 - 172.31.255.255
C类网段:192.168.0.0 - 192.168.255.255

格式

IP地址本质上是一个32位的整型,每八位做了分隔,0-255。表示的最大范围为:255.255.255.255,这是一种点分十进制表示方式(IPV4)。由于IPV4协议表示的IP地址共42亿个,地址个数不够用,目前国内大力推IPV6。
端口号的范围是1-65535, 但是 1-124是已经被明确的程序占用,我们自定义的程序一般不使用这个范围内的端口,可以在1025-65535之间任意选择一个没有占用的。

协议

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

五元组

综合以上概念,提出了一个网络通信中五元组的概念。

1.源IP: 标识源主机,相当于发件地址
2.源端口: 标识源主机中此时通信发送数据的应用程序,相当于发件人
3.目标IP: 标识目标主机,相当于收件地址
4.目标端口: 标识目标主要是此次通信接收数据的应用程序相当于收件人
5.协议号: 标识发送进程与接收进程中双方约定的数据格式

通过五元组就可以明确表示出网络中哪台主机向哪台主机发送了什么数据,对于现实生活中快递的例子,发送方向接收方发了哪个快递。
【Java】网络通信基础、协议分层及封装分用

协议分层

对于普通用户而言,只关注消息本身,并不关注消息时如何在网络上传输的,基于这样的场景,消息在网络上的传输过程就被分成了很多层。

TCP/IP五层模型

把OSI七层网络模型中的上面三层合一,就成了TCP/IP中的应用层。
【Java】网络通信基础、协议分层及封装分用
应用层: 要开发程序之前,如果涉及到网络通信,都会预先定义好协议。这个协议就是程序在发送和接受过程中的编解码格式。我们的网络编程主要就是针对应用层
传输层: 主要向应用程序提供API,完成数据的发送与接收。比如socket API。操系统工作在这一层,主要确定程序的端口号。
网络层: 规划出一条端到端之间的路径,包括其中要经过的其他网络设备。比如发送一个快递,从西安到上海,包括途中的中转站。发送方IP、接收方IP。五元组到这一层就确定下来了。
数据链路层: 解决的是点到点的传输。比如:快递小哥从我家取走快递-- >西安机场集散中心;西安机场集散中心 --> 上海机场集散中心;上海机场集散中心-> 收件人附近的营业部;收件人附近的营业部 --> 收件人地址。
物理层: 相当于网线及其他网络设备(交换机,路由器)。对于物流来说就相当于公路、铁路等基础设施。

TCP/IP四层模型不包含物理层。

封装和分用

1.不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报(datagram),在链路层叫做帧(frame)。
2.应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装(Encapsulation)。
3.首部信息中包含了一些类似于首部有多长,载荷(payload)有多长,上层协议是什么等信息。
4.数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,根据首部中的 “上层协议字段” 将数据交给对应的上层协议处理。

以QQ发送消息为例,模拟消息在网络中的封装和分用过程。
1.应用层
对于应用层协议的定义,双方要按照相同的规则去组织与解析数据。应用层会把消息组织好,统一发送给操作系统的API(传输层) socket api。
【Java】网络通信基础、协议分层及封装分用

2.传输层
在传输层中有几个非常著名的协议,TCP,UDP。以TCP为例,会在消息前面加入TCP头。原始应用层传来的消息就称为载荷。在这里,系统操作可以确认下来端口号。
【Java】网络通信基础、协议分层及封装分用

3.网络层
在这一层确定下来源IP和目标IP。
【Java】网络通信基础、协议分层及封装分用

4.数据链路层
帧头中主要是MAC地址,每个MAC地址都不相同,每个硬件厂商都会被分配一段地址,生产出的设备都在这个范围中。帧尾是校验和,CRC校验就是把每个BYTE做累加操作,最终会得到一个值。接收方也会同样的操作累加值,如果得到的值与校验和相等,那么就证明数据本身没有被该过。过程中可能会出现溢出,溢出就溢出。
【Java】网络通信基础、协议分层及封装分用

5.物理层
把以下的内容转换成光信号、电信号在网络设备上传输。光纤:光信号;网线:电信号。
【Java】网络通信基础、协议分层及封装分用
到此消息体就在网络上开始传输。

6.物理层
把光信号和电信号还原成数据链路层可以解析的格式。

7.数据链路层
帧头的MAC地址可以找到对应的主机,帧尾校验和来校验数据的有效性。然后脱掉帧头帧尾把载荷交给网络层。
【Java】网络通信基础、协议分层及封装分用

8.网络层
IP协议头中可以找到目标主机的IP。脱掉IP协议头,将数据交给传输层。
【Java】网络通信基础、协议分层及封装分用

9.传输层
这时已经进入了操作系统中,通过TCP中的目标端口确认应用程序(进程)。
【Java】网络通信基础、协议分层及封装分用

10.应用层
应用层拿到的是脱去了TCP头的数据,此时到了QQ.exe。应用程序按照自定义的协议格式来解析消息体,完成通信。
【Java】网络通信基础、协议分层及封装分用

在网络传输的过程中,每个网络节点都会进行封装和分用,最终才到达目标。


继续加油~
【Java】网络通信基础、协议分层及封装分用文章来源地址https://www.toymoban.com/news/detail-507731.html

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

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

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

相关文章

  • HTTPS网络通信协议基础

    目录 前言: 1.HTTPS协议理论 1.1协议概念 1.2加密 2.两类加密 2.1对称加密 2.2非对称加密 3.引入“证书” 3.1证书概念 3.2数据证书内容 3.3数据签名 4.总结  了解完HTTP协议后,HTTPS协议是HTTP协议的升级加强版,在目前的日常开发中,以使用HTPS协议为主,HTTPS协议对于HTTP协议有很多

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

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

    2024年02月10日
    浏览(53)
  • 【网络编程】网络通信基础——简述TCP/IP协议

    个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【网络编程】【Java系列】 本专栏旨在分享学习网络编程的一点学习心得,欢迎大家在评论区交流讨论💌 ip地址简单来说就是用来描述网络上一个设备的所在位置。 端

    2024年02月04日
    浏览(42)
  • 【Java】--网络编程:基于TCP协议的网络通信

    TCP协议(Transmission Control Protocol),即传输控制协议,是一种 面向连接 的, 可靠 的,基于 字节流 的传输层通信协议。数据大小无限制。 建立连接的过程需要 三次握手 。 断开连接的过程需要 四次挥手 。 使用TCP协议的通信双方分别为 客户端 和 服务器端 。 客户端负责向服务

    2024年01月23日
    浏览(47)
  • Java网络编程之IP,端口号,通信协议(UDP,TCP)

    ① C/S :客户端/服务器 在用户本地需要下载安装客户端程序,在远程有一个服务器端程序。 优点:画面精美,用户体验好 缺点:用户需要下载更新 ② B/S :浏览器/服务器 只需要一个浏览器,用户通过指定网址访问对应的服务器。 优点:不需要开发客户端,只需要页面+服务

    2024年02月03日
    浏览(49)
  • 万字长文深入理解Docker镜像分层原理、容器数据卷、网络通信架构(Docker系列第2章,共3章)

    在执行docker pull时,会发现多个Pull complete 字样,就能体现分层,如果是一个文件,只会有一个Pull complete 。 概念:文件系统是计算机系统中用于组织和管理数据存储的一种方式。它定义了数据如何存储、命名、访问和修改的方式。 举例:如Windows自带的NTFS、FAT32、EXFAT,和L

    2024年04月14日
    浏览(25)
  • 探索Java通信面试的奥秘:揭秘IO模型、选择器和网络协议,了解面试中的必备知识点!

    TCP(Transmission Control Protocol)是一种面向连接的可靠的传输协议。类似于打电话,它通过建立一个连接和保证数据的可靠传输来提高通信的可靠性。然而,由于要确保数据的可靠性,TCP协议会增加网络负担,效率相对较低。 UDP(User Datagram Protocol)是一种无连接、不可靠的传输

    2024年02月15日
    浏览(37)
  • 10 - 网络通信优化之通信协议:如何优化RPC网络通信?

    微服务框架中 SpringCloud 和 Dubbo 的使用最为广泛,行业内也一直存在着对两者的比较,很多技术人会为这两个框架哪个更好而争辩。 我记得我们部门在搭建微服务框架时,也在技术选型上纠结良久,还曾一度有过激烈的讨论。当前 SpringCloud 炙手可热,具备完整的微服务生态,

    2024年02月11日
    浏览(25)
  • 网络通信与网络协议

    网络编程是指利用计算机网络实现程序之间通信的一种编程方式。在网络编程中,程序需要通过网络协议(如 TCP/IP)来进行通信,以实现不同计算机之间的数据传输和共享。 在网络编程中,通常有三个基本要素 IP 地址:定位网络中某台计算机 端口号port:定位计算机上的某个进程

    2024年03月18日
    浏览(43)
  • 【网络原理】网络通信与协议

    ✨个人主页:bit me👇 ✨当前专栏:Java EE初阶👇 独立模式 :计算机之间相互独立 网络互连 : 随着时代的发展,越来越需要计算机之间互相通信,共享软件和数据,即以多个计算机协同工作来完成业务,就有了网络互连。   网络互连:将多台计算机连接在一起,完成数据共

    2023年04月09日
    浏览(46)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包