- ✎ TCP/IP协议. ✎ HTTP协议 ✎ JSP和Servlet
*- ?在浏览器中输入URL地址 ->> 显示主页都经历了什么??
- ☞ 首先客户端输入URL➙DNS服务器解析域名得到IP地址➙建立TCP连接➙客户端HTTP请求➙服务器端HTTP响应(客户端页面渲染)➙断开
- ☞ 使用的协议:TCP协议-与服务器建立连接、IP协议-网络层发送数据、OPSF协议-路由选择、ARP协议-IP地址转换为MAC地址、HTTP协议-访问网页
- ?常规的网络分层有那些??
- ☞ OSI 7层模型:物理层➢数据链路层➢网络层➢传输层➢会话层➢表示层➢应用层
- ☞ TCP/IP 5层模型:物理层➢数据链路层➢网络层➢传输层➢应用层
- ☞ TCP/IP 4层模型:网络接口层➢网络层➢传输层➢应用层
- ?TCP和UDP区别??
- ◆ UDP 在传送数据之前不需要先建立连接,主机在收到UDP报文后,不需要给出任何确认。(报文段)
- ◆ TCP 提供面向连接的服务.在传送数据之前必须先建立连接,数据传送结束后要释放连接。(字节流)(可靠传输)
- ?TCP是如何保证可靠传输??
-
1-分割数据段 2-包编号 3-检验和 4-丢弃重复数据
-
5-流量控制 6-阻塞控制 7-ARQ控制 8-超时重传
- ?TCP建立连接,三次握手🤝?
- ▸ 客户端发送 SYN=1,seq=x,给服务器端(默认监听前来请求的客户端),[客户端询问服务器端,能否建立连接]
- ▸ 服务器端收到客户端发送来的请求后,返回客户端 SYN=1,ACK=1,seq=y,ack=x+1,[回复客户端,可以的,我准备的协议参数发你,你也将你的协议参数发我]
- ▸ 客户端收到服务器端给的响应状态信息,然后客户端再次向服务器端发送 ACK=1,swq=x+1,ack=y+1。[回复服务器端,好,协议参数约定好发你]
- 思考🤔?
-
▵ 为什么要三次握手?(目的:建立可靠通信)
-
▵ 为什么传SYN?(目的:建立可靠通信)
-
▵ 传来SYN,为啥传ACK?(目的:建立可靠通信)
- ?TCP断开连接,四次挥手?
- ▸ 客户端发送 FIN=1,seq=u 给服务器端,
- ▸ 服务器端收到后,回复 ACK=1,seq=v,ack=u+1 并通知自己机器上的应用进程,准备断开连接,数据传输操作赶快处理
- ▸ 服务器端再次发送 FIN=1,ACK=1,seq=w,ack=u+1 告知客户端数据传输断开状态及那条数据开始断开的信息记录
- ▸ 客户端收到后,再发送ACK=1,seq=u+1,ack=w+1,告知服务器端好的已经确定。然后断开连接。
- ?HTTP 如何保存的长连接的?
- ▵ what? 长连接不是指的socket连接吗?怎么http也有长连接了(Socket是持久连接)。
- ☞ 这里指的长连接:指的是通过三次握手建立起一次连接,
- –可以在此连接内发送多次Request请求,http1.0协议是短连接 http1.1默认是长连接
- – 响应头加入Connection:keep-alive (连接:保存-活着)
- ?Request的结构组成??
- ‣ 1、请求行:(⁃请求方法[8种] ⁃请求资源的URL ⁃协议、版本)
- ‣ 2、请求报文:每个头域由一个域名、冒号(:)和域值三部分组成(⁃告诉web服务器浏览器接收的语言版本 ⁃请求web服务器的IP地址和端口号 ⁃Cookies等消息)
- ‣ 3、空白行:(⁃分割报头和请求体的专用行)
- ‣ 4、请求体: (Get请求方法请求体重不传送任何数据,Post请求时可以传数据)
- 8种请求方法:1-Git 2-Post 3-Put 4-Delete 5-Head 6-Trace 7-Connect 8-Options
- ?Response的结构组成??
- ‣ 1、状态行(⁃HTTP协议版本 ⁃响应状态码 ⁃响应结果的描述信息)
- ‣ 2、响应报头(⁃Web服务器版本信息 ⁃内容类型及字符编码方式 ⁃响应时间 ⁃Cookies等信息)
- ‣ 3、空白行 (⁃分割报头和请求体的专用行)
- ‣ 4、响应正文 (⁃从Web服务器端响应来的HTML代码)
- ?怎么理解HTTP是一种无状态协议??
- ▴ 无状态,指协议对事物处理没有记忆能力。
- ▴ 缺少状态意味着如果后续处理需要前面的信息,则它必须重传.
- ▴ 这样可能导致每次连接传送的数据量增大。
- ?Session和Cookie总结:
- ➢ Session是存储在服务器端,Cookie是存储在客户端的。
- ➢ Session的安全性要比cookie高。
- ➢ 服务器端创建的Cookie,浏览器默认将其保存在缓存中,当浏览器关闭之后Cookie消失。
- ➢ 服务器端创建Cookie时候通过setMaxAge方法设置Coolie有效时间。
- ➢ Cookie禁用的情况下,使用所有的访问路径URL后面,带有一个jsessionid的参数。
- 浏览器1、首次访问 ➯ 2.生成对象(生成Cookie/Session对象) ➯ 3.web服务器保存session列表 ➯ 4.web服务器响应客户端Cookie内容 ➯ 5.客户端保存Cookie,再次访问的凭证达到长连接状态。
- ?Servlet和Jsp有什么关系吗?
- ▵ Servlet是一个特殊的Java程序,能够依赖Web服务器的支持向浏览器提供显示内容。
- ▵ Jsp本质上是Servlet的一种简易形式,Jsp会被服务器处理成一个类似于Servlet的Java程序,可以简化页面内容的生成。
- ▵ Jsp侧重于视图,Servlet更侧重于控制逻辑。
- ✯Servlet本质是服务器端的小Java程序。
- ✯这个小Java程序不能随意编写,必须实现Sun公司制定的 javax.servlet,Servlet接口。
- ? Servlet的生命周期??
- ▸ Servlet 的生命周期始于将它装入的内存时,并在终止或重新装入Servlet时结束。
- ▸ 包括加载和实例化、初始化、处理请求以及服务结束。
- ▸ 这个生存周期由 javax.servlet.Servlet接口的 init,service 和 destroy方法表达。
- ?Servlet是线程安全性的吗?? (No,不是)
- ▸ Servlet 是单例的,对于所有请求都使用一个实例。
- ▸ 如果有全局变量被多线程使用的时候,就会出现线程安全问题。
- ▸ 解决这个问题的三种方案:{singleThreadModel、synchronized、不使用全局变量}