系统学习TCP/IP协议(二)------连接建立与关闭

TCP协议与UDP协议的区别以及与TCP/IP协议的联系 先介绍下什么是TCP,什么是UDP。 1. 什么是TCP? TCP(Transmission Control Protocol,传输控制协议)是面向连接的、可靠的字节流服务,也就是说,在收发数据前,必须和对方建立可靠的连接。这一过程和打电话类似:先拨号振铃,等待对方接电话,说喂,再说自己是谁。在因特网协议族(Internet protocol suite)中,TCP层是位于IP层之上,应用层之下的传输层。 面向有连接 2. 什么是UDP? UDP (User Datagram Protocol 阅读详情

TCP的可靠传输首先是建立在可靠的连接建立与关闭之上,这一块包含以下要点:

  • TCP三次握手建立连接
  • TCP半关闭
  • TCP的状态变迁
  • TCP服务端监听和处理设计

TCP三次握手建立连接

TCP为了通信双方确认建立起连接,设计了三次握手的策略,三次握手的过程如下:

1) 请求端发送一个SYN段指明客户打算连接的服务器的端口,以及初始序号(ISN)。
2) 服务器发回包含服务器的初始序号的SYN报文段作为应答。同时,将确认序号设置为客户的ISN加1以对客户的SYN报文段进行确认。一个SYN将占用一个序号。
3) 客户必须将确认序号设置为服务器的ISN加1以对服务器的SYN报文段进行确认

举一个实例:

为什么是三次握手?

对于这个问题,网络编程中的一个经典的规则也许能给一些提示:别人告诉你成功了那一定是成功了,没告诉你成功不一定是没成功。因此,如果是设计成两次握手,就有可能是被连接方第一次发出ack消息后,就处于成功建立连接的状态,但这条消息丢失了,主动连接方因为没有收到这个ack消息会认为建立连接失败,也许会放弃连接或启动新的连接,但被连接方会一直监听那个它误认为成功的连接。采用三次握手,前两次握手任何一次失败都会导致连接双方都处于未连接状态,第三次失败只会导致连接方处于成功状态,但做主动连接方,肯定会在连接不久后通过这个连接发送数据,这样就可以利用这个机制做进一步的容错。

通过tcpdump工具能很清晰地看到三次握手的过程,先在主机B(itbu_qa17)上打开tcpdump监控

/usr/local/sbin/tcpdump port 80 and host 10.19.14.1

然后主机A(10.19.14.1) telnet到主机B,tcpdump监控结果如下:

TCP半关闭

TCP半关闭时TCP提供了连接的一端在结束它的发送后还能接收来自另一端数据的能力。因此,连接关闭的过程需要连接双方都要发起关闭连接的消息,示意图如下所示:

为什么要设计成半关闭?

设计成半关闭主要是存在无需发送数据,只需接收数据的需求,并且可以通过发起单方面的关闭请求标志已发送数据完成。如果没有半关闭的需求,就得建立两个连接。

通过tcpdump工具能很清晰地看到三次握手的过程,主机A(10.19.14.1) telnet到主机B,然后在主机B(itbu_qa17)上打开tcpdump监控

/usr/local/sbin/tcpdump port 80 and host 10.19.14.1

然后主机A关闭telnet,tcpdump监控结果如下:

TCP的状态变迁

连接双方从新建连接到建立连接再到关闭连接,会经历一些状态,这些状态在分析问题时非常重要,状态变迁全景图如下所示:

就连接双方的建立连接和关闭连接过程来看,状态变迁序列图如下所示:

TCP服务端监听和处理设计

TCP服务端一般设计为连接建立后一个进程监听端口,当一个新的连接请求到达服务器时,服务器接受这个请求,并调用一个新进程来处理这个新的客户请求。以telnet为例,使用netstat查看服务端监听状态为LISTEN,如下图所示:

当有客户端telnet过来时,监听进程会起另外的进程来处理,如下图所示:

TCP/IP协议详解与TCP连接管理 本文深入探讨了TCP/IP协议中的BOOTP协议和TCP协议的工作原理。详细分析了BOOTP协议在引导无盘系统时的作用,以及TCP协议提供的面向连接的可靠传输服务。通过具体案例和步骤解析了TCP连接的建立、数据传输和终止过程,以及在各种网络条件下的超时处理和流量控制机制。 阅读详情

