• 一开始个人对于三次握手和四次挥手这个东西还是有时候会忘记,可能理解的不是非常深刻,所以今天就自己动手来记录一下这个知识点,方便以后查看。总结完之后发现总结的还是可以的哈哈。

  • 三次握手建立连接
    •   第一次:客户端和服务器端一开始都是关闭的。①:当想建立连接的时候,客户端首先主动打开,然后服务器端被动打开。
      ②:服务器首先得先创建好需要的pcb传输控制块(参照socket编程中的,先得建立一些服务器所需要的信息,包括套接字之类的,创建套接字,绑定套接字,),之后进入listen状态,等待客户端来连接自己。客户端也得建立好自己的PCB结构(创建套接字)。
      ③:第一次连接开始:客户端发出连接请求,发出请求报文(SYN:握手信号=1,ACK:确认机制=0,SEQ:连接序列=随机数X),
      客户端状态:SYN-SENT(同步已发送)
    •   第二次:同意连接,发送同意报文(SYN:握手信号=1,ACK:确认机制=1,ack:确认信号=X+1,SEQ:连接序号=随机数Y),这里有重新产生一个序列号Y,服务器状态:SYN-RCVD(同步已收到)
    •   第三次:客户端收到服务器的连接确认后,必须返回确认连接信号给服务器(ACK:确认机制=1,    ack:确认信号=Y+1, SEQ:连接序号=随机数X+1(在上一条请求信号的基础上加1))
      客户端状态:ESTAB-LISHED(连接已建立)。当服务器收到之后,服务器状态:ESTAB-LISHED(连接已建立)

      注意:第三次握手的意义:为了防止已经失效的连接请求报文段突然又传送到了B。

  • 四次挥手释放连接
    •   第一次:客户端首先发送连接释放报文段(FIN:终止连接标志=1,seq:序号=X),FIN=1向服务器提出分手。客户端状态:FIN-WAIT-1(终止连接等待状态1)
    •   第二次:因TCP的连接是全双工的双向连接,关闭也是要从两边关闭;当服务器收到客户端发来的FIN=1的标志位后,服务器不会立刻向客户端发送FIND=1的请求关闭信息,而是先向客户端发送一个ACK=1的应答信息,表示:你请求关闭的请求我已经收到,但我可能还有数据没有完成传送,你再等下,等我数据传输完成了我就告诉你;确认报文(ACK:确认机制=1,ack:确认信号=X+1,seq:序号=Y)
      服务器状态:CLOSE-WAIT(关闭等待),这样客户端服务器端的连接就释放了
      客户端状态:FIN-WAIT-2(终止连接等待状态2)
    •   第三次:服务器端数据传输完成,没有动洗传输了,服务器这边提出释放连接要求(FIN:终止连接标志=1,ACK:确认机制=1,seq:序号=Z,ack:确认信号=X+1)
      服务器状态:LAST-ACK(最后确认)
    •   第四次:host1收到FIN=1后,host1还是怕由于网络不稳定的原因,怕host2不知道他要断开连接,于是向host2发送ACK=1确认信息进行确认,把自己设置成TIME_WAIT状态并启动定时器,如果host2没有收到ACK,host2端TCP的定时器到达后,会要求host1重新发送ACK,当host2收到ACK后,host2就断开连接;当host1等待2MLS(2倍报文最大生存时间)后,没有收到host2的重传请求后,他就知道host2已收到了ACK,所以host1此时才关闭自己的连接。这一点我觉得设计得非常巧妙

