自我总结22

软件开发框架

开发软件必须要开发一套 客户端 服务端

客户端 24小时不间断提供服务

服务端 如果想要找服务,就去寻找服务并享受

c/s架构

Client: 客户端

``Server: 服务端`

优点:

​ 软件的使用稳定,并且可以节省网络资源。
缺点:

​ 1.若用户想在同一个设备上使用多个软件,必须下载多个客户端。

​ 2.软件的每一次更新,客户端也必须跟着重新下载更新。

例如:

电脑上的QQ、Pycharm等...

(移动端)的微信、王者荣耀等...

b/s架构

Browser: 浏览器

Server: 服务端

优点:
以浏览器充当客户端,无需用户下载多个软件,也无需用户下载更新软件版本,

缺点:
消耗网络资源过大,当网络不稳定时,软件的使用也会不稳定。

例如: 在浏览器(客户端)上输入某个软件的域名

网络编程

网络编程发展历史

所有先进的技术都源自于军事,希望通过远程获取数据,所以出现了“网络编程”

早期如何实现远程通信:

​ 打电话--->电话线

​ 纯平电脑(打屁股电脑)--->网线,有线网卡

​ 笔记本电脑 --->网卡,无线网卡

要实现远程通信必须具备:

  1. 物理连接介质 --->网卡....

  2. 互联网协议

    人与人之间恶的沟通:中文、英文

    计算机之间沟通的介质:“互联网协议”

互联网协议

互联网协议又称为网络七层协议,OSI七层协议,OSI是一个世界标准组织

OSI七层协议:

应用层

表示层

会话层

传输层

网路层

数据链路层

物理链接层

学习由下到上(需要先了解的协议 一共五层)*

物理连接层

基于电信号发送二进制的数据01010101111

数据链路层

数据链路层的"以太网协议",专门用于处理基于电信号发送二进制的数据

​ 以太网协议:

  1. 规定好电信号数据的分组方式

  2. 每一台链接网络的电脑都必须要有一块“网卡”

    网卡由不同厂商生产

    ​ 每个网卡都会有世界上独一无二12位的编程

    ​ 前六位:厂商号

    ​ 后六位:流水号

    交换机

    ​ 可以让多台电脑连接在一起

    基于以太网协议发送数据

    ​ 特点:广播、单播

    ​ 弊端:广播风暴、不能跨局域网通信

    互联网:

    ​ 让局域网直接进行通信

网络层

​ IP地址:用于唯一标识计算机(局域网)的地址

​ IP:点分十进制

​ 最小值:0,0,0,0

​ 最大值:255,255,255,255

IPV4

​ 一开始用电脑的人不多,所以出现IPV4的协议版本

IPV6 括号IP

本机IP 回环地址 127.0.0.1--->localhost

传输层

​ TCP/UDP协议,基于端口工作

​ 端口号:标尺电脑上某一个软件

​ 端口号范围:0-65535

​ 注意:

  1. 操作系统中,一般0-1024的端口都被默认使用了

  2. 尽量使用8000之后的端口号 8001

    开发中常用软件的默认端口号:

    软件 端口
    mysql 3306
    mongodb 27017
    Django 8000
    Tomcat 8080
    Flask 5000
    Redis 6379

若想服务端与客户端进行通信,必须要建立连接,产生双向通道

客户端王服务端发送消息,服务端接收到消息后,必须要给客户端返回一个确认收到。否则,客户端会在某个时间内,不停发送

应用层

http

ftp

总结

ip:用于唯一标识某一台计算机的位置。
port: 端口用于确认计算机上的一个应用软件。

ip + port: 世界上某一台电脑上的一个应用软件。


TCP协议的工作原理:
	- TCP是一个流式协议

	三次握手四次挥手

	三次握手建连接:
		建立双向通道,建立好连接。
        - listen: 监听
        - established: 确认请求建立连接
        
    - 发送数据:
        write
        read
        客户端往服务端发送数据,数据存放在内存中,需要服务端确认收到,数据才会在内存中释放掉。

        否则,会隔一段时间发送一次,让服务端返回确认收到。
        在一段时间内,若服务端还是不返回确认收到,则取消发送。并释放内存中的数据。

        - 四次挥手断连接:
            - TIME_WAIT: 时间等待
            
            
注意: 客户端与服务端必须尊循:
    一端send,另一端recv
    不同两端同时send或recv

Socket

  1. 什么是Socket?

    ​ socket是一个模块,可以写一套C/S架构的套接字。

为什么要使用Socket?

  1. socket套接字会封装好各层协议的工作。
    好处:

    ​ 可以节省开发成本。

  2. 如何使用

    ​ import socket

posted @ 2019-10-17 18:28  jzm1201  阅读(72)  评论(0编辑  收藏  举报