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

java分享会

分享人:韦 杰

1.背景介绍

2.知识剖析

3.常见问题

4.解决方案

5.编码实战

6.扩展思考

7.参考文献

8.更多讨论

1.背景介绍

中国人和中国人说话,要遵循汉语的的语法结构,使用汉语的发音。当我们和外国人交流时,就要适用外国的语言了, 遵循外国的语法机构和发音。其实这就是一种协议,只不过我们称之为语言。计算机再这方面体现的更为直观,两台机器 之间该如何通信呢,就需要制定各种各样的协议了。例如:文件传输适用TCP协议。域名系统适用DNS协议。有了些协议的 存在,各种数据流按照规则传输,计算机之间得意通信。

2.知识剖析

1、什么是TCP/IP

TCP/IP协议是一个协议集合。大家叫的时候方便说,所以统称为TCP/IP。TCP/IP协议族中有一个重要的概念是分层, TCP/IP协议按照层次分为以下四层:应用层、传输层、网络层、数据链路层。

为什么要分层?分层使得一个层只负责一个层次的问题,如果出问题了,和其他的层次无关,只要维护这个层次也就好了。 其实编程语言里也能体现这个分层理论,大家都懂的。

请看图例

第一层:链路层

包括操作系统中的设备驱动程序、计算机中对应的网络接口卡

第二层:网络层

网络互连层是整个TCP/IP协议栈的核心。它的功能是把分组发往目标网络或主机。同时,为了尽快地发送分组,可能需要沿不同的路径同时进行分组传递。因此,分组到达的顺序和发送的顺序可能不同,这就需要上层必须对分组进行排序。     网络互连层定义了分组格式和协议,即IP协议(Internet Protocol)。  

特别注意:此时的IP包是不安全的,IP协议不会管送没送到

第三层:传输层

在TCP/IP模型中,传输层的功能是使源端主机和目标端主机上的对等实体可以进行会话。在传输层定义了两种服务质量不同的协议。即:传输控制协议TCP和用户数据报协议UDP.

TCP协议是一个面向连接的、可靠的协议。它将一台主机发出的字节流无差错地发往互联网上的其他主机。在发送端, 它负责把上层传送下来的字节流分成报文段并传递给下层。在接收端,它负责把收到的报文进行重组后递交给上层。 TCP协议还要处理端到端的流量控制,以避免缓慢接收的接收方没有足够的缓冲区接收发送方发送的大量数据.

UDP协议是一个不可靠的、无连接协议,主要适用于不需要对报文进行排序和流量控制的场合。

第四层:应用层

TCP/IP模型将OSI参考模型中的会话层和表示层的功能合并到应用层实现。这一层主要的作用有DNS域名解析

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.45 www.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、为什么需要三次握手,而不是两次或四次握手?

三次握手是在安全可靠的基础上,握手次数最少的方案

两次握手并不能保证可靠性

四次握手又浪费了效率,当然,有的需要更高安全性的地方,是可以有N次握手协议的,但那是特殊情况

5.编码实战

6.扩展思考

7.参考文献

http://www.cnblogs.com/roverliang/p/5176456.html

8.更多讨论

鸣谢

感谢观看,如有出错,恳请指正

BY : 韦 杰