最后更新:2022-05-03 04:14:29 手机定位技术交流文章
有关算法和 Linux 命令的许多文章以前已经发表过, 今天我们正在学习网络协议。 不管你是客户还是服务供应商, 网络协议是知识和理解的重要部分。

虽然学习网络实际上没有帮助编码, 但处理网络连通性对您有很大帮助。 让我们从下面学习吧。 let's go!

在全世界,各种计算机运行着各种对等体操作系统。 这些计算机在传达同一信息的同时,也采用了多种多样的方法。
计算机用户认识到,计算机只是单人作战行动,不发挥任何有意义的作用。 只有加入计算机,计算机才能充分发挥其潜力。
因此,每个人都尽其所能。将电脑与电缆连接起来。但仅仅在一起是不够的。就好像两个人 说不同的语言相遇一样。完全不能交流信息。因此,为了进行交流,它们必须确定共同点。TCP/IP就是这样来的。
TCP/IP不是合同。这是一个对盟国的口头术语。它载有《因特网议定书》以及其他议定书。IMCP 协议,TCP 协议,我们更适应https,ftp和其他协议。电脑有了这些,和学习新语言相似与其他计算机终端的通信是完全免费的。今天,我们将了解TCP议定书。
TCP(传输控制协议)是连接的、可靠的、以字节为基础的传输层通信协议,完成网络模式中第四层传输的责任,详情如下。
TCP协议有以下特点:

国际标准化组织国际标准化组织(标准化组织)于1981年正式提出了网络系统结构的七级参考模式,又称 " 开放系统互联模式 ",采用这一标准模式使各种计算机网络更加紧密,大大促进了网络通信的发展。
ISO层网络模型的层层以及与主要功能相对应的通常设备和传输装置如下:

这一七层网络概念还将囊括传输期间的数据,如下所示:

当主机必须在ISO层网络模型中传输用户数据(数据)时,数据首先通过应用层界面进入应用层。
首先我想审查一些最典型的报纸头条:
在应用级别上,用户的数据附在应用层页眉AH之后,形成应用层协议数据单元PDU,随后传送到表达层下层。
这意味着该层与上层的数据格式无关,而是将整个层提供的数据包作为包装处理,即随后在添加页眉PH标明该层之后提供给会议底部。
同样,对话层、传输层、网络层(假设TCP传输)和应用层TCP数据+IP头、数据链层(较高的TCP数据+IP头称为框架数据)。换句话说,框架+框架+框架+框架+框架结尾(CRC)还必须在发送给上层的数据中包括他们自己的头条标题。
数据链层还将将传送到网络层的数据附在数据链层的末尾,以产生最后一套数据,它们是:会议页头SH、传输页头TH、网络页头NH和数据链接页头DH。
当数据框架通过物理层传送到目标主机的物理层时,主机的物理层将数据框架传送到更高的数据链接层,该数据链接层负责消除框架头和尾(然后是数据验证)。如果数据为无误数据,则发送到上网络层。
同样,网络层、传输层、会话层、表达式层和应用层也都执行相似的任务。 最后,原始数据被传输到目标主机的专门应用中。
5级网络结构也得到了广泛阐述,5级网络每个层次的名称和宗旨详述如下:
前两种模式是没有经常使用的学术概念,有四级模式采用最全面的TCP/IP分层模式。

TCP/IP分层分层的四个层次各履行以下职能:
综上所述,TCP协议位于网络OSI结构第七层第四传播层。知识产权协议在网络的第三级运作。ARP协议位于数据链层第二级;第二级数据称为框架。包装是三楼数据的名称。TCP的“部分”是第四层数据, 所有的程序数据首先被打包到 TCP的“部分”。
TCP 标记将随后将数据包装到 IP 包包中, 然后再包装到 以太网框架, 将数据还给柜台, 同时解析自己的协议, 最后将数据转换到更高的程序处理级别 。
在您能够理解 TCP 连接之前, 您必须先学习 TCP 头版格式。 在 TCP 连接建立后, TCP 软件包需要交换和处理数据。 请查看下面的 TCP 头版格式 。

