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(接收缓存满了,还没清空缓存)时,还是要发送一个一字节的数据,这样,当接收缓存满了的时候,还能主机还能发送数据。
先讲到这,可能说的不是很清楚,希望有啥看不懂的或者不赞同的,多多提些意见,一起讨论,一起进步。
分享到:
相关推荐
《计算机网络-自顶向下方法第七版》作为一部经典的计算机网络教材,其独特的自顶向下教学法让学习者能够从应用层面开始,逐步深入理解网络的各个层次。这种方式不仅符合网络协议的实际应用逻辑,也便于学习者建立起...
在IT行业中,网络通信是至关重要的一个领域,TCP(传输控制协议)和MODBUS-TCP则是其中两个常见的通信协议。TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议,而MODBUS-TCP是在TCP/IP协议栈上构建的一种...
USR-TCP232-Test-V1.3结合了串口和网络调试功能,意味着用户可以在同一界面下同时进行串口和网络通信的调试,这对于那些需要串口和网络接口共同工作的设备(如工业自动化设备、物联网节点)来说,极大地提升了调试...
USR-TCP232-Test-V1.3.zip是一个压缩包文件,其中包含了USR-TCP232-Test-V1.3.exe这个可执行程序,这是一款强大的串口及TCP/IP网络调试工具。该软件结合了多种调试功能,旨在帮助工程师们在进行设备通信开发或者系统...
1. **串口到网络的转换**:它能将串口的数据流转换为TCP/IP数据包,反之亦然,使得串口设备可以透过网络进行通信。 2. **远程访问**:用户可以远端访问和控制连接在该工具上的串口设备,无论设备位于何处,只要有...
1、文件内容:tcp_wrappers-libs-7.6-77.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/tcp_wrappers-libs-7.6-77.el7.tar.gz #Step2、进入解压后的目录,...
标题中的"tcp-wrappers-7.6-77.el7.x86-64"是一个软件包的名称,这通常指的是TCP Wrappers,一个在Linux系统中用于提供网络服务访问控制的安全工具。TCP Wrappers提供了基于主机名的访问控制,能够保护服务器免受...
1. **自顶向下方法**:此方法是从应用层开始,然后逐步讲解传输层、网络层、数据链路层直至物理层。这种方法强调了上层协议如何依赖下层服务,并通过实例帮助学生理解各层之间的交互。 2. **计算机网络基础知识**:...
计算机网络-一种自顶向下的方法课后答案 以下是计算机网络-一种自顶向下的方法课后答案的知识点总结: Chapter 1 Review Questions 1. 主机(Host)和端系统(End System)的区别 在计算机网络中,主机(Host...
USR-TCP232-Test调试工具是一款专为串口通信和网络通信设计的强大软件,主要功能涵盖了串口(Serial Port)、TCP客户端(TCP Client)、TCP服务器(TCP Server)以及UDP协议的测试与调试。这款工具对于开发人员来说...
TCP和MODBUS-TCP通讯调试软件V1.0-含winXP版和winCE版(均含服务器和客户端) 此软件设计环境VB2005,要求装有NET2.0 环境,对您学习MODBUS/TCP有帮助, 还可做TCP调试器, 此软件免费使用。 注: 1. 软件运行要求 ...
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
离线安装包,亲测可用
《计算机网络:自顶向下方法(第七版)》是一本广受赞誉的计算机网络教材,由James F. Kurose和Keith W. Ross撰写。这本书采用了一种独特的自顶向下的教学方法,从应用层开始,逐步深入到网络的底层机制,使读者能够...
在《计算机网络--自顶向下方法(第四版)习题答案》中,读者可以找到关于这些层次的详细问题解答,涵盖了诸如TCP/IP协议栈、错误检测与纠正、路由算法、网络设备功能等多个主题。通过解答这些问题,学生能更全面地...
TCP-DNS-proxy就是为了解决这个问题而设计的,它可以帮助用户在这样的网络环境下顺利访问互联网资源。 首先,我们需要理解DNS(Domain Name System)的基本原理。DNS是互联网的一项核心服务,它将易于记忆的域名...
根据提供的信息,我们可以了解到《计算机网络自顶向下方法》第六版是由James F. Kurose(马萨诸塞大学阿默斯特分校)和Keith W. Ross(纽约大学理工学院)共同编著的一本关于计算机网络的专业书籍。此书采取了自顶向...
### 计算机网络(自顶向下方法...通过上述解析,我们可以看到,《计算机网络(自顶向下方法)》第六版不仅提供了全面而深入的知识点讲解,还附带了丰富的例题与解答,对于深入理解计算机网络的概念和技术具有重要意义。