1、OSI七层协议

1.七层划分为:应用层,表示层、会话层、传输层、网络层、数据链路层、物理层
2.五层划分:应用层、传输层、网络层、数据链路层、物理层
应用层:
表示层:
会话层:
传输层:四层交换机、四层路由器,TCP协议、UDP协议
网络层:路由器、三层交换机
数据链路层:网桥、以太网交换机、网卡
物理层:中继器、集线器、双绞线

2、软件架构

C/S:  client ===>客户端   server===>服务端
B/S: browser ===>浏览器 server===>服务端
一、CS系统架构
客户端:用户安装的软件
服务端:统一管理数据库的主机中的软件叫做服务端,在后来服务端不只是管理数据,外加处理业务逻辑
1.用户操作系统安装客户端
2.每个用户需要独立安装软件、服务端升级也要每个用户升级
应用领域:QQ、大型网络游戏
二、BS系统架构
1.统一客户端即默认安装用户电脑中的浏览器,访问同种类的网站,具体业务的处理根据相应协议和标准提供通用的服务器程序,在不同的服务器处理。
2.基于BS结构下的程序就要求解决速度问题,而速度问题的核心就是解决海量数据操作和高并发问题,网站复杂架构就是从这两个问题演变出来的。
三、BS架构和CS架构区别
BS技术架构:纯B/S架构,MYSQL数据库,JAVA语言,LINUX操作系统,全球领先的技术,免费正版的数据库,没有病毒的操作系统,经营数据不会被截取和外泄。
CS技术架构:C/S架构,使用VPN连接,费用高,数据慢,容易丢失数据,采用WINDOWS操作系统,Oracle,SQL-Server数据库,用正版费用高,用盗版存在商业风险。
BS核心技术:纯B/S架构,WEB2.0,管理便利,数据实时同步,便于数据分析和总部营销决策、
CS核心技术:C/S架构,数据传输慢,容易丢单,管理非常不便利,可扩展性差

3、TCP协议

TCP协议的三次握手和四次挥手
# 三次握手:建立连接 ,四次挥手:断开连接
TCP协议特点:
1.数据可靠传输
2.速度相对于UDP协议较慢
UDP协议特点:
1.数据不可靠
2.速度相对于TCP协议较快

4、Socket抽象层

一、socket是什么
1.我们经常把Socket翻译为套接字,Socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信。
二、本机IP地址:
本机IP地址:127.0.0.1
socket抽象层:就是一个个的对外访问的接口

5、基于TCP协议的套接字编程

注意:先启动服务端再启动客户端

##########################Sever.py##############################
import socket 1.实例化socket对象
# 参数不传递默认代表是TCP协议
server = socket.socket(type=socket.SOCK_STREAM) 2.绑定
server.bind(('127.0.0.1',8001)) # 必须端口在1024之上 3.监听,括号中是半连接池
server.listen(5) 4.接收客户端发来的信息
print('正在等待客户端发来的消息:')
# sock:当次连接对象,addr:客户端的地址。ip+port
sock,addr = server.accept() 5.拿到数据,一次最多接收1024个字节的数据
data = sock.recv(1024)
print(data) 6.发送客户端的数据
sock.send(data.upper()) # 接收客户端发送的数据并转为大写 7.断开连接
sock.close() 8.关闭之后不能在绑定IP地址了
server.close() ##########################Client.py##############################
import socket 1.实例化socket对象
client = socket.socket()
client.connect(('127.0.0.1',8001)) 2.向服务器发送数据
client.send(b'hello boy') 3.接收服务端发来的数据
data = client.recv(1024)
print(data)
client.close()

6、基于UDP协议的套接字编程

# 服务端
import socket # SOCK_STREAM : tcp协议的服务端
# SOCK_DGRAM :udp协议的服务端
server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # 数据报协议-》UDP
server.bind(('127.0.0.1', 8080)) while True:
data, client_addr = server.recvfrom(1024)
print('===>', data, client_addr)
server.sendto(data.upper(), client_addr) server.close() # 客户端
import socket client = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # 数据报协议-》UDP while True:
msg = input('>>: ').strip() # msg=''
client.sendto(msg.encode('utf-8'), ('127.0.0.1', 8080))
data, server_addr = client.recvfrom(1024)
print(data) client.close()

