通俗点说:

三次握手:

A:发送连接请求

B:收到请求后,B知道自己的接收端是好的,返回给A请求的应答,并询问A是否收到自己的本次应答。

A:收到B的应答。A知道自己的发送端和接收端都是好的。然后发送应答以回应B的询问。

当B接收到A的应答时,B知道自己的在第二次握手发出去的询问A收到了,证明B的发送端也是好的,这样就建立起了稳定的连接(到目前为止)。

四次挥手:

先明确几个问题。

单工:发送端和接收端都是固定的,角色不可变。即只能A——>B,不能逆过来,一经设定,A永远是发送端。

双工:发送端和接收端角色可变。可以A——>B,也可以B——>A。其中又分半双工与全双工。

半双工:在同一时间,信息只能单向传输。即,在同一时间,只能单独发生A——>B,或者B——>A,而不能同时反生。例如,对讲机。

全双工:在同一时间内,一端可以同时发送和接收信息,同一时间,信息可双向传输。A——>B与B——>A可同时发生。

而,在网络中,不论client或者server,都采用全双工。即,client在向server发送数据的同时,也接收来自server的数据。同理于server。

在此基础上,有半关闭概念:client关闭发送数据,但保留接收数据。同理于server。

所以,client与server的关闭是彼此独立的,分别关闭。如果同时满足“没有数据发送”和“没有数据接收”两个条件,就关闭。(不考虑网络延迟)

C(client):没有数据需要发送了,或者说在发送数据的最后添加一个end的标志,给S(server),告诉S我发送结束。此时,C还在接收数据。

S(server):一直在接收数据,直到接收到C的结束信息(或者C的关闭请求,或者理解为含有end标志的数据),S知道C数据发送结束了。S向C发回应答,说我知道你发送结束了。此时,S保持接收数据和发送数据。S还有可能在向C发送数据。(为什么需要这次握手呢?如果S不发回应答,则说明S还在接收来自C的数据。)C接收到S的应答,确定S收到自己发的end的信息(暂且理解为end)。C开启半关闭状态,即,关闭数据发送,保持数据接收。

S:S发送数据结束,告诉C。

C:接收到S的发送数据结束的通知,发回应答给S。S接收到C的应答,知道C已经知道S结束数据发送,S关闭。(全关闭)

C不会立即关闭数据接收,要等一段时间(2MSL),确保S收到了自己上一步发送的应答。因为如果由于网络等原因,S没有收到C的应答的话, S不会擅自关闭,而会持续发送结束的信息给C,所以,C要保留半关闭状态一段时间,默认这段时间内足够接收S的再一次发送结束信息。

所以,把client和server理解成两个需要独立关闭,就好理解四次挥手了。每端都需要发出一次发送数据结束请求和一次收到对方结束请求的应答(用来让对方关闭)。

自己的一些语言叙述方面的理解,具体的TCP/socket技术上的实现需要进一步的学习。

