TCP(传输控制协议)
TCP:传输控制协议(TransmissionControlProtocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC定义。
通常我们听到TCP/IP协议(族)那么种称呼,其作用如下:
TCP/IP提供了点对点链接的机制,将资料应该如何封装、寻址、传输、路由以及在目的地如何接收,都加以标准化。它将软件通信过程抽象化为四个抽象层,采取协议堆栈的方式,分别实现出不同通信协议。协议族下的各种协议,依其功能不同,分别归属到这四个层次结构之中,常视为是简化的七层OSI模型。
那什么是七层网络OSI模型?下图展示了OSI模型的结构:
了解了OSI模型后,再来看下TCP/IP四层模型的对比:
TCP/IP模型中,将OSI的应用层,表示层,会话层抽象为一个大应用层。
WireShake
相信各位肯定看了很多遍类似这样的图:
但我一直没有真真实实地看到TCP创建和断开连接这样的过程,希望能像ChromeDevelopTool直观看到接口的请求和响应。而不是根据别人的文章所云的进行机械的记忆。
为了了解TCP协议怎么进行握手的?这里就需要用到一个网络分析工具:WireShake。
下面在说明三次握手和四次挥手时,会结合在WireShake看到的实际结果来理解TCP的连接过程。
三次握手(three-wayhandshake)
在开始TCP说如何创建连接之前,先看下一些关键名词解释:
seq(SequenceNumber):端与端之间通讯的(初始化)序列号SYN(SynchronizeSequenceNumbers):每次通讯需要对上述序列号(seq)进行同步操作,以解决网络包乱序问题(reordering)。ACK(AcknowledgementNumber):用于确定接收到包后的回复确认,解决不丢包的问题。了解了上述名词后,再来看三次握手的过程图:
上图已经已经很清晰地展示了创建连接的过程。现在我们实际发送一个Http请求,并结合WireShake看下具体步骤细节:
首先,我们访问一个网站(