day27 网络编程的更多相关文章

  1. 8.6 day27 网络编程 osi七层协议 Time模块补充知识 TCP协议

    Time模块补充知识 date和datetime区别是什么? date 就是年月日 datetime就是年月时时分秒 以下代码为什么会报错? import json from datetime imp ...

  2. 猫哥网络编程系列:HTTP PEM 万能调试法

    注:本文内容较长且细节较多,建议先收藏再阅读,原文将在 Github 上维护与更新. 在 HTTP 接口开发与调试过程中,我们经常遇到以下类似的问题: 为什么本地环境接口可以调用成功,但放到手机上就跑 ...

  3. python select网络编程详细介绍

    刚看了反应堆模式的原理,特意复习了socket编程,本文主要介绍python的基本socket使用和select使用,主要用于了解socket通信过程 一.socket模块 socket - Low- ...

  4. Linux Socket 网络编程

    Linux下的网络编程指的是socket套接字编程,入门比较简单.在学校里学过一些皮毛,平时就是自学玩,没有见识过真正的socket编程大程序,比较遗憾.总感觉每次看的时候都有收获,但是每次看完了之后 ...

  5. 猫哥网络编程系列:详解 BAT 面试题

    从产品上线前的接口开发和调试,到上线后的 bug 定位.性能优化,网络编程知识贯穿着一个互联网产品的整个生命周期.不论你是前后端的开发岗位,还是 SQA.运维等其他技术岗位,掌握网络编程知识均是岗位的 ...

  6. 浅谈C#网络编程(一)

    阅读目录: 基础 Socket编程 多线程并发 阻塞式同步IO 基础 在现今软件开发中,网络编程是非常重要的一部分,本文简要介绍下网络编程的概念和实践. Socket是一种网络编程接口,它是对传输层T ...

  7. C++11网络编程

    Handy是一个简洁优雅的C++11网络库,适用于linux与Mac平台.十行代码即可完成一个完整的网络服务器. 下面是echo服务器的代码: #include <handy/handy.h&g ...

  8. Java - 网络编程

    Java的网络编程学习,关于计算机基础的学习参考:计算机网络基础学习 - sqh.     参考:  

  9. Linux网络编程-IO复用技术

    IO复用是Linux中的IO模型之一,IO复用就是进程预先告诉内核需要监视的IO条件,使得内核一旦发现进程指定的一个或多个IO条件就绪,就通过进程进程处理,从而不会在单个IO上阻塞了.Linux中,提 ...

随机推荐

  1. MD5函数(公共方法)

    1 #region MD5函数 2 /// <summary> 3 /// MD5函数 4 /// </summary> 5 /// <param name=" ...

  2. C++类的静态成员变量与静态成员函数

    1.类的静态成员变量 C++类的静态成员变量主要有以下特性: 1.静态成员变量需要类内定义,类外初始化 2.静态成员变量不依赖于类,静态成员变量属于全局区,不属于类的空间. 3.静态成员变量通过类名访 ...

  3. Iptables 代理局域网内的主机上网

    参考连接:https://developer.aliyun.com/article/607330 环境为云环境,有外网主机的IP为192.168.0.39,无外网主机的IP为192.168.0.228 ...

  4. Maven 问题 Failure to transfer org.apache.maven.plugins:maven-surefire-plugin:pom:3.0.0-M1 的处理

    一.问题描述 Maven项目报错,该项目是导入的项目,然后再通过开发工具打开项目时,pom.xml文件报错. 并且新建Maven Project 也会报错. 二.报错详细Failure to tran ...

  5. easyui comboBox的多选框之疑难杂症——逗号篇

    提笔写正文之前,首先要再次提醒一下自己,因为总是记不住,以至大神同事们都开始用"嫌弃"的眼光看自己了--         记得使用easyui中的combobox吗?效果是酱紫滴: ...

  6. Spring IOC&DI 控制反转和依赖注入

    控制反转(Inversion of Control,缩写为IOC),它是把你设计好的对象交给spring控制,而不再需要你去手动 new Object(); 网上对于IOC的解释很多,对程序员而言,大 ...

  7. 编解码再进化:Ali266 与下一代视频技术

    过去的一年见证了人类百年不遇的大事记,也见证了多种视频应用的厚积薄发.而因此所带来的视频数据量的爆发式增长更加加剧了对高效编解码这样的底层硬核技术的急迫需求. 新视频编解码标准 VVC 定稿不久之后, ...

  8. ndarray 数组的创建和变换

    ndarray数组的创建方法 1.从python中的列表,元组等类型创建ndarray数组 x = np.array(list/tuple) x = np.array(list/tuple,dtype ...

  9. [luogu5361]热闹的聚会与尴尬的聚会

    由于两者是独立的,我们希望两者的$p$和$q$都最大 考虑最大的$p$,先全部邀请,此时要增大$p$显然必须要删去当前度数最小的点,不断删除之后将每一次度数最小值对答案取max即可 对于$q$也即最大 ...

  10. [luogu6702]Path

    维护每一个点到根路径的异或和(记作$d_{k}$),根据异或自反性,$(x,y)$的异或和即$d_{x}\oplus d_{y}$ 考虑两条路径的lca,选择其中深度较大的点,另一条路径必然在其子树外 ...