相关推荐

卫星通信链路预算实战:从EIRP到Eb/N0的完整计算指南(含Excel模板)

本文提供了一份卫星通信链路预算的实战指南,详细解析了从EIRP到Eb/N0的完整计算流程。文章重点对比了C波段与Ku波段在应对降雨衰减等动态因素时的不同策略,并分享了包含核心公式的Excel模板,帮助工程师将理论转化为可执行的系统设计依据。

weixin_29230773的博客 533

网络编程------端口(port)

网络 端口

warmmaple的博客 602

高通thermal-engine.conf配置详解:从虚拟传感器到CPU频率控制的完整指南

本文深入解析了高通thermal-engine.conf配置文件的架构与调优方法。从虚拟传感器的加权融合原理,到监控算法与CPU频率控制的多级策略,提供了完整的配置详解与实战调试指南。文章旨在帮助开发者与高级用户掌握底层温控逻辑,在性能与散热间实现精准平衡,并详细介绍了日志调试与场景化配置等高级技巧。

weixin_28327051的博客 493

HTTP协议、URL、HTTPS协议 ----- 讲解很详细

⭐加密就是把明文(要传输的信息)进行一系列变换,生成密文.⭐解密就是把密文再进行一系列变换,还原成明文.⭐在这个加密和解密的过程中,往往需要一个或者多个中间的数据,辅助进行这个过程,这样的数据称为密钥。加密示例:假设我们要加密的消息(明文)是 "HELLO",并且我们选择的密钥是3(意味着字母表中的每个字母向后移动3位)。H -> K (因为H向后移3位是K)E -> H (E向后移3位是H)L -> O (L向后移3位是O,注意这里超过了Z则循环回A)L -> O (同上)

qq_64446981的博客 5171

《AI大模型评测与智能测试》

第三篇“实践蓝图”(第6-7章)着眼于测试领域AI应用,重点介绍了RAG、AI Agent开发及构建端到端智能测试系统的方法。本书聚焦AI时代的“质量”核心,以“AI赋能测试”(AI For Testing)与“AI模型评测”(Testing For AI)为双轮驱动。内容不仅深入剖析如何科学度量AI大模型的内在质量,还系统讲解如何利用AI赋能传统软件测试,帮助读者贯通从模型原理、评测到应用开发的全链路知识。

酌沧 1138

VUE3 实战手记(一)集成 EasyUI for Vue 组件库

本文详细介绍了如何在VUE3项目中集成EasyUI for Vue组件库,包括环境准备、基础安装、配置与集成、TypeScript类型问题解决以及组件实战等内容。EasyUI以其轻量级和开箱即用的特性,特别适合快速开发后台管理系统,提升开发效率。

weixin_30628801的博客 528

TCP协议和TCP连接

TCP(Transmission Control Protocol)传输控制协议是一种面向连接的、可靠的、基于字节流的传输层通信协议。当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接之后才能传输数据。TCP提供超时重发、丢弃重复数据、流量控制等功能,保证数据能从一端传输到另一端。IP数据报(IP数据包)由首部和数据两部分组成。IP数据报的数据部分封装了一个TCP报文段。TCP报文段分为首部和数据两部分。

qq_42141141的博客 2913

华为OD机试真题 新系统2026-04-01 Python&JS 实现【勇攀数字高峰】

请你在给定的数字地形图中寻找登山路径,数字代表当前位置的海拔高度,要求从最低海拔出发,不断攀登,最终到达最高山峰。你需要寻找所有满足条件的登山路径。地图已经保证最低海拔和最高山峰都只有一个。

MISAYAONE的博客 843

HTTP协议之持久连接节省通信量

为什么80%的码农都做不了架构师?>>> ...

weixin_34415923的博客 354

基于深度学习 YOLOv11 的快递包裹检测系统(Python + PySide6 界面 + 训练代码)

成为亟需优化的重要环节。随着电子商务的快速发展,物流行业面临着越来越大的压力,为了解决这些问题,我们提出了一种。目标检测算法,实现快递包裹的。的界面,供用户进行实时监控。本项目的主要目标是利用。

