先总结几点必须要记住的东西:
- 可靠
- 面向字节流的
- 超文本传输协议
- 无状态的
- 底层用的是TCP(传输层)协议,正常通信前要建立连接(三次握手)
好,记住了这些,让我们依次往下看:
1.认识URL
不仅有http,还有https,https对应的端口号是443
- HTTP : 端口号:80 ,普通
-
HTTPS:端口号:443, 加密
HTTP请求
1. HTTP协议格式解析
分为四个部分,我们以画图的形式呈现
HTTP请求
举个例子,如下图是一个Request请求
HTTP响应
举个例子,如下图是一个Response响应
2. /r/n是什么意思?
大家都知道,通过网络传输,传输的都是bit位(由Byte字节转换),服务端接受到http request部分后,读出来的数据也是Byte流。服务端是怎样截取Byte流的,比如什么时候header结束,http body开始。
通过两个连续的字节13和10(也就是\r\n)。表示http header结束,http body开始
3.HTTP常见的Header
4.HTTP方法
- GET:
它本质就是发送一个请求来取得服务器上的某一资源。资源通过一组HTTP头和呈现数据(如HTML文本,或者图片或者视频等)返回给客户端
- POST:
向服务器提交数据。这个方法用途广泛,几乎目前所有的提交操作都是靠这个完成。
- PUT:
PUT和POST极为相似,都是向服务器发送数据,但它们之间有一个重要区别,PUT通常指定了资源的存放位置,而POST则没有,POST的数据存放位置由服务器自己决定
- HEAD:
HEAD和GET本质是一样的,区别在于HEAD不含有呈现数据,而仅仅是HTTP头信息。有的人可能觉得这个方法没什么用,其实不是这样的。想象一个业务情景:欲判断某个资源是否存在,我们通常使用GET,但这里用HEAD则意义更加明确。
- DELETE:
请求服务器删除Request-URL所标识的资源
- OPTIONS:
允许客户端查看服务器的性能。
- TERAC:
回显服务器收到的请求,主要用于测试或诊断
!!!GET与POST的区别?
- GET在url传参,POST在正文传参
- url的长度是有限制的,正文传参是没有限制的
- GET在传参时,把数据暴露在外边,而POST不会把信息暴露在外边,POST比GET更私密。(举一个POST的例子:淘宝分享链接并没有把用户名和密码暴露在外边。)
5.HTTP的状态码
最常见的状态码,比如:
200(ok)
404(Not Found)客户端错误,向服务器提出无理要求
403(Forbidden)
302(Rediret,重定向)
504(Bad Gateway)