【网络分析就是】TCP的连接
大家都知道网络的传输层是用来传递信息的,主要有两种方式——TCP和UDP,TCP是基于连接的可靠传输协议,UDP是无连接的相比来说没有TCP可靠。他们都各自支持一些应用层协议,也有协议是两者都支持的比如DNS。我们就以DNS为例来比较TCP和UDP之间的区别。 1.DNS默认是使用的UDP 数据包交互过程。 2.使用set vc强制DNS使用TCP情况下数据包交互过程。
在上述截图中可以看出,真正起到查询作用的只有两DNS的包。 服务器:“是39.156.66.18” 在适应UDP的情况下前只用了来两个包就完成了查询,但是使用TCP是需要先用3哥包来建立连接。 下面我们来看一下TCP数据包中都有哪些信息 3.TCP数据包中的参数有哪些。 seq:表示数据段的序号。 TCP提供有序传输,每一个数据段都要标记上一个序号,数据段1的起始seq号为1,长度为0,那么数据段2的seq号就是1+0=1以此类推,也就说seq的大小是根据上一个数据段的seq号和长度相加而来的。 由于TCP是双向的,在一个连接中双方都可以是发送方,所以各自维护一个Seq,5号包和7号就是192.168.1.3维护的。 Len:该数据段的长度 如图中的len=0,这个长度是不包含TCP头的,但是头部本身携带的信息很多,所以不要觉得len=就没意义。 Ack:确认号。 接收方向发送确认已经接收到哪些字节。理论上接收方回复的Ack号恰好等于发送方的下一个seq号。通过这种特性当数据包乱序时,接收方只需要根据seq号从小到大重新排序好这样就能保证TCP的有序性。如果出现包丢失的情况,接收方通过前一个seq+len的值与下一个seq的差就能判断缺少哪些包了,这就保证了传输的可靠性。 SYN:表示包正在发起连接请求。 FIN:表示正在发送请求终止连接 RST:重置或拒绝一个连接。 4.三次握手和四次挥手 客户端:“我能跟你建立连接吗?我的初始发送序号是X,如果你应答就ack=X+1” 服务器:“收到,ack=X+1。我也想跟你建立连接,我的初始发送序号是Y,如果你应答就ack=Y+1。” 客户端:“收到,ack=Y+1。” 客户端:“我希望断开连接(请注意FIN标志)” 服务器:“收到,断开吧” 服务器:“我这边希望断开连接(请注意FIN标志)” 客户端:“收到,断开吧”
好了今天就到这里,感谢各位大佬的参阅。方便的话还请点赞投豆!!! |