网络编程软件架构介绍:

    C/S:客户端,服务端

    B/S:浏览器,服务端

# 常见应用:

    1、手机端看着感觉是c/s架构其实更多的是b/s架构,例如微信小程序,支付宝第三方接口

    2、pc端:b/s比较火

# 本质是b/s其实也是c/s:

    我们在使用的b/s架构比如说浏览器可以通过浏览器和服务器做交互操作,但是浏览器本省也是一个客户端,所以说也是c/s架构。

# 服务端和客户端的区别:

    1、服务端可以不间断24小时提供服务。

    2、客户端想使用的时候就连接服务端。

@学习网络编程的目的是什么:

    是为了开发b/s架构的软件

    需要学习:

      1、并发编程,

      2、前端,

      3、数据库,

      4、框架

# 实现远距离沟通的第一个条件就是:物理连接介质(电线,通过电线的高低电频模拟二进制0和1进行传递数据)

# 重点:

  OSI七层协议(模型):

    应用层

    表示层

    会话层

    传输层

    网络层

    数据链路层

    物理层

#也可以分为五层协议,其中应用层、表示层、会话层共同划分为应用层

    应用层

    传输层

    网络层
    数据链路层
    物理连接层

1、物理层:

    实现计算机之间物理连接,传输的数据都是0、1二进制

    利用电传递信号的原理是:高低电频

2、数据链路层(以太网协议):

    1、规定了二进制的数据分组方式(一段数据转换成二进制字符规定了到哪分隔)

    2、规定了只要是介入互联网的计算机都必须有一个网卡

        网卡上都有一个固定的编号(成为经常称呼的mac地址):

          1、每块网卡上的地址都是全球唯一的

          2、长度是48位2进制,由12位16进制表示:前6位表示厂商编号,后6位表示生产流水号

          3、网卡地址也被成为MAC地址

### 单一的以太网协议通信弊端:

    1、发送消息都是广播通信,容易造成广播风暴

### 交换机:没有交换机,电脑组建局域网只能添加多个网口,有了交换机,解放了电脑网口,一台电脑一个网口就可以满足需求了。总结起来就是可以通过网卡把多个电脑连接起来的设备。可以组建成局域网

3、网络层(ip协议):

  固定了计算机必须有一个ip地址:

    ip地址特点:点分十进制

    版本:ipv4和ipv6

    ip地址范围(ipv4为准):0.0.0.0——255.255.255.255

    ip地址可以跨越局域网访问

    ip地址是能够在网络中标识计算的唯一标识符

4、传输层(常见端口协议):

    tcp、udp都是基于端口工作的

    计算机之间的通信其实是计算上面的应用程序之间进行的通讯

    端口(port):是一个基于网络通信协议应用程序在一台计算机上的唯一表示

    端口范围:0——65535

      注意:其中0—1024端口通常归操作系统使用

      建议:写软件端口最好在:8000以后

        常见应用端口:

          flask框架:默认框架端口:5000

          django框架:8000

          mysql数据库:3306

          redis数据库:6379

      # 一台计算机上同一时间一个端口只能被一个程序使用

###### ip地址:用来标识计算机接入互联网的唯一标识

    port:唯一标识计算机上某个应用程序

    ip+port:能够用来标识全世界独一无二的一台计算机在某个应用程序

# 扩展:

  arp:可以查看ip地址和mac地址的对应关系

  

5、应用层(http协议,ftp协议)

######传输层tcp协议(流式协议、可靠协议)

  三次握手:建立连接

      

  四次回收:释放连接

          

