- ♂️ 作者:海码007
- 专栏:计算机四大基础专栏
- 其他章节:网络快速入门系列、计网概述、计网应用层详解、计网Web和HTTP、计网FTP、计网EMail、计网DNS、计网P2P
- 标题:【计算机网络 TCP】 中科大笔记 (十 二)
- ❣️ 寄语:书到用时方恨少,事非经过不知难。
- 最后:文章作者技术和水平有限,如果文中出现错误,希望大家能指正
其实之前就已经学了 TCP
协议了,但是只是概略的学习,今天就详细的学习一下 TCP
协议的原理。
参考文章:知乎
TCP(Transmission Control Protocol)
是一种面向连接、点到点、可靠、全双工的传输层协议。以下是TCP协议的主要特性:
字节流的数据是没有字符编码的,所以想以正确方式进行输出打印,还需要进行正确的解码操作
)总体而言,TCP提供了一种高度可靠的数据传输服务,适用于那些对数据可靠性要求高、能够容忍一些延迟的应用,例如文件传输、Web浏览等。 TCP的特性和机制确保了数据的完整性、有序性和可靠性。
他们三者描述了通信设备之间信息流动的方向和能力。
全双工通信(Full-Duplex Communication)
在全双工通信中,通信的双方可以同时发送和接收数据,而且这两个方向的通信是相互独立的。这意味着在同一时间内,设备 A 可以发送数据给设备 B,同时设备 B 也可以发送数据给设备 A,实现了双方之间的双向通信。电话对讲机、互联网电话和计算机网络中的TCP协议等都是全双工通信的例子。
单工通信(Simplex Communication)
在单工通信中,通信的双方只能有一个方向的通信。其中一个设备只能发送数据,而另一个设备只能接收数据,不能同时发送和接收。通信是单向的,类似于广播或电视广播,其中信息只能从一个地方传输到另一个地方,而反向通信是不可行的。
半双工通信(Half-Duplex Communication)
在半双工通信中,通信的双方可以在不同的时间段内进行双向通信,但不能同时进行。设备 A 在某一时刻发送数据给设备 B,然后在另一时刻设备 B 发送数据给设备 A。对讲机通信就是半双工通信的一个例子。
总结
全双工通信: 双方可以同时发送和接收数据,实现双向通信。
单工通信: 通信双方只能有一个方向的通信,不能同时发送和接收。
半双工通信: 双方可以进行双向通信,但不能同时进行,需要切换发送和接收的方向。
选择使用哪种通信模式取决于特定的应用需求和通信设备的能力。在许多实际应用中,全双工通信更为常见,因为它提供更高的灵活性和效率。
TCP报文的Body部分就是存储的应用层的数据。例如应用层是HTTP协议,那么TCP报文的Body就是存储的请求报文或者响应报文。
TCP(Transmission Control Protocol)报文段是在TCP通信中传输数据的基本单元。TCP报文段的结构如下:
应用层数据
的部分。可以是0个或多个字节。TCP报文段的头部是固定长度的,但其选项和数据部分的长度是可变的。报文段的结构提供了对数据传输的控制和管理,包括流量控制、错误检测、序号和确认号的管理等。除了数据部分之外,TCP报文段的所有信息都包含在TCP报文头部。
TCP(Transmission Control Protocol)是一种在IP(Internet Protocol)网络上实现可靠数据传输的协议。IP本身是一种无连接、不可靠的数据包交换协议,它主要负责在网络中传递数据包,并将数据包从源地址传输到目标地址。然而,TCP在IP的基础上提供了一种可靠的、面向连接的通信服务。
下面是TCP如何在IP不可靠的基础上实现可靠数据传输的基本原理:
建立连接(Three-Way Handshake):
可靠数据传输:
流量控制(Flow Control):
拥塞控制(Congestion Control):
顺序控制:
连接的关闭(Four-Way Handshake):
通过这些机制,TCP实现了在IP网络上的可靠数据传输。它提供了一种面向连接、有序、可靠、流式的传输服务,使得应用层可以在不同的设备之间进行可靠的数据交换。
TCP实现流量控制的主要机制是通过滑动窗口(Sliding Window)
来调整发送方的发送速率,以适应接收方的处理能力和网络状况。滑动窗口机制是TCP用于管理数据流的一种重要方式,以下是详细解剖流量控制原理的步骤:
接收方通告窗口大小:
发送方的发送窗口:
滑动窗口的原理:
流量控制过程:
窗口调整:
通过这种滑动窗口的机制,TCP实现了流量控制,使得发送方的发送速率可以根据接收方的处理能力和网络状况进行动态调整,从而保证在不同网络条件下的可靠数据传输。这种流量控制机制有效地防止了发送方发送过多的数据,以及接收方无法及时处理导致的问题。
学习算法是触类旁通的。算法是解决问题的一般方法,而不仅仅是应用于某一特定领域。很多常见的算法和数据结构在计算机科学的各个领域都有广泛的应用。滑动窗口算法就是一个很好的例子,它在多个领域都有用途,包括计算机网络、字符串处理、数组处理等。
学习算法具有以下优势:
通用性: 算法是解决问题的通用方法,可以应用于各种领域和情境。
解决复杂问题: 算法使得我们能够更有效地解决复杂的问题,提高程序的效率和性能。
思维模式: 学习算法有助于培养抽象思维和问题求解的能力。解决一个算法问题通常需要分析问题、设计解决方案并进行实现。
编码技能: 熟练掌握算法有助于提高编码技能,使代码更加清晰、高效和可维护。
面试和招聘: 在计算机科学领域,算法和数据结构是面试中常见的考察点,掌握这些知识可以提高在招聘过程中的竞争力。
当你学习一种算法时,你会学到解决特定问题的通用思维模式。这种思维模式可以应用于其他类似的问题,使你更容易理解和解决新的挑战。例如,学习了滑动窗口算法后,你可能会发现在其他领域的类似问题中也可以采用相似的思路。
总的来说,算法是计算机科学的基础,学习它们不仅有助于解决具体问题,还能够提高你在各种计算机科学领域的问题解决能力。
三次握手可以解决半连接和接受老数据的问题。
TCP(Transmission Control Protocol)连接的三次握手是在建立 TCP 连接时进行的一系列步骤,以确保通信的双方都能够理解并同意建立连接。这三个步骤是:
第一次握手(SYN):
第二次握手(SYN + ACK):
第三次握手(ACK):
这个过程确保了双方都同意建立连接,同时也用于同步双方的初始序列号。这种三次握手机制可以防止已失效的连接请求导致的问题,并确保每一方都具有相同的连接参数。在连接建立后,双方就可以进行正常的数据传输。
可以将连接看作两个不同方向的连接。分别是客户端到服务端方向的传输、服务器到客户端的传输。两次握手只能断开一个方向的连接,所以总共需要四次握手。
TCP连接的四次握手是在关闭连接时进行的一系列步骤,以确保双方都愿意终止连接。这四个步骤是:
第一次握手(FIN):
第二次握手(ACK):
第三次握手(FIN):
第四次握手(ACK):
这个过程确保了双方都有足够的时间完成尚未完成的数据传输,并且都同意关闭连接。在四次握手完成后,连接被完全释放。
需要注意的是,TCP 的四次握手过程是为了保证数据的完整性和可靠性。在实际应用中,可能存在 TIME_WAIT 状态,即连接关闭后一小段时间内,系统会保持连接的信息以确保已传输的数据被接收方完全接收。这可以防止连接中残留的数据干扰下一次连接。
对称释放,并不完美!