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

文章目录

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

版权声明

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

网络通信要素

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

python网络通信之基础知识填坑_第1张图片

IP地址

  • IP地址是分配给网络设备上网使用的数字标签,用于标识网络中唯一的一台设备
    python网络通信之基础知识填坑_第2张图片

  • IP地址的作用:通过IP地址找到网络中唯一一台设备,然后可以跟这个设备进行数据通信。
    python网络通信之基础知识填坑_第3张图片

  • 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
    

python网络通信之基础知识填坑_第4张图片

  • 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请求
    

python网络通信之基础知识填坑_第5张图片

端口和端口号的介绍

  • 每运行一个程序都会有一个端口,想要给对应的程序发送数据,找到对应的端口即可。
    python网络通信之基础知识填坑_第6张图片

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

  • 每一个端口都会有一个对应的端口号,想要找到端口通过端口号即可。
    python网络通信之基础知识填坑_第7张图片

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

  • 最终通信流程,通过ip地址找到对应的设备,通过端口号找到对应的端口,然后通过端口把数据给应用程序。
    python网络通信之基础知识填坑_第8张图片

端口号的分类

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

socket介绍

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

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

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

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

TCP

TCP简介

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

python网络通信之基础知识填坑_第10张图片

  • TCP的英文全拼(Transmission Control Protocol)简称传输控制协议,它是一种面向连接的、可靠的、基于字节流的传输层通信协议。
  • TCP(Transmission Control Protocol)运行在传输层(Transport Layer)。传输层是OSI参考模型中的第四层,它负责在网络中传输数据,为应用层提供可靠的数据传输服务。
    python网络通信之基础知识填坑_第11张图片
  • TCP通信步骤:
    1. 创建连接
    2. 传输数据
    3. 关闭连接
  • TCP通信模型相当于生活中的’打电话‘,在通信开始之前,一定要先建立好连接,才能发送数据,通信结束要关闭连接。
    python网络通信之基础知识填坑_第12张图片
  • 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等。

你可能感兴趣的:(开发语言,网络,python3.11)