通俗易懂的讲讲TCP的三次握手

TCP协议是传输层里面的一个协议,TCP在建立连接之前进行的三次握手对于很多人来说可能一直是迷。干嘛要握三次手?握其他次数不行咩?
那么我们就来讲讲TCP的三次握手都干了些什么吧(才疏学浅,说错的地方希望大家指正)

一、首先要明确三次握手的目的是什么?

三次握手的目的是为了确认客户端和服务端的收发功能是正常的。

那么就是需确认的东西一共有4个:

1.客户端的发送功能;
2.客户端的接收功能;
3.服务端的发送功能;
4.服务端的接收功能;

二、那三次握手分别都确认了哪些功能呢?

1、第一次握手

第一次握手是客户端主动发起的,简单粗暴的理解就是客户端给服务端写了一封信;
这就跟以前的人寄信一样,我自己知道自己是把信放进了邮箱里面,但是我并不知道邮差是不是把它拿出来寄出去了,
也就是说,客户端只知道自己发送了报文,但是报文有没有被发送出去就不知道,所以这个时候客户端对于自己的发送功能是否完好是不确定的;
但是当第一次握手的报文被送达服务端的时候,服务端就知道自己的接收功能是完好的了;因为它已经收到了嘛;
所以第一次握手就确定服务端的接收功能(括号内为握手编号):

2.第二次握手

第一次握手是客户端发起的,第二次握手就是服务器端发起的;
别人给你写了信,你收到了肯定就要回信嘛;
那么这个时候我们就可以来看一下参数(为了方便理解,我们暂时将报文信息理解成参数):
第一次握手客户端会给服务端传过去两个参数,其中有一个是:seq=x;
SYN我们先不管,这个seq=x我们就可以看成是写在信里的内容;
第二次握手的时候服务器端给客户端返回的是4个参数,其中有2个是:seq=y;ack=x+1
那么这个ack=x+1我们就可以理解成是回答了客户端写在信里的内容,因为来信是x,客户端接收到来自服务端的x+1的时候就知道自己写出去的东西被收到了;就可以知道自己的发送功能的正常的;同时客户端也能知道自己的接收功能是正常的,因为能够接收来自服务器端的消息;
那为什么服务端也要写出信息seq=x给客户端呢?
因为服务端也不知道自己的发送功能是否正确嘛;
所以在第二次握手里面可以确定的功能是:

3.第三次握手

第三次握手是客户端发起的,就是这么一来一回的;
在第二次握手里面我们就知道握手和确认功能完善之间的逻辑,那么接下来也只剩下一个功能,就是服务端的接收功能;
服务端怎么知道自己的发送功能是正确的呢?
类比第二次握手我们就知道了,只要收到客户端关于seq的回答就好了;
第二次握手的时候服务向客户端发送了seq=y
seq发出去,那么客户端就要将对信的回复写在ack里面;
所以第三次握手所传的参数里面有ack=y+1,也就是说客户端回复了服务端的seq;
当服务端接收到这个反馈的时候就知道自己的发送功能的正确的了。

总结

总之呢就是一句话:能接收就说明接收功能正常;但是能发送不一定代表发送功能正常,发送功能需要通过**seq(写信)和ack(回信)**才能判断

