多工具实践下解读TCP协议的三次握手

本文通过Python编程和Wireshark抓包,深入解析TCP/IP协议中的三次握手和四次挥手过程。文章介绍了计算机网络的分层和协议概念,TCP/IP体系结构,以及TCP连接的建立和终止。特别强调了TCP三次握手的重要性,通过实例展示了如何在Python中实现TCP连接,并通过Wireshark抓包分析了握手和挥手的具体步骤。最后,探讨了TCP过程中的细节,如序号(SEQ)、确认号(ACK)和流量控制,揭示了TCP可靠传输的机制。
摘要由CSDN通过智能技术生成

通过Python编程和Wireshark抓包,直观地理解TCP/IP协议中的“三次握手”还有“四次挥手”。

计算机网络协议应该说看起来是比较抽象和无趣的,由于现在软件开发,各类网络库已经帮我们处理了大多数网络问题,我们不再需要过分关注协议细节。然而,很多优化场景下,了解这些协议的细节显然是必要的。

计算机网络

计算机网络最重要的特征就是通用性 。计算机网络主要由通用可编程硬件构建,并且不需要为诸如打电话或者传输电视信号那样的特定应用做任何优化。相反,计算机网络能够传输多种不同类型的数据,并且支持各种各样不断增加的应用。在因特网的构建中,我们得到了如何设计网络的丰富经验,这些经验就体现在网络体系结构(network architecture)中。网络体系结构指明可用的软硬件构件,并且说明如何将它们组织起来构成一个完整的系统。

特点:分层和协议

抽象——隐藏定义良好的接口背后的细节——是系统设计者用于处理复杂性的基本工具。抽象的思想是定义一个能捕获系统某些特征的模型,并将这个模型封装为一个对象,为系统的其他组件提供一个可操作的接口,同时向对象使用者隐藏对象的实现细节

分层是抽象的自然结果。总体的思想是从底层硬件提供的服务开始,向上增加一系列的层,每一层都提供更高级(更抽象)的服务。高层提供的服务由低层提供的服务来实现。

分层具有两个优点:

  • 第一,它将建造网络这个问题分解为多个可处理的部分。不是把想要的所有功能都集中在一个软件中,而是可以实现多个层,每一层解决一部分问题。
  • 它提供一种更为模块化的设计。如果想增加一些新的服务,只需要修改某一层的功能,同时可以继续使用其他各层提供的功能。

系统的层次不是简单的线性序列。通常,在系统的任意一层上都提供多种抽象,每种抽象都建立在同样的低层抽象上。

网络系统分层的抽象对象称为协议(protocol)。就是说,一个协议提供一种通信服务,供高层对象(如一个应用进程或更高层的协议)交换消息。每个协议定义两种不同的接口。首先,它为同一计算机上想使用其他通信服务的其他对象定义了一个服务接口(service interface)。这个服务接口定义了本地对象可以在该协议上执行的操作。

其次,协议为另一台机器上的对等实体定义了一个对等接口(peer interface)。第二种接口定义了对等实体之间为实现通信服务而交换的消息的格式和含义。这将决定一台机器上的请求/应答协议以什么方式与另一台机器上的对等实体进行通信。例如,HTTP协议详细规范了“GET”命令的格式,包括该命令可以使用哪些参数,以及当接收到此命令时Web服务器该如何响应。

总之,协议定义了一个本地输出的通信服务(服务接口),以及一组规则。这些规则用于管理协议以及对等实体为实现该服务而交换的消息(对等接口)。

TCP/IP体系结构

因特网体系结构有时也称为TCP/IP体系结构,因为TCP和IP是它的两个主要协议。因特网体系结构是从早期的分组交换网ARPANET发展而来的。在OSI体系结构出现之前,因特网和ARPANET就已经存在了,并且在创建它们时所积累的经验对OSI参考模型产生了重大影响。

尽管七层OSI模型 理论上可以应用于因特网,但是实际上通常采用四层模型

四层模型

在最底层是各种网络协议,这些协议由硬件(如网络适配器)和软件(如网络设备驱动程序)共同实现。例如,以太网或无线协议(如802.11 Wi-Fi标准)就会出现在这一层。其实,这些协议实际上还可以包含几个子层,但是因特网体系结构并没有对此做任何假设。

第二层(从下往上)只有一个网际协议(Internet Protocol, IP),这个协议**支持多种网络技术互联成为一个逻辑网络。**主要的任务就是给传输层的数据加上目标地址和源地址。

第三层包括两个主要的协议,传输控制协议(Transmission Control Protocol, TCP)和用户数据报协议(User Datagram Protocol, UDP)。

TCP提供可靠的字节流信道,UDP则提供不可靠的数据报传输信道(数据报(datagram)可认为是消息的同义词)。TCP和UDP有时也称作端到端(end-to-end)协议,但称作传输协议同样正确。

在传输层上运行着大量应用协议,如HTTP、FTP、Telnet(远程登录)和简单邮件传输协议(Simple Mail Transfer Protocol, SMTP),使得常用的应用可以互相操作。

大部分人熟悉四层因特网体系结构也熟悉七层OSI体系结构,并且就两个体系结构之间层次的对应关系达成了共识。因特网的应用层被看作第七层,传输层是第四层,IP层(网络互联层或网络层)是第三层。IP层下面的链路或子网层是第二层。

OSI模型与TCP/IP模型对照

因特网体系结构有三个特点值得注意:

  • 因特网体系结构没有严格划分层。应用可以自由地跨越已定义的传输层,而直接使用IP层或低层网络。事实上程序员可以自由定义新的信道抽象或在任何已有协议上运行的应用程序。
  • 因特网体系结构呈现一个沙漏形状————顶部宽,中间窄,底部宽。这种形状实际上反映了因特网体系结构的中心哲学。就是说,**IP层作为体系结构的焦点,为各种网络中的交换分组定义了一种通用的方法。**IP层之上可以有多个传输协议,每个协议为应用程序提供一种不同的信道抽象。这样,从主机到主机传输消息的问题就从提供有用的进程到进程通信服务的问题中完全分离出来。IP层之下,这个体系结构允许很多不同的网络技术,从以太网到无线再到单个的点到点链路。(物理介质无关)
  • 要将一个新的协议包含在网络体系结构中,必须有一个协议规范并至少有一个(最好两个)该规范的典型实现。这种要求有助于保证体系结构的协议能够有效实现。

沙漏体系

小结

在因特网体系结构的三个属性中,值得重申的是“沙漏”这一重要设计理念。沙漏的细腰部代表最小的、经过精心挑选的通用功能集,它允许高层应用和低层通信技术并存,共享各种功能并快速发展,**沙漏模型十分重要,它使得因特网能够快速适应用户的新要求和技术的变革。**试想一下,无论移动通信还是互联网技术如何发展,这套网络体系的设计始终没有过时,就可以明白为什么这套体系堪称架构设计的典范。

TCP协议的连接

TCP协议,很多人都听过一句话,叫“三次握手,四次挥手 ”,它描述的就是 TCP 协议建立通信和断开通信的时的交互次数。

TCP 在 RFC793 中有详细的说明,之后更新过几次(参考RFC 1323、2581、2988、3390)。

TCP 要求客户端先给某个服务器建立一个连接,再通过这个连接与服务器交换数据,最后终止这个连接。TCP 要求向另外一端发送数据的时候,对端要返回一个确认(ACK,acknowledge)。如果没有收到确认,TCP 就自动重传数据并等待更长的时间。经过几次重传,还不能成功,TCP才选择放弃。

注意,TCP 不能保证数据一定会被对方接收,这个谁都保证不了。试想一下,如果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值