python网络通信之基础知识填坑

文章目录

  • 版权声明
  • 网络通信要素
    • IP地址
    • ifconfig和ping命令
      • ifconfig (Interface Configuration)
      • ping
    • 端口和端口号的介绍
    • 端口号的分类
    • socket介绍
    • TCP
      • TCP简介
      • TCP的特点
    • UDP
      • UDP简介
      • UDP特点

版权声明

  • 本博客的内容基于我个人学习黑马程序员课程的学习笔记整理而成。我特此声明,所有版权属于黑马程序员或相关权利人所有。本博客的目的仅为个人学习和交流之用,并非商业用途。
  • 我在整理学习笔记的过程中尽力确保准确性,但无法保证内容的完整性和时效性。本博客的内容可能会随着时间的推移而过时或需要更新。
  • 若您是黑马程序员或相关权利人,如有任何侵犯版权的地方,请您及时联系我,我将立即予以删除或进行必要的修改。
  • 对于其他读者,请在阅读本博客内容时保持遵守相关法律法规和道德准则,谨慎参考,并自行承担因此产生的风险和责任。本博客中的部分观点和意见仅代表我个人,不代表黑马程序员的立场。

网络通信要素

  • 网络:将具有独立功能的多台计算机通过通信线路和通信设备连接起来,在网络管理软件及网络通信协议下,实现资源共享和信息传递的虚拟平台。

在这里插入图片描述

IP地址

  • IP地址是分配给网络设备上网使用的数字标签,用于标识网络中唯一的一台设备
    在这里插入图片描述

  • IP地址的作用:通过IP地址找到网络中唯一一台设备,然后可以跟这个设备进行数据通信。
    在这里插入图片描述

  • IP地址分为IPv4和IPv6两个版本。

  1. IPv4(Internet Protocol version 4):
  • 格式: IPv4地址由32位二进制数组成,通常以点分十进制的形式表示,如192.168.0.1。

  • 分段: IPv4地址分为网络地址和主机地址两部分。不同类别的网络使用不同数量的位来表示网络和主机。常见的有A类、B类和C类地址。

    • A类地址:8位网络地址 + 24位主机地址
    • B类地址:16位网络地址 + 16位主机地址
    • C类地址:24位网络地址 + 8位主机地址
  • 私有地址: 一些地址范围被保留作为私有地址,用于局域网内部。

    • 例如,A类的10.0.0.0到10.255.255.255,B类的172.16.0.0到172.31.255.255,和C类的192.168.0.0到192.168.255.255。
  1. IPv6(Internet Protocol version 6):
  • 格式: IPv6采用128位地址,通常用8组四位十六进制数表示

    • 例如:2001:0db8:85a3:0000:0000:8a2e:0370:7334。
  • 扩展性: 由于IPv4地址空间有限,IPv6被设计为更大、更灵活的地址空间,以满足未来互联网发展的需求。

    • 特殊表示: IPv6地址中可以使用"::"表示连续的零字段,以简化地址。例如,2001:0db8:0:0:0:0:0:1可以简写为2001:db8::1。

    • IP地址分配: IPv6地址分配通常通过IPv6路由器自动进行,也可以使用DHCPv6协议。

ifconfig和ping命令

命令名说明
ifconfig查看网卡信息
ping检查网络是否正常

ifconfig (Interface Configuration)

  • ifconfig 命令用于查看和配置网络接口的信息,包括IP地址、子网掩码、广播地址、MAC地址等。
  1. 查看所有网络接口的信息:

     ifconfig
    
  2. 查看特定网络接口的信息(例如,eth0):

    ifconfig eth0
    
  3. 启用/禁用网络接口:

    sudo ifconfig eth0 up    # 启用
    sudo ifconfig eth0 down  # 禁用
    
  4. 配置IP地址:

    sudo ifconfig eth0 192.168.1.2 netmask 255.255.255.0
    

在这里插入图片描述

  • 127.0.0.1表示本机地址,提示:如果和自己的电脑通信就可以使用该地址。
  • 127.0.0.1该地址对应的域名是localhost,域名是ip地址的别名,通过域名能解析出一个对应的ip地址。

