网络编程

网络编程

1.软件开发架构:
开发软件,必须要开发一套客户端与服务端

客服端与服务端的作用
服务端 24小时不断提供给服务
客户端 如果要服务就去享受

两种架构:
C/S架构
client:客户端
server:服务端
优点:稳定,可以节约网络资源
缺点:若用户想在同一个设备上使用多个软件,必须下载多个客户端
每次软件更新,客户端必须跟着下载更新
C/S架构的软件有:
电脑上的qq,移动端的wechat等等
B/S
browser:浏览器(客户端)
server:服务器
优点:
以浏览器充当客户端,无需用户下载多个软件,也无需用户下载更新软件版本,可以直接在浏览器上访问需要使用的软件
缺点:
消耗网络资源过大,当网络不稳定时,软件的使用也会不稳定
B/S架构的软件:
例如:再浏览器上输入某个软件的域名

      我玩巫师3的时候到一个小镇会跑进每一个屋子搜刮每一个亮起来的袋子……顺便看看有没有告示板上没有的任务可以接……在要塞搜刮袋子的时候还被军队围了,那些卫兵前期等级有点高……

2.后期学习
网络编程,并发编程,数据库开发 可以开发一套cs架构的软件(仿youku系统)
前端html css js web框架(网络编程,并发编程)

3.网络编程
网络编程发展历史
所有先进的技术都来源于军事.希望通过远程获取数据,所以出现了网络编程
早期如何实现远程通信:
打电话-->电话线
打屁股电脑-->网线,有线网卡
笔记本电脑-->无线网卡
要实现远程通信必须具备:
物理连接介质-->网卡...
互联网协议 发
语言
互联网协议

4.互联网协议
互联网协议有成为网络七层协议,OSI七层协议,OSI是个世界标准组织

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


需要优先了解
应用层
http
ftp



传输层
tcp/udp协议,都是基于端口工作的
端口号:标识电脑上某一个软件
端口号的范围是0-65535
注意
  操作系统中一般0-1024的端口都被默认使用了
  尽量使用8000后的端口号 8001

  mysql:3306
  mongodb:27017
  Django:8000
  Tomcat:8080
  Flask:5000
  Redis:6379
  若想要客户端与服务端进行通信,必须建立连接产生双向通道
  一条是客户端往服务端发送消息的
  另一条是服务端往客户端发送消息的
  三次握手,四次挥手(***********)
   三次握手建立连接
   四次挥手断连接
  发送数据
  write
  read
  客户端往服务端发送数据,数据存放在内存中,需要服务端确认收到,数据才会在内存中释放迪奥
  否则会隔一段时间发送一次让服务端返回确认收到
  再一段时间内若服务无端还是没有返回确认收到,则取消发送,并释放内存中的数据


网络层
IP地址:用于唯一识别计算机的地址
IP 点分十进制
最小值:0.0.0.0
最大值:255.255.255.255

IPV4:
IPV6:
127.0.0.1-->localhost
数据链路层
   数据链路层的以太网协议专门处理基于电信号发送二进制数据
    以太网协议:
        规定好电信号数据的分组方式
        每一台连接网络的电脑都必须要有一快网卡
            -网卡由不同厂商生产的
                -每块网卡都有世界上独一无二的十二位编号
                    -前六位代表厂商号,后六位代表流水号
     -交换机:
         可以让多台电脑连接到一起
     基于以太网协议发送数据
          特点
          广播,单播
          弊端
          广播风暴,不能跨局域网通信

物理连接层
    01010101


IP用于标识某一台计算机的位置
port用于确认计算机上的一个应用软件
ip+port:世界上某一台电脑上的一个应用软件

Socket:
什么是socket
模块用于写cs套接字
为什么要用socket
socket套接字会封装好各层协议的工作
好处
可以节约开发成本.
如何使用
import socket

原文地址:https://www.cnblogs.com/jimGraymane/p/11694434.html