TCP头部的每个字段对于管理TCP连接和调节数据流至关重要。
16位位端口号告知主机电文的来源(源端口)以及电文发送到哪个高级协议或应用程序(目的地端口)。
对于 TCP 连接,客户通常使用系统生成的临时端口号,服务器则使用已知的服务端口号,所有已知服务的端口号在/etc/services文件中都有定义。
在TCP对话(从TCP连接到分手)中,每个传输方向每个字节流的字节数为32比特。
另一方对TCP案文的回答实际上是收到TCP部分加1的序号值。
4 页眉长度:表示TCP头的32位(4位数),导致60位位数TCP头。
六位标记由下列要素组成:
16 位窗口大小( 窗口大小): 是 TCP 流量控制工具 。这里说的窗口,此处提及收件人通知窗口(收件窗口,RWND)。它向另一方通报TCP在缓冲区末端仍能保存多少位数据。因此,另一方对数据的传输速度拥有控制权。
16位校验和(TCP校验和):由发件人放入,TCP 条目的 CRC 算法由接收器执行 。确定TCP文本是否在传输过程中销毁。注意,检查范围包括TCP头部和TCP头部。也包括数据部分。这也是TCP可靠传输的重要保证。
16位紧急指示器(紧急指示器)出现正偏差。将序列号字段值添加到上次紧急数据的下一个字节。确切地说,此值表示紧急指示器偏离当前序列号 。可以称之为"紧急偏差"TCP的紧急指示器是一种将紧急数据从一端传送到另一端的技术。
最后,谨记以下各点:
TCP的软件包没有IP地址,因为它是由IP层处理的,但它确实有一个源端和目的地端口。
TCP连接要求一个四方小组(src_ip、rc_port、dst_ip、dst_port)发出信号,表示同一连接正是同一个五美元集团,另一个是协议,但它只是提到四方小组,因为它只强调TCP议定书。

Sequence Number这是软件包的序列号,用来解决网络包装问题。
Acknowledgement Number这是ACK 用来确认收据 用来解决包裹没有丢掉的问题
Window Advertised Window这是众所周知的幻灯片窗口, 解决交通控制问题。
TCP Flag此类包主要用于更改 TCP 状态机器 。
TCP与TCP所谓的“连接”相同, 但它只是维持通讯两侧的“连接状态”,
让我们看看众所周知的三次握手。

TCP 连接创建仅指三个握手器,而连接中断则指四个波浪。
在TCP/IP议定书的范围内,TCP议定书提供了可靠的连接服务,需要三手握手才能建立连接。
三次握手后,客户端和服务器开始交流数据,即固定站立。
如果服务器端由于各种因素没有获得 Clit back ACK,那么,目前正在建立这一联系。于是,如果服务器在特定时间内没有收到它,SYN_ACK 由 TCP 在服务器端重复 。
在Linux下,重试次数默认为 5 个 。每次从1到1, 重试之间的差幅就会翻一番。5次重试之间的时间间隔为1、2、4、8、16和18。总共31s,到第五次,32人将意识到,第五次为时已晚。如果这是第五次再次传送 这是最后一次客户尚未以ACK回应。此连接将被服务器端端的 TCP 终止 。
攻击者冒充SYN报告 使用不同的IP地址服务供应商收到SYN的每条信息。因此,建立了SYN_RCVD州。尽管如此,服务供应商还是发送了ACK + SYN信息。无法从未知的 IP 主机获得确认回复,随着时间的推移,SYN接收队列(未连接的队列)将配备服务。因此服务器无法为普通用户服务 。
设置tcp_syncookies = 1当填充 SYN 队列时, TCP 将使用源地址端口、 目标地址端口和时间戳生成一个独特的序列号( 也称为 cookie ) 。
如果攻击者没有反应,连接正常,SYN Cookie将被送回,允许服务器通过cookie连接。
设置netdev_max_backlog,设置链接队列的大小。当网卡接收数据包的速度快于内核处理速度时,它们会排队。
通过设置netdev_max_backlog作为连接SYN_RCVD 状态的最大连接数
通过设置tcp_abort_on_overflow。值将新的 SYN 立即返回 RST,如果连接超过处理能力,则丢弃连接。

