1.什么是服务器?
服务器分为服务器软件和服务器硬件。在硬件服务器(计算机)上按照了服务器软件才可以对外提供服务
服务器硬件:指互联网上具有独立IP地址的计算机,比如我们自己用的计算机也可以作为服务器使用
服务器软件:就是一个计算机程序
2.什么是Web服务器
1.web服务器是指驻留在互联网的某种类型的计算机程序。当浏览器访问服务器,请求服务器上的文件时,服务器将会处理该请求,并将请求的文件响应给浏览器,并附带一些信息告诉浏览器如何查看该文件
2.web服务器是可以向”发出请求的浏览器提供文档”的程序,比如在访问百度时,其实就是在访问百度的浏览器
3.HTTP协议
又名超文本传输协议,建立在TCP/IP协议之上的应用层规范
HTTP协议是用于规范浏览器和服务器之间的通信方式/规则
主要规定了浏览器个服务器发送的请求信息的格式
以及规定了服务器给浏览器发送响应的格式
基本工作原则:
1.一次请求,只对应一次响应
2.请求只能由浏览器发起,服务器只能被动的等待请求,根据请求作出回应
HTTP协议具体
浏览器请求:
请求行(包括请求方法,url和协议版本)
请求头(包括客户端环境以及请求正文的信息,正文长度,浏览器所使用的编码格式)
请求实体内容(针对于POST请求,可为空)
服务器响应:
状态行(协议版本、状态码、简要描述)
响应头部(指明类型)
响应数据(服务器回应客户端的内容)
HTTP请求和响应步骤
1.建立连接
先解析DNS,把localhost变成ip(127.0.0.1),根据127.0.0.1和端口号8080(没有端口号则使用默认的端口)建立socket。也可以理解为通过”三次握手”建立TCP连接,确定通讯正常
2.发送请求命令
socket建立好以后,客户端开始向web服务器发送请求命令(GET/POST)
3.发送请求头(包括消息正文)
客户先发送与自身相关的信息,再发生空行表示头发送完毕,如果是post则继续发送请求正文
4.回传状态行
服务器应答第一步,发送协议版本和状态码
5.回传应答头
服务器应答第二步,先发送自身相关信息、Content-Type(必须)及被请求的文档,在发送空行宝石应答头发送完毕
6.回传应答正文
服务器应答第三步,根据应答头的类型指定格式发送应答正文
7.关闭连接
一次会话完成,如果设置了Connection: Keep-alive则TCP连接不关闭,否则关闭连接
4.TCP/IP协议
TCP是互联网基础的网络协议,也同时是核心协议。分为四个层级
1.链路层
也称为数据链路层或网络接口层,通常包括操作系统中的设备驱动程序和计算机对应的网络接口卡
2.网络层
也称作互联网层,处理分组在网络中的活动,内部具有多种协议
3.传输层
主要为两台主机上的应用程序提供端到端的通讯
4.应用层
应用层决定了向用户提供应用服务时通信的活动
5.TCP三次握手和四次挥手
TCP三次握手是为了防止已失效的连接请求报文段突然有传送到了服务端,因而产生错误。(二次握手可能会产生死锁)
TCP协议四次挥手的意义在于在握手的时候可以同时发送SYN+ACK报文,而关闭的时候收到FIN报文的时候可能不会立即关闭socket所以只能先回复一个ACK报文,等到Server端所有的报文都发送完了,我再发送FIN报文
(让我知道你已经知道了)
(内部有计时器来防止在连接过程中客户端故障服务器一直等下去的问题)
三次握手
服务器监听请求,客户端发起请求(第一次连接).收到请求的服务器反馈给客户端(第二次连接),收到反馈的客户端再次反馈给服务器,从而确定连接
四次挥手
客户端发起关闭连接的请求(一次挥手),服务器收到请求并反馈浏览器等待数据传输确认无误后的再次请求(二次挥手),服务器反馈给客户端确认关闭连接(三次挥手),客户端反馈确认关闭(四次挥手),接着等待一个来回连接的时间来确认是否有客户端的响应,最后关闭
6.Servlet
Servlet是由SUN公司提供的一门动态Web资源开发技术
Servlet本质上是一段Java程序和其他的Java程序不同的时候,servlet需要存放在服务器上才可以执行。
其主要作用是用来接收过来的请求进行处理
6.1.Servlet调用过程
1.用户点击连接,连接URL指向一个servlet
2.容器找出对应请求指向某个servlet,创建两个对象HttpServletRequest和HttpServletResponse
3.容器根据请求中的URL找到正确的servlet,为这个请求创建或分配一个线程,并调用servlet的service(),把请求和响应对象作为参数传递给它
4.service()根据客户端的请求方式,调用哪个servlet方法
5.servlet使用响应对象将响应写给客户,响应通过容器返回
6.service()方法结束。线程要么撤销,要么放回容器管理池,若超出作用域则又垃圾回收
总结:用户url点击指向servlet-tomcat容器找到某个servlet并创建两个对象-分配线程调用service方法,把两个对象作为参数传递-根据请求找到对应方法-返回给用户-线程关闭、放回池、待命
6.2.request域对象
request三大特征
1.生命周期,在servlet程序调用service()方法前处理请求,销毁
2.作用范围,在一次请求范围内,都可以获取到同一个request对象
3.主要功能,配合转发请求使用,将Servlet带到JSP
request对象的getParameter和getAttribute方法有什么区别?
getParameter获取客户端里的请求参数,参数不能设置
getAttribute获取客户端域属性时用的,前提是需要先设置
6.3.response域对象
主要作用是向客户端发送数据,实现重定向
重定向(二次请求,两次响应)
