传输层协议TCP

TCP是TCP/IP协议簇中最重要的协议之一,因特网中各种物理网络服务质量参差不齐,因此要有一个功能很强的传输协议,满足可靠传输的要求。

TCP的特点

1、TCP是面向连接的。在传输数据前,必须先建立TCP连接;在传送数据完毕后,必须释放已经建立的TCP连接。
2、TCP只能进行点到点的通信,不提供广播或者多播服务。
3、TCP提供可靠的服务。TCP可以保障传送的数据按发送的顺序到达,且无差错、不丢失、不重复。
4、TCP提供全双工通信。TCP允许通信双方的应用进程在任何时候都能发送数据。
5、TCP的首部固定部分为20个字节,最长可达60个字节。其传输开销比UDP大。
6、TCP是面向字节流的。发送的TCP将应用进程交付的数据视为无结构的字节,且分割成若干报文段进行传输,在接收方TCP协议向应用进程递交的也是字节流。


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述连接是通信双方的一个约定,目标是让两个在通信的程序之间产生一个默契,保证两个程序都在线,而且尽快地响应对方的请求,这就是连接(Connection)。

设计上,连接是一种传输数据的行为。传输之前,建立一个连接。具体来说,数据收发双方的内存中都建立一个用于维护数据传输状态的对象,比如双方 IP 和端口是多少?现在发送了多少数据了?状态健康吗?传输速度如何?等。所以,连接是网络行为状态的记录。

和连接关联的还有一个名词,叫作会话(Session),会话是应用的行为。比如微信里张三和你聊天,那么张三和你建立一个会话。你要和张三聊天,你们创建一个聊天窗口,这个就是会话。你开始 Typing,开始传输数据,你和微信服务器间建立一个连接。如果你们聊一段时间,各自休息了,约定先不要关微信,1 个小时后再回来。那么连接会断开,因为聊天窗口没关,所以会话还在。

在有些系统设计中,会话会自动重连(也就是重新创建连接),或者帮助创建连接。 此外,会话也负责在多次连接中保存状态,比如 HTTP Session 在多次 HTTP 请求(连接)间保持状态(如用户信息)。

在这里插入图片描述

在这里插入图片描述可靠性指数据保证无损传输。如果发送方按照顺序发送,然后数据无序地在网络间传递,就必须有一种算法在接收方将数据恢复原有的顺序。另外,如果发送方同时要把消息发送给多个接收方,这种情况叫作多播,可靠性要求每个接收方都无损收到相同的副本。多播情况还有强可靠性,就是如果有一个消息到达任何一个接收者,那么所有接受者都必须收到这个消息。在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述断开连接的过程(4 次挥手)

继续上面的思路,如果断开连接需要几次握手?给你一些提示,你可以在脑海中这样构思。

  1. 客户端要求断开连接,发送一个断开的请求,这个叫作(FIN)。

  2. 服务端收到请求,然后给客户端一个 ACK,作为 FIN 的响应。

  3. 这里你需要思考一个问题,可不可以像握手那样马上传 FIN 回去? 其实这个时候服务端不能马上传FIN,因为断开连接要处理的问题比较多,比如说服务端可能还有发送出去的消息没有得到ACK;也有可能服务端自己有资源要释放。因此断开连接不能像握手那样操作——将两条消息合并。所以,服务端经过一个等待,确定可以关闭连接了,再发一条 FIN 给客户端。

  4. 客户端收到服务端的 FIN,同时客户端也可能有自己的事情需要处理完,比如客户端有发送给服务端没有收到 ACK的请求,客户端自己处理完成后,再给服务端发送一个 ACK。
    总结:在学习 3 次握手、4 次挥手时,你一定要理解为什么这么设计,而不是死记硬背。
    在这里插入图片描述

  5. TCP 提供连接(Connection),让双方的传输更加稳定、安全。

  6. TCP没有直接提供会话,因为应用对会话的需求多种多样,比如聊天程序会话在保持双方的聊天记录,电商程序会话在保持购物车、订单一致,所以会话通常在TCP连接上进一步封装,在应用层提供。

  7. TCP 是一个面向连接的协议(Connection-oriented Protocol),说的就是 TCP协议参与的双方(Host)在收发数据之前会先建立连接。后面我们还会学习 UDP协议,UDP是一个面向报(Datagram-oriented)的协议——协议双方不需要建立连接,直接传送报文(数据)。

  8. 最后,连接需要消耗更多的资源。比如说,在传输数据前,必须先协商建立连接。因此,不是每种场景都应该用连接导向的协议。像视频播放的场景,如果使用连接导向的协议,服务端每向客户端推送一帧视频,客户端都要给服务端一次响应,这是不合理的。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


版权声明:本文为Good_omen原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。