发表于: 2017-10-10 23:44:44

1 867



今天完成的事情:

1.任务2深度思考一部分

   具体内容见收获


明天计划的事情

1. 任务2深度思考

2. 完善代码,结束任务5


遇到的问题:

对于我来说任务二的深度思考,知识量太深,打算每过几天,做几个深度思考。



收获:

5.什么是tcp/ip协议?TCP的三次握手指的是什么,为什么一定要三次握手,而不是四次或者是两次?
tcp/ip协议:

 





四次分手

当客户端和服务器通过三次握手建立了TCP连接以后,当数据传送完毕,肯定是要断开TCP连接的啊。那对于TCP的断开连接,这里就有了神秘的“四次分手”。
  1. 第一次分手:主机1(可以使客户端,也可以是服务器端),设置Sequence NumberAcknowledgment Number,向主机2发送一个FIN报文段;此时,主机1进入FIN_WAIT_1状态;这表示主机1没有数据要发送给主机2了;
  2. 第二次分手:主机2收到了主机1发送的FIN报文段,向主机1回一个ACK报文段,Acknowledgment NumberSequence Number加1;主机1进入FIN_WAIT_2状态;主机2告诉主机1,我“同意”你的关闭请求;
  3. 第三次分手:主机2向主机1发送FIN报文段,请求关闭连接,同时主机2进入LAST_ACK状态;
  4. 第四次分手:主机1收到主机2发送的FIN报文段,向主机2发送ACK报文段,然后主机1进入TIME_WAIT状态;主机2收到主机1的ACK报文段以后,就关闭连接;此时,主机1等待2MSL后依然没有收到回复,则证明Server端已正常关闭,那好,主机1也可以关闭连接了。
至此,TCP的四次分手就这么愉快的完成了。当你看到这里,你的脑子里会有很多的疑问,很多的不懂,感觉很凌乱;没事,我们继续总结。
1   主机1 传完了,没了  再见      
2   主机2 朕知道了,同意 再见
3   主机2  关闭连接了啊
4   主机1 好的    关闭吧    主机2  下线,不说话了  主机1:没收到说话,看来他下线了,下线。

为什么要三次握手

为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误。
已失效的连接请求报文段”的产生在这样一种情况下:client发出的第一个连接请求报文段并没有丢失,而是在某个网络结点长时间的滞留了,以致延误到连接释放以后的某个时间才到达server。本来这是一个早已失效的报文段。但server收到此失效的连接请求报文段后,就误认为是client再次发出的一个新的连接请求。于是就向client发出确认报文段,同意建立连接。假设不采用“三次握手”,那么只要server发出确认,新的连接就建立了。由于现在client并没有发出建立连接的请求,因此不会理睬server的确认,也不会向server发送数据。但server却以为新的运输连接已经建立,并一直等待client发来数据。这样,server的很多资源就白白浪费掉了。采用“三次握手”的办法可以防止上述现象发生。例如刚才那种情况,client不会向server的确认发出确认。server由于收不到确认,就知道client并没有要求建立连接。

为什么要四次分手

那四次分手又是为何呢?TCP协议是一种面向连接的、可靠的、基于字节流的运输层通信协议。TCP是全双工模式,这就意味着,当主机1发出FIN报文段时,只是表示主机1已经没有数据要发送了,主机1告诉主机2,它的数据已经全部发送完毕了;但是,这个时候主机1还是可以接受来自主机2的数据;当主机2返回ACK报文段时,表示它已经知道主机1没有数据发送了,但是主机2还是可以发送数据到主机1的;当主机2也发送了FIN报文段时,这个时候就表示主机2也没有数据要发送了,就会告诉主机1,我也没有数据要发送了,之后彼此就会愉快的中断这次TCP连接。如果要正确的理解四次分手的原理,就需要了解四次分手过程中的状态变化。


6.什么是WEBService,实现WEBService有哪些框架,为什么WEBService经常被认为太重了,只有银行和大型国企才会使用的更多有一些?


WebService是一种跨编程语言和跨操作系统平台的远程调用技术。

(感觉和JAVA很像)

    从多个角度来理解WebService,从表面上看,WebService就是一个应用程序向外界暴露出一个能通过Web进行调用的API,也就是说能用编程的方法通过Web来调用这个应用程序。我们把调用这个WebService的应用程序叫做客户端,而把提供这个WebService的应用程序叫做服务端。从深层次看,WebService是建立可互操作的分布式应用程序的新平台,是一个平台,是一套标准。它定义了应用程序如何在Web上实现互操作性,你可以用任何你喜欢的语言,在任何你喜欢的平台上写Web service ,只要我们可以通过Web service标准对这些服务进行查询和访问。 

        企业级的应用程序开发者都知道,企业里经常都要把用不同语言写成的、在不同平台上运行的各种程序集成起来,而这种集成将花费很大的开发力量。应用程序经常需要从运行在IBM主机上的程序中获取数据;或者把数据发送到主机或UNIX应用程序中去。即使在同一个平台上,不同软件厂商生产的各种软件也常常需要集成起来。通过WebService,应用程序可以用标准的方法把功能和数据暴露出来,供其它应用程序使用。


     WEBService经常被认为太重了,但以我学习来看没有看起来很重的样子,并不能理解到底什么意思。



7.Spring MVC和Struts的区别是什么,为什么更倾向于使用Spring MVC?


1、springmvc基于方法开发的,struts2基于类开发的。
2、单例和多例的区别:springmvc在映射的时候,通过形参来接收参数的,是将url和controller方法映射,映射成功后,springmvc生成一个handlers对象,对象中只包括一个method,方法执行结束的时候,形参的数据就销毁,
所以springmvc可以进行单例开发,并且建议使用。
但是structs接收的参数是通过类的成员变量来接收的,这些变量在多线程访问中,是共享的,而不是像springmvc那样,方法结束之后,形参自动销毁,且无法使用单例,只能使用多例。
这样的话,在structs中,随着方法的添加,很多的成员变量,维护到最后的时候根本就不知道这个成员变量被哪个方式所使用,所以springmvc开发类似于service开发。
3、经过实际测试,structs速度慢,在与使用structs标签,如果使用structs建议使用jstl。


进度: 

         任务开始时间:8.14

         预计完成时间:10.10

         是否有延期风险:有,明天就结束。

禅道:http://task.ptteng.com/zentao/project-task-264.html


PS:不拖了




返回列表 返回列表
评论

    分享到