愚公移山日记·23

愚公移山日记·23

域名
简称:DN 域名可以理解为是一个网址,由于IP地址不便于记忆,所以产生了域名,local host指的是本机是一个域名
DNS服务器
域名解析系统,主要适用于将域名转换成对应的IP地址。
浏览器访问服务器的过程:浏览器与服务器建立连接时,是先去访问DNS服务器,返回域名相对应的IP地址,再去将得到的IP地址区连接相应的服务器,由服务器返回给我们信息。
当然在实际的访问过程中,建立连接时,会先访问本地DNS,如果在本地的DNS中没有找到相对应的域名,那么再去访问DNS服务器。
C:\Windows\System32\drivers\ect\hosts 本地的DNS位置
HTTP协议概述
超文本传输协议:为了提供发布和接受HTML页面的方法,HTTP是基于TCP,浏览器和服务器之间由TCP连接。
HTTP协议分为两个部分:请求协议,响应协议
请求行 
GET 请求方式
/ 请求资源的路径  体现请求资源的路径 (不包含域名)
HTTP/1.1 请求协议以及版本

请求头
协议名:协议内容
Host :当url中所要请求的服务器的主机名
accept-encoding:是浏览器发给服务器,声明浏览器支持解压编码类型
accept_charset:表示浏览器支持的字符集
referer:表示此次请求来自于哪个网站
accept-Language zh-CN,zh;q= 0.8(权重,越大越先解析)
cookie:如果当前请求的服务器在浏览器端设置了数据(cookie)那么当前浏览器再次请求该服务器的时候,就会把对应数据带回去。
user-agent:用户代理,当前发起请求的浏览器的内核信息。
accept:表达浏览器可以接受的数据类型,text/html,iamage/img
请求空行
分割请求头与请求主体
请求主体
浏览器要发送给服务器的内容
get方式没有请求体,post方式才有请求体
http响应报文协议分析
是服务器向浏览器做出响应(反馈数据)时候的协议
响应行
http/ 1.1 200 ok
协议与版本 响应的状态码 200 表示服务器已经接受了浏览器的请求并且返回了数据 响应状态的描述
1开头:已经接受仍在处理
3开头:重定向的一个网页
500:服务器报的错误
响应头
*server :服务器的版本
data:响应时间
contend length :响应的长度
*content-type :相应的数据类型
location :重定向
refresh:重定向(刷新)
空行
分割响应头与响应主体

简单的web服务器
''#TCP服务端
#导入模块
#创建套接字
#设置地址重用
#绑定端口
#设置监听,让套接字由主动变为被动
#接受客户端连接 定义函数 request_handler()
#接受客户端浏览器发送的请求协议
#判断协议是否为空
#拼接响应的报文
#发送响应报文
#关闭操作
'''
import socket
def request_handler(new_client_socket,ip_port):
    #接受客户端浏览器发送的请求协议
    request_data = new_client_socket.recv(1024)
    #print(request_data)
    #判断协议是否为空
    if not request_data:
        print('客户端已经下线' +str(ip_port))
        new_client_socket.close()
        return
    #拼接响应的报文
    #相应行
    response_line = 'http/1.1 200 ok\r\n'
    #响应头
    response_header ='Server:python/2.1\r\n'
    #响应空行
    response_blank = '\r\n'
    #响应主体
    response_body = 'helloWorld'
    response_data = response_line + response_header +response_blank +response_body
    #发送响应报文
    new_client_socket.send(response_data.encode())
    #关闭当前连接
def main():
    '''主函数'''
    #导入模块
    #创建套接字
    tcp_client_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    #设置地址重用
    #当前套接字,设置地址重用,属性为Ture
    tcp_client_socket.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,True)
    #绑定端口
    tcp_client_socket.bind(('',8080))
    #设置监听,让套接字由主动变为被动
    tcp_client_socket.listen(128)
    #接受客户端连接 定义函数 request_handler()
    while True:
        new_client_socket,ip_port = tcp_client_socket.accept()
        #调用函数处理
        request_handler(new_client_socket,ip_port) 
if __name__ =='__main__':
    main()
           

在今天的实现代码的过程中我这里出现了一些问题,程序可以运行,但是不能给客户端反应情况,我思考到底是不是因为虚拟机,或者在操作系统的环境搭建出现了问题。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值