10.17软件开发架构,网络编程,互联网协议,Socket

软件开发架构

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

客户端

寻找服务,并享受

服务端

24小时不间断提供服务

软件开发架构分为两种

C/S架构

Client

客户端

Server

服务端

优点

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

缺点

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

C/S架构的软件

例如:手机软件,电脑软件

B/S架构

Browser

浏览器(客户端)

Server

服务端

优点

以浏览器充当客户端,无需用户下载多个软件,也无需用户下载更新软件,直接在浏览器上访问需要使用的软件

缺点

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

B/S架构的软件

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

网络编程

网络编程发展历史

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

早期远程通信

电话→电话线
大头电脑→网线,有线网卡
笔记本→网卡

实现通信必备

物理连接介质

网卡

互联网协议

人与人之间沟通的介质:交流语言
计算机之间沟通的介质:"互联网协议"

互联网协议

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

OSI七层协议

应用层
表示层
会话层
传输层
网络层
数据链路层
物理连接层

学习由下到上

需要优先了解的五层协议

物理链接层

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

数据链路层

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

以太网协议

  1. 规定好电信号数据的分组方式
  2. 每一台连接网线的电脑都必须要有一块"网卡"
    网卡由不同厂商生产
    每一块网卡都会有世界上独一无二的12位编号"mac"地址
    前6位:厂商号
    后6位:流水号

交换机

可以让多台电脑连接到一起

基于以太网协议发送数据

特点

广播
单播

弊端

广播风暴
局域网与局域网之间不能跨网通信

互联网

让局域网之间进行通信

网络层

IP地址

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

IP

点分十进制:0.0.0.0~255.255.255.255

IPv4/IPv6

IPv4:一开始用电脑人不多,就出现IPv4
IPv6:IPv4不够用了,就出现IPv6,包含了IPv4内信息,用来扩展地址

本机IP

回环地址:127.0.0.1

传输层

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

端口号

标识电脑上的某一个软件

端口号范围

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

开发中常用软件的端口

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

时间等待

Socket

什么是Socket

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

为什么要使用socket

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

优点

可以节省开发成本

怎么使用socket

python内置模块
直接import socket使用

注意

客户端与服务端必须遵循
一端send,另一端recv
不能两端一样

posted @ 2019-10-17 20:54  断指轩辕  阅读(142)  评论(0编辑  收藏  举报