文章目录

  • 1. TCP协议
  • 2. TCP的三次握手
  • 3. 为什么一定是三次握手?

1. TCP协议

TCP协议:传输控制协议,是可靠连接,类似于打电话,只有等待对方接通的时候才可以交流,也就是确认了对方可以传信息,才会发送信息。

UDP协议:用户数据报协议,是不可靠的,就像发短信,发出去就完事了,对方是否接收到就与自己无关。

2. TCP的三次握手

初始状态:客户端处于 closed(关闭)状态,服务器处于 listen(监听) 状态。

第一次握手:客户端发送请求报文将 SYN = 1同步序列号和初始化序列号seq = x发送给服务端,发送完之后客户端处于SYN_Send状态。


第二次握手:服务端受到 SYN 请求报文之后,如果同意连接,会以自己的同步序列号SYN(服务端) = 1、初始化序列号 seq = y和确认序列号(期望下次收到的数据包)ack = x+ 1 以及确认号ACK = 1报文作为应答,服务器为SYN_Receive状态。

第三次握手: 客户端接收到服务端的 SYN + ACK之后,知道可以下次可以发送了下一序列的数据包了,然后发送同步序列号 ack = y + 1和数据包的序列号 seq = x + 1以及确认号ACK = 1确认包作为应答,客户端转为established状态。

3. 为什么一定是三次握手?

  • 三次握手的本质原因是因为通讯所处的通讯链路和信道是不可靠的,但是我们的通讯和数据传输需要的是可靠的信息流动,就像我们打电话一样,不能我说了一句话那边只听到半句或者听不到,我在等对方回答,对方却在等待我的问题,这就进入了死锁的状态会很尴尬。
  • 通讯双方为了解决这种不可靠,无论消息中包含什么信息,在数学归纳法来讲,三次通讯是理论上的最小值,所以才有了三次握手。
  • 简单讲,三次握手不是TCP的问题,也不是TCP所需要的必须条件,而是为了满足在不可靠的链路信道上进行可靠地消息传输这个问题需求所导致的。
  • 链路信道不可靠,而需要数据传输可靠,三次达到了,也就解决了信道不可靠的问题。后面不管你交互任何信息就和进行可靠的信息传输需求就没关系了。因为你信道可靠了无论你发送什么消息,什么时候发送,只要连接在,对方都一定能收的到。

JavaSE(二十二)——TCP协议的三次握手相关推荐

  1. 用wireshark抓包分析TCP协议的三次握手连接、四次握手断开

    用wireshark抓包分析TCP协议的三次握手连接.四次握手断开 一.TCP三次握手图解 二.TCP得四次挥手过程 三.用Fiddler抓包,分析验证一个HTTPS网站的TCP连接过程 一.TCP三 ...

  2. TCP协议的三次握手和四次挥手

    转自:http://uule.iteye.com/blog/2213562 TCP协议的三次握手和四次挥手 博客分类: http/tcp TCP/IP协议三次握手与四次握手流程解析 Http协议三次握 ...

  3. TCP协议的三次握手与四次挥手

    tcp协议的三次握手和四次挥手 三次握手: 第一次握手: 客户端发起一个链接(SYN) 第二次握手: 服务端就会返回一条(ACK)确认信息,同时服务端也会向客户端发起一个链接请求(SYN),此二者可合 ...

  4. TCP协议中三次握手

    TCP/IP是互联网相关的各类协议族的总称 TCP/IP协议族分为:应用层,传输层,网络层,数据链路层 应用层:向用户提供应用服务时的通讯的活动 传输层:提供处于网络连接中的两台计算机之间的数据传输 ...

  5. TCP协议及三次握手的过程

    在这里插入代码片@TOC TCP协议以及三次握手 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 TCP协议以及三次握手 1.TCP协议是什么? 2.TCP协议的作用 3. ...

  6. 计算机网络【UDP与TCP协议(三次握手、四次挥手)】

    计算机网络[UDP与TCP协议(三次握手.四次挥手)]

  7. TCP 协议的三次握手、四次分手

    详细描述了 TCP 协议的连接和关闭的整个过程.解释了为什么 TCP 协议是面向连接的.可靠的数据传输协议. TCP 在互联网上之间的通信交流,一般是基于 TCP (Transmission Cont ...

  8. 计算机网络教程三次握手,计算机网络(二) TCP协议的三次握手

    1. 先来说说TCP协议: 我们来看看百度百科怎么说? "TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的.可靠的.基于字节流的传输层通信协 ...

  9. 通俗大白话来理解TCP协议的三次握手和四次分手

    最近在恶补计算机网络方面的知识,之前对于TCP的三次握手和四次分手也是模模糊糊,对于其中的细节更是浑然不知,最近看了很多这方面的知识,也在系统的学习计算机网络,加深自己的CS功底,就把看过的一些比较好 ...

最新文章

  1. 再见Spring!下一个开源框架更香!
  2. vue函数如何调用其他函数?_从源码中学Vue(一)生命周期中的钩子函数的那点事儿...
  3. AttributeError: module 'tensorflow_core.estimator' has no attribute 'inputs'
  4. Docker构建YApi镜像, Docker安装YApi, Docker部署YApi
  5. xcode 选择configuraftions 打包_分利宝IOS自动化打包
  6. dom4j和jaxb_JAXB,SAX,DOM性能
  7. 命令行下 mysql 不是内部或外部命令排查方法
  8. springboot细节挖掘(知识积累)
  9. 20172327 2017-2018-2 《程序设计与数据结构》第九周学习总结
  10. gcc中设置特定代码块的优化级别
  11. nexus下载地址分享
  12. 解决python中No module named ‘numpy‘问题
  13. 如何把大写金额变为小写数字_excel表格技巧:怎么快速把阿拉伯数字小写金额转换成大写金额...
  14. 【Dll调试】DLL调试方法
  15. curl常用命令的使用
  16. 如何做好网站的安全性测试
  17. AMD首款5纳米PC处理器锐龙7000亮相,频率首破5GHz大关,单核性能提升15%
  18. 通过快递鸟如何接入申通快递电子面单
  19. html5中奖名单特效,jQuery基于json动态随机获取中奖名单抽奖代码
  20. HBase进化之从NoSQL到NewSQL,凤凰涅槃成就Phoenix 1

热门文章

  1. Endnote X3 出现中文乱码
  2. distributed processing(分布式处理)
  3. SVM(支持向量机)综述
  4. 百度2019暑期实习计算机视觉岗位笔试题
  5. 合肥工业大学网络程序设计实验报告_【院校推荐】2020合肥工业大学计算机考研备考指导及报考分析...
  6. python 进位_Python小课堂(第一讲)
  7. 20211201 二范数的导数小于等于导数的二范数(导数存在情况下)
  8. Unix高级环境编程 学习小结(一)
  9. Soring冲刺计划第三天(个人)
  10. 【BZOJ 1266】 [AHOI2006]上学路线route