计算机网络中的一些基本概念

server/2024/9/22 15:20:54/

ip地址IP地址是ip协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异是用来区分主机的

端口号:每个应用程序对应一个端口号,通过类似门牌号的端口号,客户端才能真正的访问到该服务器。为了对端口进行区分,将每个端口进行了编号,这就是端口号.是用来区分同一主机上的不同程序的。

协议:协议是一种约定,是通信双方对于通信规则的约定。

注:协议和标准还是有差别的,标准往往是一个认可面非常广的“国家标准”。协议,则不一定,可以是认可面非常广,也可以是认可面不广的。

协议分层:网络通信是一个非常复杂的事情,这个过程中涉及到很多的细节问题。如果只使用一个协议来约定上述所有的细节,这个协议就会非常庞大,复杂。此时,就可以把一个功能复杂的协议,拆分成多个功能更单一的协议了。这些协议要进行分类(分层)。按照不同的功能分成不同的层级,每个层级都有对应的主线任务,上层协议会调用下层协议的功能,下层协议会给上层协议提供服务。(不能“越级调用”)

分层通常有两种:1)OSI七层模型(仅存在于课本上,客观世界中不存在)

2)TCP/IP五层(也可说四层,除去物理层)模型

可以认为是OSI的简化版本,是真实世界采取的网络分层模型。

封装:应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装。首部信息中包含了一些类似于首部有多长,载荷有多长,上层协议是什么等信息。数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应地首部,根据首部中的“上层协议字段”将数据交给对应的上层协议处理。

以下为数据封装过程:

以下为数据分用过程:

两台主机之间的网络通信流程:

1)应用层

应用层会将要传递的内容,组织成“应用层数据包”。将要传输的发送人,接收人,消息时间,消息内容组织到一个字符串中,不同的应用层协议数据组织的格式是不相同的。本身要发送的是一个结构化的数据(包含很多属性,字段),把结构化的转化成字符串的过程,称为“序列化”。把字符串转化成结构化数据的过程称为“反序列化”。

2)传输层

传输层(操作系统内核)提供了api(称为socket api)。让应用程序去调用。应用层接下来要把数据交给传输层,传输层拿到应用层数据包之后,就会把这个数据包进行进一步的封装,添加一个报头,构造成传输层数据包,在传输层有两个典型协议TCP和UDP,此处假设使用UDP。

传输层构造好数据包之后,就会继续把数据包交给网络层。

3)网络

网络层又继续给数据包添加ip报头,ip报头里包含收件人的ip地址和发件人的ip地址。构成ip数据包。

接下来调用数据链路层的api,把ip数据包交给数据链路层的协议。

4)数据链路层

数据链路层的典型协议是以太网,以太网也有自己的数据包格式,就会拿到上述ip数据包,进一步的封装。

至此数据已经进入到网卡驱动中了,接下来就要真正发送出去了。

5)物理层

上述的以太网数据帧,本质上还是0101二进制数据。硬件设备要把上述二进制数据转成光信号/电信号/电磁波,才会真正进行发射。

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


注:服务端:在常⻅的⽹络数据传输场景下,把提供服务的⼀⽅进程,称为服务端,可以提供对外服务。

客⼾端:获取服务的⼀⽅进程,称为客⼾端。


当数据经由交换机/路由器一系列转发之后,最终到达客户端。

客户端所做的就是将上述过程反过来。

上述过程称为“分用”。

注:在纸面,“路由器”工作在网络层。“交换机”工作在数据链路层。而在真实情况下,现在的路由器和交换机功能越来越多,有些交换机的功能,路由器也有,所以界限就没那么分明了。


请求和响应:

⼀般来说,获取⼀个⽹络资源,涉及到两次⽹络数据传输:

• 第⼀次:请求数据的发送

• 第⼆次:响应数据的发送。

好⽐在快餐店点⼀份炒饭: 先要发起请求:点⼀份炒饭,再有快餐店提供的对应响应:提供⼀份炒饭

以上,关于网络的基本概念,希望对你有所帮助。


http://www.ppmy.cn/server/8074.html

相关文章

【PCL】教程correspondence_grouping对点云模型和点云场景进行特征提取,匹配,以及聚类找到模型与场景的匹配...

基于对应分组的 3D 对象识别 本教程旨在解释如何使用 pcl_recognition 模块执行基于对应分组的 3D 对象识别。具体来说,它解释了如何使用对应分组算法将 3D 描述符匹配阶段后的点对点对应集聚合到当前场景中的模型实例中。对于每个聚类,表示场景中的可能…

python 又一个点运算符操作的字典库:Munch

munch 库 又一个将字典(dict)变成类似对象(object)的库。这意味着你可以使用点符号(.)而不是方括号([])来访问字典的键。这使得代码更易读,尤其是在处理嵌套字典时。 相…

【Hadoop】- YARN架构[7]

前言 Yarn架构是一个用于管理和调度Hadoop集群资源的系统。它是Hadoop生态系统的一部分,主要用于解决Hadoop中的资源管理问题。 通过使用Yarn架构,Hadoop集群中的不同应用程序可以共享集群资源,并根据需要动态分配和回收资源。这种灵活的资…

CX5120-0125倍福CPU模块维修PLC控制器CX5120全系列主机电脑深圳捷达工控维修

工业计算机服务与维修 为任何品牌的工业计算机、显示器、人机界面 (HMI) 和面板计算设备提供服务、维修和改造。您可以信赖我们延长生命周期,包括不再投放市场的产品。 工业计算机维修与保养 您的工业计算机专家 工业计算机维修服务 深圳捷达工控维修深知做好工业…

【MySQL】脏读,幻读,不可重复读

脏读、幻读、不可重复读 一、脏读 二、幻读 三、不可重复读 四、脏读、幻读、不可重复读的区别 一、脏读 脏读主要发生在隔离级别很低的事务之间,就比如隔离级别设为Read Uncommitted,也就是读为提交。当我们有多个数据库并发的访问一张表的时候,就…

前后端交互概念

前后端交互概念 1前后端分离开发概念2搭建后端环境2.1配置文件commomcommon-utilservice-utilmodelservice gitee使用 1前后端分离开发概念 前段:运用html、css、js和现成库,对数据作展示。 后端:运用Java和Java框架,提供数据或操…

【java毕业设计】 基于Spring Boot+mysql的课程作业管理系设计与实现(程序源码)-课程作业管理系

基于Spring Bootmysql的课程作业管理系设计与实现(程序源码毕业论文) 大家好,今天给大家介绍基于Spring Bootmysql的课程作业管理系设计与实现,本论文只截取部分文章重点,文章末尾附有本毕业设计完整源码及论文的获取方…

Basic TCP Server Client

Server #include <stdio.h> #include <string.h> #include <unistd.h> // read and write (TCP); sendto and recvfrom (UDP) #include <arpa/inet.h> // 包含#include <sys/socket.h>int main(int argc, char* argv[]) {// 1. 创建监听fdint f…