本篇通过抓包工具wireshark,抓包分析go程序连接mysql执行一次普通的query语句和prepare语句的tcp连接过程。
我们的实际开发工作当中,基本不会直接操作tcp协议来完成我们的网络传输,更多的是通过应用层的协议来完成,但通过本篇来分析tcp的连接过程,对自己的编码会更有好处。有时我们学习一个知识点,并不是为了直接使用他,而是掌握了他后,能更好的让我们去理解底层的实现方式,灵活运用,写出更好的代码。
本文不是讲解TCP/IP协议的文章,不会涉及太细的连接过程。同时限于个人水平有限,尚不能更深入解释的TCP/IP,但不影响本文的抓包分析过程。
注意
连接mysql程序
代码片段1
func main() {
d, err := sql.Open("mysql", "root:root@tcp(127.0.0.1:3306)/taobao?charset=utf8") if err != nil {
panic(err) } defer d.Close() d.Query("select order_id,user_id,shop_id,create_time,status,amount,delivery_amount from orders where order_id=100")}
第2行