JAVA基础第三章

一、OSI七层和TCP/IP四层的关系

OSI 参考模型(Open System Interconnect Reference Model),具有 7 层结构

应用层:各种应用程序协议,比如HTTP、HTTPS、FTP、SOCKS安全套接字协议、DNS域名系统、GDP网关发现协议等等。

表示层:加密解密、转换翻译、压缩解压缩,比如LPP轻量级表示协议。

会话层:不同机器上的用户建立和管理会话,比如SSL安全套接字层协议、TLS传输层安全协议、RPC远程过程调用协议等等。

传输层:接受上一层的数据,在必要的时候对数据进行分割,并将这些数据交给网络层,保证这些数据段有效到达对端,比如TCP传输控制协议、UDP数据报协议。

网络层:控制子网的运行:逻辑编址、分组传输、路由选择,比如IP、IPV6、SLIP等等。

数据链路层:物理寻址,同时将原始比特流转变为逻辑传输路线,比如XTP压缩传输协议、PPTP点对点隧道协议等等。

物理层:机械、电子、定时接口通信信道上的原始比特流传输,比如IEEE802.2等等。

 

消息通信的过程中具体的执行流程为:

 

二、TCP和UDP的区别

1、TCP面向连接(如打电话要先拨号建立连接):UDP是无连接的,即发送数据之前不需要建立连接。

2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付。tcp通过校验和,重传控制,序号标识,滑动窗口、确认应答实现可靠传输。如丢包时的重发控制,还可以对次序乱掉的分包进行顺序控制。

3、UDP具有较好的实时性,工作效率比TCP高,适用于对高速传输和实时性有较高的通信或广播通信。

4、每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信

5、TCP对系统资源要求较多,UDP对系统资源要求较少。

三、HTTP和HTTPS的区别

端口不同:HTTP和HTTPS的连接方式不同没用的端口也不一样,HTTP是80,HTTPS用的是443 消耗资源:和HTTP相比,HTTPS通信会因为加解密的处理消耗更多的CPU和内存资源。 开销:HTTPS通信需要证书,这类证书通常需要向认证机构申请或者付费购买。

四、HTTP、TCP、Socket的关系是什么

  • TCP/IP代表传输控制协议/网际协议,指的是一系列协议族。
  • HTTP本身就是一个协议,是从Web服务器传输超文本到本地浏览器的传送协议。
  • Socket是TCP/IP网络的API,其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面。对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。

综上所述:

  • 需要IP协议来连接网络
  • TCP是一种允许我们安全传输数据的机制,使用TCP协议来传输数据的HTTP是Web服务器和客户端使用的特殊协议。
  • HTTP基于TCP协议,所以可以使用Socket去建立一个TCP连接。

五、TCP原理

 

三次握手:

1.第一次握手:客户端将标志位syn重置为1,随机产生seq=a,并将数据包发送给服务端 2.第二次握手:服务端收到syn=1知道客户端请求连接,服务端将syn和ACK都重置为1,ack=a+1,随机产一个值seq=b,并将数据包发送给客户端,服务端进入syn_RCVD状态。 3.第三次握手:客户端收到确认后,检查ack是否为a+1,ACK是否为1,若正确将ACK重置为1,将ack改为b+1,然后将数据包发送给服务端服务端检查ack与ACK,若都正确,就建立连接,进入ESTABLISHEN.

四次挥手:

1.开始双方都处于连接状态 2.客户端进程发出FIN报文,并停止发送数据,在报文中FIN结束标志为1,seq为a连接状态下发送给服务器的最后一个字节的序号+1,报文发送结束后,客户端进入FIN-WIT1状态。 3.服务端收到报文,向客户端发送确认报文,ACK=1,seq为b服务端给客户端发送的最后字节的序号+1,ack=a+1,发送后客户端进入close-wait状态,不再发送数据,但服务端发送数据客户端一九可以收到(城为半关闭状态)。 4.客户端收到服务器的确认报文后,客户端进入fin-wait2状态进行等待服务器发送第三次的挥手报文。 5.服务端向fin报文FIN=1ACK=1,seq=c(服务器向客户端发送最后一个字节序号+1),ack=b+1,发送结束后服务器进入last-ack状态等待最后的确认。 6.客户端收到是释放报文后,向服务器发送确认报文进入time-wait状态,后进入close 7.服务端收到确认报文进入close状态。

六、Cookie和Session的区别

  cookie是由Web服务器保存在用户浏览器上的文件(key-value格式),可以包含用户相关的信息。客户端向服务器发起请求,就提取浏览器中的用户信息由http发送给服务器

  session是浏览器和服务器会话过程中,服务器会分配的一块储存空间给session。服务器默认为客户浏览器的cookie中设置sessionid,这个sessionid就和cookie对应,浏览器在向服务器请求过程中传输的cookie包含sessionid,服务器根据传输cookie中的sessionid获取出会话中存储的信息,然后确定会话的身份信息。

1、Cookie数据存放在客户端上,安全性较差,Session数据放在服务器上,安全性相对更高 2、单个cookie保存的数据不能超过4K,session无此限制 3、session一定时间内保存在服务器上,当访问增多,占用服务器性能,考虑到服务器性能方面,应当使用cookie。

七、什么是Servlet

  Servlet是JavaEE规范的一种,主要是为了扩展Java作为Web服务的功能,统一接口。由其他内部厂 商如tomcat,jetty内部实现web的功能。如一个http请求到来:容器将请求封装为servlet中的 HttpServletRequest对象,调用init(),service()等方法输出response,由容器包装为httpresponse 返回给客户端的过程。

八、什么是Servlet规范?

  • 从Jar包上来说,Servlet规范就是两个Jar文件。servlet-api.jar和jsp-api.jar,Jsp也是一种Servlet。
  • 从package上来说,就是javax.servlet和javax.servlet.http两个包。
  • 从接口来说,就是规范了Servlet接口、Filter接口、Listener接口、ServletRequest接口、ServletResponse接口等。类图如下:

 

 九、为什么我们将tomcat称为Web容器或者Servlet容器

我们用一张图来表示他们之间的关系:

简单的理解:启动一个ServerSocket,监听8080端口。Servlet容器用来装我们开发的Servlet。 

十、Servlet的生命周期

十一、九大内置对象

  1. page页面对象
  2. config配置对象
  3. request请求对象
  4. response响应对象
  5. session会话对象
  6. application全局对象
  7. out输出对象
  8. pageContext页面上下文对象
  9. exception异常对象

十二、GenericServlet和HttpServlet有什么区别

GenericServlet 为抽象类,定义了一个通用的、独立于底层协议的servlet,实现了Servlet 和 ServletConfig接口,ServletConfig接口定义了在Servlet初始化的过程中由Servlet容器传递给Servlet得配置信息对象。OK,这个类可能我们不是那么熟悉,但是他的子类相信大家都知道,也就是HttpServlet,HttpServlet 继承自抽象类GenericServlet 具有其所有的特性并拓展了一些其他的方法,如doGet、doPost等

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

油头老宝贝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值