斌擎科技 762

YOLOv11 改进 | 模块即插即用

YOLOv11 是一种单阶段目标检测算法,其核心设计目标在于实现检测速度与精度的平衡。其架构延续了 YOLO 系列“端到端”检测的思路,通过统一的网络结构完成特征提取、多尺度特征融合及最终的边界框预测与分类任务。骨干网络(Backbone)颈部网络(Neck)和检测头(Head)。骨干网络负责从输入图像中提取多层次的语义特征。

u012133341的博客 3117

TCP/IP协议族

TCP与UDP的不同在于数据的传输是否为基于连接的,前者是基于连接的,UDP则是非连接的。tcp为每个连接建立了一个数据缓冲区,会对字节流中的每个字节进行编号,缓冲中的字节第一个位置的编号为0,后面的每个字节编号递增。该层决定了在于对方计算机通信时,要从众多的传输路线中选择一条合适的路线【合适的一条路线是通过路由来确定的】,并把数据包传送给对方。发送端在层与层之间传输数据时,每经过一层必定会被打上一个该层所属的首部信息,反之,接收端在层与层之间传输数据时,每经过一层都会把对应的首部消去。...

contact97的博客 1556

隧道裂缝检测【C++PCL】

我们团队注重每一个细节,确保代码的可读性、可维护性和可扩展性达到最高标准。我们严格遵循行业最佳实践,采用模块化和面向对象的设计原则,使得我们的代码结构清晰且易于理解。我们的点云服务更是引以为傲。我们的技术团队拥有深厚的专业知识和丰富的经验,能够提供高度准确和高效的点云处理服务。无论是点云的获取、存储还是分析,我们都能够满足客户的需求,并提供出色的解决方案。我们的技术实力也是无与伦比的,拥有广泛的技术背景和深入的专业知识。

weixin_45196569的博客 848

C#建立TCP/IP连接

C#建立TCP/IP连接在C/S模式下做网络信号传输,使用TCP/IP协议是首选。 其传输机制: 首先服务端与客户端建立套接字(socket)连接,建立完套接字后,服务端与客户端通过套接字进行数据传输。通常服务端和客户端需要各开启一个线程进行数据的接收。1.构建连接首先服务端开启套接字监听服务,然后客户端根据服务器的IP、端口进行连接。1.1服务端开启套接字Socket serverSocket

c0411034的博客 5万+

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

TCP/IP协议的建立连接与关闭连接过程

一、建立连接(三次握手) 第一次握手:建立连接时,客户端发送SYN(seq=x)包到服务器,并进入SYN_SENT状态,等待服务器的确认。SYN:同步序列编号(Synchronize Sequence Numbers)。 第二次握手:服务器收到SYN包,必须确认客户的SYN(ack=x+1),同时自己也发送一个SYN包(seq=y),即发送SYN+ACK包,此时服务器进入SYN_...

angshenye1935的博客 612

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

TCP/IP之十:TCP连接的建立与终止

TCP是传输层的重量级成员,也是整个TCP/IP协议栈的重要组成部分,也正因为这点,协议栈的名字里面才有TCP这样的字样。TCP是端到端的通信协议,它向上层应用提供了可靠的,面向连接的服务,为了实现这样的服务,TCP采用了许多其它协议不曾用到的机制,比如序列号、滑动窗口、超时重传、慢启动等等,同步、流量控制等议题在TCP中体现得淋漓尽致。 为了分析TCP的运行机制,我们先来看看TCP的首部结构: (1)前面四个字节和UDP类似仍然是源端口号和目的端口号;Sequence Number:序列号,用于通

成长的记忆 3199

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

TCP/IP建立连接,传输数据,关闭连接的具体过程以及原理分析

发送方发送带有"syn"标志位的TCP报文段作为连接请求,接收方收到连接请求后,回复一个带有"syn"标志位和"ack"标志位的TCP报文段作为连接确认。在TCP(传输控制协议)中,每个TCP报文段都有一个序列号,用于标识报文段在传输过程中的顺序。发送方使用序列号来对报文段进行编号,接收方可以利用序列号来重新排序报文段,以确保数据的正确顺序。在TCP中,接收方使用确认号来告知发送方已经成功接收到的数据字节的序列号。发送方接收到确认号后,可以确认数据已经成功传输到接收方,或者根据确认号进行重传等操作。

