唯一确定tcp连接端点的是(唯一确定一个tcp连接)

      最后更新:2022-12-13 12:38:12 手机定位技术交流文章

      TCP是什么意思

      TCP是一种传输控制协议,是面向连接的、可靠的、基于字节流之间的传输层通信协议,由IETF的RFC 793定义。在简化的计算机网络OSI模型中,TCP完成第四层传输层所指定的功能,用户数据报协议(UDP)是同一层内另一个重要的传输协议。在因特网协议族(Internet protocol suite)里面,TCP层是在IP层上面,应用层下面的一个中间层。不同主机的应用层之间经常会要用到可靠的、像管道一样的连接,但是IP层不会提供这样的流机制,而是提供不可靠的包交换。扩展资料:当应用层向TCP层发送用于网间传输的、用8位字节表示的数据流,TCP则把数据流分割成适当长度的报文段,最大传输段大小(MSS)通常受该计算机连接的网络的数据链路层的最大传送单元(MTU)限制。之后TCP把数据包传给IP层,由它来通过网络将包传送给接收端实体的TCP层。TCP为了保证报文传输的可靠,就给每个包一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功收到的字节发回一个相应的确认(ACK);如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据(假设丢失了)将会被重传。参考资料:百度百科-TCP (传输控制协议)
      TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议。拓展资料:在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能,用户数据报协议是同一层内另一个重要的传输协议。在因特网协议族中,TCP层是位于IP层之上,应用层之下的中间层。不同主机的应用层之间经常需要可靠的、像管道一样的连接,但是IP层不提供这样的流机制,而是提供不可靠的包交换。功能:当应用层向TCP层发送用于网间传输的、用8位字节表示的数据流,TCP则把数据流分割成适当长度的报文段,最大传输段大小通常受该计算机连接的网络的数据链路层的最大传送单元限制。之后TCP把数据包传给IP层,由它来通过网络将包传送给接收端实体的TCP层。
      TCP:传输控制协议 (TCP:Transmission Control Protocol)传输控制协议 TCP 是 TCP/IP 协议栈中的传输层协议,它通过序列确认以及包重发机制,提供可靠的数据流发送和到应用程序的虚拟连接服务。与 IP 协议相结合, TCP 组成了因特网协议的核心。由于大多数网络应用程序都在同一台机器上运行,计算机上必须能够确保目的地机器上的软件程序能从源地址机器处获得数据包,以及源计算机能收到正确的回复。这是通过使用 TCP 的“端口号”完成的。网络 IP 地址和端口号结合成为唯一的标识 , 我们称之为“套接字”或“端点”。 TCP 在端点间建立连接或虚拟电路进行可靠通信。TCP 服务提供了数据流传输、可靠性、有效流控制、全双工操作和多路复用技术等。关于流数据传输 ,TCP 交付一个由序列号定义的无结构的字节流。 这个服务对应用程序有利,因为在送出到 TCP 之前应用程序不需要将数据划分成块, TCP 可以将字节整合成字段,然后传给 IP 进行发送。TCP 通过面向连接的、端到端的可靠数据报发送来保证可靠性。 TCP 在字节上加上一个递进的确认序列号来告诉接收者发送者期望收到的下一个字节。如果在规定时间内,没有收到关于这个包的确认响应,重新发送此包。 TCP 的可靠机制允许设备处理丢失、延时、重复及读错的包。超时机制允许设备监测丢失包并请求重发。TCP 提供了有效流控制。当向发送者返回确认响应时,接收 TCP 进程就会说明它能接收并保证缓存不会发生溢出的最高序列号。全双工操作: TCP 进程能够同时发送和接收包。 TCP 中的多路技术:大量同时发生的上层会话能在单个连接上时进行多路复用。
      TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能,用户数据报协议(UDP)是同一层内另一个重要的传输协议。在因特网协议族(Internet protocol suite)中,TCP层是位于IP层之上,应用层之下的中间层。不同主机的应用层之间经常需要可靠的、像管道一样的连接,但是IP层不提供这样的流机制,而是提供不可靠的包交换。
      两个核心协议:TCP(传输控制协议)和IP(网际协议)TCP使用三次握手协议建立连接。三次握手完成,TCP客户端和服务器端成功地建立连接,可以开始传输数据了。(HTTP是一个客户端和服务器端请求和应答的标准(TCP),它是建立在TCP协议之上的一种应用。)IP实现两个基本功能:寻址和分段。IP协议的作用主要有两个,一个是为每一台计算机分配IP地址,另一个是确定哪些地址在同一个子网络。IP协议是找到对方的详细地址,TCP协议是把安全的把数据传输给对方。
      TCP是什么意思

      计算机网络_运输层

      在IP层看来,通信的两端是两个主机,IP数据报的首部明确的标志了这两个主机的IP地址。但是两个主机之间的通信这种说法还不够清楚,这是因为真正进行通信的实体是在主机中的进程,是两个进程之间在交换数据。从而引出了运输层,从运输层的角度看来,通信的真正端点并不是主机而是主机中的进程(端到端的通信)。在一个主机中经常有多个应用进程同时分别和另一个主机的多个应用进程通信。这就表明了运输层有一个很重要的功能,复用和分用,应用层不同进程的报文通过不同的端口向下交到运输层,再往下就共用网络层提供的服务。“运输层提供应用进程间的逻辑通信”。“逻辑通信”的意思是:运输层之间的通信好像是沿水平方向传送数据。但事实上这两个运输层之间并没有一条水平方向的物理连接。TCP/IP 的运输层有两个不同的协议:由此可见两个计算机中的进程要相互通信,不仅要知道对方的IP地址,还要知道对方的端口号。如果接收方UDP发现收到的报文中的目的端口号不正确(即不存在对应于该端口的号的应用进程),就丢弃该报文,并由网际控制报文协议ICMP发送端口不可达差错报文给发送方。在计算检验和时,临时把“伪首部”和 UDP 用户数据报连接在一起得到一个临时的数据报,它不向下传递也不向上递交。伪首部仅仅是为了计算检验和。UDP计算检验和的方法和IP数据报首部检验和方法相类似。但不同的是,IP数据报的检验和只检验IP数据报的首部,但UDP的检验和是把首部和数据部分一起检验计算UDP检验和的例子:在发送方,先把全0放入检验和字段,再把伪首部以及UDP用户数据报看成是许多16位的字串接起来。若UDP用户报的数据部分不是偶数个字节,则要填入一个全零字节(先不发送)。然后按照二进制反码计算出这些16位字的和。将此和的二进制反码写入检验和字段后,就发送这样的UDP数据报。在接收方,把收到的UDP数据报连通伪首部(以及可能填充全零字节)一起,按二进制反码求这些16位字的和。当无差错时其结果应为全1(原本的检验和为0,封装成数据报后再次相加的时候就多个检验和反码相加,所以无差错时结果为1)。每一条TCP连接唯一地被通信两端的两个端点(即两个套接字)所确定,即:TCP发送的报文段是交给IP层传输的。但IP层只提供尽最大努力服务,也就是说,TCP下面的网络所提供的是不可靠传输,因此,TCP必须采用适当的措施才能使得两个运输层之间的通信变得可靠。在这样的理想传输条件下,不需要采取任何措施就能够实现可靠传输。然而实际的网络都不具备以上两个理想的条件。但我们可以使用一些可靠传输协议,当出现差错时让发送方重传出现差错的数据,同时在接收方来不及处理收到的数据时,及时告诉发送方适当的降低发送数据的速度,这样一来,本来是不可靠的传输信道就能够实现可靠传输。停止等待协议的优点是简单,但缺点是信道利用率太低。假定AB之间有一条直通的信道来传送分组这里的TD是A发送分组所需要的时间(显然TD = 分组长度 / 数据速率)再假定TA是B发送确认分组所需要的时间(A和B处理分组的时间都忽略不计)那么A在经过TD+RTT+TA时间后才能发送下一个分组,这里的RTT是往返时间,因为只有TD是采用来传输有用的数据(这个数据包括了分组首部,如果可以知道传输更精确的数据的时间,可以计算的更精确),所有信道利用率为为了提高传输效率,发送方可以不使用低效率的停止等待协议,而是采用流水线传输:就是发送方可以连续的发送多个分组,不必每发完一个分组就停下来等待对方的确认。这样可使信道上一直有数据不间断地在传送。显然这种传输方式可以获得很高的信道利用率当时使用流水线传输时,就要使用下面介绍的连续ARQ协议和滑动窗口协议滑动窗口协议比较复杂,是TCP协议的精髓所在,在这里先给出ARQ协议最基本的概念,但不涉及到许多细节问题。位于发送窗口的分组都可以连续的发送出去,而不需要等待对方的确认,发送方每收到一个确认,就把发送窗口向前滑动一个分组的位置。详细可以见P201TCP虽然是面向字节流的,但是TCP传送的数据单元却是报文段(可以看上述TCP面向流的概念),而且TCP的全部功能都体现在它的首部中各个字段。详解请见P206,注意图中的后沿,前沿从下图可以看出来,要描述一个发送窗口的状态需要三个指针:P1,P2,P3有很多信息见P208,这里不赘述发送方的应用进程把字节流写入TCP的发送缓存,接收方的应用进程从TCP的接收缓存中读取字节流。下面进一步讨论前面讲的窗口和缓存的关系发送缓存发送窗口通常只是发送缓存的一部分,已被确认的数据应当从发送缓存中删除,因此发送缓存和发送窗口的后沿是重合的。发送应用程序最后写入发送缓存的字节减去最后被确认的字节,就是还保留在发送缓存中被写入的字节。发送应用程序必须控制写入缓存的速率,不能太快 ,否则发送缓存就会没有存放数据的空间。如果收到的分组被检测出有差错,则要丢弃。如果接收应用程序来不及读取收到的数据,接收缓存最终就会被填满,使接收窗口减少到零。反之,如果接收应用程序能够及时从接收缓存中读取收到的数据,接收窗口就可以增大,但最大不能超过接收缓存的大小。TCP才用了一种自适应算法,它记录一个报文段发出的时间,以及收到相应的确认的时间。这两个时间之差就是报文段的往返时间RTT。TCP 保留了 RTT 的一个加权平均往返时间 RTTs(这又称为平滑(smooth)的往返时间,因为是加权平均,所以是平滑的)。第一次测量到 RTT 样本时,RTTS 值就取为所测量到的 RTT 样本值。以后每测量到一个新的 RTT 样本,就按下式重新计算一次 RTTS:显然,RTO 应略大于上面得出的加权平均往返时间 RTTsRFC 2988 建议使用下式计算 RTO:RTTD 是 RTT 的偏差的加权平均值,他与RTTs和新的RTT样本之差有关。RFC 2988 建议这样计算 RTTD。第一次测量时,RTTD 值取为测量到的 RTT 样本值的一半。在以后的测量中,则使用下式计算加权平均的 RTTD:β是个小于 1 的系数,其推荐值是 1/4,即 0.25。为了解决上面那个问题,Karn提出了一个算法在计算平均往返时间 RTT 时,只要**报文段重传了,就不采用其往返时间样本。这样得出的加权平均平均往返时间 RTTS 和超时重传时间 RTO 就较准确。 **但是,这又有了新的问题、设想出现这样的情况:报文段的时延突然增大了很多。因此在原来得出的重传时间内,不会收到确认报文段。于是就重传报文段。但根据Karn算法,不考虑重传的报文段的往返时间样本。这样,超时重传时间就无法更新。报文段每重传一次,就把 RTO 增大一些:系数 γ 的典型值是 2 。当不再发生报文段的重传时,才根据报文段的往返时延更新平均往返时延 RTT 和超时重传时间 RTO 的数值。实践证明,这种策略较为合理。接收方收到了和前面的字节流不连续*的两个字节块(只是未按序号,它是无差错的)如果这些字节的序号都在接收窗口之内,那么接收方就先收下这些数据,但要把这些信息准确地告诉发送方,使发送方不要再重复发送这些已收到的数据。和前后字节不连续的每一个字节块都有两个边界:左边界和右边界。图中用四个指针标记这些边界。第一个字节块的左边界 L1 = 1501,但右边界 R1 = 3001。左边界指出字节块的第一个字节的序号,但右边界减 1 才是字节块中的最后一个序号。第二个字节块的左边界 L2 = 3501,而右边界 R2 = 4501。详见P211一般说来,我们总是希望数据传输得更快一些。但如果发送方把数据发送得过快,接收方就可能来不及接收,这就会造成数据的丢失。流量控制(flow control)就是让发送方的发送速率不要太快,既要让接收方来得及接收,也不要使网络发生拥塞。利用滑动窗口机制可以很方便地在 TCP 连接上实现流量控制。A 向 B 发送数据。在连接建立时,�B 告诉 A:“我的接收窗口 rwnd = 400(字节)”。看下TCP首部窗口字段的用处接收方的主机B一共进行了3次流量控制(蓝线)考虑一种情况,B向A发送了零窗口的报文段后不久,B的接收缓存又有了一些存储空间。于是B向A发送了rwnd = 400的报文段,然而这个报文段在传输过程中丢失了。A一直等收到B发送非零窗口的通知,B也一直等A发送数据来,就形成了死锁。下面的持续计时器就是为了打破死锁僵局的应用进程把数据传送到TCP发送缓存后,剩下的发送任务就由TCP来控制了。可以用不同的机制来控制 TCP 报文段的发送时机:至于如何控制发送的 时机 详见P213在某段时间,若对网络中某资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏——产生拥塞(congestion)出现资源拥塞的条件: 对资源需求的总和> 可用资源若网络中有许多资源同时产生拥塞,网络的性能就要明显变坏,整个网络的吞吐量将随输入负荷的增大而下降。解决拥塞的要点是平衡,要让整个系统的性能想匹配(P214)。横坐标为提供的负载,代表单位时间内输入给网络的分组的数目(也叫作输入负载或网络负载),纵坐标是吞吐量,代表单位时间内从网络输出的分组数目。由于缺少缓存空间而被丢弃的分组的百分数,平均队列长度,超时重传的分组数,平均分组时延,分组时延的标准差等,这些指标的上升都标志着拥塞的增长。方便起见,我们用报文段的个数作为窗口大小的单位慢开始门限 ssthresh 的用法如下:拥塞避免算法的思路是让拥塞窗口 cwnd 缓慢地增大,即每经过一个往返时间 RTT 就把发送方的拥塞窗口 cwnd 加 1,而不是加倍,使拥塞窗口cwnd 按线性规律缓慢增长,比慢开始算法的拥塞窗口增长速率缓慢很多。网络出现拥塞时当 TCP 连接进行初始化时,将拥塞窗口置为 1。图中的窗口单位不使用字节而使用报文段。慢开始门限的初始值设置为 16 个报文段,即 ssthresh = 16。发送端的发送窗口不能超过拥塞窗口 cwnd 和接收端窗口 rwnd 中的最小值。我们假定接收端窗口足够大,因此现在发送窗口的数值等于拥塞窗口的数值。下面的执行步骤就是按照折现上的点的顺序
      计算机网络_运输层

      在tcp/ip协议栈中,下面哪一组选项能够唯一地确定一个tcp连接

      你没给出备选项啊, 应该是: 源IP+源端口+目标IP+目标端口
      在tcp/ip协议栈中,下面哪一组选项能够唯一地确定一个tcp连接

      TCP协议解析

      主要特点:面向连接、面向字节流、全双工通信、通信可靠。优缺点:应用场景:要求通信数据可靠时,即 数据要准确无误地传递给对方。如:传输文件:HTTP、HTTPS、FTP等协议;传输邮件:POP、SMTP等协议ps:首部的前 20 个字节固定,后面有 4n 字节根据需要增加。故 TCP首部最小长度 = 20字节(最大60个字节)。TCP报头中的源端口号和目的端口号同IP数据报中的源IP与目的IP唯一确定一条TCP连接。重要字段:客户端与服务器来回共发送三个TCP报文段来建立运输连接,三个TCP报文段分别为:(1)客户端A向服务器B发送的TCP请求报段“SYN=1,seq=x”;(2)服务器B向客户端A发送的TCP确认报文段“SYN=1,ACK=1,seq=y,ack=x+1”;(3)客户端A向服务器B发送的TCP确认报文段“ACK=1,seq=x+1,ack=y+1”。ps:在建立TCP连接之前,客户端和服务器都处于关闭状态(CLOSED),直到客户端主动打开连接,服务器才被动打开连接(处于监听状态 = LISTEN),等待客户端的请求。TCP 协议是一个面向连接的、安全可靠的传输层协议,三次握手的机制是为了保证能建立一个安全可靠的连接。通过上述三次握手,双方确认自己与对方的发送与接收是正常的,就建立起一条TCP连接,即可传送应用层数据。ps:因 TCP提供的是全双工通信,故通信双方的应用进程在任何时候都能发送数据;三次握手期间,任何1次未收到对面的回复,则都会重发。为什么两次握手不行呢?结论:防止服务器接收了早已经失效的连接请求报文,服务器同意连接,从而一直等待客户端请求,最终导致形成死锁、浪费资源。ps:SYN洪泛攻击:(具体见下文)为什么不需要四次握手呢?SYN 同步序列编号(Synchronize Sequence Numbers) 是 TCP/IP 建立连接时使用的握手信号。在客户机和服务器之间建立正常的 TCP 网络连接时,客户机首先发出一个 SYN 消息,服务器使用 SYN-ACK 应答表示接收到了这个消息,最后客户机再以 ACK确认序号标志消息响应。这样在客户机和服务器之间才能建立起可靠的 TCP 连接,数据才可以在客户机和服务器之间传递。如何来解决半连接攻击?如何来解决全连接攻击?请注意,现在 TCP 连接还没有释放掉。必须经过时间等待计时器设置的时间 2MSL(MSL:最长报文段寿命)后,客户端才能进入到 CLOSED 状态,然后撤销传输控制块,结束这次 TCP 连接。当然如果服务器一收到 客户端的确认就进入 CLOSED 状态,然后撤销传输控制块。所以在释放连接时,服务器结束 TCP 连接的时间要早于客户端。TCP是全双工的连接,必须两端同时关闭连接,连接才算真正关闭。简言之,客户端发送了 FIN 连接释放报文之后,服务器收到了这个报文,就进入了 CLOSE-WAIT 状态。这个状态是为了让服务器端发送还未传送完毕的数据,传送完毕之后,服务器才会发送 FIN 连接释放报文,对方确认后就完全关闭了TCP连接。举个例子:A 和 B 打电话,通话即将结束后,A 说“我没啥要说的了”,B回答“我知道了”,但是 B 可能还会有要说的话,A 不能要求 B 跟着自己的节奏结束通话,于是 B 可能又巴拉巴拉说了一通,最后 B 说“我说完了”,A 回答“知道了”,这样通话才算结束。ps:设想这样一个情景:客户端已主动与服务器建立了 TCP 连接。但后来客户端的主机突然发生故障。显然,服务器以后就不能再收到客户端发来的数据。因此,应当有措施使服务器不要再白白等待下去。这就需要使用TCP的保活计时器。基本原理:tcp11种状态及变迁其实基本包含在正常的三次握手和四次挥手中,除开CLOSING。正常的三次握手包括4中状态变迁:服务器打开监听(LISTEN)->客户端先发起SYN主动连接标识->服务器回复SYN及ACK确认->客户端再确认即三次握手TCP连接成功。这里边涉及四种状态及变迁:正常的四次握手包含6种tcp状态变迁,如主动发起关闭方为客户端:客户端发送FIN进入FIN_WAIT1 -> 服务器发送ACK确认并进入CLOSE_WAIT(被动关闭)状态->客户端收到ACK确认后进入FIN_WAIT2状态 -> 服务器再发送FIN进入LAST_ACK状态 -> 客户端收到服务器的FIN后发送ACK确认进入TIME_WAIT状态 -> 服务器收到ACK确认后进入CLOSED状态断开连接 -> 客户端在等待2MSL的时间如果期间没有收到服务器的相关包,则进入CLOSED状态断开连接。CLOSING状态:连接断开期间,一般是客户端发送一个FIN,然后服务器回复一个ACK,然后服务器发送完数据后再回复一个FIN,当客户端和服务器同时接受到FIN时,客户端和服务器处于CLOSING状态,也就是此时双方都正在关闭同一个连接。在进入CLOSING状态后,只要收到了对方对自己发送的FIN的ACK,收到FIN的ACK确认就进入TIME_WAIT状态,因此,如果RTT(Round Trip Time TCP包的往返延时)处在一个可接受的范围内,发出的FIN会很快被ACK从而进入到TIME_WAIT状态,CLOSING状态持续的时间就特别短,因此很难看到这种状态。我们知道网络层,可以实现两个主机之间的通信。但是这并不具体,因为,真正进行通信的实体是在主机中的进程,是一个主机中的一个进程与另外一个主机中的一个进程在交换数据。IP协议虽然能把数据报文送到目的主机,但是并没有交付给主机的具体应用进程。而端到端的通信才应该是应用进程之间的通信。应用场景:UDP协议比TCP协议的效率更高,TCP协议比UDP协议更加安全可靠。下面主要对数据传输出现错误/无应答/堵塞/超时/重复等问题。注意:TCP丢包:TCP是基于不可靠的网路实现可靠传输,肯定会存在丢包问题。如果在通信过程中,发现缺少数据或者丢包,那边么最大的可能性是程序发送过程或者接受过程中出现问题。总结:为了满足TCP协议不丢包,即保证可靠传输,规定如下:注意:TCP丢包有三方面的原因,一是网络的传输质量不好,二是安全策略,三是服务器性能瓶颈先理解2个基础概念:发送窗口、接收窗口工作原理:注意点:关于滑动窗口的知识点:滑动窗口中的数据类型:ARQ解决的问题:出现差错时,让发送方重传差错数据:即 出错重传类型:流量控制和拥塞控制解决的问题:当接收方来不及接收收到的数据时,可通知发送方降低发送数据的效率:即 速度匹配流量控制:注意:拥塞控制:慢开始与拥塞避免:快重传和快恢复:补充:流量控制和拥塞控制的区别什么情况造成TCP粘包和拆包?解决TCP粘包和拆包的方法:传输层无法保证数据的可靠传输,只能通过应用层来实现了。实现的方式可以参照tcp可靠性传输的方式,只是实现不在传输层,实现转移到了应用层。最简单的方式是在应用层模仿传输层TCP的可靠性传输。下面不考虑拥塞处理,可靠UDP的简单设计。https://www.jianshu.com/p/65605622234bhttp://www.open-open.com/lib/view/open1517213611158.htmlhttps://blog.csdn.net/dangzhangjing97/article/details/81008836https://blog.csdn.net/qq_30108237/article/details/107057946https://www.jianshu.com/p/6c73a4585eba
      TCP协议解析

      TCP/IP连接的唯一性如何确定?

      TCP/IP唯一性含除地址和端口外还有一个时间上的标记才可完全确立。 对TCP而言在三次握手时的SYN标志会使用上一个ISN值,这个值是使用32位计数器,由0-4294967295,每一次连接都会分配到一个ISN值,连接双方对这个值会记录共识,假如这个值不一,就说明了这个连接已超时或无效甚至是被人恶意攻击冒充连接。
      是由一个四元组唯一确定的,包括本地IP,本地端口,远程IP,远程IP,远程端口。
      FamDestiny的回答,最好在加上一个时间,这样 肯定是唯一的。
      ip地址端口地址物理地址
      TCP/IP连接的唯一性如何确定?

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/47350.html

          热门文章

          文章分类