python学习 第8周知识回顾总结(网络编程)

140 阅读2分钟

软件开发架构

cs架构与bs架构

c: client   客户端
b: broswer  浏览器
s: server   服务端
        bs本质也是cs
优缺点:
    cs可以高度化定制内容,但是没有bs简洁
架构发展趋势:
    cs与bs交错使用,取长补短,都要遵循接口统一
网络编程:
    目的是为了解决计算机的数据交互,起源于美军
    需要基于互联网编程,程序实现了远程数据交互。其首要的条件就是要有物理连接介质
意义:
    为了编写cs架构的软件    

OSI七层协议

1.应用层 
2.表示层       (表示层与会话层X)
3.会话层       精简后的五层     
4.传输层 
5.网络层 
6.数据链路层 
7.物理连接层

各层特征

1.物理连接层        保证物理连接介质的条件,传递电信号
2.数据链路层        规定了电信号的分组方式(电脑上的以太网地址由1216进制数组成)
3.网络层            IP协议: 任何接入互联网的计算机都必须有一个IP地址 
                   IP地址:IPV4    /      IPV6
4.传输层            PORT(端口)协议:计算机上的每一个正在运行的应用程序都必须有一个端口号
                    1.端口号范围:0-65535 
                    2.端口号是动态分配的 
                    3.同一时间同一台计算机端口号不能冲突 
                    4. 0-1024 一般是操作系统内部需要使用的 
                       1024-8000 一般是常见的软件已经使用了 
                       8000+ 我们平时写代码可以使用8000之后的端口号
                    5.IP+PORT:标识全世界任意一台接入互联网的计算机上的某一个具体的程序
                    url = IP+PORT   (统一资源定位符)
           *Tcp协议:
               三次握手(建立双向通道),四次挥手(断开双向通道)
           *Udp协议:
               基于Udp发送数据,没有任何通道与限制,没有二次确认机制,不及Tcp安全
5.应用层(取决于程序员用什么)

sockle 套接字

  • 套接字家族
    • 文件类型的: AF_UNIX
    • 网络类型的: AF_INET
  • 服务端启动之后,客户端才能够运行起来
  • 半连接池
    • 主要是为了做缓冲,避免太多无效等待
  • 黏包问题
    • struct模块无论数据长度是多少,都可以帮你打包成固定长度
      基于打包后的固定长度,可以反向解析出其真实长度 
      struct模块针对数据量特别大的数字没有办法打包
      
    • TCP特性
      • 流式协议:所有的数据类似于水流一样,连接到一起
    • recv
      • 需要接收的数据量是未知的,所以才会有黏包的现象,知道的话就不会产生黏包了