讲解
C/S架构
客户机和服务器结构
Server唯一的目的就是等待client的请求,client连上server发送必要的数据,然后等待server端完成请求的范阔
C/S网络编程
Server端进行设置,首先创建一个通信端点,让server端能够监听请求,之后就进入等待和处理Client请求的无限循环中
Client编程相对Server端编程简单,只要创建一个通信端点,建立到服务器的连接,就可以提出wing我就来
套接字(socket)
是一种具有之前所说的“通信端点”概念的计算机网络数据结构。网络化的应用程序在开始任何通讯之前都必须创建套接字
套接字 = (ip, 端口)
Python支持:
- AF_UNIX –> Unix下进行通信的
- AF_NETLINK –> 是Linux下的套接字
- AF_INET –> 是基于网络的套接字 (我们下面的重点)
Python的socket模块
创建TCP/IP套接字,方法如下:
1
|
# 参数(套接字家族,套接字类型)
|
套接字对象的方法:
服务端套接字函数:
公共用途套接字函数:
创建连接之后要关闭
实例:
反弹Shell:
在客户端获取服务端的shell
1.获取Linux的shell:
server.py
1
|
"""
|
2.获取Window的shell:
1
|
|
client.py不变
1
|
import socket
|
1.阻塞的套接字
阻塞套接字不能和多个客户端进行通信
server.py
1
|
"""
|
client.py
1
|
"""
|
2.I/O多路复用的套接字
server.py
1
|
"""
|
client.py 相同
3.非阻塞的套接字
server.py
1
|
"""
|
client.py 相同
成为大师
1
|
"""
|