参考文档:http://tools.ietf.org/html/rfc793
3.1. Header Format
Control Bits: 6 bits (from left to right):
URG: Urgent Pointer field significant
ACK: Acknowledgment field significant
PSH: Push Function
RST: Reset the connection
SYN: Synchronize sequence numbers
FIN: No more data from sender
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source Port | Destination Port |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Sequence Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Acknowledgment Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Data | |U|A|P|R|S|F| |
| Offset| Reserved |R|C|S|S|Y|I| Window |
| | |G|K|H|T|N|N| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Checksum | Urgent Pointer |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Options | Padding |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| data |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
用wireshark抓包
Flags: 0x10 (ACK) ==16,2的4次方,第五位
Flags: 0x18 (PSH, ACK) == 16+8,第五位,第4位
Flags: 0x12 (SYN, ACK)==16+2,第五位,第二位
3.2. Terminology
TCB: Transmission Control Block,some variables being stored in a connection record.
Send Sequence Variables
SND.UNA - send unacknowledged
SND.NXT - send next
SND.WND - send window
SND.UP - send urgent pointer
SND.WL1 - segment sequence number used for last window update
SND.WL2 - segment acknowledgment number used for last window
update
ISS - initial send sequence number
Receive Sequence Variables
RCV.NXT - receive next
RCV.WND - receive window
RCV.UP - receive urgent pointer
IRS - initial receive sequence number
Current Segment Variables
SEG.SEQ - segment sequence number
SEG.ACK - segment acknowledgment number
SEG.LEN - segment length
SEG.WND - segment window
SEG.UP - segment urgent pointer
SEG.PRC - segment precedence value
9+1 states during its lifetime:
LISTEN, SYN-SENT, SYN-RECEIVED,ESTABLISHED, FIN-WAIT-1, FIN-WAIT-2, CLOSE-WAIT, CLOSING, LAST-ACK,TIME-WAIT, and the fictional state CLOSED.
3.3. Sequence Numbers
SND.UNA < SEG.ACK =< SND.NXT
RCV.NXT =< SEG.SEQ+SEG.LEN-1 < RCV.NXT+RCV.WND
and so on...
3.4. Establishing a connection
1, the data must be buffered at the receiver until the connection reaches the ESTABLISHED state
TCP A TCP B
1. CLOSED LISTEN
2. SYN-SENT --> <SEQ=100><CTL=SYN> --> SYN-RECEIVED
3. ESTABLISHED <-- <SEQ=300><ACK=101><CTL=SYN,ACK> <-- SYN-RECEIVED
4. ESTABLISHED --> <SEQ=101><ACK=301><CTL=ACK> --> ESTABLISHED
5. ESTABLISHED --> <SEQ=101><ACK=301><CTL=ACK><DATA> --> ESTABLISHED
server每收到一个TCP数据包,都要回送一个ACK,接受失败的会[rst,ack]
client发送数据时,也要发送<PSH><ACK>(PSH的为data,ACK是上一次的)
2, Simultaneous initiation is only slightly more complex,双方都进行init connection,这种情况稍微复杂些。
3, Half-Open Connections
4, re-Open Connections
3.5. Closing a Connection
The user who CLOSEs may continue to RECEIVE until he is told that the other side has CLOSED also
TCP A TCP B
1. ESTABLISHED ESTABLISHED
2. (Close)
FIN-WAIT-1 --> <SEQ=100><ACK=300><CTL=FIN,ACK> --> CLOSE-WAIT
3. FIN-WAIT-2 <-- <SEQ=300><ACK=101><CTL=ACK> <-- CLOSE-WAIT
4. (Close)
TIME-WAIT <-- <SEQ=300><ACK=101><CTL=FIN,ACK> <-- LAST-ACK
5. TIME-WAIT --> <SEQ=101><ACK=301><CTL=ACK> --> CLOSED
6. (2 MSL)
CLOSED
三次握手,c->s[SYN],s->c[SYN,ACK],c->s[ACK]
四次分手,c->s[FIN],s->c[ACK],s->c[FIN],c->s[ACK],因为server接收到fin时,还可以把未发送完的数据发送完,所以拆开了[FIN],[ACK]
相关推荐
### TCP协议分析实验报告 #### 实验目的 ...通过本实验的学习,我们不仅掌握了TCP协议的基本工作原理,还深入了解了TCP协议的多个关键机制,这对于理解计算机网络中的数据传输机制具有重要意义。
本实验报告针对TCP协议进行深入分析,旨在帮助学生理解TCP协议的工作原理及其在网络通信中的作用。实验通过实际操作的方式,让学生掌握如何使用工具捕获并分析TCP数据包,进而了解HTTP和DNS协议的工作过程。 #### ...
【TCP协议实验1】实验旨在帮助学生深入理解TCP协议的工作原理,掌握其连接状态控制、可靠传输机制,并涉及拥塞控制算法。实验的核心是实现TCP协议的状态机,特别是客户端的“停-等”模式,以及Socket接口的编程。TCP...
源码分析是对TCP协议理解的深入层次,书中可能涵盖了以下关键知识点: 1. **TCP连接建立与断开**:包括SYN/SYN-ACK/ACK的三次握手过程以及FIN/FIN-ACK/ACK的四次挥手过程,详细解析了这些过程在内核中的实现。 2. ...
TCP协议确保了数据的完整性和有序性,是面向连接的,意味着在数据交换前需要先建立连接,而在数据传输完成后需要断开连接。 TCP连接的建立过程称为三次握手(Three-Way Handshake)。首先,客户端发送一个带有SYN...
TCP(Transmission Control Protocol)协议是互联网协议族中最核心的部分之一,它为两台计算机之间提供了一种可靠的数据传输...学习和理解这些代码可以帮助我们深入理解TCP协议的工作原理以及如何在实际系统中实现。
总结来说,"Thingsboard gateway 3.4 接入TCP协议单设备改多设备"涉及到的关键知识点包括TCP协议、Thingsboard Gateway的工作原理、多设备并发处理策略、代码修改与调试,以及系统性能和安全性的考量。通过这一改造...
Modbus TCP协议是一种广泛应用于工业自动化领域的通信协议,它基于标准的TCP/IP协议栈,使得设备能够通过以太网进行数据交换。这个协议允许不同制造商的设备之间进行简单且有效的通信,大大增强了系统的互操作性。 ...
总的来说,AB PLC通过以太网进行ModbusTCP通讯涉及网络配置、ModbusTCP协议理解、编程和错误处理等多个方面。正确理解和实施这些步骤,你可以成功实现AB PLC与任何支持ModbusTCP的第三方设备的高效数据交换。
- TCP协议本身有流量控制和拥塞控制机制,但实际应用中可能需要进一步优化,如设置合适的缓冲区大小,合理控制发送速度等。 7. **心跳机制**: - 为了检测网络连接是否断开,可以设置心跳机制,定期发送小量数据...
在计算机网络领域,TCP...总的来说,这个课程设计旨在让学生理解TCP协议在文件传输中的作用,以及如何利用TCP协议的特性来构建一个简单的文件传输系统。通过这个实践,学生将深化对TCP协议的理解,提高网络编程的能力。
在本案例中,"tcp协议的视频软件"指的是使用TCP协议进行数据传输的视频软件。 1. **TCP协议基础** - **面向连接**:在数据传输前,TCP会建立连接,通过三次握手(SYN, SYN+ACK, ACK)确保双方都有能力接收和发送...
安装之前,用户应仔细阅读手册,并充分理解其内容,手册中还包含有关如何与PLC进行TCP/IP通讯的详细说明。 值得注意的是,当通信过程中发生错误时,用户需要有能力根据错误信息判断问题的所在,并及时排除故障。...
详细介绍了网络协议中的TCP协议分析,对于了解和理解网络基础知识非常有帮助。 共十一章。 第1-2章是基础介绍 第3章是网际协议 第4章是路由选择协议 第5章是Internet控制协议 第6章是多播和Internet组管理协议 第7章...
TCP协议分析工具是网络诊断和调试的重要手段,可以帮助我们理解网络通信过程中的细节,例如数据包的发送、接收、重传等。模拟客户端则允许我们主动发起连接,测试服务器的响应,或者模拟特定的网络行为。 TCP协议...
TCP协议是面向连接的传输层协议,提供的是可靠的数据流服务。在两台设备之间建立TCP连接时,会经历三次握手的过程:SYN(同步序列编号)、SYN+ACK(同步确认)和ACK(确认)。连接建立后,数据会被分割成多个段进行...
TCP协议主要用于确保数据的可靠传输,而FTP协议主要用于文件的上传和下载。下面我们将深入了解TCP协议的连接建立和释放的工作原理和通信过程,以及FTP协议的工作过程。 TCP协议的连接建立和释放的工作原理和通信...
通过这个TCP实验,我们可以深入理解TCP协议的工作原理,掌握如何在实际编程中应用TCP协议,为后续的网络编程打下坚实的基础。此外,这个实验也有助于培养我们的问题解决能力,因为可能会遇到网络延迟、丢包、拥塞等...
本文将深入探讨"Mudbus TCP协议"和"TCPModbus协议",以及如何在C#编程环境中使用Twincat PLC实现PLC(可编程逻辑控制器)与PC之间的TCP/IP通信。 Mudbus TCP协议是Modbus协议的一种扩展,它保留了Modbus协议的简单...