网络编程(一):网络模型 & TCP 三次握手四次挥手

      最后更新:2022-04-28 18:04

      OSI七层模型

      国际标准化组织(标准化组织)开发了开放系统互联参考模型(OSI)。

      OSI利用分层技术建立七层:

      物理层、数据连接层、网络层、传输层、会话层、表达式层和应用层都是相互关联的。

      TCP/IP模型

      虽然现场视察模式是精密和学术性的,但我们采用TCP/IP模式分为五层:

      TCP/IP模型还提及物理层、数据连接层作为网络界面层,与此相对应的议定书称为TCP/IP四层协议模型)、网络层、传输层和应用层。

      在这里插入图片描述

      TCP/IPP网络数据传输

      在这里插入图片描述

      65 535个港口号的意义是什么?

      虽然TCP和UDP协定开始时有16位数的二进制,以记录港口数量和目的地的港口数量,但港口总数为216个=65536个,但使用0个港口代表所有港口,因此可进入的港口实际数量为65535个。

      查看端口号

      Netstastat- no 显示所有可用的端口号

      netstat -ano | grep 3306

      使用根用户 Linux 可以运行 Isof-i: 用于检查特定港口占用量的端口号 。

      lsof -i:3306

      显示 tcp、 udp 端口和程序等等 。

      netstat -tunlp

      • -t (tcp) 只显示 tcp 相关选项。
      • -u(udp) 显示只是与udp有关的选项。
      • 拒绝披露显示数字转换成数字的全部别名
      • 听只显示服务状态 。
      • -p 显示用于创建适当链接的应用程序名称。

      操作系统根据以下五个要素的独特性承认网络通信:源IP地址、目的地IP地址、协议号(协议类型)、源端口号和目标端口号。

      在这里插入图片描述

      在单一主机上连接TCP的最大数目是65535,这是否正确?

      1. 服务端

        源 IP 地址和端口都是变量 :

        由于 IP 地址是32 位整数, 源 IP 只能是 32 位长 。
        由于港口的整数是16位数,因此港口的数量是两个端数的第16位数。

        第32边的2 (p) x 2, 第16边的2 (port) 等于 20 亿多。

        原则上,我们每个服务器都可能获得20多亿个连接。

      2. 客户端

        在针对客户的四方小组中,有三个可变组成部分,自然客户可同时维持的连接数量大大高于服务器。

      三次通过TCP握手。

      在这里插入图片描述
      最初握手:客户请求在1点前标出SYN符号。在用于报告的服务编号字段(Seq short)中,要求随机值为J。然后将数据包传送到服务器上。当客户进入SYN-SEN条件时,等待服务器端确认。

      当服务器收到数据包时,请求标牌SYN=1确认客户正在寻求连接。在服务器上, SYN 和ACK 都分配到 1 。在致谢号字段中插入引用=J+1(简短),应对报告作出答复。在应对报告作出答复的以下各栏中,输入随机K值。为了确认连接请求,将数据包传送给客户。服务器端现已进入 SYN_RCVD 模式。

      第三次握手:客户在收到答复时有机会投票。检查是否 Jack 是 J+1 。ACK是否为1,如果正确的话,将第三个ACK符号设为 1。ack=K+1,然后将数据包传送到服务器上。如果卡片是 K+1, 服务器端会检查它 。ACK是否为1,如果一切都是对的,连接成功建立。客户和服务器已到达创建状态。完成三次握手,此后,客户端和服务器之间可以交换数据。

      SYN对TCP三次握手破裂的洪水袭击

      为了保持这一状态,操作系统使用队列。

      1. 无效连接监视释放
        这是追踪所有连接的方法包括三次握手的,还有握手一次的,反正是所有的,当达到某一特定(和)阈值时,将切断连接。从而释放系统资源。这种技术以同样的方式考虑所有连接。这是典型的,进攻性的, 和正常的不寻常的,进攻性的, 和正常的。因此,没有建议采用这种方法。

      2. 延缓TCB分配方法
        在习惯的初始握手之后,服务器将需要为请求指定一个TCB(连接控制资源),通常需要200个字节以上。在正常连接形成时延迟分配TCB将有效地最大限度地减少使用服务器资源,使习惯的初始握手恢复正常。服务器将需要为请求指定一个TCB(连接控制资源),通常需要200个字节以上。在建立正常连接时延迟分配TCB将有效地最大限度地减少服务器资源的使用。

      3. 使用防火墙
        在向内部服务器(听众)发送SYN请求之前,防火墙验证了连接。

      为什么TCP需要握手三次?

      TCP是一个可靠的传输控制协议,三个握手是可靠数据传输可能提高传输效率的最起码次数。 RFC793, 通常称为TCP协议,提到RFC中所述的理由,因为:
      为确保可靠的数据传输,TCP议定书的双方必须保留一个序列号,以确定对方以前曾收到哪些数据包。

      例如:发送者传送包件(假设10字节大小),同时,已发送一个序列号(500号)。因此,当将数据包送交收件人时,"我已经收到你的数据包了 我给了你一个确认号码 (510=500+10) 通知发件人您可自由发送下一个数据包 。"从511开始的序号 "

      双方必须进行三次握手,才能相互告知序列号起始值,并确认对方收到了序列号起始值。

      如果你只握手两次, 只有第一个连接提案国的序列号才会被验证, 而对方所选的序列号将被忽略 。

      在三次握手之后,可以明显看出,通信双方都理解对方序号的初始价值,并确认对方知道其序号的起始价值,因此,第四次握手是多余的。

      TCP信号四次

      当 TCP 连接中断时, 共需要客户和用户验证断开连接的服务提供四个包。 在套接字程序程序中, 程序由客户或服务端执行关闭的用户启动 。

      由于TCP连接是全时的,每个方向都必须独立关闭。 主动关闭由第一当事方进行,被动关闭由第二当事方进行。

      在这里插入图片描述
      如上图所示,TCP要求三个分节建立连接,四个分节终止连接。
      (1) 申请过程最初是要求关闭,我们称之为“主动关闭”,TCP为此提供了FIN部分,表明数据已发送,申请过程已进入FIN-WAIT-1(终端等待1)。

      (二) 在FIN结束时,被动,发出确认报文。由于FIN的接收表明,接收的最终申请程序没有通过连接接收的进一步数据。接收者的地位已改为CLOSE-WAIT(近距离等待)。这是一个半封闭期。在主动关闭端, 没有进一步的数据可以发送 。另一方面,如果被动关闭端发送数据活动关闭结束仍然可以使用 。目前的状况将持续一段时间。也就是说,CLOSE-WAIT状态的长度。在主动关闭端收到确认信息后输入 FIN-WAIT-2(终止等待 2) 。

      (3) 在固定时间之后,被动关闭申请程序将关闭并关闭它,这导致其TCP交付了一个FIN, 表明它没有数据在固定时间之后发送通信,被动关闭申请程序将关闭并关闭它,从而导致其TCP交付了一个FIN, 表明它没有数据要发送。

      (4) FIN最后发件人发件人TCP(即主动关闭结束)的收件人承认FIN发送了ACK确认信。它也在时间-时间等待(等待)中。似乎TCP的连接还没有被放弃2MSL(最大生命期/最大部分生命期的最大生命期),MSL是任何IP数据报告可在互联网上使用的最大时间。每个TCP的实现都必须选择MSL值。RFC 1122 [Braden 1989] 建议2分钟。尽管如此,Berkelcy的成就一般已改变为30秒值。这意味着时间-WAIT条件持续1至4分钟。当相关的 TCB 退出运行关闭时,我们只是现在处于封闭状态。

      (5) 被动关闭停止一旦收到客户的确认即进入关闭状态,类似地,TCB的退出终止了TCP的连接,从可以看到,被动关闭结束终止TCP的连接比主动关闭结束早。

      因为每个方向都需要FIN和ACK因此,往往需要四个部分。我们列入限定词“通常”是因为第1步FIN有时随有效载荷一起传输;此外,步骤2和步骤3分节是从实施被动关闭这一目的中发出的。并入分章是一种选择。

      为什么TCP需要四波波?

      TCP是一种全时双重工作连接,必须在两端关闭,然后才能完全关闭。
      如果其中一方愿意签署该文件,但是,它可以读取另一方传送的数据。这篇文章是全球之声在线特稿的一部分。对方收到后,回复ACK报文。派对结束后 是时候说好话了发送FIN报文,对方回复ACK。两端都关闭,TCP 连接已终止 。

      拥有时空状态有什么意义?

      时代-WAIT状态的产生有两个目的。
      1. TCP连接被可靠地终止。
      2. 为发现和删除迟交的TCP报告提供足够的时间。

      看看时间等待的数量 :netstat -ant | grep TIME_WAIT | wc -l

      本文由 在线网速测试 整理编辑,转载请注明出处。

          热门文章

          文章分类