网络编程(一)

网络编程(一)

一 网络架构

单机架构

​ 应用领域

​ 植物大战僵尸; office

cs架构

​ 1.用户操作系统安装客户端;产商操作系统部署服务端

​ 2.每个用户都需要独立安装软件,服务端升级也要每个用户升级

应用领域

​ QQ; 大型网络游戏

服务端(server):

​ 统一管理数据库的主机中的软件就叫做服务端,再后来 服务端不只是管理数据,外加处理业务逻辑.(24小时不间断提供服务)

客户端(client):

​ 用户安装的软件;(如果想要服务,随时都可以去寻找服 务享受)

优点:

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

缺点:

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

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

BS架构

b/s架构

​ browser: 浏览器(客户端)

​ server: 服务端

应用领域

​ 例如浏览器,直接输入域名,得到你想要的......

优点:

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

缺点:

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

二 网络编程发展史

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

早期如何实现远程通信:

​ --打电话--->电话线

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

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

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

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

2.互联网协议

-人与人之间沟通的介质:中文,英文

-计算机之间沟通的介质:'互联网协议"

互联网协议

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

OSI七层协议:

--应用层

--表示层

--会话层

--传输层

--网络层

--数据链路层

--物理连接层

学习由下到上:

需要优先了解的一共五层:

一、 ==物理连接层==

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

​ 010: 你 you

​ 101: 我 l

二、 ==数据链路层==

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

​ 以太网协议

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

​ 2.每一台连接网线的电脑都必须要有一块"网卡"

​ 3.网卡由不同厂商生产的,每块网卡都会有世界上独一无二12位 的编号"mac"地址;前六位:厂商号,后六位:流水号

​ 4.交换机:可以让多台电脑连接到一起.

​ 基于以太网协议发送数据:

​ 特点:广播,单播

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

​ 5.互联网:让局域网之间进行通信.

三、==网络层==

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

​ IP: 点分十进制

​ 最小值: 0.0.0.0

​ 最大值: 255.255.255.255

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

​ IPV6(了解):回环地址 127.0.0.1--->localhost

四、==传输层==

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

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

​ 端口号范围:0-65535

​ ==注意==:

​ 1.操作系统中,一般0-1024的端口都被默认使用了(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套接字会封装好各层协议的工作

好处:可以节省开发成本

如何使用

import socket

==注意==:客户端与服务端必须遵循:

一段send,另一端recv

不能两端同时send或recv

posted @ 2019-10-17 16:46  Mr-Allen  阅读(89)  评论(0编辑  收藏  举报