美文网首页
什么是tcp/ip协议?TCP的三次握手指的是什么

什么是tcp/ip协议?TCP的三次握手指的是什么

作者: ElmVector | 来源:发表于2018-03-24 10:13 被阅读0次

大家好,我是IT修真院,一枚正直纯洁善良的如刚入门的Java程序员,今天跟大家分享一下修真院官网JAVA任务二,深度思考中的知识点——什么是tcp/ip协议?TCP的三次握手指的是什么


1. 知识背景

TCP/IP协议是什么

通信协议是对计算机必须遵守的规则的描述,只有遵守这些规则,计算机之间才能进行通信。
TCP/IP协议族按照层次由上到下,层层包装。


2. 知识剖析

  • IP 是无连接的通信协议,用于计算机之间的通信。

通过 IP,消息(或者其他数据)被分割为小的独立的包,并通过因特网在计算机之间传送。
IP 负责将每个包路由至它的目的地。
每个计算机必须有一个 IP 地址才能够连入因特网。
每个 IP 包必须有一个地址才能够发送到另一台计算机。

  • TCP 用于应用程序之间的通信,使用固定的连接

当应用程序希望通过 TCP 与另一个应用程序通信时,它会发送一个通信请求。这个请求必须被送到一个确切的地址。
在双方“握手”之后,TCP 将在两个应用程序之间建立一个全双工 (full-duplex) 的通信。
这个全双工的通信将占用两个计算机之间的通信线路,直到它被一方或双方关闭为止。
UDP 和 TCP 很相似,但是更简单,同时可靠性低于 TCP。

  • TCP/IP 意味着 TCP 和 IP 在一起协同工作。

TCP 负责应用软件(比如你的浏览器)和网络软件之间的通信。
IP 负责计算机之间的通信。
TCP 负责将数据分割并装入 IP 包,然后在它们到达的时候重新组合它们。
IP 负责将包发送至接受者。


3. 常见问题

  • 如何建立TCP/IP连接

  • IP包如何路由至目标地址

  • 到达目标地址的IP包如何检验完整性

  • 如何拆除连接


4. 解决方案

建立TCP/IP的过程就是要讲的三次握手。
即三次握手就是为了解决连接的问题
建立一个TCP连接时,需要客户端和服务端总共发送3个包以确认连接的建立。

(1)第一次握手:Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server,Client进入SYN_SENT状态,等待Server确认。

(2)第二次握手:Server收到数据包后由标志位SYN=1知道Client请求建立连接,Server将标志位SYN和ACK都置为1,ack=J+1,随机产生一个值seq=K,并将该数据包发送给Client以确认连接请求,Server进入SYN_RCVD状态。

(3)第三次握手:Client收到确认后,检查ack是否为J+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=K+1,并将该数据包发送给Server,Server检查ack是否为K+1,ACK是否为1,如果正确则连接建立成功,Client和Server进入ESTABLISHED状态,完成三次握手,随后Client与Server之间可以开始传输数据了。

IP包有固定的报文格式,报头有所需要参数
如:源端口、目标端口、确认序号和标志域等。
拆除连接的时候,双方都需要关闭通道
即四次挥手


5. 扩展思考

  • 当短时间大量不存在的IP不断发送SYN包会出现什么情况

在三次握手过程中,Server发送SYN-ACK之后,收到Client的ACK之前的TCP连接称为半连接(half-open connect),此时Server处于SYN_RCVD状态,当收到ACK后,Server转入ESTABLISHED状态。

Client在短时间内伪造大量不存在的IP地址,并向Server不断地发送SYN包,Server回复确认包,并等待Client的确认,由于源地址是不存在的,因此,Server需要不断重发直至超时,这些伪造的SYN包将产时间占用未连接队列,导致正常的SYN请求因为队列满而被丢弃,从而引起网络堵塞甚至系统瘫痪。

SYN攻击时一种典型的DDOS攻击,检测SYN攻击的方式非常简单,即当Server上有大量半连接状态且源IP地址是随机的,则可以断定遭到SYN攻击了

  • 为什么一定要三次握手

当A想要建立连接时发送一个SYN,然后等待ACK,结果这个SYN因为网络问题没有及时到达B, 所以A在一段时间内没收到ACK后,再发送一个SYN,这次B顺利收到,接着A也收到ACK,这时A发送的第一个SYN终于到了B, 对于B来说这是一个新连接请求,然后B又为这个连接申请资源,返回ACK,然而这个SYN是个无效的请求,A收到这个SYN的ACK后也并不会理会它, 而B却不知道,B会一直为这个连接维持着资源,造成资源的浪费。

两次握手的问题在于服务器端不知道一个SYN是否是无效的,而三次握手机制因为客户端会给服务器回复第二次握手, 也意味着服务器会等待客户端的第三次握手,如果第三次握手迟迟不来,服务器便会认为这个SYN是无效的,释放相关资源。 但这时有个问题就是客户端完成第二次握手便认为连接已建立,而第三次握手可能在传输中丢失,服务端会认为连接是无效的, 这时如果Client端向Server写数据,Server端将以RST包响应,这时便感知到Server的错误。

总之,三次握手可以保证任何一次握手的失败都是可感知的,不会浪费资源


6. 参考文献

https://www.jianshu.com/p/ef892323e68f
http://blog.csdn.net/u013344815/article/details/72134950


PPT
视频


今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~

技能树.IT修真院

“我们相信人人都可以成为一个工程师,现在开始,找个师兄,带你入门,掌控自己学习的节奏,学习的路上不再迷茫”。

这里是技能树.IT修真院,成千上万的师兄在这里找到了自己的学习路线,学习透明化,成长可见化,师兄1对1免费指导。快来与我一起学习吧~

作者:闵仕宇

不足之处,欢迎指正~

相关文章

  • TCP三次握手

    什么是tcp/ip协议?TCP的三次握手指的是什么,为什么一定要三次握手,而不是四次或者是两次? 1.背景介绍 网...

  • TCP/IP协议

    TCP/IP协议三次握手与四次握手流程解析 HTTP协议—— 简单认识TCP/IP协议 TCP/IP协议入门(一)...

  • TCP协议三次握手与四次挥手通俗解析

    TCP/IP协议三次握手与四次握手流程解析 一、TCP报文格式 TCP/IP协议的详细信息参看《TCP/IP协议详...

  • 网络学习三

    关于TCP握手和挥手告别 tcp协议格式 三次握手 在 TCP/IP 协议中,TCP 协议提供可靠的连接服务,采用...

  • 快速理解TCP/IP三次握手与四次挥手

    TCP/IP三次握手 TCP建立连接为什么是三次握手,而不是两次或四次?TCP,名为传输控制协议,是一种可靠的传输...

  • TCP/IP协议

    TCP的连接与断开需要三次握手与四次挥手,具体流程如下 TCP/IP 一般指的是TCP/IP协议簇,共分以下四层:...

  • Http网络请求

    一、TCP/IP协议 1.TCP/IP三次握手SYN:TCP/IP 建立连接时使用的握手信号ACK:确认字符,确认...

  • TCP的可靠性

    TCP数据报首部格式 建立连接——三次握手 TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个...

  • TCP握手协议

    TCP握手协议 在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接. 第一次握手:建立连...

  • 关于网络基础知识TCP/IP(三)

    四、掌握TCP/IP协议:TCP/IP3次握手 4.1 IP协议是TCP/IP协议中最重要的协议,它为TCP UD...

网友评论

      本文标题:什么是tcp/ip协议?TCP的三次握手指的是什么

      本文链接:https://www.haomeiwen.com/subject/deyfcftx.html