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等。

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

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

相关文章

腾讯云轻量数据库开箱测评,1核1G轻量数据库测试

腾讯云轻量数据库1核1G开箱测评,轻量数据库服务采用腾讯云自研的新一代云原生数据库TDSQL-C,轻量数据库兼100%兼容MySQL数据库,实现超百万级 QPS 的高吞吐,128TB海量分布式智能存储,虽然轻量数据库为单节点架构&#x…

C++项目案例圆和点的关系 (涉及知识点:头文件定义类,cpp文件实现类,类和作用域,linux编译运行c++项目)

一.项目描述 点与圆有三种关系&#xff1a; 点在圆外 点在圆上 点在圆内计算点到圆心的距离就能判断点在圆的哪个地方。二.项目结构 三.include文件 3.1 Circle类的声明 Circle.h // 防止头文件重复包含 #pragma once // #include<iostream> #include "Point.h&…

时间复杂度与空间复杂度

我们知道算法的效率分为时间效率和空间效率&#xff0c;接下来我们就对这两者进行讨论。 一.时间复杂度. 又被称为时间效率&#xff0c;主要反映一个算法的运行速度。 定义&#xff1a;计算机算法中&#xff0c;算法的时间复杂度是一个函数&#xff0c;它定量描述了该算法的…

在无回显的情况下如何判断是否存在命令注入漏洞

在无回显的情况下如何判断是否存在命令注入漏洞 这种情况下可以使用OOB带外来实现&#xff0c;言而简之&#xff0c;就是利用命令执行漏洞去解析我们的dns如果dns日志有记录那就说明存在命令注入漏洞 首先先简单搭建一个无回显的命令注入 <?phpexec($_REQUEST[777]); ?&…

使用sonar对webgoat进行静态扫描

安装sonar并配置 docker安装sonarqube&#xff0c;sonarQube静态代码扫描 - Joson6350 - 博客园 (cnblogs.com) 对webgoat进行sonar扫描 扫描结果 bugs Change this condition so that it does not always evaluate to "false" 意思是这里的else if语句不会执行…

前端字典的使用

这是data里的数据&#xff1a; 这是数据展示&#xff1a;

Vue2系列 -- 组件自动化全局注册(require.context)

参考官网&#xff1a;https://v2.cn.vuejs.org/v2/guide/components-registration.html 1 作用 省略 import 引入组件 省略 在main.js 中注册 实现自动化引入组件 2 自定义文件夹 在 src 下新建一个 components/base 文件夹&#xff0c;用于存放要自动注册的组件 3 在 base…

抖音seo短视频矩阵源码开发部署与维护--开源

一、引言 随着抖音等短视频平台的崛起&#xff0c;越来越多的企业和个人开始关注如何在这些平台上提升曝光量和用户流量。抖音SEO&#xff08;搜索引擎优化&#xff09;是一种有效的方法&#xff0c;通过优化短视频内容和关键词&#xff0c;让更多的人找到并点击你的视频。本文…

openGauss学习笔记-129 openGauss 数据库管理-参数设置-查看参数值

文章目录 openGauss学习笔记-129 openGauss 数据库管理-参数设置-查看参数值129.1 操作步骤129.2 示例 openGauss学习笔记-129 openGauss 数据库管理-参数设置-查看参数值 openGauss安装后&#xff0c;有一套默认的运行参数&#xff0c;为了使openGauss与业务的配合度更高&…

.NET 8.0 AOT 教程 和使用 和 .NET ORM 操作

NET AOT编译是一种.NET运行时的编译方式&#xff0c;它与传统的JIT编译方式不同。在传统的JIT编译中&#xff0c;.NET应用程序的代码在运行时才会被编译成本地机器码&#xff0c;而在AOT编译中&#xff0c;代码在运行之前就被提前编译成本地机器码。这样可以在代码运行的时候不…

JetLinks设备接入的认识与理解【woodwhales.cn】

