day057-初识Django

匿名 (未验证) 提交于 2019-12-02 23:47:01

假设www.abc.com的主机要查询www.xyz.abc.com的服务器ip地址。

知识点

1、hosts文件:以静态映射的方式提供IP地址与主机名的对照表,类似ARP表

2、域:abc.com是一个域,它可以划分为多个区域,如abc.com和xyz.abc.com

步骤

递归查询

第一步:在hosts静态文件、DNS解析器缓存中查找某主机的ip地址

第二步:上一步无法找到,去DNS本地服务器(即域服务器)查找,其本质是去区域服务器、服务器缓存中查找

第三步:本地DNS服务器查不到就根据‘根提示文件’向负责顶级域‘.com’的DNS服务器查询

第四步:‘根DNS服务器’根据查询域名中的‘xyz.com’,再向xyz.com的区域服务器查询

第五步:www.xyz.abc.com的DNS服务器直接解析该域名,将查询到的ip再原路返回给请求查询的主机

迭代查询

第一步:在hosts静态文件、DNS解析器缓存中查找某主机的ip地址

第二步:上一步无法找到,在DNS本地服务器(即域服务器)查找所有本层次的区域服务器

第三步:本地DNS服务器查不到就查询上一层次的所有区域服务器,以此类推直至根域名DNS服务器‘.’

第四步:到达根域名服务器后又向下查询,直至查到结果为止。

迭代查询与递归查询结合

递归查询需要经过逐层查询才能获得查询结果,当查询具有许多层次的DNS结构时效率很低,所以一般采用两者相结合的查询方式。

第一步:在hosts静态文件、DNS解析器缓存中查找某主机的ip地址

第二步:上一步无法找到,去DNS本地服务器(即域服务器)查找,其本质是去区域服务器、服务器缓存中查找

第三步:本地DNS服务器查不到就根据‘根提示文件’向负责顶级域‘.com’的根DNS服务器查询

第四步:根DNS服务器直接将其区域DNS服务器的ip地址返回给本地服务器,而不用再向xyz.com的区域服务器查询。

第五步:本地DNS服务器将结果返回给请求的主机

一、web框架搭建分一下几步

1、首先搭建一个服务器接收客户端发来的请求数据包

2、对客户端发来的数据包进行分析与拆分得到想要的数据

header = data.split('\r\n\r\n')[0].split('\r\n')[0]
url = header.split(' ')[1]

3、创建一个路由关系映射,将不同的请求映射到不同的方法种

4、在方法使用mysql中连接数据库,并将得到的数据进行循环拼接成html中的表格的形式

5、将拼接后的数据和html文件中的@@content@@进行替换

6、换回替换后的数据给客户端

二、代码

.py的代码

import socket

def f1():
fp = open('index.html', 'rb')
data = fp.read()
fp.close()

return data

def f2():
import pymysql
conn = pymysql.connect(host='127.0.0.1',user='root',password='456',db='db1',charset='utf8')
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)

sql = 'select sid,sname,gender,class_id from student' cursor.execute(sql) res = cursor.fetchall() print(res) res_list = [] for user in res:     res_str = '<tr><td>%s</td><td>%s</td><td>%s</td><td>%s</td></tr>' % (user['sid'],user['sname'],user['gender'],user['class_id'])     res_list.append(res_str) s = ' '.join(res_list) fp = open('index.html', 'r',encoding='utf-8') data = fp.read() data = data.replace('@@content@@',s) fp.close()  return bytes(data,encoding='utf-8')

router = [
('/index', f1),
('/xxx', f2),]

def run():
server = socket.socket()
server.bind(('127.0.0.1',9999))
server.listen(5)

while True:     cli,add = server.accept()     buf = cli.recv(1024)     if not buf:         print('断开连接')         cli.close()     data = str(buf,encoding='utf-8')     header = data.split('\r\n\r\n')[0].split('\r\n')[0]     url = header.split(' ')[1]      func_name = None     for i in router:         if i[0] == url:             func_name = i[1]             break     if func_name:         res = func_name()     else:         res = b'404'      cli.send(bytes('HTTP/1.1 200 OK\r\n\r\n',encoding='utf-8'))     cli.send(res)     cli.close()

if name == 'main':
run()

.html的代码
<!DOCTYPE html>



登录












@@content@@

SIDNameGenderClass_id


转载请标明出处:day057-初识Django
文章来源: day057-初识Django
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!