第一个最简单的CS架构以及介绍

1. C/S与B/S架构
C/S: Client 客户端--------基于网络----------Server
B/S: Browser浏览器--------基于网络----------Server

2. 网络通信服务端需要遵循的原则:
1. 服务端与客户端都需要有唯一的地址,但是服务端的地址必须固定/绑定
2. 对外一直提供服务,稳定运行
3. 服务端应该支持并发

3. 网路
网络建立的目的是为数据交互(通信)
如何实现通信:
1. 建立好底层的物理连接介质
2. 有一套统一的通信标准,称之为互联网协议

4. 互联网协议:就是计算机界的英语,一套通用的规范
网络=底层的物理连接介质+互联网协议(就是计算机界的英语)
OSI七层协议
应用层(应用层表示层会话层):http,ftp
传输层:tcp/udp
网络层:ip
数据链路层:ethernet
物理层:发送电信号

ip+mac可以标识全世界范围内独一无二的一台计算机的位置
port可以标识一台计算机之上唯一的一个基于网络通信的应用软件

ip+mac+port:可以标识全世界范围内独一无二的一个应用软件(基于网络通信)



今日内容:
1. tcp协议
三次握手建链接
四次挥手断开链接
tcp协议的状态
syn洪水攻击与半连接池

2. 互联网协议详解(了解)

3. socket介绍

4. 基于socket来编写C/S架构的软件

服务端程序:
import socket

# 1.买手机
phone = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # SOCK_STEAM=>TCP流式协议,
print(phone) # 是用来接收链接请求,从而建立链接的

# 2.插手机卡
phone.bind(('127.0.0.1', 8080)) # 0-65535

# 3.开机
phone.listen(5) # 同一时刻最大请求数为5个

print('正在等待连接....')
# 4.等待电话请求
conn, client_addr = phone.accept() # (双向链接的套接字对象,存放客户端ip和端口的小元组)
print(conn) # conn代表双向链接,用来收发消息
# print(client_addr)

# 5.收发消息
data = conn.recv(1024) # 1024接收的最大字节数bytes
print('收到客户的数据', data)
conn.send(data.upper())

# 6.挂电话链接
conn.close()

# 7.关机
phone.close()



客户端程序:
import socket

# 1.买手机
phone = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# SOCK_STEAM=>TCP流式协议,默认是TCP流式协议

# 2.拨号
phone.connect(('127.0.0.1', 8080))

# 3.发收消息
phone.send('hello'.encode('utf-8'))
# 只能发bytes类型
data = phone.recv(1024)
print('收到服务端的消息: ', data)

# 4.挂电话链接
phone.close()



原文地址:https://www.cnblogs.com/1832921tongjieducn/p/11342516.html