<JavaEE> 网络编程 -- 网络通信基础(协议和协议分层、数据封装和分用)

本文主要是介绍<JavaEE> 网络编程 -- 网络通信基础(协议和协议分层、数据封装和分用),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

一、IP地址

1)IP地址的概念

2)IP地址的格式

二、端口号

1)端口号的概念

2)端口号的格式

3)什么是知名端口号?

三、协议

1)协议的概念

2)协议的作用

3)TCP/IP协议中的五元组概念

四、协议分层

1)什么是协议分层?

2)协议分层的作用

3)协议分层的两种模型

<1> OSI七层模型

<2> TCP/IP五层模型

4)协议分层应用的经典网络设备

五、封装和分用

1)封装和分用的概念


一、IP地址

1)IP地址的概念

IP地址描述了一个网络设备的网络地址,主要用于对设备的网络地址进行标识和定位。

2)IP地址的格式

IP地址是一个32位的二进制数,每8位二进制数(4个字节)后,用一个 ‘ . ’ 号分隔。这种表示方式被称为“点分十进制”。(如:192.168.1.1)

二、端口号

1)端口号的概念

端口号区分了一个主机上的不同应用程序,用于对主机中发送、接收数据的进程标识和定位。
不同的程序可以关联多个端口号,但是一个端口号只能被一个程序关联

2)端口号的格式

端口号是一个2字节的整数,表示范围在0~65535之间。

3)什么是知名端口号?

在0~65535范围中,0端口通常不使用,1~1023端口为系统预留端口,这些端口被分配给一些比较常见的服务器程序使用。一般在编程使用时,不应使用这些端口。

三、协议

1)协议的概念

网络通信有数据发送方和数据接收方,接收方如何识别发送方发送的数据,这就需要通信的双方有一个约定,这个约定就是协议。
协议即网络协议,是指网络通信过程的相关设备都必须共同遵守的一系列规则。这里的规则的具体体现,就是数据格式

2)协议的作用

计算机之间的传输媒介是光信号和电信号。通过“频率”和“强弱”来表示0和1。
协议是一个规则,规定了通信双方如何解读这些信号,只有遵守这个规则,不同设备之间才能正确解读对方的发送的数据。

3)TCP/IP协议中的五元组概念

TCP/IP协议是网络通信中最基本的协议。
在TCP/IP协议中,用五元组的概念来标识一个网络通信,五元组是一次通信过程中必不可少的信息
五元组包括了以下内容:
<1> 源IP标识源主机
<2> 源端口号标识源主机中该次通信发送数据的进程
<3> 目的IP标识目的主机
<4> 目的端口号标识目的主机中该次通信接收数据的进程
<5> 协议号标识发送进程和接收进程双方约定的数据格式

四、协议分层

1)什么是协议分层?

网络通信十分复杂,有许多问题需要通过协议进行解决。如果将这些协议全部杂糅在一起,则会十分混乱。因此,就将这些协议拆分分层,使得每个协议都在自己的领域,专注于处理自己的事务。

2)协议分层的作用

分层的好处是使用上层协议时,不必关心下层,使用下层协议时,不用关心上层,每一层协议专注于处理自己的事务即可,同时每一层协议都可以根据需要灵活替换
这类似于对上下层协议进行了封装,按照协议的定位和作用,进行分类,并且约定了不同层次之间的“调用关系”。

3)协议分层的两种模型

<1> OSI七层模型

OSI:即Open System Interconnection(开放系统互连)。是一种框架性的设计方法,最主要的功能是帮助不同类型的主机实现数据传输。
OSI七层模型复杂而不实用,没有实际的实现,只存在于教科书中。

图示演示模型分层:

<2> TCP/IP五层模型

TCP/IP是一组协议的代名词,它还包括了许多其他的协议,组成了TCP/IP协议簇。
TCP/IP通讯协议采用了五层层级结构,每一层都呼叫它的下一层协议提供的网络来完成自己的需求。
包括以下五层:
1> 应用层负责应用程序间的沟通。规范应用程序如何使用数据。
2> 传输层负责通信两端的数据传输。关注的是端与端。
3> 网络层负责地址管理和路由选择。关注的是端与端之间的路径。
4> 数据链路层负责设备之间数据帧的传送和识别。关注的是两个相邻节点之间的数据传输情况。
5> 物理层负责光电信号的传递方式。是用于网络通信的硬件设备。
实际上TCP/IP五层模型就是将OSI七层模型中的上三层结合在一起了

图示演示模型分层:

4)协议分层应用的经典网络设备

主机主机的操作系统内核实现了从传输层到物理层的内容,同时主机上的应用程序则是处于应用层,TCP/IP五层模型都在主机上有所实现。
路由器实现了从网络层到物理层,即TCP/IP模型的下三层。
交换机实现了从数据链接层到物理层,即TCP/IP模型的下二层。
集线器只实现了物理层。
随着网络设备技术的发展,现在的路由器和交换机的应用层级越来越高,出现了应用于三四层的交换机和四层的路由器等。

