应用层
文章目录
一:应用层概述
二:两种组织方式
1:C/S方式
2:p2p方式
三:动态主机配置协议DHCP
四:域名结构
五:域名解析协议DNS
六:文件传输协议FTP
七:电子邮件系统
八:万维网www
1:URL和万维网文档
2:HTTP协议
3:cookie和Session
3.1:cookie
Cookie 是一种小型数据文件,由服务器生成并在用户浏览器中存储。每次用户访问该服务器时,浏览器会自动将相关Cookie发送回服务器。Cookie常用于存储用户的偏好设置、登录状态、购物车信息等。
Cookie工作原理
服务器发送Cookie:
当用户首次访问服务器时,服务器会生成一个或多个Cookie,并通过HTTP响应头将其发送给浏览器。
响应头中包含 Set-Cookie 字段,格式如下:
Set-Cookie: name=value; Expires=Wed, 21 Oct 2025 07:28:00 GMT; Path=/; Secure; HttpOnly
浏览器存储Cookie:
浏览器接收到Cookie后,会根据Cookie的属性(如路径、域名、过期时间等)将其存储在本地。
用户关闭浏览器后,某些Cookie会继续存在,直到达到过期时间或被手动删除。
浏览器发送Cookie:
当用户再次访问同一域名下的页面时,浏览器会自动将相关的Cookie通过HTTP请求头发送给服务器。
请求头中包含 Cookie 字段,格式如下:
Cookie: name1=value1; name2=value2
服务器处理Cookie:
服务器接收到Cookie后,可以读取其中的信息,以识别用户或恢复会话状态。
3.2:session
Session 是一种在服务器端存储用户会话信息的机制。每次用户访问服务器时,服务器会生成一个唯一的Session ID,并将其发送给浏览器。浏览器将Session ID存储在Cookie中(或其他方式),后续请求中会携带该ID,服务器根据ID检索相应的会话数据。
工作原理
用户访问服务器:
用户首次访问服务器时,服务器生成一个唯一的Session ID,并创建与该ID关联的会话数据。
服务器通过HTTP响应头将Session ID发送给浏览器,通常存储在Cookie中。
Set-Cookie: sessionId=abc123; Path=/; HttpOnly
浏览器存储Session ID:
浏览器接收到Session ID后,将其存储在本地Cookie中。
用户关闭浏览器后,Session ID仍然存在,直到达到过期时间或被手动删除。
浏览器发送Session ID:
当用户再次访问同一域名下的页面时,浏览器会自动将Session ID通过HTTP请求头发送给服务器。
Cookie: sessionId=abc123
服务器处理Session ID:
服务器接收到Session ID后,根据ID检索相应的会话数据。
服务器可以读取和更新会话数据,以管理用户状态。
3.3:区别
选择建议
使用Cookie:
- 当需要在客户端存储少量、非敏感数据时。
- 当需要实现无状态会话管理时。
- 当需要在不同域名之间共享数据时。
使用Session:
- 当需要在服务器端存储大量、敏感数据时。
- 当需要实现安全的会话管理时。
- 当需要在分布式环境中管理会话数据时。
结合使用
在实际应用中,Cookie和Session常常结合使用,以充分利用各自的优点。例如:
Session ID in Cookie:
将Session ID存储在Cookie中,服务器根据Session ID检索会话数据。
这种方式结合了Cookie的便捷性和Session的安全性。
Token in Cookie:
使用JWT(JSON Web Token)等令牌机制,将令牌存储在Cookie中。
令牌包含用户身份信息和签名,服务器验证令牌的有效性。