软文自助发稿软件开发 网站建设,常州网站建设方案维护,应用宝下载,公司建设网站时的注意事项传输层的协议主要有三个#xff1a;TCP协议#xff08;可靠#xff09;、UDP协议#xff08;不可靠#xff09;和SCPT协议#xff08;不可靠#xff09;。
一、TCP协议的概念
TCP协议也称传输控制协议#xff0c;是一种可靠的、面向连接的、基于字节流的传输层通信协…传输层的协议主要有三个TCP协议可靠、UDP协议不可靠和SCPT协议不可靠。
一、TCP协议的概念
TCP协议也称传输控制协议是一种可靠的、面向连接的、基于字节流的传输层通信协议。
TCP协议是TCP/IP协议族中的一个重要的协议。和IP协议相比TCP协议更靠近应用层因此在应用程序中具有更强的可操作性。一些重要的socket都和TCP协议相关。
二、TCP协议的特点
1.面向连接的运输层协议。
使用 TCP 协议通信的双方必须先建立 TCP 连接然后才能开始数据的读写。双方都必须为该连接分配必要的内核资源以管理连接的状态和连接上数据的传输。在传送数据完毕后通信双方都必须断开已经建立的 TCP 连接以释放资源。
2.TCP协议提供可靠交付的服务
TCP协议采用发送应答机制即发送端发送的每个TCP报文段都必须得到接收方的应答才认为这个TCP报文段传输成功。
TCP协议采用超时重传机制发送端在发出一个TCP报文段之后启动定时器如果在定时时间内未收到应答它将重发该报文段。
TCP报文段最终是以IP数据报发送的而IP数据报到达接收端可能乱序、重复多以TCP协议还会对先接收到的TCP报文段重排、整理再交付给应用层。
3.基于字节流
TCP协议基于字节流中的“流”指的是流入到进程或从进程流出的字节序列。基于流的数据没有边界长度限制它源源不断地从通信的一端流入另一端发送端可以逐个字节地向数据流中写入数据接收端也可以逐个字节地将它们读出。
当发送端应用程序连续执行多次写操作时TCP模块先将这些数据放入TCP发送缓冲区中。当TCP模块真正开始发送数据时发送缓冲区中这些等待发送的数据可能被封装成一个或多个TCP报文段发出。因此TCP模块发送出的报文段的个数和应用程序执行的写操作次数之间没有固定的数量关系。 当接收端接收到一个或多个TCP报文段后TCP模块将它们携带的应用程序数据按照TCP报文段的序号依次放入TCP接收缓冲区中并通知应用程序读取数据。接收端应用程序可以将TCP接收缓冲区中的数据一次性全部读出也可以分多次读取这取决于用户指定的应用程读缓冲区的大小。因此应用程序执行的读操作次数和TCP模块接收到的TCP报文段的个数之间也没有固定的数量关系。
如图所示 4.每一条 TCP 连接只能有两个端点套接字socket每一条 TCP 连接只能是点对点的(一对一)。
5.TCP 提供全双工通信。
TCP协议允许通信双方的应用进程在任何时候都能发送数据。TCP协议连接的两端都设有发送缓存和接收缓存用来临时存放双向通信的数据。
三、TCP协议的头部结构
TCP头部信息出现在每个TCP报文段中用于指定通信的源端端口目的端端口管理TCP连接等。
TCP固定头部结构如下图所示 16位端口号告知主机该报文段是来自哪里源端口以及传给哪个上层协议或应用程序目的端口。进行TCP通信时客户端通常使用系统自己选择的临时端口号而服务器则使用知名的端口号。
32位序号一次TCP通信从TCP连接建立到断开过程中某一个传输方向上的字节流的每个字节的编号。假设主机A和主机B进程TCP通信A发送给B的第一个报文段中序号值被系统初始化为某个随机值ISN。那么在该传输方向上从A到B后续的TCP报文段中序号值将被系统设置成ISN加上该报文所携带数据的第一个字节在整个字节流中的偏移。例如某个TCP报文段传送的数据是字节流中的第1025~2048字节那么该报文段的序号值就是ISN1025.另外一个传输方向从B到A的TCP报文段的序号值也具有相同的含义。
32位确认号用作对另一方发送来的TCP报文段的响应。其值是收到的TCP报文段的序号值加1。假设主机A和主机B进行TCP通信那么A发送出的TCP报文段不仅携带自己的序号而且还包含对B发送来的TCP报文段的确认号。反之B发送出的TCP报文段也同时携带自己的序号和对A发送来的报文段的确认号。
4位头部长度标识该TCP头部有多少个32bit字4字节。因为4位最大能表示15所以TCP头部最长为60字节。
6位标志位 ①URG标志表示紧急指针是否有效。 ②ACK标志表示确认号是否有效。称携带AC标志的报文段位确认报文段。 ③PSH标志提示接收端应用程序应该立即从TCP接收缓冲区中读走数据为接收后续数据腾出空间。 ④RST标志表示要求对方重新建立连接。称携带RST标志的TCP报文段为复位报文段。 ⑤SYN标志表示请求建立一个连接。称携带SYN标志的TCP报文段为同步报文段。 ⑥FIN标志表示通知对方本端要关闭连接了。我们称携带FIN标志的TCP报文段为结束报文段。
16窗口大小是TCP流量控制的一个手段。这里说的窗口指的是接收通告窗口。它告诉对方本端的TCP接收缓冲区还能容纳多少字节的数据这样对方就可以控制发送数据的速度。
16为校验和由发送端填充接收端对TCP报文段执行CRC算法以校验TCP报文段在传输过程中是否损坏。注意这个校验不仅包括TCP头部也包括数据部分。这也是TCP可靠传输的一个重要保障。
16为紧急指针是一个正的偏移量。它和序号字段的值相加表示最后一个紧急数据的下一个字节的序号。因此确切地说这个字段是紧急指针相对当前的序号的偏移称为紧急偏移。TCP的紧急指针是发送端向接收端发送紧急数据的方法。