网络编程
    1.软件的开发架构
        c/s架构(client/server)
            c:客户端
            s:服务器
        b/s架构(browser/server)
            b:浏览器
            c:服务器
        ps:bs架构本质也是cs架构
            手机端看上去cs架构比较火,实际上bs已经在崛起
            微信支付宝都在做一件事:统一接口
            手机端之后肯定也是bs比较火
            服务端:24小时不间断提供服务
            客户端:什么时候想体验服务,就去找心仪的服务端寻求服务
   学习网络编程  就可以开发一个cs架构的软件
       并发 数据库 前端 django  就可以一个bs架构的软件
网络编程的发展史
   任何现进的技术最早都来源于军事
回到过去
   1.早期的电话              电话线
   2.大屁股电脑              网线
   3.笔记本电脑 无线电话      网卡
   要想实现远程通信第一个需要具备的条件是:物理连接介质
   人要想实现无障碍交流必须说统一的语言   >>>   英文
   计算机与计算机之间要想实现远程通信除了有物理连接介质之外还需要
   有一套公共的标准/协议
3.OSI协议
    OSI七层协议
         应用层
         表示层
         会话层
         传输层
         网络层
         数据链路层
         物理连接层
      OSI五层协议
         应用层
         传输层
         网络层
         数据链路层
         物理连接层
   1.物理连接层
      基于电信号传输010101001010二进制数据
   2.数据链路层
      1.规定的电信号的分组方式
      2.规定了任何一台接入互联网的计算机都必须有一块网卡
         每一块网卡上面都刻有世界上独一无二的编号
         12位16进制数
            前6位是厂商编号
            后6位是流水线编号
         我们管这12数叫mac地址
      ps:以上两点合称为"以太网协议"
   交换机
   基于以太网协议通信
      不能跨局域网通信
   互联网是有N多个局域网彼此之间连接而成的
   3.网络层
      IP协议
      规定了只要是接入互联网的计算机都必须有一个IP地址
      ip地址特点:点分十进制
      ip地址最小:0.0.0.0
      ip地址最大:255.255.255.255
      ip地址目前有两个版本:IPV4  IPV6(由于IPV4已经不够表示目前存在的计算机了 所以推出了IPV6版本)
      IP地址是动态分配的
   4.传输层
      TCP\UDP都是基于端口工作的协议
      端口(port)
      计算机与计算机之间其实是计算机上的应用程序与应用程序之间的通信
      端口:用来唯一标识一台计算机上的某个应用程序
         端口号的范围:0~65535
         注意:0~1024这些都是操作系统默认使用的端口号
         建议:使用8000之后的端口
         MySQL默认端口:3306
         Redis默认端口:6379
         django默认端口:8000
         flask默认端口:5000
         端口号是动态分配的
            第一次起qq分配到的是8989
            将qq关闭再次启动端口号可能就变了
      5.总结
      ip地址:用来唯一标识接入互联网的一台计算机
      port端口:用来唯一标识一台计算机上的某个应用程序
      ip+port:唯一标识接入互联网一台计算机上的某个应用程序
   5.应用层
      HTTP协议
      FTP协议
   TCP协议
      流式协议,可靠协议
      基于TCP协议通信 必选先建立双向通道
      TCP协议传输数据之所以可靠的原因就在于有双向通道???
      三次握手四次挥手
      三次握手建连接
      四次挥手断连接
   星轨
      明星出轨
"""