ping

  • ping 命令用于测试与目标主机的网络连接,并且能够测量往返时间(Round-Trip Time,RTT)。它通过发送ICMP(Internet Control Message Protocol)回显请求(Echo Request)消息到目标主机,并等待回显回应(Echo Reply)。
    常用用法:
  1. 简单的ping测试:
ping baidu.com
  1. 指定ping的次数:
ping -c 5 baidu.com  # 发送5个ICMP请求
  1. 持续ping:

    ping -t baidu.com    # 持续ping,直到手动停止
    
  2. 使用特定的数据包大小:

    ping -s 1000 baidu.com  # 发送数据包大小为1000字节的ICMP请求
    

在这里插入图片描述

端口和端口号的介绍

  • 每运行一个程序都会有一个端口,想要给对应的程序发送数据,找到对应的端口即可。
    在这里插入图片描述

  • 端口是传输数据的通道,好比教室的门,是数据传输必经之路。

  • 每一个端口都会有一个对应的端口号,想要找到端口通过端口号即可。
    在这里插入图片描述

  • 端口号(65536个):端口号是用来管理区分不同端口的一个号码。好比生活中的门牌号。

  • 最终通信流程,通过ip地址找到对应的设备,通过端口号找到对应的端口,然后通过端口把数据给应用程序。
    在这里插入图片描述

端口号的分类

  • 端口号按照一定的规定可以分为:
    • 知名端口号
    • 动态端口号
  • 知名端口号是指众所周知的端口号,范围从0到1023,这些端口号一般固定分配给一些服务,比如21端口分配给FTP(文件传输协议)服务,25端口分配给SMTP(简单邮件传输协议)服务,80端口分配给HTTP服务。
  • 动态端口号:一般程序员开发应用程序使用端口号
  • 动态端口号的范围是从1024到65535,如果程序员开发的程序没有设置端口号,操作系统会在动态端口号这个范围内随机生成一个给开发的应用程序使用。
  • 当运行一个程序默认会有一个端口号,当这个程序退出时,所占用的这个端口号就会被释放。

socket介绍

  • Socket是一种网络通信协议,它在应用层和传输层之间提供了一个接口,使得应用程序可以通过网络与其他应用程序进行通信。

  • Socket可以用于不同的网络协议,如TCP、UDP等。

  • 在Socket通信中,有两个主要的角色:服务器和客户端。一旦连接建立成功,服务器和客户端之间就可以进行双向通信。

    • 服务器在网络上监听一个端口,等待客户端的连接请求。
    • 客户端则通过指定服务器的IP地址和端口号来连接服务器。
  • Socket通信可以用于许多应用场景,如网络游戏、实时通信、文件传输等。它是构建网络应用程序的重要基础。
    在这里插入图片描述

TCP

TCP简介

  • 通过IP地址能够找到对应的设备,然后再通过端口号找到对应的端口,再通过端口把数据传输给应用程序,在发送之前要选择网络传输方式(传输协议),保证程序之间按照指定的传输规则进行数据的通信。

在这里插入图片描述

  • TCP的英文全拼(Transmission Control Protocol)简称传输控制协议,它是一种面向连接的、可靠的、基于字节流的传输层通信协议。
  • TCP(Transmission Control Protocol)运行在传输层(Transport Layer)。传输层是OSI参考模型中的第四层,它负责在网络中传输数据,为应用层提供可靠的数据传输服务。
    在这里插入图片描述
  • TCP通信步骤:
    1. 创建连接
    2. 传输数据
    3. 关闭连接
  • TCP通信模型相当于生活中的’打电话‘,在通信开始之前,一定要先建立好连接,才能发送数据,通信结束要关闭连接。
    在这里插入图片描述
  • TCP通过三次握手建立连接,通过四次挥手关闭连接,保证了数据传输的可靠性和完整性。

TCP的特点

  1. 面向连接
  • 通信双方必须先建立好连接才能进行数据的传输,并且双方都会为此连接分配必要资源用来记录连接的状态和信息。当数据传输完成后,双方必须断开此连接,以释放系统资源。
  1. 可靠传输
  • TCP采用发送应答机制
    • 通过TCP这种方式发送的每个报文段都必须得到接收方的应答才认为这个TCP报文段传送成功
  • 超时重传
    • 发送端发送一个报文之后就会启动定时器,如果指定时间内没有得到应答就会重新发送这个报文段
  • 错误校验
    TCP用一个校验和函数来校验数据是否有错误,在发送和接收时都要计算校验和
  • 流量控制和阻塞管理
    • 流量控制用来避免发送端发送过快而使得接收方来不及接收

