乾颐堂现任明教教主(2014年课程)TCPIP协议详解卷一 第七节课笔记
三次握手建立,四次握手结束
**面向连接:**TCP是点对点的,连接两端的应用,通过源端口号和目的端口号。
为什么TCP收到数据后会等一会再发送一个确认:
立刻发送会浪费资源,等一会是因为如果过一会还要传过去数据,就会把确认信息和数据一起传过去,资源利用率高。
TCP校验和包含TCP伪首部,TCP首部,TCP数据。
TCP的字节流
TCP是用IP传输的,IP传输不靠谱,TCP会再接收端进行重新排序。
TCP首部长度最长为60个字节。
16位窗口大小表示接收端可用缓存还剩多少。
为什么会有两个***:
TCP是全双工,数据在两个方向传输,因为需要双方确认,所以需要两个***。
在每个方向上传输了多少个字节,该方向的***相应加多少。
如果没有数据只有首部也可能会加,因为当syn或fyn被置1,***还会加1。但是ACK位被置位是不会加的。
除了第一个包,剩下的全部的包都有ACK位。
确认序号为什么要加1,比如接收方已经收到了1100个数据,然后会回一个1101的确认号表示接收方对第1101个字节感兴趣
TCP没有选择确认的功能(老版):
比如: 1101- 1200的数据丢失了,1201-1300的数据收到了。接收方依然会回一个1101的确认,表示还是想要得到1101的包。
不能否认:
假设接收方接收数据发现校验和失败了,不会回复错误原因,依然会回复1101的确认。
TCP的首部长度和IP是一样的。
ACK里边包含缓存窗口信息,表示能接收的最大数据信息。
URG位被置1,紧急指针数据可用,通过指针表示哪一段数据是特殊的数据。
MSS:TCP数据最大传输单元(不包括IP首部和TCP首部),会在三次握手的时候进行协商,所以TCP很少有分片。
三次握手连接,四次握手结束。
ISN为TCP初始化***。
ASA:对初始化***进行扰乱,防止别人探测我的***的增长规律。之所以四次握手是因为TCP的半关闭造成的。
连接终止协议:
客户发送FIN后表示,客户到服务器连接关闭。
服务器发FIN后表示,服务器到客户连接关闭。