网路知识复习2
tip1HTTP相关
超文本传输协议
支持客户/服务器模式 简单快速 灵活 无连接 无状态
请求结构如下:
状态行 包括 请求方法+URL+协议版本(如HTTP1.1)
+回车符 换行符(指空行) 请求行
+若干个请求头部 包括 头部字段名:+值(头部字段名比如host主机和端口号,还有Connection啥的)+回车符 换行符(指空行\r\n)
+回车符 换行符(指空行,即使后面请求数据为空这个空行也必须)
+请求正文(post才有)
响应结构如下
响应行 包括 协议版本+状态码+状态码描述
+回车符 换行符(指空行)
+若干个响应头部
+回车符 换行符
+相应正文
请求/响应步骤
客户端连接到web服务器
发送http请求
服务器接收请求并返回HTTP响应
释放TCP连接
客户端浏览器解析HTML内容
在浏览器地址栏键入URL,按下回车后发生
DNS解析 从浏览器缓存/系统缓存/路由器缓存/IP服务器缓存/域名服务器缓存/顶级域名服务器缓存
TCP连接(三次握手
发送HTTP请求
服务器处理请求并返回HTTP报文
浏览器解析渲染页面
连接结束(四次挥手
HTTP状态码:
1xx 指示信息,表示请求接受,继续处理
2xx 成功
3xx 重定向-要完成请求必须进行进一步操作
4xx 客户端错误–请求有语法错误或者无法实现
400客户端语法错误 401请求没有授权 403 服务器收到请求但是拒绝提供服务 404请求资源不存在
5xx 服务端错误,没实现合法请求 500 服务器发生不可预期错误 5.3服务器不能处理客户端请求,一段时间后可能恢复
GET/POST区别
GET 请求信息放在URL POST请求放在报文
GET符合幂等(多次请求都一样)和安全性(不修改数据库)
GET可以被缓存储
Cookie和Session区别
Cookie
服务器发送给客户端的特殊信息,以文本形式存放在客户端
客户端再次请求,会把Cookie回发
服务器收到后,会解析Cookie生成与客户端相对应的内容
过程
客户端发送HTTP Request到服务端
服务端发送HTTP Response+Set-Cookie到客户端
客户端发送HTTP Request+Cookie到服务端
服务端发HTTP Response到客户端
Session
服务器端机制,在服务器保存信息
解析客户端请求,如果需要session 并操作session id,如果不存在就新建一个session id,存在就解析这个session id
有两种方法来实现
第一种是用Cookie,在每个session设置一个JESSIONID,通过cookie发送给客户端,之后Cookie头部放JESSIONID发回去
第一种是用URL,返回给客户端的URL都包括JESSIONID
tomcat使用的是Cookie和URL两个,如果Cookie能用,就用Cookie,不能用就URL
相对于Session更安全,但Cookie可以减轻服务器压力
HTTP和HTTPS区别
多加了一层SSL
SSL是保护网络通信安全和数据完整性的安全协议,后改名为SSL
身份加密来保护通信安全
如何加密:
对称加密:加密和解密都是用同一个密钥
非对称加密:加密和解密密钥不同
哈希算法:让你遗产度信息转换为hash值,算法不可逆
数字签名:证明某个消息或者文件是某人发出/认同的
HTTPS数据传输流程
浏览器把支持的加密算法信息(比如对称加密或者非对称加密)发送给服务器
服务器选择一套浏览器支持的加密算法,以证书形式回发浏览器
浏览器要整证书合法性,并结合公钥加密信息发送给i服务器
服务器使用私钥解密信息,验证hash是否一致,加密相应消息回发浏览器
浏览器解密相应消息,并对消息验真,之后加密交互数据
HTTPS需要CA申请证书,密文传输,连接方式不同,默认443端口(HTTP使用80)
HTTPS=(HTTP+加密+认证+完整性保护)
但浏览器默认填充http://,请求需要跳转,可能被劫持(HTTPS也不一定绝对安全)
Socket
对TCP/IP协议的抽象,是操作系统对外开放的接口。(和TCP/IP没必然联系)