connect是一个抽象概念,不是实际存在的。
三次握手就是connect的过程,目的是为了交换序号初始值。
发送方的数据如果比较大,就需要进行拆包发送。为了能让接收方还原包的顺序,每个包都有一个序列号,第一包的数列号就是在connect过程初始化的(第一包的序列号不是1的原因是为了安全性)。
ACK机制保证接收方一定能收到发送方的数据,如果发送的包有丢失,超时未确认,发送方会重新发送没确认的包的数据。接收方可能收到重复的数据,但是因为我们有序列号,所以接收方可以知道包是否是重复,如果是重复的就会自动丢弃掉。
TCP的头部就是存放这些控制数据的(序列号、ACK号等)。
IP头部存放了目标的IP地址,但是通常目标服务在比较远的地方,和发送方不是直连的,这就需要进行路由,通过多个路由节点,接力传输,把数据送达目标服务。就像发快递一样 ,IP就是快递的收货地址。
路由节点收数据的时候是不认IP地址的,只认mac地址,所以为了把数据路由到下一个节点,需要添加MAC头部,路由过程中MAC地址会被频繁的修改。
整体过程是通过路由表,知道下一个路由节点的IP,然后通过ARP协议获取这个路由节点的MAC地址,把目标MAC地址写到MAC头部中,直到数据包到达目的地。