大家好,我是IT修真院深圳分院第03期学员,一枚正直纯洁善良的程序员。今天给大家分享一下,修真院官网JAVA(职业)任务2的深度思考—— TCP三次握手
1.背景介绍
中国人和中国人说话,要遵循汉语的的语法结构,使用汉语的发音。当我们和外国人交流时,就要适用外国的语言了,遵循外国的语法机构和发音。其实这就是一种协议,只不过我们称之为语言。计算机再这方面体现的更为直观,两台机器之间该如何通信呢,就需要制定各种各样的协议了。例如:文件传输适用TCP协议。域名系统适用DNS协议。有了些协议的存在,各种数据流按照规则传输,计算机之间得意通信。
2.知识剖析
1、什么是TCP/IP
TCP/IP协议是一个协议集合。大家叫的时候方便说,所以统称为TCP/IP。TCP/IP协议族中有一个重要的概念是分层,TCP/IP协议按照层次分为以下四层:应用层、传输层、网络层、数据链路层。
为什么要分层?分层使得一个层只负责一个层次的问题,如果出问题了,和其他的层次无关,只要维护这个层次也就好了。其实编程语言里也能体现这个分层理论,大家都懂的。
3.常见问题
1、DNS是什么?
2、IP协议是什么?
3、TCP协议是什么?TCP三次握手的过程?
4、为什么需要三次握手,而不是两次或四次握手?
4.解决问题
1、DNS是什么?
DNS(Domain names System) 和HTTP协议一样是处于应用层的服务,提供域名到IP地址之间的解析服务。互联网之间是通过IP地址通信的,但是IP地址并不符合认得记忆习惯,人喜欢记忆有意义的字词。所以DNS服务就为了解决这个问题而诞生的。
比如任务中我们修改host解析域名的时候,会这样写:
120.94.2.45www.xiaoxixi.com
当我们访问www.xiaoxixi.com的时候,电脑不会去外网服务器上查询,直接访问120.94.2.45
2、IP协议是什么?
IP协议的作用在于把各种数据包准确无误的传递给对方,其中两个重要的条件是IP地址,和MAC地址。由于IP地址是稀有资源,不可能每个人都拥有一个IP地址,所以我们通常的IP地址是路由器给我们生成的IP地址,路由器里面会记录我们的MAC地址。而MAC地址是全球唯一的,除去人为因素外不可能重复。举一个现实生活中的例子,IP地址就如同是我们居住小区的地址,而MAC地址就是我们住的那栋楼那个房间那个人。
3、TCP协议是什么?TCP三次握手的过程?
如果说IP协议是找到对方的详细地址。那么TCP协议就是把安全的把东西带给对方。各有分工,互不冲突。按层次分,TCP属于传输层,提供可靠的字节流服务。 所谓的字节流服务(Byte Stream Service)是指,为了方便传输,将大块数据分割成以报文段为单位的数据包进行管理。而可靠的传输服务是指,能够把数据准确可靠地传给对方。一言以蔽之,TCP 协议为了更容易传送大数据才把数据分割,而且 TCP 协议能够确认数据最终是否送达到对方。
前面的概念可能有一点难理解,用人话来解释是这样的:
比如你是一个卖自行车的,你要去送货。安装好的自行车,太过庞大,又不稳定,容易损伤。不如直接把自行车拆开来,每个零件上都贴上收货人的姓名。最后送到后按照把属于同一个人的自行车再组装起来,这个拆解、运输、拼装的过程其实就是TCP字节流的过程。
TCP三次握手的过程
为了确保信息能够确保准确无误的到达,TCP采用了著名的三次握手策略:
SYN是同步请求;ACK表示对请求的响应。
seq是数据包(三次握手就是三条信息的发送过程,每一条信息都是一个数据包)本身的序列号;ack是期望对方继续发送的那个数据包的序列号。
4、为什么需要三次握手,而不是两次或四次握手?
三次握手是在安全可靠的基础上,握手次数最少的方案。两次握手并不能保证可靠性;四次握手又浪费了效率。
5.代码实战
6.扩展思考
略
7.参考文献
http://www.cnblogs.com/roverliang/p/5176456.html
8.更多讨论
略
今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~
技能树.IT修真院
“我们相信人人都可以成为一个工程师,现在开始,找个师兄,带你入门,掌控自己学习的节奏,学习的路上不再迷茫”。
这里是技能树.IT修真院,成千上万的师兄在这里找到了自己的学习路线,学习透明化,成长可见化,师兄1对1免费指导。快来与我一起学习吧。