TCP连接是点对点,也就是,单个发送方和接收方的连接。TCP的连接被称为“三次握手”。第一次,由客户端发送一个特殊的TCP报文段,去请求服务端,第二次,由服务器也用一个特殊的TCP报文段来响应,第三次,客户端再用报文段来响应,其中就承载着“有效载荷”。在进程的套接字下面分别有TCP发送缓存和接收缓存,每个数据都分成报文段在这两个缓存间传输。
在TCP报文段中,包括了源端口号和目的端口号,至于IP地址会在运输层的下一层,网络层里加上去。其中TCP报文段还包括了序号,确认号,接收窗口,首部长度,互联网检验和,紧急数据指针。我接下来介绍其中的一些。
TCP的检验和字段和UDP是一样的,取反码。然后检验的时候和原码相加,只要有一个0就说明了数据包损坏。
其中的序号和确认号字段,就是在可靠数据传输服务中使用的。是TCP报文段中最重要的字段。其中序号用来标识每个传出去的字节流,一个序号对应一个字节。确认号字段是另一端期待的数据的下一个字节的序号。类似,客户端发了个报文段,里面的序号就是这个报文段数据字段首字节的序号,比如‘10‘,然后确认号就是服务端希望下一个接收的数据的下一个字节序号,比如’30‘。接着服务器端收到,如果成功接收后,那么服务端就发送报文段发送的报文的序号就是’11‘,确认号是’31‘。
TCP中,只确认数据流中至第一个丢失字节为止的字节,所以TCP被称为是提供累计确认。所以TCP有个状态变量sendbase,是最早未被确认的字节的序号,(Sendbase - 1是接收方已正确接收的的数据的最后一个字节的序号)。然后发送方接收到接收方传来的确认报文段的值,将它与sendbase比较,由于TCP是累计确认,所以y表示在y之前的字节都接收到了,所以如果y大于sendbase,则把sendbase设置为y。
接下来说下TCP的流量控制,因为如果发送方的发送速率大,而接收方速率小,就会有阻塞,导致有溢出的可能性,TCP让发送方维护一个发送窗口的变量来提供流量控制,用RcvWindow表示窗口大小,这个窗口的大小应该是接收缓存的大小减去了最后一个接收到的字节与最后一个读取的字节的差。然后发送方得确保最后一个发送与最后一个确认的字节的差小于了RcvWindow的大小。当窗口为0(接收缓存满了,还没清空缓存)时,还是要发送一个一字节的数据,这样,当接收缓存满了的时候,还能主机还能发送数据。
先讲到这,可能说的不是很清楚,希望有啥看不懂的或者不赞同的,多多提些意见,一起讨论,一起进步。
分享到:
相关推荐
该文档主要内容包括 TCP-KP-C系列网络继电器AT指令表(160113)配置 AT 测试命令 设置、查询网络继电器状态 查询网络继电器输入接口状态 查询网络继电器的网络连接状态
基于TCP-IP网络模型的计算机网络教学实验设计研究.docx基于TCP-IP网络模型的计算机网络教学实验设计研究.docx基于TCP-IP网络模型的计算机网络教学实验设计研究.docx基于TCP-IP网络模型的计算机网络教学实验设计研究....
USR-TCP232-Test 串口转网络调试工具USR-TCP232-Test 串口转网络调试工具
TCP和MODBUS-TCP通讯调试软件V1.0-含winXP版和winCE版(均含服务器和客户端) 此软件设计环境VB2005,要求装有NET2.0 环境,对您学习MODBUS/TCP有帮助, 还可做TCP调试器, 此软件免费使用。 注: 1. 软件运行要求 ...
日常调试TCP通讯或MODBUS-TCP通讯使用,亲测可用
tcp-ip-illustrate-中文版-三卷,steven先生的经典著作,1-3卷完整版。
# yum -y install -y pcre* openssl* # for pcre, such as ngx.gmatch etc, --with-pcre=PATH/pcre-8.36 --with-pcre-jit ... # export LUAJIT_LIB=/usr/local/lib ... --add-module=src/tcp/ngx_tcp_lua_module
net_modbus_tcp_s7-1500_s7-1200_en.pdf
资源分类:Python库 所属语言:Python 资源全名:tcp-0.3.4-py2-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
计算机网络-实验1-TCP-IP属性设置与测试.doc
tcp-over-dns隐蔽通道工具,java语言编写,在jvm环境下能够顺利运行。
有人485转以太网服务器使用说明书,usr-TCP232-304-software
TCP和MODBUS-TCP通讯调试软件V1.2_Wince_Windows_通用版调试测试工具,能方便编写针对Modbus-tcp连接的服务器和客户端程序
离线安装包,亲测可用
基于TCP-IP网络模型的计算机网络教学实验设计研究.pdf基于TCP-IP网络模型的计算机网络教学实验设计研究.pdf基于TCP-IP网络模型的计算机网络教学实验设计研究.pdf基于TCP-IP网络模型的计算机网络教学实验设计研究.pdf...
USR-TCP232-Test ,串口转网络调试助手:TCP/IP网络调试助手与串口调试助手二合一,济南有人科技有限公司倾力巨献。 设计理念:简单,可靠,简洁,方便;使用条件:绿色,免费。 【软件关键特点】: 1. 串口调试助手...
1. 支持TCP和UDP协议,支持广播,工作模式TCP Server,TCP Client,UDP 2. 支持ASCII/Hex发送,发送和接收的数据可以在16进制和AscII码之间任意转换,支持发送和显示汉字。 3. 可以自动发送校验位,支持多种校验格式...
集合了TCP/IP网络调试助手与串口调试助手等多种功能于一体的调试软件
TCP-UDP-RS232调试助手,为软硬件工程师提供很好的开发工具。
USR-TCP232-Test调试工具,可串口、tcp client、tcp server和udp