解析tcp首部
一、tcp首部组成字段解析
1、源端口跟目标端口
2、序号:
前面讲到tcp是面向字节流的,那么就是说tcp是以字节(Byte)流为基本单位传输,把大的文件拆分成多个字节进行传输,而每次传输的数据字节流可能高达1000多个字节;此处序号的作用就是告诉对方,这是这些字节流的第一个字节是整个文件的第几个字节。
3、确认号:
即告诉对方,你要从第几个字节开始给我发数据,起到确认收到的作用。
4、数据偏移:
由4个bit位组成;默认为0,这里1个表示4个字节,当全1时最高表示15,即告诉对方我这里的首部有60(15*4)个字节,除了20个固定长度的首部,剩余的可选选项占40个字节。
5、保留位:
无用。
6、UGA:
占1个bit,当有紧急数据包时,那么这个数据包的UGA会被置为1,然后在窗口中,紧急发送,到对方的窗口也会被紧急接收。
7、ACK:
为1时,表示当前的确认号有效,否则为无效,所以在"三次握手"的第一次握手时,ACK是为0的,因为之前都没传输过数据,哪来的确认号。
8、SYN:
表示当前为请求建立tcp会话的数据包。
9、FIN:
表示当前为请求关闭会话的数据包。
10、窗口:
用户告诉对方本人的接收窗口多大,你的发送窗口不得大于我的接收窗口,否则将出现大量的包被丢弃。