目录
TCP: 概述
- 点对点
- 一个发送方,一个接收方
- 可靠的、按顺序的字节流
- 不出错,不重复,不丢失,不失序
- 没有报文边界:发多个报文(MSS小)对方可能收到更多小报文或者几个大报文(MSS大)
- 管道化(流水线)
- 在未经确认的情况下,发送方可以给接收方发送连续很多TCP段(应用进程往下交的报文要被TCP根据MMS的大小分成多个TCP段,每个段加上头部信息)
- TCP拥塞控制和流量控制设置窗口大小
- 发送和接收缓存
- 发送端缓冲区为了检错重发,超时重传
- 接收端缓冲区为了平衡接收和发送速度
- 全双工数据
- 在同一连接中数据流双向流动
- MSS(Maximum Segment Size): 最大报文段大小(注意不包括头部)
- 面向连接
- 在数据交换之前,通过握手(交换控制报文)初始化发送方、接收方的状态变量
- 有流量控制
- 发送方不会淹没接收方
TCP报文段结构
- 这里的序号是字节为单位的序号,这里TCP段的的body的第一个字节占整个字节流的偏移量就是序号,就是前一节发送的时候用来标识的序号,因为每个段大小不一定一样所以序号不一定是连续的
- 确认号也是以字节为单位,TCP发送的确认号是累计确认的,但是要比当前已经接收的字节序号要大1。比如收到555ACK,那么554及以前的字节都收到了
- 首部长度:以四个字节为单位,说明首部有多长
- R,S,F用于两个应用进程建立TCP连接
- 没有固定接收方如何处理乱序的报文段,取决于实现者自己