day_26 软件开发架构 互联网协议 TCP协议的工作原理 Socket

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

客户端与服务端的作用

服务端:

24小时不间断提供服务

客户端:

到服务端获得需要的服务

软件开发架构分为两种

C/S架构

Client:客户端

Server:服务端

优点:

软件的使用稳定,并且可以节省网络

缺点:

  1. 若用户想在同一个设备上使用多个软件,必须下载多个客户端
  2. 软件的每一次更新,客户端也必须更新

C/S构架的软件:

qq pycharm 微信 等...

B/S构架

Browser:浏览器(客户端)
Server:服务端

优点:

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

直接在浏览器*问需要使用的软件

缺点:

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

B/S架构的软件:

例如在浏览器上输入某个软件的域名

互联网协议

七层协议

物理层

主要是基于电器特性发送高低电压(电信号),高电压对应数字1,低电压对应数字0

数据链路层

定义了电信号的分组方式

以太网协议

一组电信号构成一个数据报,叫做'帧',每一数据帧分成:报头head和数据data两部分

  • head包含:(固定18个字节)
    • 发送者/源地址,6个字节
    • 接收者/目标地址,6个字节
    • 数据类型,6个字节
  • data包含:(最短46字节,最长1500字节)

head长度+data长度=最短64字节,最长1518字节,超过最大限制就分片发送

每一台连接网线的电脑都必须要有一块网卡,每块网卡都会有世界上独一无二12位的编号mac地址,前6位:厂商号,后6位:流水号

网络层

IP地址:用于表示唯一的一台计算机(局域网)的地址

IP:点分十进制

​ 最小值:0.0.0.0

​ 最大值:255.255.255.255

本机IP:回环地址127.0.0.1----》localhost

传输层

TCP/UDP协议,他们都是基于端口工作的

  • 端口号:表示电脑上某一个软件
  • 端口号范围:0-65535

注意:

  1. 操作系统中,一般0-1024的端口都被默认使用了
  2. 尽量使用8000之后的端口号

常用的默认端口号:

mysql:3306

mongodb:27017

Django:8000

Tomcat:8080

Flask:5000

Redis:6379

应用层

应用层由来:用户使用的都是应用程序,均工作于应用层,互联网是开发的,大家都可以开发自己的应用程序,数据多种多样,必须规定好数据的组织形式

应用层功能:规定应用程序的数据格式。

  • 例:TCP协议可以为各种各样的程序传递数据,比如Email、WWW、FTP等等。那么,必须有不同协议规定电子邮件、网页、FTP数据的格式,这些应用程序协议就构成了”应用层”

总结:

IP:用于唯一表示某一台计算机的位置。

port:端口用于确认计算机上的一个应用软件

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

会话层

表示层

TCP协议的工作原理

TCP是一个流式协议

三次握手,四次挥手

三次握手建连接

建立双向通道,建立好连接

  • listen:监听
  • established:确认请求建立连接

发送数据

write

read

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

四次挥手断连接

  • TIME_WAIT:时间等待

Socket

什么是socket

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

为什么要用socket

socket套接字会封装好各层协议的工作

可以节省开发成本

如何使用

import socket