1/11/2019

TCP Notes (2)

1. 如何计算 a TCP segment length?
A: ip.len - ip.hdr_len - tcp.hdr_len

2. TCP Flags

* 最常见的是SYN, ACK, FIN
* URG - 比方说,sender希望receiver stop,无论queue里面还有多少data. 
* PSH - 和URG很像,必须high priority的处理
* RST - 本意是,如果port没有open,host就返回一个RST,容易被hacker利用
* SYN - 只有3-way handshake时有
* FIN - FINISH,4-way close? ACK/FIN-ACK-ACK/FIN-ACK

3. TCP window size

* len = 2 Bytes, max = 64K, in Byte
* 还有一个window scale,就是window size左移多少位
* SYN packet里面没有scaled
* 两边可以有不同的scale#, 不需要negotiated

这个是SYN Packet



后面的Data Packet



4. TCP checksum

看下面的图,前面加上IP Header Info, srcAdr, dstArd, reserved, proto#, tcpLen(computed), + tcpHdr, tcpData. 可以cover ip header integrity



5. TCP Timestamps
10-Byte TCP option, type(1B=8); len(=10), TS(len=4), TSEcho(len=4),例如:

1st packet, TS = 2216538



2nd packet, TSEcho = 2216538. 这样就可以计算RTT了



6. TCP MSS vs IP MTU

这个MSS有点confusing,因为Segment一般是指Header + Data,但是这个TCP MSS说的是Max Data Leng. 这个图很清楚,
* Ethernet Frame size = 1518, 
* IP MTU = 1500 = 1518 - 18, 
* TCP MSS = 1460 = 1500 - 20 (ip.hdr_len) - 20 (tcp.hdr_len)



Reference:
1. firewall.cx
2. tcpipguide.com




No comments:

Post a Comment