基于TCP通信的网络数据包详解
最近在复习计算机网络的知识,为了更深入的了解TCP/IP协议四层模型,在网上查阅知识,画出了TCP通信数据包的图解。希望对网络知识初学者进一步理解网络数据包底层封装有所帮助
图片按照比例一行为4个字节(32个比特位), mac地址为6个字节,本次主要探索TCP协议,对IP协议和以太网帧的封装不做过多探讨
绿色边框部分为我们需要发送出去的数据
黄色边框部分为TCP协议,是要发送数据的一层封装
- tcp协议为传输层协议,是安全的,可靠的数据流传输协议,主要用于端对端通信
- 端口号用于确定网络环境中一台主机中的唯一一个应用程序,最大值为65535(其中0-1024为系统服务,轻易不要使用)
- 数据序号(seq)建立连接时由数据发送方自动生成,此后每次发送数据,序号 = 序号 + 上次发送的数据字节数
- 数据确认序号(ack)为数据接收方的回应包,表明我已经接收到你的数据,也可以理解为期望下次收到的数据序号,确认序号 = 对方seq + 对方上次发送的数据字节数,对方的建立连接请求和断开连接请求都会使本机发送出去的数据包(回应包)中的ack + 1
- 滑动窗口(win)用于流量控制,告知对方本机还可以接收的数据长度。用于防止发送端数据发送过快,接收方结