HTTP 超文本传输协议
是一种建立在TCP上的无状态连接
工作流程:
1.客户端发送一个HTTP请求(说明客户端想要访问的资源和请求的动作)
2.服务端收到请求后处理请求,并根据请求做出相应的动作访问服务器里的资源。
3.最后通过发送HTTP响应把结果返回给客户端。
其中一个请求的开始到一个响应的结束称为事务,当一个事物结束后还会在服务端添加一条日志条目。
一、HTTP请求
HTTP请求是客户端往服务端发送请求动作,告知服务器自己的要求。
HTTP请求由状态行、请求头、请求正文三部分组成。
状态行:包括请求方式Method、资源路径URL、协议版本Version;
请求头:包括一些访问的域名、用户代理、Cookie等信息;
请求正文:就是HTTP请求的数据。
HTTP请求方法详解共定义了八种方法
OPTIONS
返回服务器针对特定资源所支持的HTTP请求方法,也可以利用向web服务器发送‘’的请求来测试服务器的功能性
HEAD
向服务器索与GET请求相一致的响应,只不过响应体将不会被返回。这一方法可以再不必传输整个响应内容的情况下,就可以获取包含在响应小消息头中的元信息。
GET
向特定的资源发出请求。它本质就是发送一个请求来取得服务器上的某一资源。资源通过一组HTTP头和呈现数据(如HTML文本,或者图片或者视频等)返回给客户端。GET请求中,永远不会包含呈现数据。
POST
向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。
PUT
PUT方法用来传输文件,就像FTP协议的文件上传一样,要求在请求报文的主体中包含文件内容,然后保存在请求URI指定的位置。但是HTTP/1.1的PUT方法自身不带验证机制,任何人都可以上传文件,存在安全问题,故一般不用。
DELETE
指明客户端想让服务器删除某个资源,与PUT方法相反,按URI删除指定资源
TRACE***加粗样式
回显服务器收到的请求,主要用于测试或诊断
CONNECT
HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
二.HTTP响应
服务器收到了客户端发来的HTTP请求后,根据HTTP请求中的动作要求,服务端做出具体的动作,将结果回应给客户端,称为HTTP响应。
HTTP响应由三部分组成:状态行、响应头、响应正文;
状态行:包括协议版本Version、状态码Status Code、回应短语;
响应头:包括搭建服务器的软件,发送响应的时间,回应数据的格式等信息;
响应正文:就是响应的具体数据。
状态码:
1xx 表示HTTP请求已经接受,继续处理请求
2xx 表示HTTP请求已经处理完成
3xx 表示把请求访问的URL重定向到其他目录
4xx 表示客户端出现错误
5xx 表示服务端出现错误
get 和 post区别
- get请求将数据放在url地址中, post请求将数据放在消息体中
- GET请求请提交的数据放置在HTTP请求协议头中,而POST提交的数据则放在实体数据中;
- GET方式提交的数据最多只能有1024字节,而POST则没有此限制。
- get不安全 post相对安全
- get用于验证信息,如:向服务器查询用户名和密码;post用于向服务器发送被保存的数据,如:表单提交。
附加
HTTP常见面试题 https://blog.csdn.net/yicixing7/article/details/79320821
TCP/IP 协议 https://blog.csdn.net/yulyu/article/details/69062288
TCP https://www.cnblogs.com/buxiangxin/p/8336022.html
http和tcp关系 https://blog.csdn.net/weixin_40784198/article/details/81434530