Python学习笔记--网络通信--理论基础

1.是不是越底层越牛逼?

  • 不是
  • 只要创造价值都厉害。

 

2.学习套接字编程是为了?

  • 为了开发一个C/S或B/S架构的软件
    • C/S架构是指
      • 客户端,服务端,都自己写。
      • 要写两个。
    • B/S架构是指
      • 服务端,自己写。
      • 只需要写一个,服务端。
      • 那么客户端呢?借用浏览器,来展示。

3.互联网是?

  • 互联网 = 物理连接介质 + 通信协议
    • 物理连接介质:
      • 网线,路由器,交换机等。
    • 通信协议:
      • 就是标准。

4.osi是指?

  • Open Systems Interconnection 开放网络互联

5.osi 7层是指?

  • 基于OSI模型的网络体系结构中的七个层次。

 

6.第一层:物理层?

  • 硬件是:光纤,电缆等
  • 通信方式:电信号(01高低电平)
  •  

     

7.第二层:数据链路层?

  • 硬件:网卡(提供mac),以太网路由交换机(基于以太网通信),交换机(集线器)
  • 通信协议:以太网协议。
  • 通信方式:广播 (靠吼)
    • 本层的意义:规定了电信号01代表什么含义。
    • 统一的标准是:以太网协议。

 

  • 以太网协议的规定是?

    • 一组电信号叫帧,
    • 一帧 = head+data
    • head (18字节)= 发送者地址(6位字节)+ 接受者地址(6位字节)+ 数据类型(6位字节)
    • data = 最短(46字节) or 最长(1500字节)
    • 所以,一帧数据最短是64字节,最长是1518字节。超过最大字节就分片发送。
    •  

             

  • 发送者地址?接受者地址?

    • 统一用mac来表示。
    • Media Access Control Address 直译是,媒体访问控制地址。
  • mac地址是?

    • 每块网卡出厂时都被烧制上一个世界唯一的mac地址。
    • 通常由12位16进制数表示(前六位是厂商编号,后六位是流水线号)
    • 图示:
  • 图示:
    •  

       

8.第三层:网络层

  • 硬件:路由器。
  • 通信方式:IP协议。

 

  • 为什么要有网络层?

    • 1.以太网,是广播的形式传播。
      • 如果全世界连在一起,都通过以太网传播,是一种灾难。
    • 2.以太网,是基于以太网交换机,而一个以太网交换机插口有上限。
      • 一般就有20多个,30来个插口。很难将全世界的所有插口连在一起。
      •  

    • 所以引入网络层,
      • 引入一套新的方式解决以太网解决不了的问题。

 

  • 网络层解决的是?

    • 引入一套新的方式来解决上一层数据链路层无法解决的问题。
    • 具体来讲是:
      • 网络层,把每个以太网,作为一个局域网(子网)。
      • 这些子网的通信方式是基于IP协议。
  •  IP协议是什么?

    • IP协议是现在分为第4代和第6代。
    • 分别叫IPv4和IPv6
    • 常见的是
    •  

       

  • IP协议由什么组成?

    • IPv4 = ip地址 + 子网掩码

 

  • IP怎么判定ip_A(192.168.10.2)和ip_B(192.168.10.8)是否属于同一个子网?

    • 通过ipA的地址 + A的子网掩码  = 进行AND运算 ---》得到 一个值x (192.168.10.0)
    • 再通过ipB的地址 + B的子网掩码 = 进行AND运算 -- 》得到 一个值y (192.168.10.0)
    • x = y 他们的结果都是192.168.10.0 所以他们是属于同一个子网。

 

  • IP的数据包在哪里? 

    • 直接放在以太网的data里面。
  •  提问:MAC+ip 能帮我们定位全世界独一无二的计算机?

    •  对的。
  •  

     

 

 9.第四层:传输层

  • 硬件:四层交换器(能拆4层的设备)
  • 通信方式:TCP/UDP协议(基于端口工作)

 

  • 为什么要有传输层?

    • 上一层,网络层解决了,所有计算器通信的问题。
    • 但计算机,有那么多软件,比如有,QQ,wps,钉钉,Steam等等软件。
    • 我QQ的服务端想给小华的电脑上的QQ的客户端传输数据。
    • 确实已经可以通过第三层网络层找到小华的电脑,小华的电脑运行了很多软件,如何确定哪个是QQ呢?
    • 这就用到了传输层。
  • 传输层如何区分软件的?

    • 利用端口。
  • 端口号的范围是?

    • 0 - 65535
  • 端口怎么划分的?

    • 0-1024的端口,为系统默认分配的。
    • 1024以后的端口,为用户设置的。
    • 最大为65535
  •  提问:mac+ip+端口,能帮我们定位为全世界独一无二的计算机的软件?

    • 对的。
  •  ARP是什么?

    • Address Resolution Protocol 地址解释协议。
  •  ARP用来干什么用?

    • 帮助我们把IP转换为MAC地址。
    • 也就说拿到IP = 拿到MAC
  • 提问:原本没有ARP我们想定位,用MAC+IP+port?

    • 是的。
  • 提问:现在有了ARP我们想定位,只需要用IP+port?

    • 对的。

 10.第五层:应用层?

  • 硬件:无。
  • 通信方式:http协议,ftp协议,mail协议,自定义协议(C/S架构)