TCP三四次握手的更多相关文章

  1. TCP三次握手/四次挥手详解

    一. TCP/IP协议族 TCP/IP是一个协议族,通常分不同层次进行开发,每个层次负责不同的通信功能.包含以下四个层次: 1. 链路层,也称作数据链路层或者网络接口层,通常包括操作系统中的设备驱动程 ...

  2. wireshark抓包工具简介以及tcp三次握手的一些含义

    wireshark是非常流行的网络封包分析软件,功能十分强大.可以截取各种网络封包,显示网络封包的详细信息.使用wireshark的人必须了解网络协议,否则就看不懂wireshark了.为了安全考虑, ...

  3. TCP三次握手四次挥手

    看到一篇总结很好的TCP三次握手,学习一下,原文链接. 建立TCP需要三次握手才能建立,而断开连接则需要四次握手.整个过程如下图所示: 先来看看如何建立连接的. 首先Client端发送连接请求报文,S ...

  4. TCP ,UDP概念和TCP三次握手连接 的知识点总结

    OSI 计算机网络7层模型 TCP/IP四层网络模型 传输层提供应用间的逻辑通信(端到端),网络层提供的是主机到主机的通信,传输层提供的是可靠服务. TCP 中常说的握手指的是:连接的定义和连接的建立 ...

  5. TCP三次握手和四次挥手状态变迁解析

    TCP是TCP/IP的传输层控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接: 首先需要了解几个名词:tcp标志位,有6种分别为:SYN(synchronous建立联机) .ACK(ackn ...

  6. Wireshark基本介绍和学习TCP三次握手

    wireshark介绍 wireshark的官方下载网站: http://www.wireshark.org/ wireshark是非常流行的网络封包分析软件,功能十分强大.可以截取各种网络封包,显示 ...

  7. TCP 三次握手四次挥手, ack 报文的大小.tcp和udp的不同之处、tcp如何保证可靠的、tcp滑动窗口解释

    一.TCP三次握手和四次挥手,ACK报文的大小 首先连接需要三次握手,释放连接需要四次挥手 然后看一下连接的具体请求: [注意]中断连接端可以是Client端,也可以是Server端. [注意] 在T ...

  8. iOS 开发:TCP三次握手连接

    在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接. 第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认: 第二次握 ...

  9. 用tcpdump分析tcp三次握手,四次挥手

    1.tcpdump 简介 tcpdump是一个对网络上的数据包进行截获的包分析工具,一般linux系统以命令的形式使用 2.tcp三次握手 建立一个tcp连接会发生下面三个过程: 1.服务器必须准备好 ...

随机推荐

  1. SGU 202 The Towers of Hanoi Revisited (DP+递归)

    转载请注明出处,谢谢http://blog.csdn.net/ACM_cxlove?viewmode=contents    by---cxlove 题意 :n个圆盘,m个柱子的汉诺塔输出步骤. ht ...

  2. Ext JS学习第十天 Ext基础之动态加载JS文件(补充)

    此文用来记录学习笔记: •Ext4.x版本提供的一大亮点就是Ext.Loader这个类的动态加载机制!只要遵循路径规范,即可动态加载js文件,方便把自己扩展组件动态加载进来,并且减轻浏览器的压力. • ...

  3. URlRewriter组件下载及使用说明

    下载地址:http://www.chx99.cn/file/URLRewriter.rar在web.config添加如下配置节: <httpHandlers>    <add ver ...

  4. 在TextBox里面仅仅允许数字,按Enter键进入下一个TextBox

    <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> ...

  5. 安装Oracle,新建组、用户的时候的一个错误

    [root@localhost /]# mkdir -p /u01/oracle[root@localhost /]# useradd -g oinstall -G dba -d /u01/oracl ...

  6. [LeetCode]题解(python):018-4Sum

    题目来源: https://leetcode.com/problems/4sum/ 题意分析: 这道题目和3Sum的题目类似,找出所有的4个数,使得这4个数等于target. 题目思路: 这道题做法和 ...

  7. Objective-C 链式编程思想

    链式编程思想 链式编程是什么 链式编程就是将调用多个方法用点语法连接起来,让代码更加简洁和可读性更高刚开始接触链式编程是Masonry,用起来真的非常爽 1 make.left.right.top.e ...

  8. java学习之二叉树的实现

    二叉树是一种数据结构,每个节点都有两个子节点. 二叉树的遍历有三种方式, 先序遍历是 根节点,左子树,右子树: 中序遍历是 左子树,根节点,右子树: 后序遍历是 左子树,右子树,根节点: java实现 ...

  9. (收藏)KMP算法的前缀next数组最通俗的解释

    我们在一个母字符串中查找一个子字符串有很多方法.KMP是一种最常见的改进算法,它可以在匹配过程中失配的情况下,有效地多往后面跳几个字符,加快匹配速度. 当然我们可以看到这个算法针对的是子串有对称属性, ...

  10. Selenium2使用vncserver启动firefox

    web自动化测试使用Selenium2使用vncserver启动firefox 1st startup vncserver(e.g. vncserver :1). 2nd set DISPLAY(e. ...