〖Web全栈开发①〗—网络编程基础(上)

news2024/11/20 1:39:27

网络编程基础

  • 网络编程
  • 网络编程概述
    • TCP/IP协议
      • IP地址
        • 什么是IP
        • IP组成
        • IP 地址使用过程
        • 查看IP
        • Ip地址分类:
        • 子网掩码
      • 端口
  • socket
    • Socket原理
      • 1.什么是Socket
      • 2.创建一个tcp socket(tcp套接字)
    • tcp 介绍

🏘️🏘️个人简介:以山河作礼。
🎖️🎖️:Python领域新星创作者,CSDN实力新星认证,阿里云社区专家博主


网络编程

网络编程概述

📌 计算机网络

📜📜计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。

在这里插入图片描述

📌 网络编程的目的

  • 传播交流信息、数据交换、通信。

📌 想要达到什么效果需要什么

  • 如何准确定位网络上的某台主机。 IP地址+端口。定位到计算机上的某个资源。 ​找到这台主机,如何传输数据。
  • 在网络操作系统中使用的通信协议有TCP/IP、NetBEUI、IPX/SPX、AppleTalk等。

TCP/IP协议

  1. TCP/IP协议是目前最成熟并被广泛使用的通信协议之一,TCP/IP协议不仅广泛应用于各种类型的局域网络,也是Internet的协议标准,用于实现不同类型的网络以及不同类型操作系统的主机之间的通信。
  2. TCP/IP事实上是一个协议系列或协议族,目含了100多个协议,包括ARP、ICMP、IGMP、IP、TCP和UDP等多种协议,其中tcp协议和IP协议是最重要的两个协议。

IP地址

什么是IP

🎯IP(Internet Protocol,Internet协议)是一个无连接的协议,主要负责在主机之间寻址,并为数据包设定路由。

在这里插入图片描述

  • IP 地址是一个唯一地址,用于标识互联网或本地网络上的设备。IP 代表“互联网协议”,它是控制通过互联网或本地网络发送的数据格式的一组规则。它是互联网工作原理中的关键组成部分

IP组成

📜📜 IP 地址是一串由句点分隔的数字。IP 地址表示为一组四个数字,比如 192.158.1.38 就是一个例子。该组合中的每个数字都可以在 0到 255 的范围内。因此,完整的 IP 寻址范围从 0.0.0.0 到 255.255.255.255。

IP 地址使用过程

📌 IP 地址通常在后台使用。该过程如下所示

  1. 你的设备首先连接到一个已连接到互联网的网络,然后该网络再授予你的设备访问互联网的权限,从而让您的设备间接连接到互联网。
  2. 当你在家时,该网络可能是你的互联网服务提供商 (ISP) 提供的网络。在工作中,它将是你的公司网络。
  3. 你的 IP 地址由 ISP 分配给你的设备。
  4. 你的互联网活动将通过 ISP 传输,他们会使用你的 IP 地址将其路由给你。他们为你提供了互联网访问权限,自然也要由他们负责为设备分配 IP 地址。
  5. 但是,你的 IP 地址可能会更改。例如,打开或关闭调制解调器或路由器可能会更改 IP 地址。您也可以联系你的 ISP,他们可以为你更改 IP 地址。
  6. 在你外出(例如旅行)并随身携带设备时,你在家中使用的 IP 地址并不会跟着你一起走。这是因为,你将使用另一个网络(酒店、机场或咖啡厅等地方的 Wi-Fi)访问互联网,并且将使用由酒店、机场或咖啡厅的 ISP 分配给你的其他(临时)IP 地址。

这个过程也表明,IP 地址存在不同的类型

查看IP

在 Windows 中:

使用命令提示符。
使用 Windows 搜索来搜索“cmd”(不带引号)
在出现的弹出框中,键入“ipconfig”(不带引号)即可获得这些信息。

在这里插入图片描述

📌 ip地址通常分为ipv4 和 ipv6 主流使用ipv4

  • IPV4:32个二进制位长(4字节),常用点分十进制表示;
  • IPV6:128个二进制位长(16字节)常用冒号分隔表示
  • 冒号十六进:69DC:8864:FFFF:FFFF:0:1280:8C0A:FFFF
  • ipv6作为未来的ip可以容纳所有的电脑

windows使用命令ipconfig 查看ip地址/mac使用命令ifconfig 查看ip地址

ping ip地址 可以快速的检测ip或者网址是否正常访问