TCP的半封闭想法是指TCP连接是全时的(可以同时传送和接收),因此当连接关闭时,传输必须关闭并以两种方式发送。
客户端对服务器 FIN 加密 TCP 消息, 服务器以确认 ACK 消息和 FIN 消息回复服务器。 当客户端对 ACK 消息( 四手握) 回复时, 程序结束 。
在建立联系时,通信方必须相互承认对方通信的最长期限(MSS)才能进行通信。
其SYN长度一般为MTU减去固定的IP页眉和TCP页眉。对于一个以太网,通常使用1460字节。当然,对于非本地IP地址,这很可能只有536字节。而且,如果中继传输网络的MSS水平较低,它会缩水的
序列号的初始值主要用于连接的三个握手点。 通信的双方需要将自己初始化的塞尔维亚 Numbe 通知对方, 因此它被称为 SYN 。
这一编号将在随后的数据传输中用作序列号,以保证在应用层收到的数据不会被网络传输问题混淆(TCP将使用这个序列号来压缩数据)。
因为TCP是全时的 所以发件人和接收人需要FIN和ACK
只有一方是被动的, 使得它看起来被挥动了四次。 如果双方同时断开, 他们就会进入关闭状态, 然后是时间- 时间- 时间- WAIT 状态 。
Time_WAIT是一个非常重要的状态,正如你从上面的解释中可以看到的,但是如果它连接在一个巨大的、同时存在的短路上,它对于时间_WAIT来说太过分了。过度使用Time_WAIT可以带来大量的内存和港口资源。
要重新使用Time_WAIT中的套接字来连接下一个连接, 请设置 tcp_ tw_reuse=1 。
记住一件事:只有客户端( 与赞助者相关联) 才可以被 tcp_ tw_reuse 使用 。因为开启了该功能,当连接 () 方法被使用时,要使用新连接, 内核将随机定位与时间等待状态超过一秒钟的连接 。
使用 tcp_timestamps=1 选项,还有一个前提,必须使 TCP 时间戳支持成为可能。这次印章信息在TCP头部的“选项”中。用于存储TCP发件人目前的时间戳以及从同行收到的最近的时间戳。
由于纳入了时间戳,先前所述的2MSL问题不复存在,因为由于时间戳已经过期,将自然放弃重复的数据包。
如果系统连接在Time_WAIT中,如果系统超过这个值,则系统将重置后一个Time_WAIT连接状态。
这种方法非常具有攻击性,不治症状,造成的问题远多于解决问题,不建议使用。
看看众所周知的TCP状态流动图。

