TCP三四次握手
通俗点说:
三次握手:
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三四次握手的更多相关文章
- TCP三次握手/四次挥手详解
一. TCP/IP协议族 TCP/IP是一个协议族,通常分不同层次进行开发,每个层次负责不同的通信功能.包含以下四个层次: 1. 链路层,也称作数据链路层或者网络接口层,通常包括操作系统中的设备驱动程 ...
- wireshark抓包工具简介以及tcp三次握手的一些含义
wireshark是非常流行的网络封包分析软件,功能十分强大.可以截取各种网络封包,显示网络封包的详细信息.使用wireshark的人必须了解网络协议,否则就看不懂wireshark了.为了安全考虑, ...
- TCP三次握手四次挥手
看到一篇总结很好的TCP三次握手,学习一下,原文链接. 建立TCP需要三次握手才能建立,而断开连接则需要四次握手.整个过程如下图所示: 先来看看如何建立连接的. 首先Client端发送连接请求报文,S ...
- TCP ,UDP概念和TCP三次握手连接 的知识点总结
OSI 计算机网络7层模型 TCP/IP四层网络模型 传输层提供应用间的逻辑通信(端到端),网络层提供的是主机到主机的通信,传输层提供的是可靠服务. TCP 中常说的握手指的是:连接的定义和连接的建立 ...
- TCP三次握手和四次挥手状态变迁解析
TCP是TCP/IP的传输层控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接: 首先需要了解几个名词:tcp标志位,有6种分别为:SYN(synchronous建立联机) .ACK(ackn ...
- Wireshark基本介绍和学习TCP三次握手
wireshark介绍 wireshark的官方下载网站: http://www.wireshark.org/ wireshark是非常流行的网络封包分析软件,功能十分强大.可以截取各种网络封包,显示 ...
- TCP 三次握手四次挥手, ack 报文的大小.tcp和udp的不同之处、tcp如何保证可靠的、tcp滑动窗口解释
一.TCP三次握手和四次挥手,ACK报文的大小 首先连接需要三次握手,释放连接需要四次挥手 然后看一下连接的具体请求: [注意]中断连接端可以是Client端,也可以是Server端. [注意] 在T ...
- iOS 开发:TCP三次握手连接
在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接. 第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认: 第二次握 ...
- 用tcpdump分析tcp三次握手,四次挥手
1.tcpdump 简介 tcpdump是一个对网络上的数据包进行截获的包分析工具,一般linux系统以命令的形式使用 2.tcp三次握手 建立一个tcp连接会发生下面三个过程: 1.服务器必须准备好 ...
随机推荐
- 无法编辑的word解密
打开文档后,将其另存为XML文件,然后用UltraEdit(或者EditPlus,下载华军里搜索一下就行了)这个编辑软件打开刚刚存储的 XLM文件,查找<w:documentProtection ...
- [译]Stairway to Integration Services Level 10 - 高级事件活动
介绍 在前一篇文章中我们介绍了故障容差相关的 MaximumErrorCount 和 ForceExecutionResult 属性. 同时我们学习了SSIS Control Flow task e ...
- js 精美倒计时
精美倒计时*{ padding:0; margin:0;}.colockbox{width:250px;height:30px;background:url(/jscss/demoimg/201312 ...
- JavaSE学习总结第04天_Java基础语法3
04.01 选择结构switch语句的格式及其解释 switch语句的格式: switch(表达式) { case 值1:语句体1;break; case 值2:语句体2;break; ...
- Binary Tree Preorder Traversal and Binary Tree Postorder Traversal
Binary Tree Preorder Traversal Given a binary tree, return the preorder traversal of its nodes' valu ...
- Oracle 传参错误
错误:ORA-01008: 并非所有变量都已绑定 报错的SQL:UPDATE RES_AUTHORITY SET F_APPLYER= ...
- poj 2515 Birthday Cake
/** 大意 : 求1^m + 2^m + 3^m + 4^m +....+ n^m 解题步骤: 先构造从0到m的第1阶差分序列,然后以下所有2---->p阶的差分表. 令C[n+1][1]=n ...
- SpringBoot接口服务处理Whitelabel Error Page(转)
To switch it off you can set server.error.whitelabel.enabled=false http://stackoverflow.com/question ...
- Vijos P1680距离
题目 背景 简单的DP 描述 设有字符串X,我们称在X的头尾及中间插入任意多个空格后构成的新字符串为X的扩展串,如字符串X为”abcbcd”,则字符串“abcb_c_”,“_a_bcbcd_”和“ab ...
- 解题报告 HDU1176 免费馅饼
免费馅饼 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...