超简单的TCP/IP流程讲解


前言

首先先说明一下TCP/IP是协议簇,不是一个单一的协议 ,TCP/IP的协议包含http,tftp,tcp,ip等一堆协议,作为一个嵌入式开发人员,我对自己的要求是能够理解基本的三次握手四次挥手流程,能进行wireshark抓包分析,能写基础的socket套接字代码进行数据通信流程即可。在嵌入式上除了物联网之类的设备或者通信相关可以插网线的设备,大部分设备都是单机脱网的。
想要深入理解TCP/IP协议还得参考圣经:<TCP/IP协议详解>
这本书很厚,非常厚,超级厚,分三卷,适合从事网络安全之类工作的去详细学习,真的写的非常好。
在这里插入图片描述


一、TCP/IP协议是什么?

TCP/IP是协议簇,包含多种协议,不同层对应一系列的协议

tcp/ip协议
应用层http,ftp,tftp,snmp等
传输层tcp,udp
网络层ip,icmp,arp等
网络接口层802.3,802.11

常见的网络通信模型和TCP/IP模型的对应关系如下图TCP/IP协议簇一共四层,我们常用的TCP协议在传输层,IP协议在网络层
在这里插入图片描述

二、TCP三次握手和四次挥手流程

经典的三次挥手和四次握手流程,这个应该是每一个嵌入式程序员都应该了解的,这里我做简单的科普类说明。
首先先简单了解一下TCP头部的数据格式,这里需要理解下标黄的部分,不然无法明白握手过程如何建立连接的。
序列号:seq占4字节
确认应答号:ack占4字节
控制位(优先关注标黄的):URG、ACK、PSH、RST、SYNFIN

在这里插入图片描述

1.TCP三次握手

三次握手本质上是为了确保连接的有效性,确保连接是及时的,client发送server连接请求,server返回ACK确认信号,这个时候其实服务端到客户端的连接已经建立了,但是如果这个时候就开始发送数据可能是有误的,这个时候client发送的连接请求可能有误网络延时已经失效了,只有client再次发送ACK确认才能保证连接是及时有效的。所以有下面的连接时序图。

在这里插入图片描述

  1. 客户机发送SYN = 1表示建立连接,seq = x为当前的客户机的序列号
  2. 服务器监听函数收到信号后会告诉客户机收到了发送ACK = 1,ack = x+ 1,这个ack表示对客户机这个序列号为x的请求的应答,所以在他上面加上了一个1,同时会发送另一个序号seq = y到客户机上
  3. 客户机收到ACK后会发送x+1的序号,再返回ack = y +1给服务器
  4. 这个时候可以看到,建立连接后客户机的seq序号为 x + 1,此时如果客户机向服务端发送消息的话seq序号为x + 2

建议:最简单的理解TCP流程的方法就是进行一次wireshark抓包,对包逐句分析很快就能理解seq的含义,以及为什么会有大ACK和小ACK

2.四次挥手

明天再总结,今天到此结束。。。。

本地模拟TCP通信代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值