找人做个网站建设制作报价方案,莱芜网络推广,网站建设案例要多少钱,网站反链一般怎么做传输层定义了主机应用程序之间端到端的连通性。传输层中最为常见的两个协议分别是传输控制协议TCP#xff08;Transmission Control Protocol#xff09;和用户数据包协议UDP#xff08;User Datagram Protocol#xff09;。
TCP协议 TCP是一种面向连接的传输层协议#…传输层定义了主机应用程序之间端到端的连通性。传输层中最为常见的两个协议分别是传输控制协议TCPTransmission Control Protocol和用户数据包协议UDPUser Datagram Protocol。
TCP协议 TCP是一种面向连接的传输层协议可提供可靠的传输服务。 TCP位于TCP/IP模型的传输层它是一种面向连接的端到端协议。TCP作为传输控制协议可以为主机提供可靠的数据传输。在本例中两台主机在通信之前需要TCP在它们之间建立可靠的传输通道。
TCP端口号 端口号作用用来区分不同的网络服务。TCP允许一个主机同时运行多个应用进程。每台主机可以拥有多个应用端口每对端口号、源和目标IP地址的组合唯一地标识了一个会话。端口分为知名端口和动态端口。有些网络服务会使用固定的端口这类端口称为知名端口端口号范围为0-1023。如FTP、HTTP、Telnet、SNMP服务均使用知名端口。动态端口号范围从1024到65535这些端口号一般不固定分配给某个服务也就是说许多服务都可以使用这些端口。只要运行的程序向系统提出访问网络的申请那么系统就可以从这些端口号中分配一个供该程序使用。
TCP头部 TCP通常使用IP作为网络层协议这时TCP数据段被封装在IP数据包内。TCP数据段由TCP Header头部和TCP Data数据组成。TCP最多可以有60个字节的头部如果没有Options字段正常的长度是20字节。TCP Header是由如上图标识的一些字段组成这里列出几个常用字段。16位源端口号源主机的应用程序使用的端口号。16位目的端口号目的主机的应用程序使用的端口号。每个TCP头部都包含源和目的端的端口号这两个值加上IP头部中的源IP地址和目的IP地址可以唯一确定一个TCP连接。32位序列号用于标识从发送端发出的不同的TCP数据段的序号。数据段在网络中传输时它们的顺序可能会发生变化接收端依据此序列号便可按照正确的顺序重组数据。32位确认序列号用于标识接收端确认收到的数据段。确认序列号为成功收到的数据序列号加1。4位头部长度表示头部占32bit字的数目它能表达的TCP头部最大长度为60字节。16位窗口大小表示接收端期望通过单次确认而收到的数据的大小。由于该字段为16位所以窗口大小的最大值为65535字节该机制通常用来进行流量控制。16位校验和校验整个TCP报文段包括TCP头部和TCP数据。该值由发送端计算和记录并由接收端进行验证。
TCP建立连接的过程 TCP通过三次握手建立可靠连接。 TCP是一种可靠的面向连接的全双工传输层协议。 TCP连接的建立是一个三次握手的过程。如图所示 主机A通常也称为客户端发送一个标识了SYN的数据段表示期望与服务器A建立连接此数据段的序列号seq为a。 服务器A回复标识了SYNACK的数据段此数据段的序列号seq为b确认序列号为主机A的序列号加1a1以此作为对主机A的SYN报文的确认。 主机A发送一个标识了ACK的数据段此数据段的序列号seq为a1确认序列号为服务器A的序列号加1b1以此作为对服务器A的SYN报文的确认。
TCP传输过程 TCP的可靠传输还体现在TCP使用了确认技术来确保目的设备收到了从源设备发来的数据并且是准确无误的。确认技术的工作原理如下目的设备接收到源设备发送的数据段时会向源端发送确认报文源设备收到确认报文后继续发送数据段如此重复。如图所示主机A向服务器A发送TCP数据段为描述方便假定每个数据段的长度都是500个字节。当服务器A成功收到序列号是M1499的字节以及之前的所有字节时会以序列号M14991M1500进行确认。另外由于数据段N3传输失败所以服务器A未能收到序列号为M1500的字节因此服务器A还会再次以序列号M1500进行确认。
TCP流量控制 TCP滑动窗口技术通过动态改变窗口大小来实现对端到端设备之间的数据传输进行流量控制。如图所示主机A和服务器A之间通过滑动窗口来实现流量控制。为方便理解此例中只考虑主机A发送数据给服务器A时服务器A通过滑动窗口进行流量控制。主机A向服务器发送4个长度为1024字节的数据段其中主机的窗口大小为4096个字节。服务器A收到第3个数据段后缓存区满第4个数据段被丢弃。服务器以ACK 3073响应窗口大小调整为3072表明服务器的缓冲区只能处理3072个字节的数据段。于是主机A改变其发送速率发送窗口大小为3072的数据段。
TCP关闭连接 主机在关闭连接之前要确认收到来自对方的ACK。 TCP支持全双工模式传输数据这意味着同一时刻两个方向都可以进行数据的传输。在传输数据之前TCP通过三次握手建立的实际上是两个方向的连接因此在传输完毕后两个方向的连接必须都关闭。TCP连接的建立是一个三次握手的过程而TCP连接的终止则要经过四次握手如图所示主机A想终止连接于是发送一个标识了FINACK的数据段序列号为a确认序列号为b服务器A回应一个标识了ACK的数据段序列号为b确认序号为a1作为对主机A的FIN报文的确认服务器A想终止连接于是向主机A发送一个标识了FINACK的数据段序列号为b确认序列号为a1。主机A回应一个标识了ACK的数据段序列号为a1确认序号为b1作为对服务器A的FIN报文的确认。以上四次交互便完成了两个方向连接的关闭。
UDP协议 UDP是一种面向无连接的传输层协议传输可靠性没有保证。当应用程序对传输的可靠性要求不高但是对传输速度和延迟要求较高时可以用UDP协议来替代TCP协议在传输层控制数据的转发。UDP将数据从源端发送到目的端时无需事先建立连接。UDP采用了简单、易操作的机制在应用程序间传输数据没有使用TCP中的确认技术或滑动窗口机制因此UDP不能保证数据传输的可靠性也无法避免接收到重复数据的情况。
UDP头部 UDP头部仅占8字节传输数据时没有确认机制。UDP报文分为UDP报文头和UDP数据区域两部分。报头由源端口、目的端口、报文长度以及校验和组成。UDP适合于实时数据传输如语音和视频通信。相比于TCPUDP的传输效率更高、开销更小但是无法保障数据传输的可靠性。UDP头部的标识如下16位源端口号源主机的应用程序使用的端口号。16位目的端口号目的主机的应用程序使用的端口号。16位UDP长度是指UDP头部和UDP数据的字节长度。因为UDP头部长度为8字节所以该字段的最小值为8。16位UDP校验和该字段提供了与TCP校验字段同样的功能该字段是可选的。
UDP传输过程 使用UDP传输数据时由应用程序根据需要提供报文到达确认、排序、流量控制等功能。主机A发送数据包时这些数据包是以有序的方式发送到网络中的每个数据包独立地在网络中被发送所以不同的数据包可能会通过不同的网络路径到达主机B。这样的情况下先发送的数据包不一定先到达主机B。因为UDP数据包没有序号主机B将无法通过UDP协议将数据包按照原来的顺序重新组合所以此时需要应用程序提供报文的到达确认、排序和流量控制等功能。通常情况下UDP采用实时传输机制和时间戳来传输语音和视频数据。 UDP不提供重传机制占用资源小处理效率高。一些时延敏感的流量如语音、视频等通常使用UDP作为传输层协议。UDP适合传输对时延敏感的流量如语音和视频。在使用TCP协议传输数据时如果一个数据段丢失或者接收端对某个数据段没有确认发送端会重新发送该数据段。TCP重新发送数据会带来传输延迟和重复数据降低了用户的体验。对于时延敏感的应用少量的数据丢失一般可以被忽略这时使用UDP传输将能够提升用户的体验。
本章总结
问TCP头部中的确认标识位有什么作用
答TCP报文头中的ACK标志位用于目的端对已收到数据的确认。目的端成功收到序列号为x的字节及之前的所有字节后会以序列号x1进行确认。
问TCP头部中有哪些标识位参与TCP三次握手
答在TCP的三次握手过程中要使用SYN和ACK标志位来请求建立连接和确认建立连接。