Ip地址分类:

  • 全0表示本地地址,全1表示在本地网络中向所有机广播
  • A类地址(1. 0. 0. 1-127.255.255.254):利用IP地址的第一个字节作为网络地址,最高位为0,其余的三个字节作为主机地址。
  • B类地址(128.0.0.1-191.255.255.254 ):利用IP地址的前两个字节作为网络地址,最高位为10,其余的两个字节作为主机地址
  • C类地址(192.0.0.1-223.255.255.254 ):利用IP地址的前三个字节作为网络地址,最高位为110,最后一个字节作为主机地址
  • 本地地址localhost(127.0.0.1-127.255.255.254 ):这是预留的一组IP地址,主要是用来识别主机本身的地址
  • 私有地址(10.x.x.x, 172.16.x.x-172.31.x.x, 192.168.x.x ):局域网所使用的地址段,在公网上不能被路由

子网掩码

ip地址分为网络位和主机位

A–8个网络位+24个主机位

B–16个主机位+16个主机位

C–24个网络位+8个主机位

我们现在用的是ipv4 32位

A:255.0.0.0

B:255.255.0.0

C:255.255.255.0

255.255.255.0 子网掩码 (三个255,代码ip的前3位为网络位)

网络位相同,相当于是相同的网段

端口

  1. "端口"是英文port的意译,可以认为是设备与外界通讯交流的出口。端口可分为虚拟端口和物理端口,
  2. 其中虚拟端口指计算机内部或交换机路由器内的端口,不可见。例如计算机中的80端口、21端口、23端口等。
  3. 物理端口又称为接口,是可见端口,计算机背板的RJ45网口,交换机路由器集线器等RJ45端口。电话使用RJ11插口也属于物理端口的范畴。

1.周知端口(Well Known Ports)

  • 周知端口是众所周知的端口号,范围从0到1023,其中80端口分配给WWW服务,21端口分配给FTP服务等。我们在IE的地址栏里输入一个网址的时候是不必指定端口号的,因为在默认情况下WWW服务的端口是“80”。
  • 网络服务是可以使用其他端口号的,如果不是默认的端口号则应该在
    地址栏上指定端口号,方法是在地址后面加上冒号“:”,再加上端口号。比如使用“8080”作为WWW服务的端口,则需要在地址栏里输入“网址:8080”。
  • 但是有些系统协议使用固定的端口号,它是不能被改变的,比如139 端口专门用于NetBIOS与TCP/IP之间的通信,不能手动改变。

2.注册端口

📜📜端口1024到49151,分配给用户进程或应用程序。这些进程主要是用户选择安装的一些应用程序,而不是已经分配好了公认端口的常用程序。这些端口在没有被服务器资源占用的时候,可以用用户端动态选用为源端口。

3.动态端口(Dynamic Ports)

  • 动态端口的范围是从49152到65535。之所以称为动态端口,是因为它 一般不固定分配某种服务,而是动态分配。(微信,qq都是使用动态的)
  • 我们知道,一台拥有IP地址的主机可以提供许多服务,比如Web服务、FTP服务、SMTP服务等,这些服务完全可以通过1个IP地址来实现。那么,主机是怎样区分不同的网络服务呢?显然不能只靠IP地址,因为IP
    地址与网络服务的关系是一对多的关系。实际上是通过“IP地址+端口号”来区分不同的服务的。
  • 需要注意的是,端口并不是一一对应的。比如你的电脑作为客户机访
    问一台WWW服务器时,WWW服务器使用“80”端口与你的电脑通信,但你的电脑则可能使用“3457”这样的端口。

应用程序进行数据通信的流程

  • 首先通过IP地址找到对应的设备
  • 然后通过端口号找到对应的端口
  • 然后通过端口把数据传输给应用程序

📌 端口可以通过命令netstat -n查看

socket

Socket原理

1.什么是Socket

📜📜 在计算机通信领域,socket 被翻译为“套接字”,它是计算机之间进行通信一种约定或一种方式。通过 socket
这种约定,一台计算机可以接收其他计算机的数据,也可以向其他计算机发送数据

📌 Socket通信的数据传输方式,常用的有两种
  a、SOCK_STREAM
  表示面向连接的数据传输方式。数据可以准确无误地到达另一台计算机,如果损坏或丢失,可以重新发送,但效率相对较慢。常见的 http 协议就使用 SOCK_STREAM 传输数据,因为要确保数据的正确性,否则网页不能正常解析。
  b、SOCK_DGRAM
  表示无连接的数据传输方式。计算机只管传输数据,不作数据校验,如果数据在传输中损坏,或者没有到达另一台计算机,是没有办法补救的。也就是说,数据错了就错了,无法重传。因为 SOCK_DGRAM 所做的校验工作少,所以效率比 SOCK_STREAM 高。

