TCP三次握手建立连接、四次挥手断开连接

传输层协议
传输层中最为常见的两个协议分别是传输控制协议TCP(Transmission Control Protocol )和 用户数据包协议UDP(User Datagram Protocol)。
TCP: TCP是一种面向连接的传输层协议,提供可靠的传输服务。
TCP端口号
TCP允许一个主机同时运行多个应用进程。每台主机可以拥有多个应用端口,每对端口号、源和目标IP地址的组合唯一地标识了一个会话。端口分为知名端口和动态端口。有些网络服务会使用固定的端口,这类端口称为知名端口,端口号范围为0-1023。如FTP、HTTP、Telnet、SNMP服务均使用知名端口。动态端口号范围从1024到65535,这些端口号一般不固定分配给某个服务,也就是说许多服务都可以使用这些端口。只要运行的程序向系统提出访问网络的申请,那么系统就可以从这些端口号中分配一个供该程序使用。TCP三次握手建立连接、四次挥手断开连接_第1张图片
TCP通常使用IP作为网络层协议,这时TCP数据段被封装在IP数据包内。
TCP数据段由TCP Header(头部)和TCP Data(数据)组成。TCP最多可以有60个字节的头部,如果没有Options字段,正常的长度是20字节。
TCP Header是由如上图标识一些字段组成,这里列出几个常用字段。
16位源端口号:源主机的应用程序使用的端口号。
16位目的端口号:目的主机的应用程序使用的端口号。每个TCP头部都包含源和目的端的端口号,这两个值加上IP头部中的源IP地址和目的IP地址可以唯一确定一个TCP连接。
32位序列号:用于标识从发送端发出的不同的TCP数据段的序号。数据段在网络中传输时,它们的顺序可能会发生变化;接收端依据此序列号,便可按照正确的顺序重组数据。
32位确认序列号:用于标识接收端确认收到的数据段。确认序列号为成功收到的数据序列号加1。
4位头部长度:表示头部占32bit字的数目,它能表达的TCP头部最大长度为60字节。
16位窗口大小:表示接收端期望通过单次确认而收到的数据的大小。由于该字段为16位,所以窗口大小的最大值为65535字节,该机制通常用来进行流量控制。
16位校验和:校验整个TCP报文段,包括TCP头部和TCP数据。该值由发送端计算和记录并由接收端进行验证。

TCP建立关闭连接
TCP三次握手建立连接、四次挥手断开连接_第2张图片
TCP是一种可靠的,面向连接的全双工传输层协议。
TCP连接的建立是一个三次握手的过程。如图所示:

  1. 主机A(通常也称为客户端)发送一个标识了SYN的数据段,表示期望与服务器A建立连接,此数据段的序列号(seq)为a。
  2. 服务器A回复标识了SYN+ACK的数据段,此数据段的序列号(seq)为b,确认序列号为主机A的序列号加1(a+1),以此作为对主机A的SYN报文的确认。
  3. 主机A发送一个标识了ACK的数据段,此数据段的序列号(seq)为a+1,确认序列号为服务器A的序列号加1(b+1),以此作为对服务器A的SYN报文段的确认。
    TCP三次握手建立连接、四次挥手断开连接_第3张图片
    TCP支持全双工模式传输数据,这意味着同一时刻两个方向都可以进行数据的传输。在传输数据之前,TCP通过三次握手建立的实际上是两个方向的连接,因此在传输完毕后,两个方向的连接必须都关闭。
    TCP连接的建立是一个三次握手的过程,而TCP连接的终止则要经过四次握手。
    如图所示:
  4. 主机A想终止连接,于是发送一个标识了FIN,ACK的数据段,序列号为a,确认序列号为b。
  5. 服务器A回应一个标识了ACK的数据段,序列号为b,确认序号为a+1,作为对主机A的FIN报文的确认。
  6. 服务器A想终止连接,于是向主机A发送一个标识了FIN,ACK的数据段,序列号为b,确认序列号为a+1。
  7. 主机A回应一个标识了ACK的数据段,序列号为a+1,确认序号为b+1,作为对服务器A的FIN报文的确认。
    以上四次交互便完成了两个方向连接的关闭。

你可能感兴趣的:(计算机原理,深信服网络竞赛,网络原理,华为网络竞赛,华为深信服网络竞赛网络协议原理)