tcp工作原理

 

 

 

 

 

TCP 三次握手建立连接

 

TCP 建立连接全过程解释

  1. 客户端发送 SYN 给服务器,说明客户端请求建立连接;
  2. 服务端收到客户端发的 SYN,并回复 SYN+ACK 给客户端(同意建立连接);
  3. 客户端收到服务端的 SYN+ACK 后,回复 ACK 给服务端(表示客户端收到了服务端发的同意报文);
  4. 服务端收到客户端的 ACK,连接已建立,可以数据传输。

 

 

 

 

TCP 四次挥手释放连接:

TCP 为什么要进行四次挥手?

1:TCP 为什么要进行四次挥手? / 为什么 TCP 建立连接需要三次,而释放连接则需要四次?

答案:因为 TCP 是全双工模式,客户端请求关闭连接后,客户端向服务端的连接关闭(一二次挥手),服务端继续传输之前没传完的数据给客户端(数据传输),服务端向客户端的连接关闭(三四次挥手)。所以 TCP 释放连接时服务器的 ACK 和 FIN 是分开发送的(中间隔着数据传输),而 TCP 建立连接时服务器的 ACK 和 SYN 是一起发送的(第二次握手),所以 TCP 建立连接需要三次,而释放连接则需要四次。

2:为什么 TCP 连接时可以 ACK 和 SYN 一起发送,而释放时则 ACK 和 FIN 分开发送呢?(ACK 和 FIN 分开是指第二次和第三次挥手)

答案:因为客户端请求释放时,服务器可能还有数据需要传输给客户端,因此服务端要先响应客户端 FIN 请求(服务端发送 ACK),然后数据传输,传输完成后,服务端再提出 FIN 请求(服务端发送 FIN);而连接时则没有中间的数据传输,因此连接时可以 ACK 和 SYN 一起发送。

3:为什么客户端释放最后需要 TIME-WAIT 等待 2MSL 呢?

答案:

1:为了保证客户端发送的最后一个 ACK 报文能够到达服务端。若未成功到达,则服务端超时重传 FIN+ACK 报文段,客户端再重传 ACK,并重新计时。

2:防止已失效的连接请求报文段出现在本连接中。TIME-WAIT 持续 2MSL 可使本连接持续的时间内所产生的所有报文段都从网络中消失,这样可使下次连接中不会出现旧的连接报文段。

socket编程流程:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/548219.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

物联网碰到云计算会怎么样?

如果提起物联网和云计算,熟悉安防行业的朋友们可能都不会太过陌生。没错,就是这两项新生技术的问世,给我们安防行业带来了许多全新的理念。而在不少人的眼中,物联网和云计算在潜意识中也是有不少联系的,但是如果要细细…

CentOS FTP安装及配置

