HTTP与HTTPS
状态码 定义1xx 报告 接收到请求,继续进程
2xx 成功 步骤成功接收,被理解,并被接受
3xx 重定向 为了完成请求,必须采取进一步措施
4xx 客户端出错 请求包括错的顺序或不能完成
5xx 服务器出错 服务器无法完成显然有效的请求
xsrf与xss
CSRF(Cross-site request forgery)跨站请求伪造,CSRF重点在请求
XSS(Cross Site Scripting)跨站脚本攻击,XSS重点在脚本
四 RESTful (Representational State Transfer)RESTful架构:
(1)每一个URI代表一种资源;
(2)客户端和服务器之间,传递这种资源的某种表现层;
(3)客户端通过四个HTTP动词,对服务器端资源进行操作,实现"表现层状态转化"。
GET用获取资源,POST用来新建资源(或用于更新资源),PUT用来更新资源,DELETE用来删除资源。
RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议
SOAP(原为Simple Object Access Protocol的首字母缩写,即简单对象访问协议)是交换数据的一种协议规范,使用在计算机网络Web服务(web service)中,交换带结构信息
进化的顺序: RPC -> SOAP -> RESTful
CGI与WSGI
CGI是通用网关接口,是连接web服务器和应用程序的接口,用户通过CGI来获取动态数据或文件等。
CGI程序是一个独立的程序,它可以用几乎所有语言来写,包括perl,c,lua,python等等。
WSGI, Web Server Gateway Interface,是Python应用程序或框架和Web服务器之间的一种接口,WSGI的其中一个目的就是让用户可以用统一的语言(Python)编写前后端。
中间人攻击(Man-in-the-middle attack,通常缩写为MITM)是指攻击者与通讯的两端分别创建独立的联系,并交换其所收到的数据,使通讯的两端认为他们正在通过一个私密的连接与对方直接对话,但事实上整个会话都被攻击者完全控制。
五 TCP/IP 与 UDPTCP/IP(Transmission Control Protocol/Internet Protocol)即传输控制协议/网间协议,是一个工业标准的协议集,它是为广域网(WANs)设计的。
UDP(User Data Protocol,用户数据报协议)是与TCP相对应的协议。它是属于TCP/IP协议族中的一种。
这里有一张图,表明了这些协议的关系。
TCP/IP协议族包括运输层、网络层、链路层。现在你知道TCP/IP与UDP的关系了吧。
Socket在哪里呢?
Socket是什么呢?
Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。
TCP服务端
''' 访问服务器的步骤: 1 创建服务器serviceScoket socket.socket(协议版本,传输方式) 2 绑定服务器地址 serviceScoket.bind(ip地址,短号) 3 给服务器设置监听器(客户端的数量) serviceScoket.listen(客户端连接的数量) 4 等待客户端的连接 serviceScoket.accept() 5 接受客户端的请求 recv(大小) 6 服务器发送数据给客户端 send(数据) ''' import socket #创建服务器 serviceScoket = socket.socket(socket.AF_INET,socket.SOCK_STREAM) #绑定服务器地址(ip,端口号) serviceScoket.bind(('10.31.162.26',21334)) #给服务器设置监听,可以连入的客户端数量 serviceScoket.listen(5) print('等待客户端接入') #等待客户端接入 #sock是客服端的socket信息 #addr是客户端的地址(ip与端口) sock,addr = serviceScoket.accept() print('sock:%s'%sock) print(addr) print('客户端已接入') #接收客户端请求 while True: recvData = sock.recv(1024) print('客户端说:%s'%(recvData.decode('utf-8'))) sendData = input('服务器说:') #发送(回复)数据给客户端 sock.send(sendData.encode('utf-8'))