tcp/ip学习笔记--第17章 TCP(transmission control protocol)
参考:
https://download.****.net/download/qq_31567335/10213200
TCP services尽管TCP和UDP使用同样的IP层,但是却提供与UDP完全不同的服务。TCP提供面向连接的,可靠的,字节流的服务。
TCP通过以下措施来保证可靠性:
1.发送合适大小的报文段
2.为发送的报文段设置定时器,并等待接收端确认,如果超时还未收到接收端的确认就会再次发送
3.接收端接收到报文段后会发送对应的确认。
4.对报文段的整体(头部+数据部分)计算校验和。
5.接收端对到达的报文进行重新排序
6删除重复的报文
7.提供流量控制,防止传输速率快的主机使速率慢的主机的缓冲区溢出。
TCP Header
源端口号和目的端口号:用来区分不同的程序
序号:标识发送端发出的报文段的数据部分的第一个字节。TCP对发送的每个字节都进行编号,这个序号会在达到2^32-1之后回到0进行循环。初始***在建立连接的时候由发送端确定。并且每个发送端都会产生自己的***。
确认序号:接收端用来告诉发送端已经接收到哪个字节(表示这个字节之前所有的字节都接收到了)。因为确认序号是头部的一部分,而且TCP是双工模式,所以tcp在发送消息的时候确认序号一直有值,并且ACKflag处于打开状态。
首部长度:以4个字节为单位表示的首部长度,也就是首部长度最多为60个字节(15*4)。一般为20,如果没有option。
6个标志位:
URG 紧急指针有效
ACK 确认***有效
PSH 接收都应尽可能快将这个数据上交到应该程序
RST 重置这个连接
SYN 同步***,用于初始化连接
FIN 发送端结束发送数据
窗口大小:用来进行flow control
检验和:强制的。(发送端必须计算,接收端必须验证)
option:最常用的就是MSS(maximum segment size)