• python基础语法15-网络编程理论


    网络编程是指在程序中实现两台计算机之间的通信。 Python提供了大量的内置模块和第三方模块用于支持各种网络访问,而且Python语言在网络通信方面的优点特别突出,远远领先其他语言。
    一、IP:
    1.概念:
    IP:互联网协议地址(Internet Protocol Address),互联网之间的通信相当于快递收发,需要知道每个电脑的详细地址才能实现数据的准确收发。
    IP地址就是用来标识网络中设备的地址。设备可以是计算机、 路由器等。
    2.分类:
    2.1.IP地址分为两类IPv4和IPv6:
    IPv4:目前使用的ip地址
    地址格式:127.0.0.1  由点分十进制组成
    目前的全球因特网所采用的协议族是TCP/IP协议。IP是TCP/IP协议中网络层的协议,是TCP/IP协议族的核心协议。目前主要采用的IP协议的版本号是4(简称为IPv4),IPv4的地址位数为32位,也就是最多有2的32次方的网络设备可以联到Internet上。
    IPv6:未来使用的ip地址
    地址格式:2001:c0a8:82e7:0:0:0:c0e8:82e7  由冒号十六进制组成
    IPv6是新一版本的互联网协议,也可以说是新一代互联网的协议,它是为了解决IPv4在实施过程中遇到的各种问题而被提出的,IPv6采用128位地址长度,几乎可以不受限制地提供地址。在IPv6的设计过程中除了一劳永逸地解决了地址短缺问题以外,还考虑了在IPv4中解决不好的其它问题,主要有端到端IP连接、服务质量(QoS)、安全性、多播、移动性、即插即用等。
    2.2.IP地址根据网络ID的不同分为5类:

     
    2.3.IP地址按权限分为公有地址和私有地址:
    公有地址:公有地址(Public address) 由 Inter NIC ( Internet Network Information Center互联网信息中心)负责。这些 IP 地址分配给注册并向Inter NIC 提出申请的组织机构。通过它直接访问互联网
    私有地址:国际规定有一部分IP地址是用于我们的局域网使用,也就是属于私网IP,不在公网中使用的,它们的范围是
    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
    3.IP地址查询:
    Linux 和 mac OS 使用 ifconfig 这个命令,Windows 使用 ipconfig这个命令,通过ping查看网络连接:
    ping www.baidu.com 查看是否能上公网
    ping 192.168.1.100 查看是否和该计算机在同一个局域网
    ping 127.0.0.1 查看本机网卡是否可用
    注意:192.168.1.107是设备在网络中的IP地址,127.0.0.1表示本机地址,是回送地址,用来测试使用。
    4.子网和子网掩码:
    子网:就是一个网中一个比较低级的网
    子网掩码:用来确定一个子网中的IP地址及数量,一个子网节点IP地址与子网掩码相与运算得到该子网下的IP地址。一般的子网掩码为255.255.255.0;通过子网掩码确定两个IP地址是否属于同一个子网;
    5.网关:
    网络关卡口的简称。链接两个不同的网络,比如联通公司给你家装了宽带(相当于给你家装了一个网关),你家里的所有设备都是在一个局域子网中,这个局域网和互联网之间使用网关进行连接。
    6.交换机:
    交换机的作用就是分发数据,为设备提供IP地址。交换机直接与设备的网卡连接,数据通过指定的端口发送到指定的设备上,交换机只关心与其联系的设备的mac地址。
    7.路由器:
    路由器具备WAN口和多个LAN口。它实际上是网关和交换机的结合体。wan口与宽带公司机房相连,LAN口与局域网设备相连。
    8.路由:
    数据从一台电脑发送到另一台电脑时所走过的路线就叫做路由。
    9.子网下的设备访问互联网:
    通过网关设备里面的NAT技术,即网络地址转换技术。
    10.端口:
    同一台设备下有很多的应用程序,但是网卡只有一个,数据通过网卡获得和发送,如何确定接收的数据到底是哪一个程序的呢?发给QQ的数据不可能被微信接收。利用端口可以解决这个问题。
    10.1.端口分配:
    端口是虚拟的概念,并不是说在主机上真的有若干个端口。通过端口,可以在一个主机上运行多个网络应用程序。 端口的表示是一个16位的二进制整数,对应十进制的 0-65535 。 操作系统中一共提供了0~65535 可用端口范围。 按端口号分类:
    10.2.公认端口:
    从 0 到 1023 ,它们紧密绑定(binding )于一些服务。通常这些端口的通讯明确表明了某种服务的协议。例如:80 端口实际上总是 HTTP 通讯。
    10.3.注册端口:
     从1024 到 65535 。它们松散地绑 定于一些服务。也就是说有许多服务绑定于这些端口,这些端口同用于许多其它目的。例如:许多系统处理动态端口从1024 左右开始。
    二、网络通信协议:
    1.常用的网络协议如下图:


    2.OSI网络协议七层模型:
    七层模型分别为:应用层, 表示层,会话层,传输层,网络层,数据链路层,物理层;

     
    3.TCP/IP协议模型:

     
    4.TCP和UDP的区别:主要在于他们传输数据的形式不同
    TCP:传输控制协议(Transmission Control Protocol),用于在传输层有必要实现可靠传输的情况
    UDP:用户数据报协议(User Data Protocol ),用于那些对高速传输 和实时性有较高要求的通信或广播通信。
    这两种传输方式都在实际的网络编程中使用,重要的数据一般使用 TCP方式进行数据传输,而大量的非核心数据则可以通过 UDP 方式 进行传递,在一些程序中甚至结合使用这两种方式进行数据传递。 由于TCP 需要建立专用的虚拟连接以及确认传输是否正确,所以使 用TCP 方式的速度稍微慢一些,而且传输时产生的数据量要比 UDP稍微大一些。
    5.TCP连接三次握手:


    6.TCP断开四次挥手:


    7.数据包与处理流程:
    数据包:通信传输中的数据单位;数据包中包括: 包、帧、数据包、段、消息。 
    网络中传输的数据包由两部分组成:一部分是协议所要用到的首部,另一部分是上一层传过来的数据。

    数据包处理流程:

     

  • 相关阅读:
    Android 字符串工具类
    MySQL调优篇:单机数据库如何在高并发场景下健步如飞?
    数据结构基础--栈和队列
    JVM | 第1部分:自动内存管理与性能调优《深入理解 Java 虚拟机》
    真正的办公神器-ONLYOFFICE你了解多少?
    H3C IPsec多分支经由总部互通
    gateway的基本使用
    【JavaWeb学习】—iframe标签(四)
    链表反转-指定区间反转
    qlib高阶应用之财务数据库与自定义表达式
  • 原文地址:https://blog.csdn.net/a316495442/article/details/128104795