CentOS FTP安装及配置 LINUX下实现FTP服务的软件很多,最常见的有vsftpd,Wu-ftpd和Proftp等.Red Hat Enterprise Linux中默认安装的是vsftpd.访问FTP服务器时需要经过验证,只有经过了FTP服务器的相关验证,用户才能访问和传输文件.vsftpd提供了3种ftp登录形式: (1)anonymous(…

【FPGA】Verilog 实践:优先级编码器 | Priority encoder

0x00 优先级编码器(Priority encoder) "能将多个二进制输入压缩成更少数目输出的电路或算法的编码器" 优先级编码器是一种编码器,它考虑了两个或更多输入位同时变为 1 但没有收到输入的情况。当输入进来时,优先级编码…

linux系统用户迁移

今天登陆上来发现好久都没有写博客了。 刚刚做了一个linux用户迁移,记录下,以后用到的话,查起来方便。希望对大家有帮助。 环境:我们原先的一台服务器由于过保所以替换新的服务器,但是由于用户数较多,如果一…

vm虚拟远程部署windows驱动

注意打印机是用com1端口,应该提前删除 bcdedit /debug on bcdedit /dbgsettings serial debugport:1 baudrate:115200 bcdedit /dbgsettings 以下两条是配置调式环境系统用 bcdedit /set testsigning on bcdedit /set loadoptions DDISABLE_INTEGRITY_CHECKS 在…

Android:SharedPreferences详解+示例

为什么80%的码农都做不了架构师&#xff1f;>>> 一、简介SharedPreferences是一种轻型的数据存储方式&#xff0c;它的本质是基于XML文件存储key-value键值对数据&#xff0c;通常用来存储一些简单的配置信息。 二、存储位置 在/data/data/<包名>/shared_pre…

类模板的分离式编译错误解决

声明&#xff1a;不谈逻辑是否能被执行成功&#xff0c;就谈编译是否成功. vs的错误: linux下g的错误: 以上错误&#xff0c;改怎么解决呢&#xff1f; 方法1&#xff1a;把实现代码和头文件写在一起 方法2&#xff1a;在.cpp文件中加入模板声明

6421B Lab5 路由和远程访问的配置与故障排除

共2个实验&#xff1a; 实验L5A&#xff1a;配置和管理网络访问 实验L5B&#xff1a;实现DirectAccess&#xff08;略&#xff09; 实验L5A&#xff1a;配置和管理网络访问 共有3个练习 练习1&#xff1a;实现***远程访问解决方案。 练习2&#xff1a;配置一个自定义的网络策略…

工作中影响提高的一些想法

2019独角兽企业重金招聘Python工程师标准>>> 最近&#xff0c;一直很迷茫&#xff0c;老是觉得效率低下&#xff0c;慢慢发现是自己做事的方式有问题&#xff0c;首先觉得人懒&#xff0c;喜欢动手却不愿意去想&#xff0c;觉得慢慢做过去&#xff0c;问题就解决了&…

项目:SQL server 2008构建群集——环境部署

网络拓扑图 windows 2008 (1)操作系统&#xff1a;Microsoft Windows Server 2008 R2 (64)SQL版本 &#xff1a;SQL server 2008 R2 64 位角色: 故障转移群集节点 SQL server 故障转移群集安装域名&#xff1a;test.com主机名&#xff1a;PC1IP: 172.16.0.1 &#xff08;…

Matlab/Simulink的一些功能用法笔记(3)

01--引言 最近加入到一个项目组&#xff0c;有一些测试需要去支持&#xff0c;通过了解原先团队的测试方法后&#xff0c;自己作了如下改善&#xff0c;大大提高了工作效率。这也许就是软件开发的意义吧&#xff0c;能够去除一些重复的机械的人工操作并且结果还非常不可靠。 …

Delphi多媒体设计之TMediaPlayer组件(二)

Wave音频&#xff08;Wave Audio&#xff09; 播放Wave音频是最基本的多媒体操作之一&#xff0c;它可能是最普通的&#xff0c;同步播放Wave文件代码如下&#xff1a; ?1234567procedure TForm1.btn1Click(Sender: TObject);beginmpPlayer.Wait : True; { 同步播放}mpPlayer.…

新一代数据中心不可忽视DAC高速铜缆直连线应用

罗森伯格亚太电子有限公司&#xff1a;李平 市场背景不断创新的网络技术和层出不穷的网络应用推动着网络飞速发展&#xff0c;作为信息数据集中交换处理和网络设备存放的数据中心&#xff0c;一直面临着高带宽&#xff0c;高可靠性和低延时的挑战。根据IDC产业发展研究报告&…

浅谈asio中async_accept函数占用内存高的写法

相比大家都使用过asio 中的async_accpect如果使用的好&#xff0c;内存会占用的小,下面来看一端实列:

高清壁纸:60款可爱的圣诞节电脑桌面壁纸《下篇》

这篇文章向大家分享60款非常可爱的圣诞节电脑桌面壁纸。圣诞节越来越近了&#xff0c;赶紧来挑选一款精美的圣诞节壁纸装饰你的电脑桌面吧&#xff01;希望这些精美的高清圣诞节电脑桌面壁纸你会喜欢。推荐阅读&#xff1a;《60款美轮美奂的圣诞节电脑桌面壁纸【上篇】》&#…

几种开源软件授权协议

2019独角兽企业重金招聘Python工程师标准>>> Open Source Initiative (http://opensource.org) 组织通过批准的开源协议目前有58种。 我们在常见的开源协议如GPL, LGPL, BSD, MIT等都是OSI批准的协议。 如果要开源自己的代码&#xff0c;最好也是选择这些被批准的…

emplace_back和push_back区别

#include <vector> #include <iostream> using namespace std; class testDemo { public: testDemo(int num) :num(num) { std::cout << "调用构造函数" << endl; } testDemo(const testDemo& other) :num(other.…

Storyboard初体验

2019独角兽企业重金招聘Python工程师标准>>> Storyboard是iOS5的新特性。使用Storyboard可以更方便的管理应用的界面&#xff0c;同时为视图间的跳转提供了清晰的脉络。 任何时候你都可以在你的项目中添加Storyboard&#xff0c;不管你创建项目的时候有没有勾选“U…

linux服务之DHCP

转自&#xff1a;http://best0.blog.51cto.com/444987/104151用Linux做DHCP服务器&#xff0c;原理跟在windows环境下、路由器上做DHCP相同&#xff0c;所以不在这里介绍了。我们直接开始配置dhcp服务器。这次介绍用Linux配置DHCP服务器&#xff0c;我以实验理论的方式介绍&…

IIS Express 使用详细说明

最近在使用XP的IIS发布Asp.Net MVC3的项目&#xff0c;但是发现一个很头疼的一个问题&#xff0c;在IIS指定虚拟目录来发布网站发布不了&#xff0c;以前发布Webfrom项目则不会有这样的问题&#xff0c;应该是跟路由路径有关系&#xff0c;导致每次都是从网站根节点算起&#x…