美文网首页
TCP应用之HTTP传输

TCP应用之HTTP传输

作者: 遇明不散 | 来源:发表于2019-04-22 14:25 被阅读0次

tcp应用之http传输

http协议
  • 超文本传输协议,是一个应用层协议
  • 网页数据的传输
  • 数据传输方法
http协议特点
  • 应用层协议,传输层使用tcp服务
  • 简单,灵活,多种语言都有http相关操作接口
  • 无状态的协议,即不记录用户传输的信息
  • http1.1 支持持久连接
http交互过程

一端通过http请求的格式发送具体请求内容,另一端接收http请求,按照协议格式解析。获取真实请求后按照http协议响应格式组织回复内容,回发给请求方,完成一次数据交互。

http请求
请求格式
  • 请求行
    具体的请求类别和请求内容
# 格式:  GET        /         HTTP/1.1
#      请求类别   请求内容     协议版本
# 请求类别:表示请求的种类
#    GET      获取网络资源
#    POST     提交一定的附加信息,得到返回结果
#    HEAD     获取响应头
#    PUT      更新服务器资源
#    DELETE   删除服务器资源
#    CONNECT  (预留)
#    TRACE    用于测试
#    OPTIONS  获取服务器性能信息
  • 请求头
    对请求内容的具体描述信息,每一项占一行,以键值对的形式展现
# :authority: www.jianshu.com
# :method: PUT
# :path: /author/notes/44522113
# :scheme: https
# accept: application/json
# accept-encoding: gzip, deflate, br
# accept-language: zh-CN,zh;q=0.9,en;q=0.8
# content-length: 1371
# content-type: application/json; charset=UTF-8
  • 空行
  • 请求体
    请求参数或者是提交内容
响应格式
  • 响应行
    反馈响应的情况
/*
格式:  HTTP/1.1    200     OK
       协议版本   响应码  附加信息
响应码:响应的具体情况
      1xx : 提示信息,表示请求成功
      2xx : 响应成功
      3xx : 响应需要重定向
      4xx : 客户端错误
      5xx : 服务端错误
常见响应码 : 
      200  成功
      404  请求内容不存在
      401  没有访问权限
      500  服务器发生未知错误
      503  暂时无法执行
*/
  • 响应头
    对应内容的具体描述
/*
Connection: keep-alive
Content-Encoding: gzip
Content-Type: text/html
Date: Thu, 06 Sep 2018 09:11:18 GMT
*/
  • 空行
  • 响应体
    返回给请求端的具体内容
示例
# http_server.py

from socket import *

def handleClient(connfd):
    request = connfd.recv(4096)
    # print(request)
    requestlines = request.splitlines()
    for line in requestlines:
        print(line)

    try:
        f = open('index.html')
    except IOError:
        response = "HTTP/1.1 404 not found\r\n"
        response += "\r\n"  #空行
        response += "====Sorry not found====="
    else:
        response = "HTTP/1.1 200 OK\r\n"
        response += "\r\n"  #空行
        response += f.read()
    finally:
        connfd.send(response.encode())


def main():
    s = socket()
    s.setsockopt(SOL_SOCKET,SO_REUSEADDR,1)
    s.bind(('127.0.0.1',8888))
    s.listen(5)
    print("Listen to the port 8888:")
    while True:
        connfd,addr = s.accept()
        handleClient(connfd)
        connfd.close()

if __name__ == "__main__":
    main()

相关文章

  • TCP应用之HTTP传输

    tcp应用之http传输 http协议 超文本传输协议,是一个应用层协议 网页数据的传输 数据传输方法 http协...

  • HTTP工作原理

    HTTP的定义 一种网络传输协议,位于 TCP / IP 协议族的最顶层——应⽤层 HTTP Hypertext ...

  • http1.0、http1.1、http2.0的区别

    http http 超文本传输协议,基于TCP协议TCP优点:TCP协议提供传输控制、按顺序组织数据、错误纠正TC...

  • TCP/UDP

    TCP TCP使用之前要先建立连接,形成出传输数据的通道 传输前,采用三次握手方式,是可靠的 TCP协议进行通信的...

  • http请求过程

    http协议即为超文本传输协议,http协议建立在tcp之上,tcp为传输层协议,而http则为应用层协议。 ht...

  • HTTP、TCP、UDP,Socket,HTTPS讲解

    TCP HTTP UDP三者的关系 TCP/IP是个协议组,可分为四个层次:网络接口层、网络层、传输层和应...

  • socket和http的区别

    HTTP协议:超文本传输协议,对应于应用层,HTTP协议是基于TCP连接的 tcp协议: 对应于传输层 ip协议:...

  • HTTP实践

    HTTP(HyperText Transfer Protocol,超文本传输协议) TCP/IP TCP/IP 协...

  • 网络传输 http tcp

    HTTP请求头信息 Connection 请求头信息 Connection Connection 头(header...

  • HTTPS从入门到放弃

    使用socket进行tcp数据传输的简单过程 Socket是TCP/UDP传输层的API, HTTP是在tcp上的...

网友评论

      本文标题:TCP应用之HTTP传输

      本文链接:https://www.haomeiwen.com/subject/hqlcgqtx.html