UDP

UDP简介

  • UDP(User Datagram Protocol)是一种无连接的网络传输协议,它是在传输层上运行的。UDP不像TCP那样提供可靠的数据传输。UDP发送的数据包不需要建立连接,也不需要等待确认,因此UDP传输速度比TCP快,但是可靠性较差。

  • UDP主要用于那些对数据传输速度要求高,但对数据传输可靠性要求不高的应用,如实时音视频传输、网络广播、在线游戏等。由于UDP的传输速度较快,因此在一些对实时性要求较高的应用场景中,UDP比TCP更加适合。

  • UDP的数据包结构比TCP简单,只包含源端口、目的端口、长度和校验和等基本信息。由于UDP没有连接的概念,因此每个UDP数据包都是独立的,可以随时发送和接收。

UDP特点

UDP(User Datagram Protocol)的特点如下:

  1. 无连接:UDP在发送数据之前不需要建立连接,也不需要维护连接状态,因此传输效率较高。

  2. 不可靠:UDP不提供可靠的数据传输,数据包可能会丢失、重复或乱序。因此,在实时性要求较高的应用场景中,如音视频传输、实时游戏等,UDP更加适合。

  3. 简单:UDP的数据包结构比TCP简单,只包含源端口、目的端口、长度和校验和等基本信息。

  4. 快速:由于UDP没有连接的概念,数据包的传输效率较高,适用于数据传输速度要求较高的应用场景。

  5. 支持广播和多播:UDP支持广播和多播,可以将数据包发送给多个接收方。

  6. 适用于短消息传输:由于UDP数据包的大小限制较小,适用于短消息的传输,如DNS查询、SNMP等。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何开发干洗店用的小程序

洗护行业现在都开始往线上的方向发展了,越来越多的干洗店都推出了上门取送服务,那么就需要开发一个干洗店专用的小程序去作为用户和商家的桥梁,这样的小程序该如何开发呢? 一、功能设计:根据干洗店的业务需求和小程序的…

「浙江科聪新品发布」新品发布潜伏顶升式移动机器人专用控制器

聚焦专用车型 最小专用控制器 控制器只占整机5%,纵向出线方式,占比更小 更易插拔 整体解决方案 更具价格优势 提供整体解决方案,配套各类型产品设备及车体厂家 打造持久稳定使用 坚持工业级品质 采用车规级接口,不用其它类不可…

使用内网穿透工具实现远程访问本地部署的Odoo企业管理系统

文章目录 前言1. 下载安装Odoo:2. 实现公网访问Odoo本地系统:3. 固定域名访问Odoo本地系统 前言 Odoo是全球流行的开源企业管理套件,是一个一站式全功能ERP及电商平台。 开源性质:Odoo是一个开源的ERP软件,这意味着企…

mysql开启慢查询日志

直接看原文: 原文链接:MySQL慢查询日志开启、配置、分析等操作_Code0cean的博客-CSDN博客 ------------------------------------------------------------------------------------------------------------------------------- 命令总结: 查看慢查询日志文件 tail -100f …

2014年3月13日 Go生态洞察:并发模式与管道取消技术

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…

数学建模之插值法及代码

发现更多知识,欢迎访问Cr不是铬的个人网站 引言 数模比赛中,常常需要根据已知的函数点进行数据、模型的处理和分析,而有时候现有的数据是极少的,不足以支撑分析的进行,这时就需要使用一些数学的方法,“模…

阿里云高校计划学生和教师完成认证领取优惠权益

阿里云高校计划学生和教师均可参与,完成学生认证和教师验证后学生可以免费领取300元无门槛代金券和3折优惠折扣,适用于云服务器等全量公共云产品,订单原价金额封顶5000元/年,阿里云百科aliyunbaike.com分享阿里云高校计划入口及学…

MONGODB 的基础 NOSQL注入基础

首先来学习一下nosql 这里安装就不进行介绍 只记录一下让自己了解mongodb ubuntu 安装后 进入 /usr/bin ./mongodb即可进入然后可通过 进入的url链接数据库 基本操作 show dbshow dbsshow tablesuse 数据库名插入数据db.admin.insert({json格式的数据})例如 db.admin.inse…

