网络中的基本概念

目录

正文:

1.IP地址

2.端口号

3.协议

4.协议分层

5.封装

6.分用

7.客户端

8.服务器

9.客户端-服务器模型(Client-Server Model)

10.请求

11.响应

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


正文:

1.IP地址

IP地址(Internet Protocol Address)是互联网中设备的唯一标识符,类似于现实世界中的门牌号码。IP地址是用来定位和识别网络中的设备,使得数据包能够准确传输到目标设备。IPv4(Internet Protocol version 4)是目前使用最广泛的IP协议版本。IPv4地址由32位二进制数组成,通常以点分十进制表示,例如:192.168.1.1。由于IPv4地址空间有限,导致IP地址资源短缺的问题,因此IPv6地址也被引入,它是128位的二进制数字,被分为八个16位的组,每个组用十六进制表示,中间用冒号(:)分隔,例如:2001:0db8:85a3:0000:0000:8a2e:0370:7334。IP地址还分为公有IP地址和私有IP地址。公有IP地址是可以在互联网上使用的IP地址,用于标识网络中的设备;私有IP地址是在局域网内部使用的IP地址,不会直接暴露在互联网中。

2.端口号

端口号是网络通信中用于标识应用程序或服务的逻辑地址。在一台计算机上,不同的应用程序或服务需要进行网络通信,为了区分它们,每个应用程序或服务都会使用不同的端口号。端口号的范围是从0到65535,其中0到1023是被系统保留的一些知名端口,用于一些常见的服务,比如HTTP服务使用的端口号是80,FTP服务使用的端口号是21。

端口号的使用遵循以下规则:

  1. 服务器监听:服务器应用程序通常会监听一个特定的知名端口,等待客户端的连接请求。

  2. 客户端发起连接:客户端在需要连接到某个服务时,会指定服务器的IP地址和端口号。

  3. NAT和端口转发:在网络地址转换(NAT)环境中,内部网络的私有IP地址可以通过端口转发被映射到公网IP地址的特定端口。

  4. 防火墙规则:防火墙可以根据端口号来允许或阻止数据流,增强网络安全。

  5. 端口冲突:如果多个应用程序尝试监听同一个端口,可能会导致冲突。在大多数操作系统中,只有一个应用程序可以监听一个给定的端口。

3.协议

网络协议是网络通信中用于规定数据传输和通信规则的一系列约定和规范。网络协议定义了数据如何在网络中传输、如何被解释和处理,以及网络设备之间如何进行通信。网络协议通常分为不同的层次,常见的网络协议体系结构是TCP/IP协议栈和OSI模型。

  1. OSI模型:OSI模型是一种通用的网络协议体系结构,将网络通信划分为七个层次,每个层次负责不同的功能,从物理层到应用层分别是:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。每个层次之间通过接口进行通信,上层向下层提供服务,下层向上层提供数据传输。

  2. TCP/IP协议栈:TCP/IP协议栈是互联网通信中最常用的协议体系结构,将网络通信划分为四个层次,从底层到高层分别是:网络接口层、网络层、传输层、应用层。TCP/IP协议栈是由TCP(Transmission Control Protocol)和IP(Internet Protocol)两个核心协议组成,TCP负责可靠的数据传输,IP负责数据包的路由和传输。

4.协议分层

协议分层是将网络通信中的功能划分为多个层次,每个层次负责不同的功能,层与层之间通过接口进行通信。常见的协议体系结构有OSI模型和TCP/IP协议栈。

分层的优点:

  • 模块化:分层可以将网络通信划分为多个模块,方便设计和管理。
  • 简化:每个层次只需关注自己的功能,降低了复杂性。
  • 可扩展性:可以方便地添加新的功能层次。
  • 互操作性:不同厂商的设备可以遵循相同的协议标准,实现互操作。

5.封装

封装是将数据添加协议头部信息的过程,将数据包装成符合网络协议格式的数据包。在发送端,数据从应用层经过每一层的协议处理,每一层都会在数据上添加相应的协议头部信息;在接收端,数据包经过每一层的处理,每一层都会解析并去掉相应的协议头部信息,将数据传递给更高层的协议。封装的目的是为了确保数据能够正确传输和被解释。

6.分用

