HTTP 什么是HTTP?
HTTP 是超文本传输协议,也就是HyperText Transfer Protocol。
详细解释
HTTP 是一个在计算机世界里专门在「两点」之间「传输」文字、图片、音频、视频等「超文本」数据的「约定和规范」。
什么是socket套接字,TCP/IP网络的API。Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口.
Socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信。
HTTP和Socket的关系客户端的套接字接口是客户进程与TCP连接之间的门,在服务器端的套接字接口则是服务器进程与TCP连接之间的门.
客户端向他的套接字接口发送HTTP请求报文并从它的套接字接口接收HTTP响应报文,类似的,服务器从它的套接字接口接收HTTP请求报文和向它的套接字接口发送HTTP响应报文.一旦客户向它的套接字接口发送了一个请求报文,该报文就脱离了客户控制并进入TCP的控制.
HTTP的特点HTTP是一个无状态协议.即服务器向客户发送被请求的文件,而不存储任何关于该客户的状态信息.
无状态的好处与坏处
无状态的好处,因为服务器不会去记忆 HTTP 的状态,所以不需要额外的资源来记录状态信息,这能减轻服务器的负担,能够把更多的 CPU 和内存用来对外提供服务。
无状态的坏处,既然服务器没有记忆能力,它在完成有关联性的操作时会非常麻烦。
例如登录->添加购物车->下单->结算->支付,这系列操作都要知道用户的身份才行。但服务器不知道这些请求是有关联的,每次都要问一遍身份信息。
Cookie进行状态管理对于无状态的问题,解法方案有很多种,其中比较简单的方式用 Cookie 技术。
Cookie 通过在请求和响应报文中写入 Cookie 信息来控制客户端的状态。
没有Cookie信息状态下的请求
第2次以后(存有Cookie信息状态)的请求
发生Cookie交互的情景中,HTTP请求报文和响应报文的内容如下.
请求报文(没有Cookie信息的状态)
响应报文(服务器端生成Cookie信息)
请求报文(自动发送保存着的Cookie信息)
HTTP报文格式HTTP请求报文
如下是一个HTTP请求报文
请求报文的第一行叫做请求行,其后继的行叫做首部行,请求行有3个字段:方法字段,URL字段和HTTP版本字段,方法字段可以取不同的值,包括GET,POST,HEAD,PUT和DELETE.
在本例中,该浏览器正在向 /chapter17/user.html 提交表单,实现的是HTTP/1.1协议
User-Agent:向服务器发送请求的浏览器类型
Connection: Keep-Alive: 使用持续连接
Host:指明对象所在的主机
Cookie:类型为“小型文本文件”,是某些网站为了辨别用户身份,进行Session跟踪而储存在用户本地终端上的数据(通常经过加密),由用户客户端计算机暂时或永久保存的信息
一个HTTP请求报文的通用格式如下
HTTP响应报文