五、封装和分用

1)封装和分用的概念

不同层级的数据包称谓不同,在传输层的称为段(segment),在网络层称为数据报(datagram),在链路层称为帧(frame)。
应用层数据发送时,会从应用层到物理层,逐层处理数据。这里的处理指的是每层协议会在数据上增加数据首部(header),这称为封装(Encapsulation)。

首部信息包含首部长度,荷载(payload)长度,端口信息,上层协议等内容。

数据封装完成后发送,经过传输介质到达目的主机,再由每层协议逐层解析对应层级的首部,最后得到源主机应用层发送的数据,这称为分用。

图示演示封装和分用:


阅读指针 -> 《 网络编程 -- 服务器 》

链接生成中.........

这篇关于<JavaEE> 网络编程 -- 网络通信基础(协议和协议分层、数据封装和分用)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/514580

相关文章

Spring实现Bean的初始化和销毁的方式

《Spring实现Bean的初始化和销毁的方式》:本文主要介绍Spring实现Bean的初始化和销毁的方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、Bean的初始化二、Bean的销毁总结在前面的章节当中介绍完毕了ApplicationContext,也就

Java的"伪泛型"变"真泛型"后对性能的影响

《Java的伪泛型变真泛型后对性能的影响》泛型擦除本质上就是擦除与泛型相关的一切信息,例如参数化类型、类型变量等,Javac还将在需要时进行类型检查及强制类型转换,甚至在必要时会合成桥方法,这篇文章主... 目录1、真假泛型2、性能影响泛型存在于Java源代码中,在编译为字节码文件之前都会进行泛型擦除(ty

Java中的getBytes()方法使用详解

《Java中的getBytes()方法使用详解》:本文主要介绍Java中getBytes()方法使用的相关资料,getBytes()方法有多个重载形式,可以根据需要指定字符集来进行转换,文中通过代... 目录前言一、常见重载形式二、示例代码三、getBytes(Charset charset)和getByt

Java使用Stream流的Lambda语法进行List转Map的操作方式

《Java使用Stream流的Lambda语法进行List转Map的操作方式》:本文主要介绍Java使用Stream流的Lambda语法进行List转Map的操作方式,具有很好的参考价值,希望对大... 目录背景Stream流的Lambda语法应用实例1、定义要操作的UserDto2、ListChina编程转成M

Spring框架中@Lazy延迟加载原理和使用详解

《Spring框架中@Lazy延迟加载原理和使用详解》:本文主要介绍Spring框架中@Lazy延迟加载原理和使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、@Lazy延迟加载原理1.延迟加载原理1.1 @Lazy三种配置方法1.2 @Component

使用easy connect之后,maven无法使用,原来需要配置-Djava.net.preferIPv4Stack=true问题

《使用easyconnect之后,maven无法使用,原来需要配置-Djava.net.preferIPv4Stack=true问题》:本文主要介绍使用easyconnect之后,maven无法... 目录使用easGWowCy connect之后,maven无法使用,原来需要配置-DJava.net.pr

idea报错java: 非法字符: ‘\ufeff‘的解决步骤以及说明

《idea报错java:非法字符:‘ufeff‘的解决步骤以及说明》:本文主要介绍idea报错java:非法字符:ufeff的解决步骤以及说明,文章详细解释了为什么在Java中会出现uf... 目录BOM是什么?1. BOM的作用2. 为什么会出现 \ufeff 错误?3. 如何解决 \ufeff 问题?最

使用Java编写一个字符脱敏工具类

《使用Java编写一个字符脱敏工具类》这篇文章主要为大家详细介绍了如何使用Java编写一个字符脱敏工具类,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、字符脱敏工具类2、测试工具类3、测试结果1、字符脱敏工具类import lombok.extern.slf4j.Slf4j

MySQL复合查询从基础到多表关联与高级技巧全解析

《MySQL复合查询从基础到多表关联与高级技巧全解析》本文主要讲解了在MySQL中的复合查询,下面是关于本文章所需要数据的建表语句,感兴趣的朋友跟随小编一起看看吧... 目录前言:1.基本查询回顾:1.1.查询工资高于500或岗位为MANAGER的雇员,同时还要满足他们的姓名首字母为大写的J1.2.按照部门

Java实现按字节长度截取字符串

《Java实现按字节长度截取字符串》在Java中,由于字符串可能包含多字节字符,直接按字节长度截取可能会导致乱码或截取不准确的问题,下面我们就来看看几种按字节长度截取字符串的方法吧... 目录方法一:使用String的getBytes方法方法二:指定字符编码处理方法三:更精确的字符编码处理使用示例注意事项方