Android手机如何用Charles抓包HTTPS接口

对Charles的安装和使用,这里就不重复介绍了,之前有介绍Charles工具。 本文重点介绍在Android手机上如何配置抓包环境 1.获取Charles配置 去Help -> SSL Proxying -> Install Charles Root Certificate on a Mobile Device or Remote Browser 查…

微软重磅发布4个适合初学者的机器学习资料

自媒体火起来后,很多科技大佬都开始写博客,录视频了,大佬一入行,整个行业卷上天,像我这样的也只能走资源整合之路了,不过这样也好,科技进步,人类发展需要他们。 除了个人&#xff0…

LiteOS同步实验(实现生产者-消费者问题)

效果如下图: 给大家解释一下上述效果:在左侧(顶格)的是生产者(Producer);在右侧(空格)的是消费者(Consumer)。生产者有1个,代号为“0”…

斯坦福NLP课程来了

生成式AI,尤其是以ChatGPT为首的大语言模型正在改变人们的生活方式,我想一定有小伙伴想加入NLP这个行列。 微软重磅发布4个适合初学者的机器学习资料 我在前一篇文章中分享了微软人工智能初学者课程,其中的【生成式AI】非常适合初学者&…

Java 环境其他下载2

1 Eclipse Temurin Latest Releases | Adoptium Eclipse Temurin 是由基于 OpenJDK 的开源 Java SE 产生的构建版本。Temurin 适用于 广泛的平台 以及诸多 Java SE 版本。以下列出了推荐用于生产的最新版本,并且定期由 Adoptium 社区发布更新和支持。迁移帮助、容器…

kettle spoon连接MySQL8.0数据库报错解决方法

kettle 连接 mysql 8.0报错,显示无法连接到数据库服务 错误连接数据库 [11] : org.pentaho.di.core.exception.KettleDatabaseException: Error occurred while trying to connect to the databaseError connecting to database: (using class org.gjt.mm.mysql.D…

​​【项目实战】犬只牵绳智能识别:源码详细解读与部署步骤

1.识别效果展示 2.视频演示 [YOLOv7]基于YOLOv7的犬只牵绳检测系统(源码&部署教程)_哔哩哔哩_bilibili 3.YOLOv7算法简介 YOLOv7 在 5 FPS 到 160 FPS 范围内,速度和精度都超过了所有已知的目标检测器 并在 V100 上,30 FPS 的情况下达到实…

不是说人工智能是风口吗,那为什么工作还那么难找?

最近确实有很多媒体、机构渲染人工智能可以拿高薪,这在行业内也是事实,但前提是你有足够的竞争力,真的懂人工智能。 首先,人工智能岗位技能要求高,人工智能是一个涵盖了多个学科领域的综合性学科,包括数学、…

ChatGPT 使用入门

背景 ChatGPT是一个强大的聊天机器人助手,内置了大量的互联网知识文档,且具有上下文记忆,可以帮我们快速地查找一些资料,了解一个知识,帮我们回答问题,编写代码等。此外,在使用ChatGPT时具有一…

String类常用方法总结

目录 一.简单认识String 二.String对象的比较 1.equals 内部实现原理: 2.compareTo 3.compareToIgnoreCase 三.字符串查找 示例: 四.字符串与其他类型转化 1.数值和字符串相互转换 2.大小写相互转化 3.字符串转数组 4.格式化转化 五.字符串…

KDE 项目发布了 KDE Gear 23.08.3

导读KDE 项目发布了 KDE Gear 23.08.3,作为最新的 KDE Gear 23.08 开源集合的第三次维护更新,该集合包含了用于 KDE Plasma 桌面环境和其他平台的 KDE 应用程序。 KDE Gear 23.08.3 是在 KDE Gear 23.08.2 大约一个月之后发布的,包含了更多对…

数据结构-快速排序“人红是非多”?看我见招拆招

目录 1.快速排序 Hoare版本: 挖坑法: 前后指针版本: 快速排序的时间复杂度 2.快速排序的优化 三数取中法选key 随机数选key 三路划分法 3. 非递归实现快速排序 1.快速排序 快速排序一共有三种版本:Hoare版本、挖坑法、前后指针版本…