面试技能http与https(https) - python中的网络编程

HTTPS:

HTTPSHypertext Transfer Protocol over Secure Socket Layer,基于SSLHTTP协议)使用了HTTP协议,但HTTPS使用不同于HTTP协议的默认端口及一个加密、身份验证层(HTTPTCP之间)。这个协议的最初研发由网景公司进行,提供了身份验证与加密通信方法,现在它被广泛用于互联网上安全敏感的通信。

客户端在使用HTTPS方式与Web服务器通信时有以下几个步骤,如图所示
1)客户使用httpsURL访问Web服务器,要求与Web服务器建立SSL连接。
2Web服务器收到客户端请求后,会将网站的证书信息(证书中包含公钥)传送一份给客户端。
3)客户端的浏览器与Web服务器开始协商SSL连接的安全等级,也就是信息加密的等级。
4)客户端的浏览器根据双方同意的安全等级,建立会话密钥,然后利用网站的公钥将会话密钥加密,并传送给网站。
5Web服务器利用自己的私钥解密出会话密钥。
6Web服务器利用会话密钥加密与客户端之间的通信。


面试技能http与https(https) - python中的网络编程_第1张图片

网络编程:

udp与tcp:

udp是一种面向无连接的协议,每一个数据都是独立的信息,有完整的源地址或目的地址,它在网络上以任何可能的路径传到目的地,所以是否到达目的地,以及时间与内容的准确性不能被保证;

udp面向无连接的通讯协议,udp数据包包括,目的段端口号与源端口号,由于通讯不需要连接,可以实现广播发送;数据传输时,数据大小限制在64kb左右;udp是不可靠连接,所以数据不一定按照,顺序到达;

udp创建客户端的流程:

1.创建客户端套接字;

2.发送或接收数据;

3.关闭套接字;

发送数据:

from socket import *

# 创建套接字
udpSocket = socket(AF_INET,SOCK_DGRAM)
# 地址
sendAddr = ('192.168.1.162', 8080)
# 发送内容
sendData = input("输入发送内容:")

# 发送数据到地址
udpSocket.sendto(sendData, sendAddr)

# 关闭套接字
udpSocket.close()
接收数据:

# 接收数据
from socket import *

# 创建套接字
udpSocket = socket(AF_INET, SOCK_DGRAM)

# 地址
sendAddr = ('192.168.1.162', 8080)
# 输入内容
sendData = input('输入发送内容:')

# 发送数据
udpSocket.sendto(sendData, sendAddr)

# 接收数据
recvData = udpSocket.recvfrom(1024)

# 显示对方发送的数据
print(recvData)

udpSocket.close()
tcp模拟QQ聊天:

# QQ聊天客户端
from socket import *

# 创建socket
tcpclient = socket(AF_INET, SOCK_STREAM)
# 连接服务器地址
sendAddr = ('192.168.1.162', 8080)
# 地址连接
tcpclient.connect(sendAddr)

while True:
    # 输入信息
    sendData = input("输入内容:")
    if len(sendData)>0:
        tcpclient.send(sendData)
    else:
        break

    # 接收对方发送数据
    recvData = tcpclient.recv(1024)

    print('recv:', recvData)

tcpclient.close()
服务端:
from socket import *

# 创建socket
tcpclient = socket(AF_INET, SOCK_STREAM)

# 地址
sendAddr = ('192.168.1.162', 8080)
tcpclient.bind(sendAddr)
# 设置监听
tcpclient.listen(5)

while True:
    # 接收客户端信息与地址
    newSocket, accaddr = tcpclient.accept()
    while True:
        # 接收数据
        recvDate = newSocket.recv(1024)
        #
        if len(recvDate)>0:
            print('recv:', recvDate)
        else:
            break

        # 数据发送
        sendData = input("输入数据:")
        newSocket.send(sendData)
    newSocket.close()

tcpclient.close()


 
  



你可能感兴趣的:(python)