python中网络编程的更多相关文章

  1. python中网络编程基础

    一:什么是c\s架构 1.c\s即client\server 客户端\服务端架构. 客户端因特定的请求而联系服务器并发送必要的数据等待服务器的回应最后完成请求 服务端:存在的意义就是等待客户端的请求, ...

  2. python中网络编程之线程

    网络编程之线程 什么是线程? 程序的执行线路.每个进程默认有一条线程.线程包含了程序的具体步骤. 多线程就是一个进程中有除主线程(默认线程)外还有多个线程. 线程与进程的关系(进程包含线程,而线程依赖 ...

  3. Python中网络编程对 listen 函数的理解

    listen函数的第一个参数时SOCKET类型的,该函数的作用是在这个SOCKET句柄上建立监听,至于有没有客户端连接进来,就需要accept函数去进行检查了,accept函数的第一个参数也是SOCK ...

  4. Python中网络编程对socket accept函数的理解

    在服务器端,socket()返回的套接字用于监听(listen)和接受(accept),这个套接字不能用于与客户端之间发送和接收数据. accept()接受一个客户端的连接请求,并返回一个新的套接字, ...

  5. Python高级网络编程系列之第一篇

    在上一篇中我们简单的说了一下Python中网络编程的基础知识(相关API就不解释了),其中还有什么细节的知识点没有进行说明,如什么是TCP/IP协议有几种状态,什么是TCP三次握手,什么是TCP四次握 ...

  6. python之网络编程

    本地的进程间通信(IPC)有很多种方式,但可以总结为下面4类: 消息传递(管道.FIFO.消息队列) 同步(互斥量.条件变量.读写锁.文件和写记录锁.信号量) 共享内存(匿名的和具名的) 远程过程调用 ...

  7. python基础网络编程--转

    python之网络编程 本地的进程间通信(IPC)有很多种方式,但可以总结为下面4类: 消息传递(管道.FIFO.消息队列) 同步(互斥量.条件变量.读写锁.文件和写记录锁.信号量) 共享内存(匿名的 ...

  8. python 基础网络编程2

    python 基础网络编程2 前一篇讲了socketserver.py中BaseServer类, 下面介绍下TCPServer和UDPServer class TCPServer(BaseServer ...

  9. python 基础网络编程1

    python 基础网络编程1 Source code: Lib/socketserver.py lib的主目录下有一个sockserver.py文件, 里面是python基本的网络编程模型 共有一个b ...

随机推荐

  1. c/c++程序连接mysql

    1.libmysql.dll添加到System32文件夹 “regsvr32 libmysql.dll”注册 2.项目-->属性-->c/c++-->常规-->附加包含目录-- ...

  2. SpringBoot文件上传(MVC情况和webFlux情况)

    MVC情况 引入依赖 <?xml version="1.0" encoding="UTF-8"?> <project xmlns=" ...

  3. 复选框checkbox——用背景图片替换样式

    input { border : none; display : inline-block; width : 25px; height : 25px; -webkit-apearance : none ...

  4. 【Unity游戏开发】你真的了解UGUI中的IPointerClickHandler吗?

    一.引子 马三在最近的开发工作中遇到了一个比较有意思的bug:“TableViewCell上面的某些自定义UI组件不能响应点击事件,并且它的父容器TableView也不能响应点击事件,但是TableV ...

  5. mysql:The user specified as a definer ('xxx'@'%') does not exist 解决方法

    发生这种问题.大概率是用户不存在或者是权限不够 用户不存在.用可视化工具新建一个. 权限不够 ,运行下面命令: 如:我的错误: The user specified as a definer ('mo ...

  6. L1-Day12

    1.凡是杀不死你的都会让你变得更强.(什么关系?主语是什么?)[我的翻译]There is no killing you makes you stronger.[标准答案]What doesn’t k ...

  7. zhifubao

    使用Git的一个优势便是 我们可以自由的切换到其他分支,而不影响主分支的正常开发,每个分支上都是一份完成的可执行代码那么如何创建分支呢, 创建分支有几种方法, 本地分支和远程分支的差别,意义各是什么,

  8. Urban Elevations UVA - 221

    题目大意:给出建筑的俯视图,以及每个建筑的左下角坐标,宽度,长度,高度.求正视图可观察到的建筑的编号 思路:建筑物的可见性等于南墙的可见性,依据左下角排序后,逐个判断每个建筑是否可见.对南墙的x坐标进 ...

  9. LeetCode第十六题-找出数组中三数之和最接近目标值的答案

    3Sum Closest 问题简介: 给定n个整数的数组nums和整数目标,在nums中找到三个整数,使得总和最接近目标,返回三个整数的总和,可以假设每个输入都只有一个解决方案 举例: 给定数组:nu ...

  10. 20175204 张湲祯 2018-2019-2《Java程序设计》第七周学习总结

    20175204 张湲祯 2018-2019-2<Java程序设计>第七周学习总结 教材学习内容总结 -第八章常用实用类要点: 一.String类: 1.String类所在的包:java. ...