山西小城故事网站建设,263企业邮箱怎么样,桂林东西巷,开发公司五证前言 在上一节中#xff0c;我们介绍了 UDP (用户数据报) 的相关知识#xff0c;在这一节中我们将继续介绍传输层中另一种更为重要的协议。 一、什么是TCP协议#xff1f;
1.1 TCP 基本概念 TCP协议全称#xff1a;传输控制协议#xff08;TCP#xff0c;Transmission C…前言 在上一节中我们介绍了 UDP (用户数据报) 的相关知识在这一节中我们将继续介绍传输层中另一种更为重要的协议。 一、什么是TCP协议
1.1 TCP 基本概念 TCP协议全称传输控制协议TCPTransmission Control Protocol它是是一种面向连接的、可靠的、基于字节流的传输层通信协议由IETF的RFC 793 [1] 定义。TCP通信一般指客户端和服务端通信。 在Java中一般使用SocketServer和Socket这两个类实现TCP通信前者为服务端的一个实体而后者可以认为是一种对连接的封装。一般来说需要先启动服务端然后客户端才能向服务端发送连接请求连接成功后两端就可以互相通信了。
1.2 TCP协议段格式 源端口source port ) 和 目的端口destination port 它们的长度都为 16 位分别表示报文 发送方 的端口号 和 接收方 的端口号。
序号 序号 sequence number 字段长度为 32 位表示数据首字节的序号。在三次握手阶段SYN 指令也是通过该字段将本端选定的 起始序号 告诉接收方。
确认号 确认号 acknowledgement number 字段长度为 32 位。它表示已确认收到的数据序号它的值为已收到数据最后一个字节的序号加一即接收方期望进一步接收的数据序号。
首部长度 首部长度 header length 字段长度为 4 位表示 TCP 报文首部的长度也可称为 数据偏移 data offset 。跟 IP 协议一样TCP 首部长度字段也不是以字节为单位而是以 32 位字4字节为单位。 字 word 是计算机领域中的一个概念表示由一系列比特组成的数据单位。字的长度可长可短常见的有 8 位字、16 位字以及 32 位字等等。 这个字段长度为 4 位最大值为 2 4 − 1 15 {{2}^{4}}-115 24−115 。因此TCP 头部最大长度只能达到 4 × 15 60 4\times 1560 4×1560 字节。
6位标志位
URG紧急指针是否有效ACK确认号是否有效PSH提示接收端应用程序立刻从TCP缓冲区把数据读走RST对方要求重新建立连接我们把携带RST标识的称为复位报文段SYN请求建立连接我们把携带SYN标识的称为同步报文段。FIN通知对方本端要关闭了我们称携带FIN标识的为结束报文段。
窗口大小 窗口大小 window size 字段长度为 16 位表示当前报文发送者接收窗口的大小单位一般是 字节 。接收窗口表示接收方还能接收的数据大小用于实现 TCP 流量控制机制。
校验和 校验和 checksum 发送端填充CRC校验。接收端校验不通过则认为数据有问题。此处的检验和不光包含TCP首部也包含TCP数据部分。除此之外TCP 还会在报文段前面拼接一个 IP 伪头部同时参与校验和计算。
16位紧急指针
标识哪部分数据是紧急数据
二、TCP原理 TCP对数据提供的管控机制主要体现在两个方面安全和效率。这些机制和多线程的设计原则类似保证数据传输安全的前提下尽可能的提高传输效率。
1. 确认应答机制安全机制 TCP将每个字节的数据都进行了编号。即为序列号。 每一个ACK都带有对应的确认序列号意思是告诉发送者我已经收到了哪些数据下一次你从哪里开始发。
2.2 超时重传机制安全机制 主机A发送数据给B之后可能因为网络拥堵等原因数据无法到达主机B 如果主机A在一个特定时间间隔内没有收到B发来的确认应答就会进行重发。 但是主机A未收到B发来的确认应答也可能是因为ACK丢失了 因此主机B会收到很多重复数据。那么TCP协议需要能够识别出那些包是重复的包并且把重复的丢弃掉。这时候我们可以利用前面提到的序列号就可以很容易做到去重的效果。 那么如果超时的时间如何确定
最理想的情况下找到一个最小的时间保证 “确认应答一定能在这个时间内返回”但是这个时间的长短随着网络环境的不同是有差异的如果超时时间设的太长会影响整体的重传效率如果超时时间设的太短有可能会频繁发送重复的包。 TCP为了保证无论在任何环境下都能比较高性能的通信因此会动态计算这个最大超时时间。
Linux中BSD Unix和Windows也是如此超时以500ms为一个单位进行控制每次判定 超时重发的超时时间都是500ms的整数倍如果重发一次之后仍然得不到应答等待 2*500ms 后再进行重传如果仍然得不到应答等待 4*500ms 进行重传。依次类推以指数形式递增累计到一定的重传次数TCP认为网络或者对端主机出现异常强制关闭连接。
2.3 连接管理机制安全机制
在正常情况下TCP要经过三次握手建立连接四次挥手断开连接
三次握手 握手过程可以简化为下面的四次交互
clien 端首先发送一个 SYN 包告诉 Server 端我的初始序列号是 XServer 端收到 SYN 包后回复给 client 一个 ACK 确认包告诉 client 说我收到了接着 Server 端也需要告诉 client 端自己的初始序列号于是 Server 也发送一个 SYN 包告诉 client 我的初始序列号是YClient 收到后回复 Server 一个 ACK 确认包说我知道了。
总结 以上就是今天要讲的内容本文仅仅简单介绍了传输控制协议TCP的相关概念基本报文格式。此外还介绍了TCP原理包括确认应答机制超时重传机制并且还简单介绍了连接管理机制中的三次握手在本栏的下一节我们将会继续介绍TCP原理。