分用是指在发送端将多个不同来源的数据流合并成一个数据流进行传输,而在接收端将这个数据流分解成多个不同的数据流。在网络通信中,分用通常通过端口号来实现,不同的应用程序或服务可以使用不同的端口号进行通信,这样在接收端可以根据端口号将数据包分发给相应的应用程序或服务。

7.客户端

 客户端是指请求服务的一端,通常是用户使用的设备或应用程序。客户端向服务器发送请求,并等待服务器的响应。

客户端的主要功能包括:

  • 发起请求:客户端向服务器发送请求,请求特定的服务或资源。
  • 接收响应:客户端接收服务器返回的数据或响应,根据需要进行处理或显示。
  • 用户界面:客户端通常具有用户界面,用户可以通过界面与服务进行交互。

8.服务器

 服务器是提供服务的一端,通常是运行在网络上的计算机或设备。服务器接收客户端的请求,并提供相应的服务或资源。

服务器的主要功能包括:

  • 接收请求:服务器接收客户端发送的请求,根据请求提供相应的服务或资源。
  • 处理请求:服务器处理客户端的请求,执行相应的操作或逻辑。
  • 返回响应:服务器生成响应数据,并将响应发送给客户端。

9.客户端-服务器模型(Client-Server Model)

客户端和服务器之间的通信遵循客户端-服务器模型,其工作流程如下:

  1. 建立连接:客户端通过IP地址和端口号与服务器建立连接。

  2. 发送请求:客户端向服务器发送服务请求。

  3. 处理请求:服务器接收请求,并进行处理。

  4. 发送响应:服务器将处理结果作为响应发送回客户端。

  5. 接收响应:客户端接收响应,并进行相应的处理。

  6. 断开连接:数据传输完成后,客户端和服务器断开连接。

10.请求

 请求是客户端向服务器发送的消息,用于请求特定的服务或资源。请求通常包含以下要素:

  • 请求行:包含请求方法(如GET、POST等)、请求的URL和协议版本。
  • 请求头部:包含请求的元数据信息,如请求的数据类型、长度等。
  • 请求体:包含请求的具体数据或参数。

11.响应

响应是服务器向客户端发送的消息,用于回应客户端的请求。响应通常包含以下要素:

  • 状态行:包含响应的状态码(如200表示成功、404表示未找到资源等)和状态消息。
  • 响应头部:包含响应的元数据信息,如响应的数据类型、长度等。
  • 响应体:包含响应的具体数据或内容。

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

网络通信是指两台或多台计算机通过计算机网络进行数据交换的过程。以下是两台主机之间进行网络通信的详细流程,通常涉及OSI模型或TCP/IP模型的不同层次:

1. 应用层交互

  • 建立会话:通信的发起方(客户端)的应用程序首先建立一个会话,这可能涉及到如HTTP、FTP、SMTP等应用层协议。

  • 数据生成:客户端应用程序生成要发送的数据。

2. 传输层处理

  • 分段和流量控制:传输层(如TCP或UDP)将应用层数据分割成较小的段,并进行流量控制以避免数据溢出。

  • 封装:TCP头或UDP头被添加到数据段上,形成TCP段或UDP数据报。这些头部包含了端口号、序列号等信息。

3. 网络层处理

  • 寻址和路由选择:网络层(如IP协议)处理数据包的寻址和路由选择。源IP地址和目的IP地址被添加到数据包中。

  • 分片:如果数据包太大,无法通过网络中的某个链路,网络层将进行分片处理。

4. 数据链路层处理

  • 帧封装:数据链路层将IP数据包封装成帧,帧中包含了如源MAC地址、目的MAC地址和错误检测等信息。

  • 介质访问控制:通过介质访问控制(如CSMA/CD或CSMA/CA)决定数据帧何时在物理介质上发送。

5. 物理层传输

  • 信号传输:物理层负责将数据帧转换为电信号或光信号,并在物理介质(如以太网电缆、光纤或无线电波)上进行传输。

6. 路由器和交换机

  • 路由器转发:数据帧通过网络中的路由器和交换机被转发至目的地。路由器使用路由表来决定如何转发数据包。

7. 目的主机接收

  • 帧解封装:目的主机的数据链路层接收到帧后,去除帧头和帧尾,并进行错误检测。

  • IP处理:网络层去除IP头部,并将剩余的数据包传递给传输层。

  • 端口交付:传输层去除TCP/UDP头部,并根据端口号将数据交付给对应的应用程序。

