网络通信中的基本概念

本文涉及的产品
数据传输服务 DTS,数据迁移 small 3个月
推荐场景:
MySQL数据库上云
数据传输服务 DTS,数据同步 small 3个月
推荐场景:
数据库上云
云解析 DNS,旗舰版 1个月
简介: 网络通信中的基本概念

IP 地址


概念


IP地址主要用于标识网络主机、其他网络设备(如路由器)的网络地址。简单说,IP地址用于定位主机的网络地址。


格式


IP地址是一个32位的二进制数,通常被分割为4个“8位二进制数”(也就是4个字节),如:01100100.00000100.00000101.00000110。

通常用“点分十进制”的方式来表示,即 a.b.c.d 的形式(a,b,c,d都是0~255之间的十进制整数)。如:100.4.5.6。


特殊IP:


127.*的IP地址用于本机环回(loop back)测试,通常是127.0.0.1

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


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


端口号


概念


在网络通信中,IP地址用于标识主机网络地址,端口号可以标识主机中发送数据、接收数据的进程。

简单说:端口号用于定位主机中的进程。类似发送快递时,不光需要指定收货地址(IP地址),还需要指定收货人(端口号)


格式


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

注意:


两个不同的进程,不能绑定同一个端口号,但一个进程可以绑定多个端口号

(就好比快递一般填写一个收件人, 不填两个)


一个进程启动后,系统会随机分配一个端口.(启动端口)

在程序代码中,进行网络编程时,需要绑定端口号(收发数据的端口)来发送、接收数据。


协议


为什么要有协议


有了IP地址和端口号,就可以定位到网络中唯一的一个进程,但还存在一个问题,网络通信是基于二进制 0/1 数据来传输,如何告诉对方发送的数据是什么样的呢?

网络通信传输的数据类型可能有多种:图片,视频,文本等。

同一个类型的数据,格式可能也不同,如 :

发送一个文本字符串“你好!”, 如何标识发送的数据是文本类型,及文本的编码格式呢?

基于网络数据传输,需要使用协议来规定双方的数据格式。


简单来说, 协议就是规则, 就像我们聊天用到的语法什么的, 正是有了这些规则, 我们才能更清楚的表达自己的意思, 别人也能更明白.


概念


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


1.语法:即数据与控制信息的结构或格式;

类似打电话时,双方要使用同样的语言:普通话


2.语义:即需要发出何种控制信息,完成何种动作以及做出何种响应;

语义主要用来说明通信双方应当怎么做。用于协调与差错处理的控制信息。

类似打电话时,说话的内容, 双方基于内容来进行响应.


3.时序,即事件实现顺序的详细说明。

时序定义了何时进行通信,先讲什么,后讲什么,讲话的速度等。比如是采用同步传输还是异步传输。


协议最终体现为在网络上传输的数据包的格式.


协议分层


为什么要进行分层


在网络通信中, 需要约定的协议是非常复杂的, 面对复杂环境, 就需要复杂协议, 但是协议复杂了也不好, 那如何将复杂协议便简单呢, 可以将一个复杂协议拆分为多个小协议.

我们可以对这些小协议进行 “分类”, 同时对这些不同类别进行分层.

我们约定 : 上层协议调用下层协议, 下层协议给上层协议提供支持, 不能跨层调用.


分层的好处


像下面就是将协议分为了两层 :


f1e8b150526d4d49a52c83e0291c9041.png

分层后就可以比较容易的针对某一层协议进行替换.

总结 :


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

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

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


具体如何分层


有两大分层模型 :


  1. OSI 七层网络模型, 该模型复杂且不实用, 只存在于教科书中, 就不了解了.
  2. TCP / IP 五层网络模型, 这是当下最广泛使用的网络模型.


TCP / IP 五层网络模型


TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇。

TCP/IP通讯协议采用了5层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。


哪五层呢? 它们分别是 应用层, 传输层, 网络层, 数据链路层, 物理层.

下面详细介绍下这五层的主要作用都有哪些.


