当前位置: 首页 > news >正文

计算机网络——应用层(3)

计算机网络——应用层(3)

  • 小程一言
    • 专栏链接: [link](http://t.csdnimg.cn/ZUTXU)
  • 点对点(P2P)
    • P2P网络一般用途
    • 优点
    • 缺点
    • 总结
  • 套接字编程
    • 基本步骤
      • UDP套接字
      • TCP套接字
        • 基本步骤
      • 二者对比

小程一言

我的计算机网络专栏,是自己在计算机网络学习过程中的学习笔记与心得,在参考相关教材,网络搜素的前提下,结合自己过去一段时间笔记整理,而推出的该专栏,整体架构是根据计算机网络自顶向下方法而整理的,包括各大高校教学都是以此顺序进行的。
面向群体:在学计网的在校大学生,工作后想要提升的各位伙伴,

专栏链接: link

在这里插入图片描述

点对点(P2P)

点对点网络,是一种计算机网络架构,其中每个节点(或者称为对等体)都可以充当客户端和服务器。在P2P网络中,所有节点都可以直接通信,而不需要中心化的服务器来协调通信。

P2P网络一般用途

  1. 在文件共享方面,P2P网络允许用户共享他们的文件,并允许其他用户从多个源头下载文件,从而提高下载速度并减轻服务器负载。
  2. 在分布式计算方面,P2P网络可以将计算任务分发给多个节点,从而加快计算速度和提高系统的可靠性。
    在这里插入图片描述

优点

去中心化、弹性和可伸缩性。由于没有单点故障,P2P网络通常更加稳定和可靠。
很容易地扩展,因为每个新加入的节点都可以提供额外的资源和带宽。

缺点

  1. 由于缺乏中心化的管理,P2P网络可能更容易受到安全漏洞和恶意行为的影响。
  2. P2P网络也可能导致网络拥塞和带宽消耗问题,特别是在大规模文件共享和分布式计算时
    在这里插入图片描述

总结

P2P网络是一种灵活、高效的网络架构,适用于许多不同的应用场景。在适当的管理和安全措施下,P2P网络可以为用户提供更好的性能和体验。

套接字编程

指使用套接字(socket)接口来进行网络编程的过程。套接字是一种通信机制,它允许不同计算机之间的进程进行通信。在实际应用中,套接字编程通常用于创建客户端-服务器模型的网络应用程序。

基本步骤

  1. 创建套接字:在编程中,首先需要创建一个套接字,以便进行网络通信。在C语言中,可以使用socket()函数来创建套接字。
  2. 绑定套接字:接下来,需要将套接字绑定到一个特定的地址和端口上,以便其他进程可以通过该地址和端口与该套接字通信。
  3. 监听连接:如果是服务器端程序,需要调用listen()函数来监听来自客户端的连接请求。
  4. 接受连接:一旦有客户端请求连接,服务器端程序需要调用accept()函数来接受连接,并创建一个新的套接字来与客户端进行通信。
  5. 发送和接收数据:一旦建立了连接,客户端和服务器端可以使用send()和recv()函数来发送和接收数据。
  6. 关闭套接字:最后,在通信结束后,需要调用close()函数来关闭套接字。
    在这里插入图片描述## 分类

UDP套接字

UDP是一种无连接的、不可靠的传输协议,它通过数据包的形式进行通信。UDP套接字编程是指使用UDP协议进行网络编程的过程,它通常用于那些对数据传输的实时性要求较高,而对数据可靠性要求较低的应用场景,比如音频和视频流的传输等。

在这里插入图片描述#### 基本步骤

  1. 创建套接字:使用socket()函数创建一个UDP套接字。在Python中,可以使用socket模块的socket()函数来创建UDP套接字:
import socket
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
  1. 绑定套接字:将套接字绑定到一个本地地址和端口上,以便接收来自其他主机的数据包。在Python中,可以使用bind()函数来绑定套接字:
udp_socket.bind(('127.0.0.1', 8888))
  1. 发送数据:使用sendto()函数向指定的目标地址发送数据包。在Python中,可以使用sendto()函数来发送数据包:
udp_socket.sendto(b"Hello, UDP!", ('127.0.0.1', 9999))
  1. 接收数据:使用recvfrom()函数从套接字接收数据包,并获取发送方的地址信息。在Python中,可以使用recvfrom()函数来接收数据包:
data, addr = udp_socket.recvfrom(1024)
print("Received from", addr, ":", data.decode())
  1. 关闭套接字:在通信结束后,使用close()函数关闭套接字:
udp_socket.close()

TCP套接字

TCP是一种面向连接的、可靠的传输协议,它通过建立连接、数据传输和断开连接的方式来实现可靠的数据传输。TCP套接字编程是指使用TCP协议进行网络编程的过程,它通常用于那些对数据传输的可靠性和完整性要求较高的应用场景,比如Web服务器、邮件服务器等。

基本步骤

在这里插入图片描述

  1. 创建套接字:使用socket()函数创建一个TCP套接字。在Python中,可以使用socket模块的socket()函数来创建TCP套接字:
import socket
tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  1. 绑定套接字:将套接字绑定到一个本地地址和端口上,以便接收来自其他主机的连接。在Python中,可以使用bind()函数来绑定套接字:
tcp_socket.bind(('127.0.0.1', 8888))
  1. 监听连接:如果是服务器端程序,需要调用listen()函数来监听来自客户端的连接请求:
tcp_socket.listen(5)
  1. 接受连接:一旦有客户端请求连接,服务器端程序需要调用accept()函数来接受连接,并创建一个新的套接字来与客户端进行通信:
client_socket, addr = tcp_socket.accept()
  1. 发送和接收数据:一旦建立了连接,客户端和服务器端可以使用send()和recv()函数来发送和接收数据:
client_socket.send(b"Hello, TCP!")
data = client_socket.recv(1024)
print("Received:", data.decode())
  1. 关闭套接字:最后,在通信结束后,需要调用close()函数来关闭套接字:
client_socket.close()
tcp_socket.close()

在这里插入图片描述

二者对比

  1. UDP套接字编程与TCP套接字编程相比,更加简单和高效,因为UDP协议不需要维护连接状态,也不需要进行握手和挥手等复杂的过程。但是,由于UDP协议是不可靠的,数据包可能会丢失或乱序,因此在使用UDP套接字编程时,需要考虑数据的可靠性和完整性。
  2. TCP套接字编程与UDP套接字编程相比,更加稳定和可靠,因为TCP协议提供了连接的管理和数据的可靠传输。但是,TCP协议的建立连接和断开连接的过程会增加一定的开销,因此在对实时性要求较高的应用场景下,可能不太适合使用TCP套接字编程。

相关文章:

计算机网络——应用层(3)

计算机网络——应用层(3) 小程一言专栏链接: [link](http://t.csdnimg.cn/ZUTXU) 点对点(P2P)P2P网络一般用途优点缺点总结 套接字编程基本步骤UDP套接字TCP套接字基本步骤 二者对比 小程一言 我的计算机网络专栏,是自…...

配置ssh实现互相免密登陆

一、实验要求 通过两台linux主机 配置ssh 实现互相免密登陆 的操作 二、实验思路 免密登录我们可以理解为使用公钥登录,这里分别使用两台主机(client)和(server)作为实验主机。 首先让client免密登录server&#x…...

【UEFI基础】EDK网络框架(ARP)

ARP ARP协议说明 从这里开始涉及到的网络协议都是比较通用的了,在一般的TCP/IP四层模型中都能够看到这些内容,不过这里主要介绍的还是其在BIOS下的实现,但是在此之前还是需要先说明ARP的作用。 ARP的全称是Address Resolution Protocol&am…...

Linux进阶课:目录(文件夹)与文件操作

1、ls与cat的区别是是什么? 答:ls命令的含义是list,显示当前目录中内容。不加参数时它显示当前目录中除隐藏文件外的所有文件及目录的名字。 cat命令是linux下的一个文本输出命令,通常是用于查看某个文件的内容的。 2、[abc]这个…...

Flink自定义Source模拟数据流

maven依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.…...

[易语言]使用易语言部署工业级人脸检测模型

【框架地址】 https://github.com/ShiqiYu/libfacedetection 【算法介绍】 Libfacedetection是一个开源的计算机视觉库&#xff0c;主要用于实时的人脸检测。它利用深度学习技术&#xff0c;特别是卷积神经网络&#xff08;CNN&#xff09;&#xff0c;实现了高精度的脸部定位…...

2024年海外推广怎么做?

要说如何做海外推广&#xff0c;绝大多数的外贸小伙伴都能说上一些&#xff0c;但是大部分人对于推广系统知识略知一二&#xff0c;没有构建一个系统化的知识框架。 海外推广的几大步骤 1.定策略 做海外推广前&#xff0c;我们需要制定一套营销策略&#xff0c;需要去定义一…...

Redis分布式锁--java实现

文章目录 Redis分布式锁方案&#xff1a;SETNX EXPIRE基本原理比较好的实现会产生四个问题 几种解决原子性的方案方案&#xff1a;SETNX value值是&#xff08;系统时间过期时间&#xff09;方案&#xff1a;使用Lua脚本(包含SETNX EXPIRE两条指令)方案&#xff1a;SET的扩展…...

好消息,Linux Kernel 6.7正式发布!

据有关资料显示&#xff0c;该版本是有史以来合并数最多的版本之一&#xff0c;包含 17k 个非合并 commit&#xff0c;实际合并的超过1K个。 那么该版本主要有哪边变化呢&#xff1f;下面我来一一列举一下&#xff1a; Bcachefs文件系统已被合并到主线内核&#xff0c;这是一款…...

【k8s】Kubernetes 声明式 API、命令式

1. 资源管理方式&#xff1a; 1>. 命令式对象管理∶直接使用命令去操作kubernetes资源 kubectl run nginx-pod --imagenginx:1.17.1 --port802>. 命令式对象配置∶通过命令配置和配置文件去操作kubernetes资源 kubectl create/patch -f nginx-pod.yaml3>. 声明式对…...

解锁营销新高度:幽灵鲨CRM推广平台线索对接功能详解

数字营销时代&#xff0c;线索对接是推动业务增长的关键。你是否为线索分布在不同的平台而来回切换&#xff1f;你是否为无法及时联系客户而错失商机&#xff1f;幽灵鲨CRM系统作为一款领先的客户关系管理解决方案&#xff0c;不仅实现了对主流推广平台的全面对接&#xff0c;更…...

uniapp 创建组件

组件&#xff1a;用于将某个功能的 HTML、CSS、JS 封装到一个文件中&#xff0c;提高代码的复用性和可维护性。 创建组件 一、在根目录中创建 components 文件夹&#xff0c;右键点击新建组件。 二、输入组件名称、选择默认模板、点击创建组件。 三、在组件中正常编写内容即可…...

Linux--部署 Tomcat 及其负载均衡

1.案例前置知识点 1&#xff09;Tomcat简介 名称由来&#xff1a;Tomcat最初是由 Sun的软件构架师詹姆斯邓肯戴维森开发的。后来他帮助将其变 为开源项目&#xff0c;并由Sun贡献给Apache软件基金会。由于大部分开源项目OReilly都会出一本相关的 书&#xff0c;并且将其封面设…...

影像组学介绍

影像组学介绍 1 影像组学介绍2 具体提取影像组学方法流程及工具代码&#xff1a;2.1 影像数据获取2.2 感兴趣区域分割2.3 特征提取与降维选择2.3.1 特征提取&#xff1a;2.3.2 特征降维(特征选择) 2.4 建模分析&#xff1a;2.5 结果分析 参考&#xff1a; 1 影像组学介绍 其实…...

什么是云服务器?云服务器的工作原理是介绍

阿里云服务器ECS英文全程Elastic Compute Service&#xff0c;云服务器ECS是一种安全可靠、弹性可伸缩的云计算服务&#xff0c;阿里云提供多种云服务器ECS实例规格&#xff0c;如经济型e实例、通用算力型u1、ECS计算型c7、通用型g7、GPU实例等&#xff0c;阿里云百科aliyunbai…...

【前后端的那些事】前后端环境搭建+树形结构表格实现

文章目录 1. 前后端项目环境搭建2. table-tree2.1 后端准备2.2 前端准备 前言&#xff1a;最近写项目&#xff0c;发现了一些很有意思的功能&#xff0c;想写文章&#xff0c;录视频把这些内容记录下。但这些功能太零碎&#xff0c;如果为每个功能都单独搭建一个项目&#xff0…...

PHP版学校教务管理系统源码带文字安装教程

PHP版学校教务管理系统源码带文字安装教程 运行环境 服务器宝塔面板 PHP 7.0 Mysql 5.5及以上版本 Linux Centos7以上 系统介绍&#xff1a; 后台权限控制&#xff1a;支持多个管理员&#xff0c;学生管理&#xff0c;学生成绩&#xff0c;教师管理&#xff0c;文章管理&#x…...

前端背景收集之烟花背景

文章目录 &#x1f412;个人主页&#x1f3c5;Vue项目常用组件模板仓库&#x1f4d6;前言&#xff1a;&#x1f380;源码如下&#xff1a; &#x1f412;个人主页 &#x1f3c5;Vue项目常用组件模板仓库 &#x1f4d6;前言&#xff1a; 本篇博客主要提供前端背景收集之烟花背景…...

PCL 格网法计算点云的占地面积

目录 一、算法原理二、代码实现三、结果展示四、测试数据本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫与GPT生成的文章。 一、算法原理 该方法主要用于粗略统计机载点云的占地面积。方法原理是将点云沿 X O Y XOY...

《设计模式的艺术》笔记 - 面向对象设计原则

1、单一职责原则 一个类只负责单一功能领域中的相应职责。 2、开闭原则 一个软件实体应当对扩展开放&#xff0c;对修改关闭。即软件实体应当尽量在不修改原有代码的情况下进行扩展。 3、里氏代换原则 所有引用基类的地方必须能透明地使用其子类的对象。即在软件中将一个基类…...

工业安全零事故的智能守护者:一体化AI智能安防平台

前言&#xff1a; 通过AI视觉技术&#xff0c;为船厂提供全面的安全监控解决方案&#xff0c;涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面&#xff0c;能够实现对应负责人反馈机制&#xff0c;并最终实现数据的统计报表。提升船厂…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》

引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...

8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂

蛋白质结合剂&#xff08;如抗体、抑制肽&#xff09;在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上&#xff0c;高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术&#xff0c;但这类方法普遍面临资源消耗巨大、研发周期冗长…...

深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法

深入浅出&#xff1a;JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中&#xff0c;随机数的生成看似简单&#xff0c;却隐藏着许多玄机。无论是生成密码、加密密钥&#xff0c;还是创建安全令牌&#xff0c;随机数的质量直接关系到系统的安全性。Jav…...

高频面试之3Zookeeper

高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个&#xff1f;3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制&#xff08;过半机制&#xff0…...

Java入门学习详细版(一)

大家好&#xff0c;Java 学习是一个系统学习的过程&#xff0c;核心原则就是“理论 实践 坚持”&#xff0c;并且需循序渐进&#xff0c;不可过于着急&#xff0c;本篇文章推出的这份详细入门学习资料将带大家从零基础开始&#xff0c;逐步掌握 Java 的核心概念和编程技能。 …...

Caliper 配置文件解析:config.yaml

Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。

1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj&#xff0c;再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...

Linux离线(zip方式)安装docker

目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1&#xff1a;修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本&#xff1a;CentOS 7 64位 内核版本&#xff1a;3.10.0 相关命令&#xff1a; uname -rcat /etc/os-rele…...

springboot整合VUE之在线教育管理系统简介

可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生&#xff0c;小白用户&#xff0c;想学习知识的 有点基础&#xff0c;想要通过项…...