WebServer项目
- webserver是什么?
webserver是当时模拟Tomcat做的一个轻量级的web容器,底下基于TCP与HTTP协议,完成了浏览器与服务器之间的交互工作。
- OSI模型有几层通信?
- 传输层的定义?
IP首部中有一个协议字段,用来标识网络层(IP)的上一层所采用的是哪一种传输协议。根据这个字段的协议号,就可以识别IP传输的数据部分究竟是TCP的内容还是,还是UDP的内容。同样,传输层的TCP和UDP,为了识别自己所传输的数据部分究竟应该发送给哪个应用,也设定了这样一个编号,即端口号。根据端口号就可以识别在传输层上一层的应用层中所要进行处理的具体程序。
- 14.请描述TCP。
TCP是传送控制协议,是面向连接的可靠数据传输协议,TCP会确保数据会可靠的传输到对方.
使用步骤:先建立可靠连接---利用连接中的双向通讯流传输数据-----通讯结束以后,需要关闭连接.java利用Socket和ServerSocketAPI封装了TCP通讯过程,利用这两个类即可实现TCP通讯。HTTP通讯的底层是TCP协议。 - TCP和UDP的区别?
- TCP与HTTP的关系?
HTTP是应用层协议,TCP是底下的传输层协议,HTTP协议要求必须建立在可靠传输协议基础之上进行,通常HTTP底下使用的传输协议就是TCP协议。
HTTP协议是:由w3c(万维网)定义的一个协议,全称是超文本传输协议,它是现在常用的浏览器与服务器之间建立的应用层协议。HTTP协议的部分:请求与响应,HTTP采取的模式要求客户端与服务器采取一问一答的模式,永远不允许服务端主动与客户端建立链接,并且发起响应,必须是由客户端建立TCP链接发送HTTP请求服务端处理以后予以响应。
- HTTP里面请求的格式和响应的格式?
HTTP的请求是客户端发给服务端的东西,一个请求包含三部分分别是请求行、消息头和消息正文。请求行又由三部分构成:分别是请求的方式、请求的资源路径以及所使用的协议版本,还有消息头:客户端传递给服务端一些附加的内容,它可以指明客户端所使用浏览器的内核是什么、以及维持链接所使用的一些东西。格式是由名字: 值以CRLF结尾一行一行的构建,最后一个消息头发送完毕会单独发送一个CRLF,表示消息头部分发完。消息正文:是纯二进制数据,是客户端提交给服务器端用户实际上传的内容,可以是表单上传的数据,也可以是用户提交的一些附件的内容。
响应也是有三部分组成分别是:状态行、响应头、响应正文。状态行也是由三部分构成:分别是协议版本、状态代码和状态描述。响应头跟请求的消息头格式一样、正文也是一样的。
- 请求常用的请求方式?区别在哪?
- 状态代码有哪几类?常见的有哪几类?
由3位数字构成分为5类分别是100类、200类、300类、400类、500类。100类是保留部分;200类表示服务端正确处理了客户端请求;300类一般指的是重定向类;400类指的是客户端请求有问题,请求错误,客户端错误;500类服务端错误。
常见的状态代码:200一切正常客户端请求正确处理并且予以响应,404就是客户端请求路径无效服务端无法正确处理的。
- webserver项目负责哪一块?
1.这个项目做的是轻量级的webserver,架构没有tomcat那么复杂,从头到尾都是自己写的,从建立TCP链接,到利用线程处理请求,在请求当中去如何解析HTTP协议,如何处理完请求,如何发送HTTP响应,整个流程都做过,还模拟了servlet去处理业务。
2.完整阐述项目:流程图自己的话
3.完成项目中遇到的问题:遇到空请求,于是查阅了HTTP协议文档,发现HTTP协议允许客户端发送空请求过来,所以以后解析请求发现空请求,这次请求忽略处理。
- 常见的头?
Content-Type 、Content-Length 分在请求的消息头中还是在响应的消息头中,响应头中让服务器告知浏览器此次发送的响应是包含响应正文的,通过Content-Length告知浏览器此响应正文中总共多少个字节,再通过Content-Type告知浏览器这些字节表示的是什么类型的数据。
常见的Content-Type 的值:text/html 告诉浏览器发送的正文是html页面,img/png告诉这是一张图片。
text/css样式文件 脚本 有1000多种,可以到tomcat安装目录下的conf包中web.xml中有所定义,并且我曾经拿xml的解析把整个的1000多种全部解析出来用到自己的项目当中,并且可以根据用户实际请求的资源可以自动分析并且能够给用户响应正确的头,这个当时也有做到在response中已经实现了。
做过的项目一定要了解。。。