目录
WebServer项目
- webserver是什么?
webserver是当时模拟Tomcat做的一个轻量级的web容器,底下基于TCP与HTTP协议,完成了浏览器与服务器之间的交互工作。
- OSI模型有几层通信?
- 传输层的定义?
IP首部中有一个协议字段,用来标识网络层(IP)的上一层所采用的是哪一种传输协议。根据这个字段的协议号,就可以识别IP传输的数据部分究竟是TCP的内容还是,还是UDP的内容。同样,传输层的TCP和UDP,为了识别自己所传输的数据部分究竟应该发送给哪个应用,也设定了这样一个编号,即端口号。根据端口号就可以识别在传输层上一层的应用层中所要进行处理的具体程序。
- 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中已经实现了。
XML
-
XML是什么?
XML即可扩展标记语言(Extensible Markup language),你可以根据自己的需要扩展XML。XML中可以轻松定义<books>, <orders>等自定义标签,而在HTML等其他标记语言中必须使用预定义的标签,比如<p>,而不能使用用户定义的标签。使用DTD和XML Schema标准化XML结构。XML主要用于从一个系统到另一系统的数据传输,比如企业级应用的客户端与服务端。
- 什么是格式良好的XML?
一个格式良好的XML意味着该XML文档语法上是正确的,比如它有一个根元素,所有的开放标签合适地闭合,属性值必须加引号等等。如果一个XML不是格式良好的,那么它可能不能被各种XML解析器正确地处理和解析。
- XML命名空间是什么?它为什么很重要?
XML命名空间与Java的package类似,用来避免不同来源名称相同的标签发生冲突。XML命名空间在XML文档顶部使用xmlns属性定义,语法为xmlns:prefix=’URI’。prefix与XML文档中实际标签一起使用。
- DOM和SAX解析器有什么区别?
DOM和SAX解析器的主要区别在于它们解析XML文档的方式。使用DOM解析时,XML文档以树形结构的形式加载到内存中,而SAX是事件驱动的解析器。
- XML CDATA是什么?
CDATA是指字符数据,它有特殊的指令被XML解析器解析。XML解析器解析XML文档中所有的文本,标签的值也会被解析,因为标签值也可能包含XML标签。CDATA部分不会被XML解析器解析。CDATA部分以<![CDATA[开始,以]]>结束。