概述
TCP协议运行于端系统中,中间路由器对TCP连接完全视而不见,他们看到的是数据报,而不是连接。TCP是点对点通信,即是发生在单个发送方与单个接收方之间的通信。
在实际编程中,接收缓存与发送缓存可通过setsockopt设置SO_SNDBUF、SO_RCVBUF。 getsockopt 可用于查看当前系统的发送与接收缓存的大小。
系统的默认socket 发送缓冲区(SO_SNDBUF)的大小为8K,我们可以调用setsockopt()将其更改,理论上最大为64K
应用程序将要发送的数据放到发送缓存中,前提是发送缓存不满,TCP会从缓存中取出数据并放入报文段,大小取决于 MSS (maximum segment size),MSS的大小 是 MTU 减去 TCP/IP首部长度(通常为40字节)。
MTU (maximum transmission unit)表示链路层的最大传输帧长度。以太网与PPP连路具有1500字节。因此MSS一般为1460字节。
TCP报文段结构
TCP 首部一般为20byte,比UDP的多12byte。
1. 序号和确认号
序号是建立在字节流之上的,即每个字节有自己的序号