📜📜例如:QQ 视频聊天和语音聊天就使SOCK_DGRAM传输数据,因为首先要保证通信的效率,尽量减小延迟,而数据的正确性是次要的,即使丢失很小的一部分数据,视频和音频也可以正常解析,最多出现噪点或杂音,不会对通信质量有实质的影响

python中使用socket模块的函数socket就可以完成。

📌 该函数带有两个参数:

  1. adderss family:可以选择AF_INET(用于internet进程间通信)或者AF_UNIX(用于同一台机器进程间通信)
  2. Type:套接字类型,可以是SOCK_STREAM(流式套接字,主要用于TCP协议)

2.创建一个tcp socket(tcp套接字)

import socket

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

tcp 介绍

🎯tcp是一种面向连接的、可靠的、基于字节流的通讯协议。

  • 特点

    1. 面向连接,提供了可靠的建立连接和拆除连接的方法
    2. 可靠交付
  • 适用场景

    • TCP常用于不可靠的互联网中为应用程序提供面向连接的,可靠的,端到端字节流服务。
  • 举例

    • 远程控制
    • 邮件
    • 点对点文件传输
"""
通过socket开发tcp服务端程序步骤
1.创建服务端套接字对象
2.绑定端口号
"""

# 1.创建服务端套接字对象
# socket 类
import socket

# 创建服务端socket对象
# socket.socket(AddressFamily, Type)
# AddressFamily 表示ip地址类型, AF_INET ipv4和 AF_INET6 ipv6
# Type 表示传输协议类型 SOCK_STREAM tcp流

tcp_server_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

# 给程序绑定端口号, 端口号  bind() ip 和 端口
tcp_server_socket.bind(("", 8989))

# 设置监听
# 128:最大等待建立连接的个数.
# listen后的套接字只能负责接收客户端的连接请求,不能收发信息. 收发消息使用返回的这个新套接字来完成
tcp_server_socket.listen(128)

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

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

相关文章

安卓卡死,卡屏,死机,黑屏

(662条消息) 黑屏定屏那些事 - 系统机制,分析套路和实战(系统篇)_android黑屏问题分析_内核工匠的博客-CSDN博客

Java 是如何实现双亲委托加载机制的

Java 是一种面向对象的编程语言,它有一套独特的类加载机制。其中,双亲委托加载机制是 Java 类加载机制中的一个重要概念。本文将介绍 Java 的双亲委托加载机制是如何实现的,并解释其作用和优点。 Java 类加载机制 在 Java 中,类的…

树脂可以吸收水里的硝酸盐吗,饮用水矿泉水除硝酸盐,食品级树脂

使用常规的离子交换树脂处理含硫酸盐水中的硝酸盐是困难的。因为树脂几乎交换了水中的所有的硫酸盐后,才与水中的硝酸盐交换。也就是说,硫酸盐的存在会降低树脂对硝酸盐的去除能力。采用Tulsimer A-62MP除硝酸盐树脂优先交换硝酸盐,对硝酸盐的…

形态学运算与仿真:图像处理中形态学操作的简单解释

形态学是图像处理领域的一个分支,主要用于描述和处理图像中的形状和结构。形态学可以用于提取图像中的特征、消除噪声、改变图像的形状等。其中形态学的核心操作是形态学运算。 形态学运算是一种基于形状的图像处理技术,它是通过结构元素与图像进行特定运…

Redis自学之路—安装与配置(一)

目录 简介 安装与配置Redis 下载 上传至linux 安装Redis 解压redis 安装gcc编译环境 注意 停止redis服务 附:Redis的命令行客户端 简介 本文章主要说一下Redis的安装与配置,学一门技术肯定是要从基础学起,其实所有的技术都很简单&…

关于Python爬虫使用代理的问题

当我们使用爬虫程序进行数据采集时,经常会遇到一些网站对爬虫的限制,例如IP封禁、访问频率限制等。为了解决这些问题,我们可以使用代理服务器来进行爬虫操作。本文将介绍爬虫代理的相关知识。 一、什么是爬虫代理? 爬虫代理是指…

IntelliJ IDEA 统一设置编码为utf-8编码 及 jar包运行指定UTF-8

文章目录 一、背景二、解决方法1.修改项目编码格式统一为UTF-82.将项目中的.idea文件夹中的encodings.xml文件中的编码格式改为uft-83.File->Settings->Build,Execution,Deployment -> Compiler -> Java Compiler5. java -jar xxx 命令里面添加UTF-8 编码 一、背景…