CLOSED 状态: 代表原始状态 。
服务器端的一个套接字正在监听并可连接到 。
SYN_SENT状态:服务器一旦监听,客户在连接CONNECT时发出SYN信息,客户在等待客户确认时进入SYN_SENT状态。
SYN_RCVD 状态:服务器接收了 SYN 消息 。在正常情况下,在启动 TCP 连接时, 此状态是服务器端套接字的中间状态, 贯穿三次握手会话 。很短暂,很难看到这一状况,主要使用网络查询工具Netstat。因此这种状态时,收到客户的ACK留言后它将被标为固定的标志。
成立后的国家表示,这种联系已经存在。
FIN_WAIT_1 状态:在确定连接后,其中一方请求在另一方提交FIN呈件之前终止连接。
当插座位于已建状态时, 它位于FIN_WAIT_ 1 状态 。它想主动关闭连接,FIN的消息传到另一边了此套接字随后将标记为 FIN_ WAIT_ 1 。当对立方对ACK报告作出反应时插入 FIN_WAIT_2 状态代码 。
当然,在典型情况下,不论情况如何,另一方应迅速对ACK报告作出反应,因此FIN_WAIT_1状态通常不那么明显,尽管FIN_WAIT_2状态在净数据中可以看到。
FIN_WAIT_State2:实际上,FIN_WAIT_2指的是半连接状态,即一方要求终止连接,但另一方也通知我,目前我有一些数据要转交你们,以后终止连接。
时间:已收到来自对面的FIN呈文。然后我发了《ACK报告》等待2MSL恢复到关闭状态如果状态是 FIN_WAIT_ 1, 则状态为 FIN_ WAIT_ 1 。当我从另一边收到消息 上面有FIN和ACK的标志您可以输入时间- WAIT 状态 。而不是通过 FIN_WAIT_2 状态 。
这是一个更显著的状态。在实践中,这应该是少见的。正常情况下,在发送FIN信息时,期望从另一方接收(或同时接收)ACK信息是可以接受的。接收对方的 FIN 信息并作出回应 。不过,结案通知你,一旦你提交了芬兰金融情报处的报告,另一方没有向ACK提供报告。相反,相反的一端收到了FIN的讯息。
如果双方几乎同时关闭插座,双方将同时发送FIN信息,插座将处于关闭状态,表示双方将结束插座连接。
CLOSE_WAIT 表示系统正在等待关闭。 当对方关闭插座并向自己发送FIN信息时, 系统肯定会对 ACK 信息作出反应, 并进入 CLOSE_WAIT 状态 。
接下来呢,你们真正需要考虑的就是 你们是否还有数据可以相互传递如果没有,因此您也可以关闭此插头 。互相传递FIN的讯息即关闭连接 。在CLOSE-WAIT州,需要做的事情 正在等待你 与互联网断开。
LAST_ACK的状况比较容易理解,因为当事方在提交FIN提交材料并最终等待另一方的ACK提交材料之后被动地关闭了它。
CLOSED可用状态:收到ACK提交材料后,该系统将能够进入CLOSED可用状态。
2MSL 等待状态: 在 FIN_WAIT_2 发布最后一份 ACK 数据报告后, 输入 Time_WAIT 状态, 该数据报告是为了防止最后一次握手被转发到另一侧 。
由于插座 2MSL 条件,应用程序无法在 2MSL 时间里两次使用同一个锁链 。更适合客户程序但是,就服务计划(httpd)而言,它的所有服务总是连接到同一个港口。以2MSL为例,当您启动 httpd 时, 将会有一个错误( 插头正在使用 ) 。
为了绕过这个错误,服务器引入了安静时间的想法,这意味着虽然服务器可以在2MSL时间段内重新启动,但服务器必须耐心等待2MSL连接。
FIN Wait_ State:这是众所周知的半封闭状态,当连接在客户端和服务器之间两次握手后关闭时,就会出现这种情况。
在此状态下, 应用程序也可以接收数据 。 数据无法交付, 但客户端可能在 FIN_ WAIT_ 2 中, 服务器可能在 STAP_ CLOSE 中, 直到应用程序级别决定关闭它 。
RST 同时打开并关闭连接: RST 是关闭连接的另一种方法, 应用程序应该能够确定 RST 软件包的有效性, 即如果该软件包意外终止, 而同时打开和关闭是两个不寻常的 TCP 状态, 不太可能发生 。
本研究的重点是网络分层模式、各层的作用以及数据包的形成和无包装方式,还彻底审查了TCP包件结构,建立和中断了TCP连接。
TCP 三次握手是必要的,因为TCP在连接建立之前是不会启动的,TCP 三次握手也可能有异常,只有三次完全理解握手才能有效解决。
同样重要的是,TCP波浪四倍,往往接受和切断服务器的连接。 对断线异常和过多的服务器请求的反应只有在TCP波幅四倍之后才能应对这些困难。
本文由 在线网速测试 整理编辑,转载请注明出处。