个人技术分享

TCP协议

一、概述

tcp传输控制协议

传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,TCP旨在适应支持多网络应用的分层协议层次结构。 连接到不同但互连的计算机通信网络的主计算机中的成对进程之间依靠TCP提供可靠的通信服务。TCP假设它可以从较低级别的协议获得简单的,可能不可靠的数据报服务。 原则上,TCP应该能够在从硬线连接到分组交换或电路交换网络的各种通信系统之上操作。

当应用层向TCP层发送用于网间传输的、用8位字节表示的数据流,TCP则把数据流分割成适当长度的报文段,最大传输段大小(MSS)通常受该计算机连接的网络的数据链路层的最大传送单元(MTU)限制。之后TCP把数据包传给IP层,由它来通过网络将包传送给接收端实体的TCP层。

TCP为了保证报文传输的可靠,就给每个包一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功收到的字节发回一个相应的确认(ACK);如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据(假设丢失了)将会被重传。

二、特点及优缺点

TCP的特点:

1. TCP通过为每个传输或接收的段分配序号来跟踪数据段。

2. 流量控制限制发送方数据传输的速率,以确保可靠交付。

3. TCP实现了可靠数据传输的错误控制机制。

4. TCP考虑网络拥塞的程度。

TCP的优点:

1. 可靠维护发送方和接收方之间的连接。

2. 负责按特定顺序发送数据。

3. 操作不依赖操作系统。

4. 允许和支持多个路由协议。

5. 可根据接收方的速度减慢数据速度。

TCP的缺点:

1. 比UDP慢,占用更多带宽。

2. 在传输文件开始时较慢。

3. 不适用于局域网和个人局域网网络。

4. 没有多播或广播功能。

5. 如果页面上的任何数据丢失,不会加载整个页面。

三、协议格式

TCP是一个面向连接的协议。无论哪一方向另一方发送数据之前,都必须先在双方之间 建立一条连接。在TCP/IP协议中,TCP协议提供可靠的连接服务,连接是通过三次握手进行初始化的。同时由于TCP协议是一种面向连接的、可靠的、基于字节流的运输层通信协议,TCP是全双工模式,所以需要四次挥手关闭连接。

tcp首部数据格式

TCP端口号 每个TCP段都包含源端和目的端的端口号,用于寻找发端和收端应用进程。这两个值加 上IP首部中的源端IP地址和目的端IP地址唯一确定一个TCP连接。 (五元组:源端IP + 源端端口号 + 目的端IP + 目的端端口号 + 协议) TCP的序号 32位序号 seq:Sequence number 缩写seq ,用来标识从TCP发端向TCP收端发送的数据字节流,它表示在这个报文段中的的第一个数据字节。在建立连接时由计算机生成的随机数作为其初始值,通过 SYN 包传给接收端主机,每发送一次数据,就「累加」一次该「数据字节数」的大小。用来解决网络包乱序问题。 TCP的确认号 32位确认号 ack:Acknowledge number 缩写ack,TCP对上一次seq序号做出的确认号,用来响应TCP报文段,给收到的TCP报文段的序号seq加1。指下一次「期望」收到的数据的序列号,发送端收到这个确认应答以后可以认为在这个序号以前的数据都已经被正常接收。用来解决丢包的问题。 TCP的标志位 SYN:同步标志位,用于建立会话连接,同步序列号; ACK: 确认标志位,对已接收的数据包进行确认; FIN: 完成标志位,表示发端完成发送任务,即将关闭连接; PSH:推送标志位,表示该数据包被对方接收后应立即交给上层应用,而不在缓冲区排队; RST:重置标志位,用于连接复位、拒绝错误和非法的数据包; URG:紧急标志位,表示数据包的紧急指针域有效,用来保证连接不被阻断,并督促中间设备尽快处理。

四、esp8266的tcp通信简述

命令:AT+CWMODE=n\r\n

n为1则表示设置esp8266为STA模式,为2则表示设置esp8266为AP模式,为3则表示设置esp8266为STA+AP模式。其中STA+AP模式为 STA 模式与 AP 模式共存的一种模式,ATK-MW8266D 模块既能连接至其他设备提供的无线网络,又能作为热点,供其他设备连接,以实现广域网与局域网的无缝切换,方便操作使用。

之后再利用AT+CWSAP,AT+CIPSERVER等命令进行热点,端口号,ip地址等的配置或连接,即可进行后续的TCP通信。