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. Atcoder 题目泛做

    我思维越来越菜了,这样下去感觉要退役了. 听说Atcoder的题练思维?那就试着做一做吧. 坚持每天一两道吧.(很有可能咕掉.) AGC036 官方题解 ---A-Triangle          ...

  2. 分布式事务(四)之TCC

    在电商领域等互联网场景下,传统的事务在数据库性能和处理能力上都暴露出了瓶颈.在分布式领域基于CAP理论以及BASE理论,有人就提出了柔性事务的概念.在业内,关于柔性事务,最主要的有以下四种类型:两阶段 ...

  3. k8s 测试环境搭建

    # 安装kubectl https://kubernetes.io/docs/tasks/tools/install-kubectl/#install-kubectl-on-linux  # 官方安装 ...

  4. 一次Java线程池误用(newFixedThreadPool)引发的线上血案和总结

    一次Java线程池误用(newFixedThreadPool)引发的线上血案和总结 这是一个十分严重的线上问题 自从最近的某年某月某天起,线上服务开始变得不那么稳定(软病).在高峰期,时常有几台机器的 ...

  5. c++学习笔记(八)

    内联函数 概念 内联(inline)函数是c++为提高程序运行速度所做得一项改进. 与常规函数的区别不在于编写方式,而在于被调用时的运行机制不同----编译器使用函数代码替换函数调用. 引用内联函数时 ...

  6. [atARC070F]HonestOrUnkind

    考虑当$a\le b$时,构造两种方案,满足诚实的人不交,接下来要求对于任意询问,这两种方案的答案都有可能相同 考虑询问$(i,j)$,若$i$在两种方案中有一种不诚实,那么总可以让答案相同,又因为诚 ...

  7. [loj4]Quine

    很有趣的一道题目,如何让一个程序输出自身如果用字符串s表示程序,那么意味着可以通过s来输出sprintf是一个可以利用的函数,相当于要求printf(s,s)输出的就是s那么只需要在s中加入%c和%d ...

  8. 基于nexus私服配置项目pom.xml和maven settings.xml文件

    备注:搭建nexus私服请参考上一篇文章基于Docker搭建Maven私服Nexus,Nexus详解 一:将jar发送到nexus私服务器 1.pom.xml文件添加配置 pom.xml文件中的这个版 ...

  9. html中引入外部js文件,使用外部js文件里的方法

    外部js文件1: /** * 加了window.onload 后,直接引入js文件即可 * 页面资源全部加载完毕后会自动调用window.onload里的回调函数 */ window.addEvent ...

  10. SpringSecurity过滤器原理

    SpringSecurity原理 主要过滤器链 SpringSecurity的功能主要是由一系列的过滤器链相互配合完成的.验证一个过滤器之后放行到下一个过滤器链,然后到最后. 认证流程 过滤器作用 S ...