3、TCP协议
从上一节我们了解了什么是IP协议,以及IP协议的一些特性,利用IP协议传输都是单向的,不可靠的,无连接状态的。正是这些特性,于是便产生了TCP协议。TCP协议属于传输层,在IP协议网络层之上,竟然IP协议不可靠,那就必须要在其上多一个TCP协议以实现传输的可靠性。就像我们寄出一封信,如果对方不回信,不通过别的渠道告诉你,你永远都无法保证这封信能准确送到对方手上。同样,TCP协议采取了类似的措施来保证数据包的准确送达,它规定接收端发送一个确认数据包回来。
严格地说,TCP协议提供了可靠、全双工、流式和无结构传输服务。它通过两种技术达到可靠性——积极确认和重发送。接收端在收到发送者发送的数据后,必须发送一个相应的确认消息(ACK),告诉发送到我已经收到这个数据包。对于超时丢失的数据包,TCP会重新发送这个数据包。
TCP报文以IP报文为载体,嵌套在IP报文里面。图2-2-3-1展示了TCP报文格式。源端口跟目的端口肯定就是描述“从哪个端口来,到哪个端口去”。序号用于标识发送的顺序数,对所有通过TCP传输的的字节进行统计。确认序号则表示哪些序号的数据包已经成功接收。这里重点讲这个ACK位,这个标记位用于确认接收,初始化一个连接用SYN+ACK组合,关闭一个连接用ACK&