Panda_Parker的博客 496

TCP/IP协议

目录前言TCP报头标志位TCP开始连接TCP断开连接为什么建立连接是三次握手,而关闭连接却是四次挥手呢? 前言 TCP/IP协议是一种基础的网络传输协议,属于OSI七层架构(应用层,表示层,表示层,传输层,网络层,数据链路层,物理层)中的传输层,现在大部分传输协议都是基于该协议完成,如:http协议,https协议,websocket协议等等。 TCP报头标志位 TCP协议中在报头设计了6个标志位,来标识每一个数据包的动作,它们代表意思如下: URG:紧急标志。紧急标志为"1"表明该位有效。 ACK:确认

qq_29899535的博客 1791

TCP/IP协议详解(二):建立和关闭连接

作者: remcarpediem 联系方式:segmentfault,csdn,简书 本文转载请注明作者、文章来源,链接,版权归作者所有。  看了酷壳网站上的《TCP 的那些事儿》系列文章,有一点很受启发:锻炼一下自己是否使用较少的篇幅将TCP协议讲解清楚。一般的同学写博文,可能像摊大饼一样,篇幅较多并且罗嗦。我以前写文章时也是这个习惯,所以希望在以后的博文写作过程中,尽量使用比较短的篇幅来讲

taylor的专栏 3727

TCP/IP 协议 建立与链接

TCP的可靠传输首先是建立在可靠的连接建立与关闭之上,这一块包含以下要点: TCP三次握手建立连接 TCP半关闭 TCP的状态变迁 TCP服务端监听和处理设计 TCP三次握手建立连接 TCP为了通信双方确认建立起连接,设计了三次握手的策略,三次...

chuteng3602的博客 803

TCP/IP协议与UDP协议

1.TCP/IP协议 目前英特网上主流的网络协议是TCP/IP协议,它是一种分层的、多协议的通信体系。TCP/IP协议的作用是在网络中完成数据的传输,比如我们通过QQ交流、浏览网页、在线观看视频等等都是通过TCP/IP协议实现的。 2.TCP/IP参考模型与OSI参考模型的图示: 3.TCP协议/UDP协议 TCP协议/UDP协议都是在传输层进行工作的,即在程序之间传输数据。它们传输的数据可以是文本文件、图片、视频等,对于TCP协议和UDP协议,文本文件、图片、视频等数据都是二进制数。 4.TCP协议和

weixin_47062907的博客 1025

TCP/TP协议的建立链接过程详述

TCP/IP 状态机,如下图所示: 在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接,如图1所示。 (SYN包表示标志位syn=1,ACK包表示标志位ack=1,SYN+ACK包表示标志位syn=1,ack=1) (1) 第一次握手:建立连接时,客户端A发送SYN包(SEQ_NUMBER=j)到服务器B,并进入SYN_SEND状态,等待服务器B确认。 (2)

只怪那时年少轻狂 2923

TCP的三次握手(建立连接)与 四次挥手(关闭连接)

一、TCP报文格式 TCP/IP协议的详细信息参看《TCP/IP协议详解》三卷本。下面是TCP报文格式图: TCP报文格式上图中有几个字段需要重点介绍下: (1)序号:Seq序号,占32位,用来标...

zzz19的博客 247

HTTP协议与TCP/IP协议的长连接与短连接

1. HTTP协议与TCP/IP协议的关系 HTTP的长连接和短连接本质上是TCP长连接和短连接。 HTTP属于应用层协议 传输层使用TCP协议 在网络层使用IP协议。 IP协议主要解决网络路由和寻址问题,TCP协议主要解决如何在IP层之上可靠地传递数据包,使得网络上接收端收到发送端所发出的所有包,并且顺序与发送顺序一致。TCP协议是可靠的、面向连接的。 2. 如何理解HTTP协议是无状态的 HT...

glamour2015的博客 788
上一篇: 系统学习TCP/IP协议(一)------有用的策略和模式
下一篇: 单点登录SSO的实现原理
cutesource
博客等级 码龄17年 5041粉丝 151原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值