文章目录
一、TCP基础概念
基础概念:TCP,Transmission Control Protocol(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的【RFC 793】 定义。
面向连接的:客户端与服务端必须建立连接后才可以进行交换数据
UDP 协议就不需要客户端与服务端进行连接
可靠性:体现出 TCP 协议可靠的特点有:应答确认,超时重传,乱序重排,去重,滑动窗口等几个特性,稍后进行详细讲解
流式服务:好比你发送 100 个字节的数据,对方可以分十次接收完,或者你分 10 次发送 100 个字节的数据,对方也可以一次性全部接收,但不能超出对方的接收缓存,否则超出的数据就会被丢弃
发送端执行的写操作次数与接收端执行的读操作次数之间没有任何数量关系,这就是字节流的概念
TCP 连接的建立是端到端系统之间在各自的系统中维护了一些信息,以保留连接状态。
另外,TCP 连接提供的是全双工服务,全双工就是能够同时给对方发送数据
二、TCP报文结构
源端口号 / 目的端口号:表示数据从哪个进程来,到哪个进程去,进行 TCP 通信时,客户端通常使用系统自动选择的临时端口号,而服务器则使用知名服务端口
6个标志位:
URG:标识紧急指针是否有效
ACK:标识确认序号是否有效
PSH:用来提示接收端应用程序立刻将数据从 TCP 缓冲区读走
RST:要求重新建立连接,把含有 RST 标识的报文称为复位报文段
SYN:请求建立连接,我们把含有 SYN 标识的报文称为同步报文段
FIN:通知对端,本端即将关闭,我们把含有 FIN 标识的报文称为结束报文段
16 位校验和:由发