笔记-编程语言实现模式(Language Implementation Patterns)

第1章 语言应用初探 Lanugage Applications Cracked Open 1.1 大局观 The Big Picture 主要思想:文件读取部分对输入内容进行“识别”,并输出数据结构作为中间表示(intermediate representation,IR),供其…

制造业为什么要数字化?

制造业数字化,主要包含以下一些因素,有优势也有缺点: 制造业数字化的优势: 提高效率:数字化允许各种制造过程自动化,可以提高效率并降低成本。可以缩短生产时间、减少浪费并提高生产率。 增强质量控制&am…

毛泽东《浪淘沙·北戴河》气势磅礴

毛泽东《浪淘沙北戴河》气势磅礴 https://baijiahao.baidu.com/s?id1662486888860973345&wfrspider&forpc 毛主席因其身份地位以及独特的人生经历,在诗词创作中有他人难以企及的气概。今天我们再在欣赏他的一首《浪淘沙北戴河》,这首词第一句便…

Node.JS环境,Express服务器实现GZIP压缩传输

Node.js是一种基于Chrome V8 JavaScript引擎的开源、跨平台而且异步事件驱动的运行时环境,可以让JavaScript代码在服务器端运行。Express是一个流行的Node.js框架,它提供了简单而强大的工具来创建Web服务器和API。 这篇文章将介绍如何使用Node.js和Expr…

关于说服(一)-反抗机制

首先有一个原则:没有人喜欢被改变 不好的话术反而会引起别人的抵触心理 为避免触发反抗机制,可以稍微改变一下话术:将 “你应该” 改为 “我需要”** 没人喜欢说教者 说教者常用句式 1 你为什么不肯去试一试 ->(隐喻) 你在逼别人复习反…

[CryptoHack] Public-key Cryptography Partial Solutions

文章目录 FactoringMonoprimeManyprimeSalty Factoring So far we’ve been using the product of small primes for the modulus, but small primes aren’t much good for RSA as they can be factorised using modern1 methods2. What is a “small prime”? There was a…

汽车毫米波雷达的规定和标准(四)

01 — 虚警漏警问题 工信部无2021【181】号文件中,是这样定义的“虚警”:虚警是指在规定的条件下,实际目标不存在而雷达探测判为有目标的事件。虚警与虚假信号相关,下图中产生的虚警现象是由于干扰信号的功率超过检测门限导致。…

ResearchRabbit.ai: 学术论文摘要研究工具

【产品介绍】 ResearchRabbit是一个帮助研究人员发现、跟踪和分享学术论文的平台。可以根据你的兴趣和收藏提供个性化的推荐和摘要,并且可以让你可视化论文和作者之间的网络关系。 Researchrabbit.ai是一个基于人工智能的文献搜索和管理工具,它可以帮助你…

Speechify: 在线文本转语音(TTS)网站

【产品介绍】 Speechify是一个基于人工智能技术的在线文本转语音(TTS)网站,可以让用户把任何文本转换成自然流畅的语音,从而提高阅读效率和理解能力。 Speechify有多种平台的应用,包括Chrome扩展、iOS应用、Android应用…

Prompting Learning在CV领域的进展

始于NLP prompt介绍 简单来讲,Prompt就是对原来的输入文本进行一定的处理,使得在不改变预训练模型参数的情况下,相应任务的性能变高。例如,原输入文本为:I received the offer from ETH. ,对于文本分类&a…

Unity3D介绍和VR领域的使用说明

目录 Unity3D介绍 Unity3D 是否能用在VR游戏开发? Unity3D 跟虚幻引擎比,优缺点? Unity3D 可以开发微信游戏小程序吗? Unity3D可以自学吗? Unity3D视频分享图 Unity3D介绍 Unity3D是一种跨平台游戏引擎&#xff…

会声会影2023帧率在哪里设置 会声会影2023怎么改帧率

对于帧率的概念,可能大家会比较陌生。在会声会影编辑视频时,我们一般会选择与素材相同的参数设置。因此,很少会去单独设置视频帧率。本文会给大家介绍一下帧率的概念,以及会声会影帧率在哪里设置,会声会影2023怎么改帧…

数智财资,智慧金融 用友联合工行青海分行举办主题论坛圆满落幕

2023年5月10日,用友网络联合中国工商银行青海省分行于青海西宁举办的“数智财资,智慧金融——工行财资云助力企业构建一流财资体系”主题论坛圆满落幕。金融机构领导,行业财资专家,各企业领导、财务负责人齐聚一堂,分享…