最近这段时间tcp用的比较多,所以先学习tcp协议,剩下的,回头再补。。。。
TCP/IP详解--------第17章 TCP传输控制协议
看到了吗,这个就是tcp头,当然,tcp头也是封装在ip头之后的,需要由ip层传输吗,ok,继续。
四元组:源ip地址,目的ip地址,源端口号,目的端口号。
序号:序号实际上发送的字节数,序号就是一个计数器,序号是本次发送的字节数首序号,确认序号,则是ack包返回接收端希望下次发送端发过来的需要。如发送端发送1~1024字节,则序号为1,如果接收端成功接收这1024个字节,则在ack包中,确认需要设置为1025,如果没收到,则发送1,表示包丢失,需要重传。
这上面有个ack标志,一旦连接建立,ack标志则总被设置为1,并且只有ack标志为1,确认序号字段才是有效的。
tcp没有选择确认,也就是说,它无法确认说1~1024被接收,只能返回1025表示1~1024被接收了,并且也无法告知对方,1~1024没接收,只能返回1,告诉发送端,我现在需要1开始的包,赶紧发。
首部长度是tcp首部的长度,如果没有可选字段,则写入20。
窗口大小,用于流控的,表示接收端缓冲buf的大小,别发多了,发多了,也装不下。
紧急指针。只有当URG标志置1时紧急指针才有效。紧急指针是一个正的偏移量,和序号字段中的值相加表示紧急数据最后一个字节的序号。TCP的紧急方式是发送端向另一端发送紧急数据的一种方式。