🌐 TCP连接的建立与释放

2020-07-13  本文已影响0人  BubbleM

计算机网络分层结构:

标准化工作

计算机网络的标准化工作之标准的分类:

OSI参考模型(法定标准)

OSI七层模型,由ISO(国际标准化组织)指定制定的一个国际标准OSI(Open System Interconnect 开放式通信系统互联参考模型)。常用来分析和设计网络体系结构。

TCP/IP参考模型(事实标准)

OSI与TCP/IP.png
ISO/OSI参考模型 TCP/IP参考模型
网络层 无连接+面向连接 无连接
传输层 面向连接 无连接+面向连接

面向连接 分为三个阶段,第一是建立连接,在此阶段,发出一个建立连接的请求。只有在连接成功建立之后,才能开始数据传输,这是第二阶段。接着,当数据传输完毕,必须释放连接。
面向无连接 没有这么多阶段,直接进行数据传输。

5层参考模型

综合OSI和TCP/IP的优点


5层参考模型.png

传输层

传输层的功能:

  1. 传输层提供 进程和进程 之间的逻辑通信。网络层提供 主机之间 的逻辑通信;
  2. 复用和分用;
  1. 传输层对收到对报文进行差错检测;

传输层的两个协议

TCP

面向连接的传输控制协议TCP。传送数据之前必须建立连接,数据传送结束后要释放连接。不提供广播或多播服务。
由于TCP要提供可靠的面向连接的传输服务,因此不可避免增加了许多开销:确认、流量控制、计时器及连接管理等。
特点:可靠,面向连接,时延大,适应于大文件

发送缓存:准备发送的数据&已发送但尚未收到确认的数据
接收缓存:按序到达但尚未被接受应用程序读取的数据&不按序达到的数据

UDP

无连接的用户数据报协议UDP。传送数据之前不需要建立连接,收到UDP报文后也不需要给出任何确认。
特点:不可靠,无连接,时延小,适用于小文件

TCP

TCP报文段首部格式

TCP报文段首部格式.png

TCP连接建立(三次握手)

三次握手.png
TCP连接的建立采用客户服务器方式,主动发起连接建立的应用进程叫做客户,而被动等待连接建立的应用进程叫服务器。
TCP连接建立.png

SYN洪泛攻击

SYN洪泛攻击发生在OSI第四层,这种方式利用TCP协议的特性,就是三次握手。攻击者发送TCP SYN,SYN是TCP三次握手中的第一个数据包,而当服务器返回ACK后,该攻击者就不对其进行再确认,那这个TCP连接就处于挂起状态,就是所谓的半连接状态,服务器收不到再确认的话,还会重复发送ACK给攻击者。这样更加会浪费服务器资源。
攻击者就对服务器发送非常大量的这种TCP连接,由于每一个都没法完成三次握手,所以在服务器上,这些TCP连接会因为挂起状态而消耗CPU和内存,最后服务器可能死机,就无法为正常用户提供服务了。
解决方案:设置SYN cookie

为什么TCP一定要握手三次?

通过三次握手,客户端经历了一次请求和一次响应,服务端也经历了一次请求和一次响应,这时一方面确认了当前网络状态不错,另一方面又确认了自己这个沟通对象既能请求又能响应、确实没毛病。只有在这样安全、稳定的前提下,两台计算机之间才可以建立起 TCP 连接。三次握手的目的是为让双方验证各自的接收能力和发送能力,确保双方能够确实建立起稳定的传输通道。

TCP连接释放(四次挥手)

四次挥手.png TCP连接释放.png

为什么TCP分手一定要挥手四次?

TCP连接是全双工协议,就是说双方都可以同时向对方发送或接收数据。
当客户端在想要断开连接时,只能确认自己没有数据要传输给服务器了,但并不能确认服务器是否还有数据要发送。
分手嘛,是两个人的事情。客户端不会因为自己没话说了就直接终止关系,而是会等服务器把话说完再走。因此,即便客户端抛出了分手请求,这时服务器还是可以传输数据过来的。
前两次挥手,只是对分手这件事做确认,但并不会立即行分手之时。
第三次挥手前,服务器会把自己想说的话说完,然后再通知一次客户端。这时,双方才真正都为分开做好了准备。
第四次挥手,客户端接收到了来自服务端的分手请求,响应“接受”的信号,才最后给这一段关系画上了句号。

上一篇 下一篇

猜你喜欢

热点阅读