1.应用层 :

负责应用程序间沟通,如简单电子邮件传输、文件传输协议、网络远程访问协议等.

网络编程主要就是针对应用层.

简单理解 : 应用层主要关注传输的数据怎么用.


2.传输层 :

负责两台主机之间的数据传输。如传输控制协议,能够确保数据可靠的从源主机发送到目标主机。

简单理解 : 传输层不关注中间路径, 只关注起点和终点.


3.网络层 :

负责地址管理和路由选择。例如在IP协议中,通过IP地址来标识一台主机,并通过路由表的方式规划出两台主机之间的数据传输的线路。路由器工作在网路层。

简单理解 : 网络层主要负责两个较远节点间的路径规划.


4.数据链路层 :

负责设备之间的数据帧的传送和识别。例如网卡设备的驱动、帧同步、冲突检测、数据差错校验等工作。

简单理解 : 数据链路层主要关注两个相邻节点间的传输.(就是将数据通过什么形式传输, 比如通过网线/光纤/无线传输. )


5.物理层 :

负责光/电信号的传递方式。比如现在以太网通用的网线、早期以太网采用的的同轴电缆、光纤,现在的wifi无线网使用电磁波等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等。

简单理解 : 物理层就是网络通信的基础设施, 比如 : 网线, 光纤, 网络接口等, 它们相当于网络上的高速公路.

这样分层之后, 可以让程序员在同一时刻只关注一个子问题, 大大提升了效率.


数据的封装和分用


有了协议分层后, 数据是如何通过网络传输的呢?

这里就要提到封装和分用了.


封装 : 发送方发送数据时, 要把数据从上到下, 依次交给对应层次的协议进行封装.

分用 : 接收方接收到数据时, 要把数据从下到上, 依次交给对应层次的协议进行解析.


就以QQ发送消息为例吧, 比如, 我给张三发个消息 : 兄弟, 帮我拿个快递.


首先这里的数据要进行封装, 是从上到下进行的, 分这几步 :


1.应用层(qq应用程序)拿到上述基本数据, 进行封装, 封装成应用层数据包.(本质上就是字符串的拼接)

1961737633bf406686db9009c8c1848d.png

2.传输层要调用传输层提供的 api 来处理这个数据. 传输层有很多协议, 最典型的是 TCP 和 UCP, 这里就以 UDP 为例, UDP 针对上述数据包在进行封装(加个数据报头).

加个报头是为了再贴一层标签, 从而在标签上填写必要的属性, 在传输层最重要的属性就是源端口和目的端口了.

bad60e5ec1d5427e95d745731e316814.png

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


3.网络层, 网络层最常见的协议就是 IP 协议了. 上述 UDP 数据报到达网络层还需要进一步进行封装, 添加上 IP 协议报头.

cf94fa5aacd94d9ebc3fe07e1220d687.png

源 IP 和目的 IP 就描述了这次传输中, 最初的起点, 和最终的终点.


4.数据链路层, 最典型的协议叫做以太网, 在这里需要加上以太网帧头和帧尾.

c16d878e022c4083bd51f6b48b3645d1.png


mac 地址也叫做物理地址, 也是描述一个主机在网络中的位置, 它的功能和 IP 很相似, 但有所不同.

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


5.物理层要把上述 0101 的二进制转换为信号(光信号/电信号/电磁波信号)进行传输.


当接收方收到数据时, 就会对数据进行分用, 如果将上述操作比喻为包装快递, 那分用就是拆快递了.

封装快递是从里面一层一层的往外面封装, 那拆快递就是从外面一层一层往里面拆.


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


2.数据链路层, 将上述还原出的数据当成一个以太网数据帧(根据传输的方式不同, 使用不同的协议. 这里使用以太网线接收数据, 就交给以太网协议来处理).

将会帧头帧尾去掉, 再将载荷交给上一层(网络层).

af6a0a75b0e146fcb83203fa313d9948.png

3.网络层, 此时就由网络层的 IP 协议进行解析数据报, 也就是去掉 IP 报头, 同时做一些其他工作.