通俗易懂的讲讲TCP的三次握手相关推荐

  1. 通俗易懂理解TCP协议三次握手和四次挥手及其常见问题

    TCP协议三次握手和四次挥手 三次握手 如果建立连接只需要2次握手,可能会出现的情况 四次挥手 为什么建立连接是三次握手,关闭连接确是四次挥手呢? TIME_WAIT状态有什么作用,为什么主动关闭方没 ...

  2. tcp 二次握手时延_一篇搞懂TCP的三次握手 四次挥手

    TCP的三次握手四次挥手,估计大家都听过.但是真的能把每一步说明白的人比较少.我还记得在之前面试的时候被面试官一顿问,然后一脸懵B... 都是大学没好好上课 ,这篇文章就跟大家讲讲到底这三握四挥是在搞 ...

  3. 一文搞懂TCP的三次握手和四次挥手

    目录 1.三次握手 2.四次挥手 3.11种状态名词解析 TCP的三次握手和四次挥手实质就是TCP通信的连接和断开. 三次握手:为了对每次发送的数据量进行跟踪与协商,确保数据段的发送和接收同步,根据所 ...

  4. java tcp 三次握手_用Java代码分析TCP的三次握手四次挥手过程

    (1)客户端发送一个带SYN标志的TCP报文到服务器.这是三次握手过程中的报文1. (2) 服务器端回应客户端的,这是三次握手中的第2个报文,这个报文同时带ACK标志和SYN标志.因此它表示对刚才客户 ...

  5. 在深谈TCP/IP三步握手四步挥手原理及衍生问题—长文解剖IP

    如果对网络工程基础不牢,建议通读<细说OSI七层协议模型及OSI参考模型中的数据封装过程?> 下面就是TCP/IP(Transmission Control Protoco/Interne ...

  6. wireshark抓包理解TCP的三次握手

    一.实验目的 通过wireshark抓包工具,抓取客户机访问FTP服务器的连接过程进一步理解TCP的三次握手 二.实验拓扑 三.实验步骤 1.根据拓扑图搭建实验环境. 2.在客户机上安装安装Wires ...

  7. 简析TCP的三次握手与四次分手【转】

    转自 简析TCP的三次握手与四次分手 | 果冻想 http://www.jellythink.com/archives/705 TCP是什么? 具体的关于TCP是什么,我不打算详细的说了:当你看到这篇 ...

  8. 为什么有TCP 的三次握手 和 四次挥手

    由于我们的设备上的通信程序很直接,所以当时没有仔细想过TCP的三次握手和四次挥手这个问题,有的时候自己写的时候 会忘掉这个问题,就是为什么会有三次握手的过程和4次挥手的过程 简单来说就一句话 &quo ...

  9. 【转】简述TCP的三次握手过程

    [转]简述TCP的三次握手过程 TCP握手协议 在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接.第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入S ...

最新文章

  1. Python学习笔记(七)函数的使用
  2. 开发环境中实现Lombok消除Java冗余
  3. Elasticsearch - cluster_block_exception [FORBIDDEN/12/index read-only / allow delete (api)]
  4. [转]浅谈浏览器插件检测 和自定义协议的支持
  5. 数学实验matlab课后习题答案,matlab数学实验教程答案
  6. inline-block 和 float 的区别
  7. CG-CTF-Web-伪装者
  8. 从cpp向qml文件传中文字符串的方法
  9. java转换为c#_C#vs Java哪一个更快? 将25k C#转换为Java(2)
  10. WSS页面定制系列(1)--如何启用表单页面的编辑模式
  11. 中绘制折线_漂亮图表也可信手拈来,一文学会用Python绘制堆积折线图
  12. altium 网口差分走线长度_差分信号的优缺点及布线要求
  13. 关于java接口、父类子类之间调用和强制转换的关系
  14. java operator 重载 ==_运算符重载
  15. 粒子群优化算法的实现
  16. 多目标优化算法(一)NSGA-Ⅱ(NSGA2)
  17. 深圳学校积分计算机,深圳积分入户初级计算机证书,居然也能积这么多分!
  18. 物业平台借力OA系统,实现报修管理数字化
  19. 2017 Multi-University Training Contest 3 solutions BY 洪华敦
  20. 纯c++读取与显示BMP图片

热门文章

  1. 微信小程序(小游戏)的示例
  2. 学游戏建模,怎么能没有几款上手的软件,8款超好用的3D建模软件
  3. mysql 1701,MySQL ERROR 1701 (42000)
  4. ubuntu安装酷狗音乐
  5. 搭建自己的小程序服务器
  6. 微x模块怎么导入主题_模块
  7. 安装windows与Ubuntu双系统,并使用GRUB启动引导器
  8. Github 设置提交邮件地址
  9. 抖音seo源码二次开发,短视频seo源码二次开发
  10. IO流的详解,彻底了解IO流