python之http笔记

TCP应用之 http传输

网站访问流程
1,客户端发起http请求
2, 传输层使用tcp协议建立连接,层层打包,将请求内容发送给服务器
3,web服务器接收后解析http请求,叫给后端应用程序处理
4, 后端应用得到结果,通过web server发给前端


http协议介绍
用途:
    网站中网页的传输和数据传输
    也可用作基于http协议的编程传输数据

特点:  应用层协议, 使用tcp连接
        简单灵活,接口使用方便
        几乎支持所有数据类型
        无状态协议:通信过程中不记录客户端的访问状态
        http 1.0无连接, http1.1持续连接
        
请求:request
格式:
请求行:  确定具体请求的类型
请求头: 对请求内容的信息描述
空行
请求正文: 具体请求参数

请求行: GET         /index.html  HTTP/1.1
        请求方法    请求资源    协议版本
请求方法:
    GET        获取网络资源:最为常用
    POST    提交一定的附加数据,得到返回结果:例如登陆,注册等页面,常用
    HEAD    获取响应的头部信息
    PUT        更新服务器的资源
    DELETE    删除服务器资源
    TRACE    用于测试
    CONNECT    保留方法
    OPTIONS    请求获取服务器性能和信息
    
请求头:
Accept:text/css,*/*;q=0.1
Accept-Encoding:gzip, deflate, sdch
Accept-Language:zh-CN,zh;q=0.8,zh-TW;q=0.6
Connection:keep-alive
Host:gss0.bdstatic.com
Referer:http://news.baidu.com/
User-Agent:Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.96 Safari/537.36
    
请求体:
GET请求--> get参数     &a=1&b=2
POST请求 --> post提交的内容

    
        
响应 response

响应行:  反馈响应的情况
响应头:  对响应的具体描述
空行:
响应体:  具体返回给用户的内容

响应行: HTTP/1.1         200        OK
        协议版本        响应码    响应码对应信息

    响应码:        
    1xx        提示信息,表示请求已经接收,正在处理
    2xx        请求响应成功
    3xx        重定向,完成任务需要其他操作
    4xx        请求资源不存在,客户端错误
    5xx        服务端错误

    常用响应码:
    200 成功
    401 没有权限
    404 资源不存在
    500 服务器发生未知错误
    503 服务器暂时无法执行

响应头 格式同请求头
响应体: 文件,图片。。。

要求: 能够简述访问一个网站的流程,
        知道什么是http协议及基本特点,
        知道http请求种类,及每种请求的功能
        知道http响应种类及常用响应码
        知道GET请求和POST请求的功能和区别


 

from socket import *
from time import sleep

def handleClient(connfd):
    request = connfd.recv(2048)
    requestHeadlers = request.splitlines()
    for line in requestHeadlers:
        print(line)
    try:
        f = open('d:\csdn.html','r',encoding='utf-8')
    except IOError:
        response = "HTTP/1.1 404 not found\r\n"
        response += '\r\n'
        response += '''--------sorry, file not found--------'''
    else:
        response = "HTTP/1.1 200 OK\r\n"
        response += '\r\n'
        for line in f:
            response += line
    finally:
        connfd.send(response.encode())
        f.close()

def main():
    sockfd = socket()
    sockfd.setsockopt(SOL_SOCKET, SO_REUSEADDR,1)
    sockfd.bind(('0.0.0.0',8888))
    sockfd.listen(10)
    while True:
        sleep(0.1)
        connfd,addr = sockfd.accept()
        handleClient(connfd)
        connfd.close()

if __name__ == "__main__":
    main()

然后使用web访问: http://127.0.0.1:8888/

效果如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值