客户端与服务器:
- 客户端主动发送请求(request),服务器被动接受请求并作出响应(response)
- 通信方式:一问一答、多问多答、一问多答
协议
- 两个不同的程序,互相理解请求或响应内容的含义,相当于制定一致的规则
TCP/IP 五层结构(TCP/IP协议栈):
应用层 | 代码中约定两台主机之间传输数据的格式 |
---|
传输层 | 不考虑传输的中间过程,只考虑起点和终点如何进行传输 | 网络层 | 比较远的两台主机,怎么一步一步把数据传过去 | 传输层数据链路层 | 相邻主机之间的通信 | 物理层 | 物理设施,网线、光纤、电磁波等 |
? http协议是应用层协议是典型的“一问一答”工作模式
URL:https://gitee.com/kelehaowa 平时说的网址
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-N4j3EVdT-1631186638718)(/Users/cola/Library/Application Support/typora-user-images/image-20210909105632998.png)]
- 域名通过DNS机制自动转成IP地址(好处是方便用户好记)
- http服务器通常部署在80端口
- https服务器通常部署在443端口
- URL小结:
- IP地址:服务器在哪
- 端口号:服务器上的哪个程序
- 带层次的路径:这个服务器上的哪个资源
- 查询字符串(query string):资源里面的一些细节内容
http协议具体的格式
HTTP请求:
- 首行(请求行):方法,URL,版本号
- 请求报头(header):键值对 冒号空格分割
- 空行:header的结束标记
- 请求正文(body)-- 正文可以省略
HTTP响应:
- 首行(状态行):版本号,状态码,状态码的描述
- 响应报头(header)
- 空行
- 响应正文(body)-- 正文可以省略
请求最常用的就是get 和 post
- get方法一般用于“从服务器获取数据”
- post方法一般用于“往服务器上提交数据”
请求头:
- 空行:相当于请求头的结束标记
- 请求正文(body):
- 对http的get请求来说,一般没有body,可以有query string,也可以没有
- 对于http的post请求来说,一般是有body,一般是没query string,需要提交给服务器的信息都是放到body(正文)部分中的
常用的状态码:
- 200 OK 访问成功
- 404 Not Found 要访问的资源没找到
- 403 Forbidden 要访问的资源,没有权限
- 500 Internal Server Error 服务器挂了
- 302 Move temporarily 重定向
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Zh0qGZRQ-1631186638719)(/Users/cola/Library/Application Support/typora-user-images/image-20210909130025848.png)]
http协议的核心内容:浏览器按照这样的格式构造一个字符串,发送给服务器,相当于“发送一个http请求”;
服务器也是构造一个符合这种格式的字符串,返回给浏览器,相当于“返回了一个http的响应”
get 和 post的区别:本质上两者没有区别,实现的场景差不多一样;
-
get一般把用户自定义的数据放到query string,pget一般没有body post一般把用户自定义的数据放到body,post一般有body -
get一般设计成“幂等的” post设计的时候不必考虑“幂等” -
get请求可以被缓存 post请求一般不可以被缓存 -
get请求可以被浏览器收藏夹保存起来 post请求,不能被收藏夹保存(保存的时候,body部分就没了)
cookie:
session 和 cookie的区别:
- cookie是客户端的概念
- session是服务器的概念
Https
- http是明文传输,特别危险
- https是基于http引入了一套加密方案
?
|