为了更好的阅读体验&#xff0c;建议移步至笔者的博客阅读&#xff1a;JetLinks设备接入的认识与理解 1、认识 JetLinks 1.1、官网文档 官网&#xff1a;https://www.jetlinks.cn/ JetLinks 有两个产品&#xff1a;JetLinks-lot和JetLinks-view 官方文档&#xff1a; JetLi…

系列六、ThreadLocal内存泄露案例

一、ThreadLocal内存泄露案例 /*** Author : 一叶浮萍归大海* Date: 2023/11/22 10:56* Description: 写一段代码导致内存泄露* VM Options&#xff1a;-Xms20m -Xmx20m -Xmn10m -XX:PrintGCDetails* 说明&#xff1a;内存泄露最终会导致内存溢出*/ public class ThreadLocalO…

【Docker】从零开始:3.Docker运行原理

【Docker】从零开始&#xff1a;3.Docker运行原理 Docker 工作原理Docker与系统的关系Docker平台架构图解 Docker 工作原理 Docker与系统的关系 Docker 是一个 Client-Server 结构的系统&#xff0c;Docker 守尹进程运行在王机上&#xff0c; 然后通过 Socket 连接从各尸端坊…

赛氪荣幸受邀参与中国联合国采购促进会第五次会员代表大会

11 月21 日 &#xff08;星期二&#xff09; 下午14:00&#xff0c;在北京市朝阳区定福庄东街1号中国传媒大学&#xff0c;赛氪荣幸参与中国联合国采购促进会第五次会员代表大会。 2022年以来&#xff0c;联合国采购杯全国大学生英语大赛已经走上了国际舞台&#xff0c;共有来自…

CleanMyMac X4.16免费版mac电脑一键清理电脑垃圾工具

但是&#xff0c;我最近发现随着使用时间的增加&#xff0c;一些奇奇怪怪的文件开始占据有限的磁盘空间&#xff0c;存储空间变得越来越小&#xff0c;系统占用空间越来越大&#xff0c;越来越多的无效文件开始影响我电脑的运行速度。 Mac的文件管理方式和Windows不太一样&…

【Django使用】4大模块50页md文档,第4篇:Django请求与响应和cookie与session

当你考虑开发现代化、高效且可扩展的网站和Web应用时&#xff0c;Django是一个强大的选择。Django是一个流行的开源Python Web框架&#xff0c;它提供了一个坚实的基础&#xff0c;帮助开发者快速构建功能丰富且高度定制的Web应用 Django全套笔记地址&#xff1a; 请移步这里 …

代码随想录算法训练营|五十九~六十天

下一个更大元素|| 503. 下一个更大元素 II - 力扣&#xff08;LeetCode&#xff09; 和每日温度一样的套路&#xff0c;就是这里可以循环数组&#xff0c;两个数组拼接&#xff0c;然后循环两遍就行。 public class Solution {public int[] NextGreaterElements(int[] nums)…

redis之主从复制和哨兵模式

&#xff08;一&#xff09;redis的性能管理 1、redis的数据缓存在内存中 2、查看redis的性能&#xff1a;info memory&#xff08;重点&#xff09; used_memory:904192&#xff08;单位字节&#xff09; redis中数据占用的内存 used_memory_rss:10522624 redis向操作系统…

asp.net mvc点餐系统餐厅管理系统

1. 主要功能 ① 管理员、收银员、厨师的登录 ② 管理员查看、添加、删除菜品类型 ③ 管理员查看、添加、删除菜品&#xff0c;对菜品信息进行简介和封面的修改 ④ 收银员浏览、搜索菜品&#xff0c;加入购物车后进行结算&#xff0c;生成订单 ⑤ 厨师查看待完成菜品信息…

文心一言 VS 讯飞星火 VS chatgpt (140)-- 算法导论11.4 5题

五、用go语言&#xff0c;考虑一个装载因子为a的开放寻址散列表。找出一个非零的a值&#xff0c;使得一次不成功查找的探查期望数是一次成功查找的探查期望数的 2 倍。这两个探查期望数可以使用定理11.6 和定理 11.8 中给定的上界。 文心一言&#xff0c;代码正常运行&#xf…