TCP/IP的三次握手和四次放手的更多相关文章

  1. TCP/IP协议三次握手与四次握手流程解析

    原文链接地址:http://www.2cto.com/net/201310/251896.html TCP/IP协议三次握手与四次握手流程解析 TCP/IP协议的详细信息参看<TCP/IP协议详 ...

  2. TCP/IP协议三次握手与四次握手流程解析(转载及总结)

    原文地址:http://www.2cto.com/net/201310/251896.html,转载请注明出处: TCP/IP协议三次握手与四次握手流程解析 一.TCP报文格式  TCP/IP协议的详 ...

  3. TCP/IP协议三次握手与四次握手

    TCP/IP协议三次握手与四次握手流程解析 一.TCP报文格式  TCP/IP协议的详细信息参看<TCP/IP协议详解>三卷本.下面是TCP报文格式图:图1 TCP报文格式  上图中有几个 ...

  4. TCP/IP协议三次握手和四次挥手大白话解说

    前言 昨天晚上被一位师傅问到了TCP/IP的工作机制,心里很清楚三次握手,然而对于四次挥手却忘了,这是大学习里学过的,奋而翻阅书籍和网络对之前所学的做一个温顾,算是夯实自我吧. TCP(Transmi ...

  5. 白话解说TCP/IP协议三次握手和四次挥手

    白话解说TCP/IP协议三次握手和四次挥手 1.背景 和女朋友异地恋一年多,为了保持感情我提议每天晚上视频聊天一次. 从好上开始,到现在,一年多也算坚持下来了. 1.1.问题 有时候聊天的过程中,我的 ...

  6. TCP/IP协议 三次握手与四次挥手

    一.TCP报文格式 TCP/IP协议的详细信息参看<TCP/IP协议详解>三卷本.下面是TCP报文格式图: 图1 TCP报文格式 上图中有几个字段需要重点介绍下:        (1)序号 ...

  7. TCP/IP协议 三次握手与四次挥手【转】

    一.TCP报文格式 TCP/IP协议的详细信息参看<TCP/IP协议详解>三卷本.下面是TCP报文格式图: 图1 TCP报文格式 上图中有几个字段需要重点介绍下:        (1)序号 ...

  8. TCP/IP协议三次握手与四次握手流程解析(转)

    一.TCP报文格式   下面是TCP报文格式图:       上图中有几个字段需要重点介绍下:  (1)序号:Seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标 ...

  9. 【协议】2、TCP/IP协议三次握手与四次握手流程解析

    一.TCP报文格式  TCP/IP协议的详细信息参看<TCP/IP协议详解>三卷本.下面是TCP报文格式图:图1 TCP报文格式  上图中有几个字段需要重点介绍下:  (1)序号:Seq序 ...

随机推荐

  1. python与mongodb

    一.mongodb的原理介绍: 特点: 为了理解以上特点,我们从一个真实的场景出发,介绍mongodb的原理:参考视频:https://www.youtube.com/watch?v=4SxHNmk5 ...

  2. [转]Angular移除不必要的$watch之性能优化

    双向绑定是Angular的核心概念之一,它给我们带来了思维方式的转变:不再是DOM驱动,而是以Model为核心,在View中写上声明式标签.然后,Angular就会在后台默默的同步View的变化到Mo ...

  3. flask之python3 虚拟环境及使用dotnv来永久保存环境变量

    Python 3 comes bundled with the venv module to create virtual environments Create an environment Cre ...

  4. Powershell使用SSH

    在编写Powershell脚本时,有时会需要和Linux机器进行交互.所以这时就需要在Powershell中使用SSH. 本文将介绍如何在Powershell中安装SSH模块,以及如何使用ssh命令. ...

  5. 开发工具:sublime text3安装Vue语法高亮插件

    一.将插件克隆到Sublime的packages目录 1.下载并解压插件(或直接git命令clone),得到vue-syntax-highlight-master文件夹 插件地址:https://gi ...

  6. “百度杯”CTF比赛 2017 二月场(Misc Web)

    爆破-1: 打开链接,是502 我直接在后面加个变量传参数:?a=1 出了一段代码 var_dump()函数中,用了$$a,可能用了超全局变量GLOBALS 给hello参数传个GLOBALS 得到f ...

  7. Python数据库(一)-Mysql数据库的连接

    首先需要安装pymysql模块 然后用pymysql连接mysql并执行命令来查看数据 连接mysql数据库后需要创建游标来执行SQL语句 # -*- coding:utf-8 -*- __autho ...

  8. oracle connect by用法篇 (包括树遍历)之二

    3.2查询当前时间往前的12周的开始时间.结束时间.第多少周 , ) - (rownum ) as startDate, sysdate , 'd'))) - (rownum ) as endDate ...

  9. AJAX——Json

    一.简介: 客户端利用Ajax请求服务器端时,数据在两者之间通常有两种格式:XML格式的数据:Json(JavaScript Object Notation/JavaScript 对象表示法)格式数据 ...

  10. ORA-00904: 标识符无效——解决方案

    转自:https://blog.csdn.net/jajavaja/article/details/49122639 建表时列名用双引号引着(用Navicat工具建表默认是加上双引号的),java连接 ...