关于 TCP

互联网协议族(Internet Protocol Suite,缩写IPS)是一个网络通信模型,以及一整个网络传输协议家族,为互联网的基础通信架构。它常被通称为TCP/IP协议族(TCP/IP Protocol Suite,或TCP/IP Protocols),简称TCP/IP协议集。因为该协议家族的两个核心协议:TCP(传输控制协议)和IP(网际协议),为该家族中最早通过的标准。由于在网络通讯协议普遍采用分层的结构,当多个层次的协议共同工作时,类似计算机科学中的堆栈,因此又被称为TCP/IP协议栈(TCP/IP Protocol Stack)

以上来自维基百科,我们知道 TCP/IP 协议族是基于 TCP 和 IP 这两个最初的协议之上的不同的通信协议的大的集合。其中包含了ARP、UDP、ICMP(互联网消息控制管理协议)等协议,它将软件的通信过程抽象化为四个抽象层(应用层、传输层、网络层和物理层),类似于简化的 OSI 七层。

在数据传输方面,早期研发提出两种传输方式——面向连接的传输和非面向连接的传输,经过后来长期的发展,提出面向连接的ISO组织将非面向连接的传输纳入自己麾下,就是现在的 UDP。

TCP

TCP 建立连接的过程—— TCP 的三次握手

首先,源向目的发送一个 TCP 同步请求(syn 包);目的收到后向源发一个 TCP 回应(offer 包),这里面包含了 syn+ack 信息,此时处于半打开会话状态,存在巨大的安全隐患;源收到目的的回应后向目的发送一个 TCP 确认包(ack 包),就此处于全打开会话状态,TCP 连接建立完成。

TCP 序列号和确认号

TCP 会话的每一端都包含一个 32 位(bit)的序列号,该序列号被用来跟踪该端发送的数据量。每一个包中都包含序列号,在接收端则通过确认号用来通知发送端数据成功接收(发送序列号是当前的发包情况,确认号是渴望的发包情况)。

例如在握手的时候,源向目的发送 syn 包,seq=x;目的会给源一个回应,seq=y,ack=x+1;源收到了之后给目的回一个确认包,ack=y+1。

三次握手

TCP 划窗

TCP 协议通过划窗机制来对流量进行控制管理,接收端通过发送确认号告诉发送端自己获包的情况,接收端通过三次发包后了解接收端的网络吞吐能力,然后稳定发包。

TCP 重传

TCP 包超时未响应后进行重传,一个包最多重传 16 次,无法处理后连接断开重连,三次失败后无法进行连接

***以上均为自己极浅的理解,详细内容还请移步至 Google ***