8. 应用层接收

  • 会话管理:目的主机的应用程序接收数据,并可能与源主机的应用程序建立一个会话,以便进行双向通信。

9. 响应和数据传输

  • 响应生成:如果需要,目的主机的应用程序将生成响应数据,并重复上述流程发送回源主机。

10. 连接终止

  • 关闭连接:对于如TCP这样的面向连接的协议,通信完成后,双方将关闭已建立的连接。

注意事项

  • NAT和防火墙:在通信过程中,网络地址转换(NAT)和防火墙可能会对数据包进行检查和修改。

  • 网络安全:加密协议(如TLS/SSL)可以用于保护传输中的数据安全。

  • 错误处理:网络层和传输层都有错误检测和纠正机制,如IP的ICMP和TCP的确认与重传机制。

总结:

计算机网络是将多台计算机通过通信设备连接在一起,实现数据交换和资源共享的系统。这些通信设备通过不同规模和范围的网络使用不同的网络协议进行通信。路由器、交换机、网桥等网络设备用于实现数据包的转发、路由和交换。网络会根据你的ip地址和端口号定位到你的设备,从而能够对你发送一些数据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/5764.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

主成分分析在R语言中的简单应用:使用mvstats包

在数据科学领域,主成分分析(PCA)是一种广泛使用的技术,主要用于数据降维和探索性数据分析。PCA可以帮助我们发现数据中的模式,减少数据集的复杂性,同时保持数据中最重要的特征。本文将介绍如何在R语言中使用…

04_jvm性能调优_并行收集器介绍

并行收集器(此处也称为吞吐量收集器)是类似于串行收集器的分代收集器。串行和并行收集器之间的主要区别在于并行收集器具有多个线程,用于加速垃圾回收过程。 通过命令行选项-XX:UseParallelGC 可启用并行收集器。默认情况下,使用…

leetcode 174.地下城游戏

思路:dp。 原先的时候其实是想这样用dfs的做法进行解答的,但是呢,是不对的。 这里作者dfs的思路是:首先找出来最小路径和,然后再处理最小路径和这条路径里面的初始值。但是,后来发现这样不一定是最优解&a…

LeetCode 105.从前序与中序遍历构造二叉树

