前言
TCP三次握手和四次挥手大概是计算机网络里面的最经典的名词之一了,刚进小组时就听说了手把手教学妹TCP三次握手 的事迹,当然TCP中的流量控制,差错控制,拥塞控制都很重要,今天主要从三次握手 来初步的理解TCP协议。
一些基础
我们以谢希仁老师的《计算机网络》中的五层模型(物理层、数据链路层、网络层、传输层、应用层)来看,TCP位于从上数第二层,接受网络层 尽最大努力交付的的数据报,也就是可能丢失、失序的数据,同时向应用层提供可靠的数据,实现逻辑上的进程端到端通信,并且是全双工的。
TCP的三次握手代表了TCP的连接建立过程,同时,这里的设计也体现了TCP的上述特点。
抓包分析 + 一个简单的echo服务
我们通过一个具体的例子来说明,因为在真实的网络通信中(比如浏览网页的HTTP,SSH登陆)中掺杂了大量了无关包,所以我通过使用自己实现的echo服务器来抓包,这样就很简单(我才不会说是我懒得过滤呢),而且真实情况确实比较。。(想起了朱学长给我们抓包某个夜晚)。
echo代码如下
Server端(制作成守护进程可以放在腾讯云上一直跑)
Client端
下文中Client和Server发送的echo字符串我们都将用数据指代。(如果你大概了解TCP,那么你定然知道我这里的用意–ACK报文不携带数据不消耗序号)
TCP报头讲解(部分)
首先,TCP的也是通过报头来控制,结构如下(随便找的)