Skr-Eric的网络编程课堂(四)-- http请求和响应及IO分类

tcp应用之http传输

 

http协议 : 超文本传输协议,是一个应用层协议

用途 : 网页数据的传输

        数据传输方法

特点 :

1. 应用层协议,传输层使用tcp服务

2. 简单,灵活,多种语言都有http相关操作接口

3. 无状态的协议,即不记录用户传输的信息

4. http1.1  支持持久连接

 

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

 

http请求 (request)

 

请求格式:

 

请求行  : 具体的请求类别和请求内容

    格式:  GET       /         HTTP/1.1

          请求类别  请求内容    协议版本

    请求类别 : 表示请求的种类

        GET      获取网络资源

POST     提交一定的附加信息,得到返回结果

HEAD     获取响应头

PUT      更新服务器资源

DELETE   删除服务器资源

        CONNECT  

TRACE    用于测试

OPTIONS  获取服务器性能信息

 

请求头 : 对请求内容的具体描述信息

Accept-Encoding: gzip, deflate

Accept-Language: zh-CN,zh;q=0.9

Cache-Control: max-age=0

Connection: keep-alive

 

空行

 

请求体 : 请求参数或者是提交内容

 

http响应 (response)

 

响应格式

 

响应行  : 反馈响应的情况

    格式 : 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

 

空行

 

响应体 : 返回给请求端的具体内容

IO   input   output

在内存中存在数据交换的操作都可以认为是IO操作

和终端交互 : input   print

和磁盘交互 : read  write

和网络交互 : recv   send

 

IO密集型程序 : 在程序执行过程中存在大量IO操作,而cpu运算操作较少。消耗cpu较少,运行效率较低

计算密集型程序(cpu密集型程序):在程序执行中cpu运算较多,IO操作相对较少。消耗cpu大,运行速度快

 

IO分类

阻塞IO   非阻塞IO   IO多路复用

 

阻塞IO  

阻塞IO是IO的默认形态,是效率较低的一种IO情形。

 

    阻塞情况

    * 因为某种条件没有达成造成的阻塞

      e.g.  accept   input   recv

    * 处理IO数据传输时间较长形成的阻塞

      e.g.  网络传输过程,文件读写过程

 

非阻塞IO

通过修改IO事件的属性,使其变为非阻塞状态。(让一些条件阻塞函数不再阻塞)

* 非阻塞IO往往和循环判断一起使用

s.setblocking(False)

将套接字设置为非阻塞状态

 

超时检测

将原本阻塞的函数设置一个最长阻塞时间。如果时间内条件达成则正常运行,如果仍然阻塞则视为超时,继续向下运行或产生异常

s.settimeout(sec)

设置套接字的超时时间

 

 

 

 

想要看更多的课程请微信关注SkrEric的编程课堂

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值