介绍
TCP和UDP使用同一网络层(IP),但TCP提供了面向链接、可靠的传输层服务网络
TCP传输给IP层的信息单位称为报文段或段指针
TCP经过以下方式保证可靠性:code
- 应用数据被分割成TCP认为最合适发送的数据块
- TCP发送一个段后,会启动一个定时器等待目的端确认收到该段,不然重发
- 当TCP接收端收到数据,会发送一个确认
- TCP保持首部和数据校验和,接收端发现校验和有差错就丢弃报文段
- TCP将对收到的数据重排序,保证顺序交给应用层
- TCP接收端必须丢弃重复数据
- TCP提供了流量控制,避免“快”主机压垮“慢”主机
TCP提供字节流传输服务,它交换的数据都是由字节(8位)构成blog
TCP不解释字节流内容,也就说它不知道传输的是二进制仍是字符,这个内容由应用层解释排序
TCP首部


由图可知,TCP首部最少5*4=20
字节ci
- 端口:经过TCP首部的源、目的端口,和IP首部的源、目的IP,能够惟一肯定一个链接
- 序号:下一字节数据的序号。每发送一字节数据,序号+1,到达
2^31-1
后置0
- 确认序号:确认端指望接收下一字节的序号,值为上次成功接收数据序号+1
- 首部长度:表明首部占了多少个32位,4位表明最多
2^4=16
个32位word,也就是64字节
- 标志位:6个标志位
- URG:紧急指针有效
- ACK:确认序号有效
- PSH:接收方应该尽快将这个报文段交给应用层
- RST:重建链接
- SYN:同步序号用来发起一个链接
- FIN:发送端完成发送任务
- 窗口大小:接收端指望接收的字节数,TCP基于该窗口大小进行流量控制
- 校验和:覆盖TCP首部和TCP数据,发送端计算和存储,接收端验证
- 紧急指针:表明一个正偏移,表示紧急数据的序号到哪结束。当URG=1该值才有意义,该偏移加上序号字段的值等于紧急数据最后一字节的序号
- 选项:最多见选项为MSS,表明最长报文段大小