Java核心技术:Cookie与Session解析及TCP三次握手

需积分: 0 0 下载量 82 浏览量 更新于2024-06-30 收藏 4.43MB DOCX 举报
"Java常见考点包括Cookie与Session的对比、TCP协议的理解以及TCP三次握手的过程。" 在Java Web开发中,Cookie和Session是两种常见的用户会话管理机制,它们各有特点: 1. **Cookie** - Cookie是客户端存储的数据片段,通常用来存储用户的一些临时信息,如登录状态。服务器响应时通过Set-Cookie头将Cookie信息发送给浏览器,浏览器会在后续请求中通过Cookie头将这些信息回传给服务器。 - 默认情况下,Cookie在浏览器关闭后会丢失,但可以通过设置Max-Age属性使其在一定时间内保持有效。 - 由于存储在客户端,数量和大小有限制,一般浏览器限制最多50个Cookie,每个Cookie大小不超过4KB,这限制了Cookie用于存储大量或敏感信息的能力。 - 安全性较低,如果浏览器被拦截或Cookie被窃取,可能导致信息泄露。 2. **Session** - Session是服务器端存储的用户会话状态,通常用于存储用户登录后的相关信息。当客户端首次访问服务器时,服务器创建一个Session并分配一个唯一ID(JSESSIONID),然后通过Cookie将这个ID返回给客户端。 - 客户端再次请求时,会将JSESSIONID通过Cookie返回,服务器根据ID找到对应的Session数据。 - Session存储在服务器内存中,理论上容量没有限制,但过多的Session会占用服务器资源,因此需要合理设置Session的过期时间以减轻服务器压力。 - 安全性相对较高,因为数据存储在服务器端,不容易被客户端直接访问,适合存储敏感信息。 **TCP协议是网络通信的基础,它提供了面向连接的、可靠的字节流服务:** 1. **TCP报文结构** TCP报文包含多个字段,如源端口号和目的端口号用于标识通信双方,序列号和确认号用于确保数据正确传输,以及控制位如SYN(同步)和ACK(确认)用于建立和确认连接。 2. **三次握手** - 三次握手是为了确保双方都有能力并且愿意进行通信,防止旧的、重复的请求导致错误连接。具体过程如下: 1) 客户端发送一个SYN报文段(SYN=1,seq=x),进入SYN_SENT状态。 2) 服务器收到SYN,回复一个SYN+ACK报文段(SYN=1, ACK=1, seq=y, ack=x+1),进入SYN_RCVD状态。 3) 客户端接收到SYN+ACK,发送一个ACK报文段(ACK=1, seq=x+1, ack=y+1),进入ESTABLISHED状态。服务器收到此ACK后也进入ESTABLISHED状态。 三次握手的主要目的是防止已失效的连接请求报文突然又传到了服务器,从而产生错误的连接。 总结起来,Java开发者需要理解Cookie和Session在Web应用中的作用和差异,以及TCP协议在确保网络通信可靠性方面的重要性。对于面试或实际开发工作,掌握这些知识点都是非常基础且必要的。