TCP 是面向连接,已经提供了可靠、控制字节大小的服务
一面向连接:就在双方通信前需要预先建立连接
二可靠性
1.tcp把应用的数据分割成字节认为合适大小的MSS(最大数据包长度)通过mss 协商来建立连接 mss 必须在syn 报文段内,如果一方不接受发送方的MSS 那么MSS 的默认值是536B,一般在没有规定MSS 大小的情况下 MSS 值越大越有利于传输提高网率。
2重传机制:为了保证重传机制在发送端发送数据时 会启动一个计时器来规定时间内是否传送到对方
3校验和:对TCP 首部和数据的检验 保证其准确性
4 排序:TCP 对收到的数段排序后交给应用层
5:对数据的校验:对发送端来的IP重复包丢弃
6:滑动窗口来控制字节流的大小
源端口(16) | 目的端口(16) | ||
顺序号(32) | |||
确认号(32) | |||
首部(4) | 保留URG(1) ACK PSH RST SYN FIN | 窗口大小(16) | |
校验和(16) | 晋级指针(16) | ||
选项 | |||
数据 | 填充 | ||
序号:就是用标识发送端数据的字节流的位置
确认号:是接收端用来响应发送端想要的数据
首部位 表示 TCP 头的长度
URG :紧急指针有效 urg=1
ACK 来表示收到发送方数据
PSH 表示应用层急需的数据
滑动窗口:简单的说就发送端根据接收端返回的窗口的大小来计算自己发送的数据的大小值得注意的是,滑动窗口是基于所收到的确认序列号的。当发送方根据所收到的确认序列号以及窗口大小,不断向后移动,并相应更新数据状态。
拥塞窗口:当发送端和接收端硬件和传输链路都很强时,发送端通过路由器时 路由器的缓存没有空间存储发送端发出的数据,这时会出现丢包情况
为了克制这种情况 出现了中间路由器也参加双方反馈窗口大小。
发送端会收到两个窗口大小,分别是来自于接收端和中间路由器,注意前者在每次的数据报中都会出现,而后者只是在网络中出现拥塞时由中间路由器发送。那么,发送方此时取接收端的窗口大小与拥塞窗口中的最小值作为发送上限值。