10.5 总结osi五层?

  • 第一层,物理层:电信号。
  • 第二层,数据链路层:以太网。(局域网)
  • 第三层,网络层:IP协议。(全世界互联)
  • 第四层,传输层:TCP/UDP协议。(基于端口,确定唯一电脑软件)
  • 第五层,应用层:自定义协议。(常见HTTP,ftp,mail...)
  •  

     

     

      

     

11.什么是套接字?

  • 当我们写一个应用程序的时候,考虑到他的网络传输。
  • 那么就要学习相关的(第四层:传输层;第三层:网络层;第二层:数据链路层;第一层:物理层)
  • 这样的话,学习成本很大,并且这四层也是相对固定的东西。
  • 所以,有人就跳出来,说,我开发一个东西,叫套接字程序,大家都用我的套接字,就不用过于深入的研究下面这四层了。
  • 于是,套接字就出现了。
  •  

     

 12.TCP协议的是?

  • TCP需要建立通路才能通信。
  • TCP如何建立通路的呢?
    • 第一步:建立C到S的通道。
    •  

      第二步:建立S到C的通路

    • 第三步:优化一下。

 

13.TCP三次握手是怎么回事?

  • TCP需要建立连接才能通信。
  • 需要建立两个通道,一个是C到S,一个是S到C。
  • 建立一个通道,需要一来一回。建立两个通道,是需要两个来回。
  • 一个来回,是2段路。两个来回,是4段路。
  • 为了简化走的路数,有人说,能不能把中间第2段路,和第3段路,合并到一起?
  • 大家说,很有道理。于是,合并到一起了。
  • 现在就变成了3段路。也就是3次握手。

 14.TCP的四次挥手是什么?

  • 此时C-S通路,S-C通路,两条通路都已经建立好。想要断开连接了
  • 第一步,C向S请求,断开连接。首先断开C-S的通道。
  • 第二步:此时不能立马断开S-C的通道,因为这个通道可能还有数据在传输。
  • 第三步:S端发现,数据已经传输结束。所以发送结束信息到C端。
  • 图示:

 

  • 我看挥手断开连接,走了4端路,可以像建立连接那样,把中间第2端路,第3端路,合并到一起吗?

    •  不可以。
    • 因为这两个通路,都是有数据在进行传输的。
    • 所以,考虑到保证数据的传输的完整性,不合并到一起。

 

15.(扩展)建立连接的过程,怎么知道发过来的数据,是建立连接的过程?

  • 通过标志位。
  • syn标志,发送建立请求的标志位信息。
  • ack标志,标志着,确认接收的信息。
  •  

    他们是如何确定信息不被篡改的呢?

  • 用暗号,对方收到我的暗号后,在暗号后+1再返回来。

  • 这里暗号用seq来表示,暗号内容是:一些字符串。

  •  返回的时候,我们可以把这个暗号的信息,跟ack结合起来。

    • 比如 发送seq = "abcd"
    • 返回来的信息就是 ack = 1 + "abcd"
    • 也可以写成 seq = x ; ack = 1+x

 

 16.TCP断开连接呢?

  • 跟15同理。
  • 发送标志,不叫syn,叫fin
  • 如图:

 

 

17.TCP的状态是?

  • 状态有 Listen | syn_rcvd | ESTABLISHED (已经建立)
  • 示例:
    •  

       

  • netstat -an

     

  •  

     

 

 

18.ARP实现原理?

  • APR是帮助我们把IP解析为MAC地址。那么它是如何实现的呢?
  • A已知自己的mac和ip,已知B主机的ip,不知道B主机的mac?如何找到B的mac呢?
    • 首先,A主机有一个自己的ARP列表。这个表存放的是最近跟A主机通信过的,IP地址和MAC地址的映射关系表。
    • A主机会通过先在自己的ARP列表里面找,找到了,结束。没找到,就广播一下(类似学校里的广播找人)
    • 广播的时候,会默认B的mac为FFF(多个F),以保证数据头格式正确。
    • 如果在局域网内找到,就结束。也就是广播后,有人响应了。响应者会返回它现在所在的位置。结束。
    • 如果局域网内没找到。就会通过网关,再去寻找。找到了,就结束。没找到也结束,就是没找到B。
      • 举例:就是清华大学,找小明,学校内没找到小明。就会联系高校联盟(网关),让联盟(网关)来找。

 

  • 示例图:
    •  

       

  • ARP参考资料1:https://zhuanlan.zhihu.com/p/59066874
  • ARP参考资料2:https://juejin.cn/post/6969755974261276685

 

 

 19.TCP和UDP区别是什么?

  •  

 

  • 参考资料:https://www.cnblogs.com/linhaifeng/articles/5937962.html
  • https://www.cnblogs.com/linhaifeng/articles/6129246.html
posted @ 2023-02-15 14:48  o蹲蹲o  阅读(54)  评论(0编辑  收藏  举报