最重要的还是取出载荷, 交给更上层的传输层协议.

4ccf25ca0a9447a99897216608860ceb.png

4.传输层, 由 UDP 来解析处理, 去掉报头, 取出载荷, 把数据传给应用层.

962b6f5febe0402da4e53e6eab459d83.png

5.应用层, 由QQ这个程序解析得到的数据报, 取出相应字段放到程序对应的界面中, 也就是张三收到了我发送的消息.


客户端和服务器


服务端:在常见的网络数据传输场景下,把提供服务的一方进程,称为服务端,可以提供对外服务。

客户端:获取服务的一方进程,称为客户端。


针对客户端提出的请求, 服务端作出相应响应.


常见的客户端服务端模型


  1. 客户端先发送请求到服务端
  2. 服务端根据请求数据,执行相应的业务处理
  3. 服务端返回响应:发送业务处理结果
  4. 客户端根据响应数据,展示处理结果(展示获取的资源,或提示保存资源的处理结果)

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
Sqoop 企业级大数据迁移方案实战
Sqoop是一个用于在Hadoop和关系数据库服务器之间传输数据的工具。它用于从关系数据库(如MySQL,Oracle)导入数据到Hadoop HDFS,并从Hadoop文件系统导出到关系数据库。 本课程主要讲解了Sqoop的设计思想及原理、部署安装及配置、详细具体的使用方法技巧与实操案例、企业级任务管理等。结合日常工作实践,培养解决实际问题的能力。本课程由黑马程序员提供。
相关文章
|
7天前
|
机器学习/深度学习 人工智能
类人神经网络再进一步!DeepMind最新50页论文提出AligNet框架:用层次化视觉概念对齐人类
【10月更文挑战第18天】这篇论文提出了一种名为AligNet的框架,旨在通过将人类知识注入神经网络来解决其与人类认知的不匹配问题。AligNet通过训练教师模型模仿人类判断,并将人类化的结构和知识转移至预训练的视觉模型中,从而提高模型在多种任务上的泛化能力和稳健性。实验结果表明,人类对齐的模型在相似性任务和出分布情况下表现更佳。
19 3
|
14天前
|
供应链 网络协议 数据安全/隐私保护
|
2月前
|
存储 安全 数据处理
探索未来网络:量子互联网的概念与前景
本文将探讨量子互联网的基本概念、技术原理以及其潜在的应用前景。我们将从传统互联网的局限性出发,逐步引入量子力学的基本知识,解释量子纠缠和量子叠加的独特性质如何赋予量子互联网以全新的通信能力和安全性。最后,我们将讨论量子互联网在金融、医疗、国家安全等领域的应用潜力,并对其技术挑战与未来发展进行展望。
48 1
|
2月前
|
存储 安全 网络安全
[收藏]网络安全知识:网络安全概念、内容和主要技术纵览
[收藏]网络安全知识:网络安全概念、内容和主要技术纵览
|
3月前
|
Kubernetes 负载均衡 安全
在k8S中,网络模型概念是什么?
在k8S中,网络模型概念是什么?
|
3月前
|
监控 安全 网络安全
非军事区 (DMZ) 在网络安全中的概念
【8月更文挑战第27天】
61 0
|
4月前
|
网络协议 程序员 视频直播
|
4月前
|
机器学习/深度学习 自然语言处理 算法
深度学习的关键概念和网络结构
度学习是人工智能和机器学习的一个重要分支,它通过模拟人脑神经元的工作方式来处理复杂的模式识别和数据分析任务。深度学习已经在许多领域取得了显著的成果,如图像识别、语音识别和自然语言处理。
61 1
|
5月前
计算机网络——数据链路层-媒体接入控制的基本概念
计算机网络——数据链路层-媒体接入控制的基本概念
86 7
|
5月前
|
网络协议 安全 API
计算机网络——基本概念(计算机网络,Internet,网络协议)
计算机网络——基本概念(计算机网络,Internet,网络协议)
101 2