题目描述 给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。 示例 1: 输入: preorder [3,9,20,15,7], inorder [9,3,15,20,7] 输出: [3,9,20,null,nul…

Dockerfile 里 ENTRYPOINT 和 CMD 的区别

ENTRYPOINT 和 CMD 的区别: 在 Dockerfile 中同时设计 CMD 和 ENTRYPOINT 是为了提供更灵活的容器启动方式。ENTRYPOINT 定义了容器启动时要执行的命令,而 CMD 则提供了默认参数。通过结合使用这两个指令,可以在启动容器时灵活地指定额外的参…

【LeetCode刷题记录】110. 平衡二叉树

110 平衡二叉树 给定一个二叉树,判断它是否是平衡二叉树 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:true 示例 2: 输入:root [1,2,2,3,3,null,null,4,4] 输出:false 示例 3&…

vue3项目引入VueQuill富文本编辑器(成功)及 quill-image-uploader 图像模块(未成功)

tip:重点解释都写在代码注释里了,方便理解,所以看起来比较密集 富文本基本使用 项目文件夹路径安装依赖 npm install vueup/vue-quilllatest --save 全局注册:main.js // main.js// 自己项目的一些配置(只放了主要…

EditText与NestScrollView嵌套使用时,滑动冲突处理

期望 在Android开发中经常会有在一个大页面中&#xff0c;包含一个EditText的情况&#xff0c;一般情况下&#xff0c;大页面会通过NestScrollView或者ScrollView当作根View。 于是在布局文件中&#xff0c;我们常常这么写&#xff1a; <?xml version"1.0" en…

HTTP方式在线访问Hadoop HDFS上的文件解决方案

背景&#xff1a; 在做大数据和大模型产品的时候&#xff0c;方式设计的是将文件放在hdfs上进行管理&#xff0c;前几天遇到一个需求&#xff1a;需要通过http的方式去访问hdfs上的问题&#xff0c;以前基本上都是通过hdfs://hadoop01:9000,去访问文件&#xff0c;于是经过一番…

注册表获取autoCAD安装位置

注意事项 注意&#xff1a;①64位操作系统注册表会重定向&#xff0c;RegOpenKeyEx第4个参数得加上KEY_WOW64_64KEY&#xff1b;②RegOpenKeyEx遍历子项时注意第2和第4参数&#xff0c;参考图&#xff1a; ③RegQueryValueEx同样得注意第6参数 完整代码 std::unordered_map…

基于ssm+vue+Mysql的药源购物网站

开发语言&#xff1a;Java框架&#xff1a;ssmJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;Maven3.…

【Redis基础】Redis知识体系详解-Redis概念和基础

1. 什么是Redis Redis是一款用C语言编写的key-value存储系统&#xff08;键值存储系统&#xff09;&#xff0c;支持丰富的数据类型&#xff0c;如&#xff1a;String、list、set、zset、hash。 Redis是一种支持key-value等多种数据结构的存储系统。可用于缓存&#xff0c;事…

SpringBoot / SpringCloud 注册与发现

SpringBoot / SpringCloud EnableDiscoveryClient与EnableEurekaClient区别 在使用Spring Cloud feign使用中在使用服务发现的时候提到了两种注解&#xff0c;一种为EnableDiscoveryClient,一种为EnableEurekaClient,用法上基本一致。 spring cloud中discovery service有许多…

C#(C Sharp)学习笔记_方法(Medthod)【十六】

什么是方法&#xff1f; 在编程中&#xff0c;方法&#xff08;Method&#xff09;是一个执行特定操作的代码块。它是一种将逻辑封装起来的方式&#xff0c;使得代码更加模块化、重用性更高&#xff0c;并且易于维护。以下是方法的一些关键特性&#xff1a; 封装性&#xff1a…

【WEEK10】学习目标及总结【Spring Boot】【中文版】

学习目标&#xff1a; 学习SpringBoot 学习内容&#xff1a; 参考视频教程【狂神说Java】SpringBoot最新教程IDEA版通俗易懂MVC自动配置原理员工管理系统 准备工作首页实现 学习时间及产出&#xff1a; 第十周MON~TUE 2024.4.29【WEEK10】 【DAY1】MVC自动配置原理【中文版…

使用Spring Boot、Redis和Spring Cache实现高效缓存

在当今互联网应用开发中&#xff0c;性能是至关重要的因素之一。随着用户量的增加和数据量的膨胀&#xff0c;有效地管理数据的访问和处理变得愈发重要。 在这个背景下&#xff0c;缓存成为了提升应用性能的常用手段之一。本文将介绍如何利用Spring Boot、Redis以及Spring Cac…

Unity编辑器扩展

Unity编辑器扩展 引言 在游戏开发领域&#xff0c;Unity因其强大的功能和灵活性而备受欢迎。Unity的编辑器扩展能力尤其突出&#xff0c;它允许开发者自定义编辑器界面和功能来满足特定的开发需求。通过编辑器扩展&#xff0c;我们可以优化工作流程&#xff0c;提高生产力&am…

Cokejogo巴西 电子游戏源码 游戏网站源码 电子游戏合集 电子游戏软件下载 游戏源码(带安装教程)

Cokejogo巴西pg电子游戏源码/H5PC端 前端vue编译后后端PHP/修复图片资源失效 后端测试环境&#xff1a;Linux系统CentOS7.6、宝塔、PHP7.2、MySQL5.6&#xff0c;根目录public&#xff0c;伪静态thinkPHP&#xff0c;开启ssl证书 源码下载&#xff1a;https://download.csdn.n…

CUDA内存模型

核函数性能并不只与线程束的执行有关。 CUDA内存模型概述 GPU和CPU内存模型的主要区别是&#xff0c;CUDA编程模型能将内存层次结构更好地呈现给用户&#xff0c;能让我们显示的控制它的行为。 对程序员来说&#xff0c;一般有两种类型的存储器&#xff1a; 可编程的&#x…

JSP和tomcat

JSP&#xff08;JavaServer Pages&#xff09;是一种用于开发动态Web内容的技术&#xff0c;它允许开发者将Java代码嵌入到HTML页面中。JSP页面在服务器端被解析并转换成Servlet&#xff0c;然后由Servlet容器&#xff08;比如Tomcat&#xff09;执行。JSP允许开发者在页面中使…