一.什么是TCP
TCP 是面向连接的,可靠的,基于字节流,全双工的传输层通信协议。
源/目的端口号:表示数据是从哪个进程来,到哪个进程去;
序列号:在建立连接时由计算机生成的随机数作为其初始值,通过 SYN 包传给接收端主机,每发送一次数据,就累加一次数据字节数的大小,用来解决网络包乱序问题。
确认应答号:指下一次期望收到的数据的序列号,发送端收到这个确认应答以后可以认为在这个序号以前的数据都已经被正常接收,用来解决丢包的问题。
4位TCP报头长度:表示该TCP头部有多少个32位bit(有多少个4字节);所以TCP头部最大长度是
二.TCP的相关特性
安全机制
如何建立连接(三次握手)
如图需要三个步骤来建立连接。首先,客户端发送一个SYN报文段(请求连接)给服务器,请求建立一个连接。服务器在收到SYN报文段后,会发送一个SYN+ACK报文段(对SYN报文的确认)给客户端。最后,客户端再向服务器发送一个ACK报文段,确认收到SYN+ACK报文段。这样,就完成了TCP连接的建立。
1.验证通信路径是否畅通2.检测双方发送和接收能力是否正常3.协商这里的关键参数..
连接断开(四次挥手)
1.关闭连接时,客户端向服务端发送 FIN
时,仅仅表示客户端不再发送数据了但是还能接收数据。
2.服务端收到客户端的 FIN
报文时,先回一个 ACK
应答报文,而服务端可能还有数据需要处理和发送,等服务端不再发送数据时,才发送 FIN
报文给客户端来表示同意现在关闭连接。
从上面过程可知,服务端通常需要等待完成数据的发送和处理,所以服务端的 ACK
和 FIN
一般都会分开发送,因此是需要四次挥手。
发送方不能无脑的发数据给接收方,要考虑接收方处理能力。
如果一直无脑的发数据给对方,但对方处理不过来,那么就会导致触发重发机制,从而导致网络流量的无端的浪费。因此TCP支持根据接收端的处理能力,来决定发送端的发送速度。这个机制就叫做流量控制.
拥塞控制:前面的流量控制是考虑接收方的处理能力避免发送方数据填满接收方的缓存,是不知道网络发生了什么的而拥塞控制则是考虑通信过程中中间节点的情况目的就是目的就是避免发送方的数据填满整个网络.拥塞控制主要是四个算法:
- 慢启动
- 拥塞避免
- 拥塞发生
- 快速恢复
效率机制:
滑动窗口:
TCP 是每发送一个数据,都要进行一次确认应答。当上一个数据包收到了应答了, 再发送下一个。这个的效率是比较低的.而为解决这个问题,TCP 引入了窗口这个概念。即使在往返时间较长的情况下,它也不会降低网络通信的效率。
窗口大小就是指无需等待确认应答,而可以继续发送数据的最大值。