网站开发工资高么,php网站开发培训班,品牌设计案例分析,wordpress知更鸟一#xff1a; TCP协议是什么#xff1f;
TCP协议是基于面向连接#xff0c;可靠传输#xff0c;基于字节流的传输层通信协议
1. 面向连接 TCP协议是一种面向连接的协议#xff0c;意味着在双方在建立数据传输之前#xff0c;需要进行一个逻辑上的连接#xff0c;且是…
一 TCP协议是什么
TCP协议是基于面向连接可靠传输基于字节流的传输层通信协议
1. 面向连接 TCP协议是一种面向连接的协议意味着在双方在建立数据传输之前需要进行一个逻辑上的连接且是一对一的连接这种连接的建立和维护使得数据可以在发送和接受中能够进行可靠和有序的传输 UDP协议是无连接协议可以进行一对多的连接通信
2. 可靠传输 TCP可靠传输是基于以下几点机制达成的 连接的建立和终止TCP在数据传输之前需要建立逻辑上的连接在传输完成后会进行连接的断开这样确保数据在开始时和结束时的完整性流量控制 TCP使用滑动窗口机制来控制发送方的数据流量。接收方可以通知发送方它可以接受的数据量以防止发送方发送过多的数据导致接收方缓冲区溢出拥塞控制 TCP具有拥塞控制机制可以在网络出现拥塞时降低数据发送速率以避免网络拥塞问题进一步加剧确认与重传机制发送方向接收方发送数据在一段时间内若为收到接受方的确认会认为该数据在传输中丢失会触发数据的重传机制。这确保了数据在丢失后仍会被重新发出序列号与顺序控制TCP会为每一个发送的数据段分配唯一的序列号接收方会通过序列号将发送的数据片按重组成正确的顺序从而避免了数据的乱序 校验和TCP首部有个校验和控制 字段用于检测数据是否在传输中被损坏或者修改校验和的计算基于发送方的TCP首部内容包括源端口、目标端口、序列号、确认号、控制位等等。这些字段的数值会被计算成一个校验和值并附加在TCP首部中。接收方在接收到TCP首部后会重新计算校验和并与传输过来的校验和值进行比较。如果两者不匹配接收方可以推断数据在传输过程中发生了错误。
3. 字节流 字节流指的是在数据的传输中数据被视为连续的字节序列而不是离散的数据块 TCP并不关心应用程序中数据的分块结构它只负责在发送方和接收方之间传输字节数据这种字节流的特性使得TCP适用于各种应用包括传输文件、网页内容、视频流等。应用程序可以在发送数据时将其分块但在TCP层面这些数据将会被重新组织成一个连续的字节流然后在接收端按照顺序重新分块以供应用程序处理
二TCP首部格式 源端口号Source Port16位指示发送方的应用程序使用的端口号。目的端口号Destination Port16位指示接收方的应用程序期望使用的端口号。序列号Sequence Number32位用于对TCP数据段进行编号以便接收方按正确的顺序重组数据。确认号Acknowledgment Number32位指示接收方期望下一个接收的数据的序列号用于确认已经成功接收到的数据。数据偏移Data Offset4位指示TCP头部的长度以32位字4字节为单位计算。控制位Control Bits6位包含了TCP控制信息如SYN、ACK、FIN等标志位用于控制连接的建立、数据传输和连接的释放等。窗口大小Window Size16位指示发送方允许接收方缓存的字节数量用于流量控制。校验和Checksum16位用于检测TCP头部在传输过程中的错误。紧急指针Urgent Pointer16位指示紧急数据的末尾位置用于通知接收方需要紧急处理的数据。选项和填充Options and PaddingTCP头部可包含选项字段和填充字段用于扩展头部功能或填充字节可变长度。
2.1 如何计算TCP首部长度 通过数据偏移控制字段计算 TCP首部的长度是通过数据偏移控制字段来表示的其表示TCP数据段部分相较于整个TCP报文起始位置的偏移量大小这个偏移量是以4字节单位计算的 所以 TCP首部的长度 数据偏移控制字段的值 * 4字节
注意 尽量避免通过IP首部信息进行计算TCP负载数据长度 由于TCP和IP协议是两个独立的协议在网络通信中各自负责不同的任务TCP协议无法直接从IP首部中获取对应的数据在传输过程中应用程序会在TCP首部中的数据偏移字段和TCP数据段的长度中指示负载数据的实际长度
2.2 TCP目的端口号和IP目的地址
TCP首部中包含源端口和目的端口号字段是16位的IP首部中包含源地址和目的地址是32位的 访问一个网址时IP地址 和 对应端口号显示的并不是32位的和16位的二进制数例如http: // 127.0.0.1 : 5173 / IP地址 在IPv4协议中IP地址是32位的通常用四个8位的数字0-255的范围表示每个数字之间使用点号.分隔端口号 端口号是16位的整数用来标识应用程序或服务的通信端口。它可以是0到65535之间的值。例如“:5173” 表示连接的目标端口号是5173。 实际的通信过程中操作系统和网络设备会将IP地址和端口号转化为相应的二进制格式以进行数据的传输和路由 2.3 什么是TCP连接 用于保证可靠性和流量控制维护的某些状态信息这些信息的组合包括 Socket、序列号和窗口大小称为连接。 TCP连接是一种虚拟的通信路径用于在网络上的两台计算机之间传输数据 Socket Socket是一种用于网络通信的抽象概念它可以被看作是一个端点用于标识网络中的一台计算机上的进程或应用程序。一个Socket由IP地址和端口号组成形如IP地址:端口号。在TCP连接中客户端和服务器分别使用Socket来识别彼此建立连接并进行数据的发送和接收。序列号 TCP协议使用序列号来标识发送和接收的数据段。发送方为每个数据段分配一个唯一的序列号接收方根据序列号来重新组装数据段保证数据的顺序性。窗口大小 窗口大小是TCP流量控制的一部分用于控制发送方发送数据的速率以适应接收方的处理能力。窗口大小表示接收方还有多少可用的缓冲区空间来接受更多的数据。通过调整窗口大小可以防止发送方过快地发送数据导致接收方的缓冲区溢出。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SCFMipms-1693303535358)(https://wximg.eefocus.com/forward?urlhttps%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FEvvXlctHqffXHrJgE6S2okca8DkESvf8kRd7XRyiaRrIjNZpMibWqYtahRNSK2J8g6S8X1ABL40jdD5a97RfgAuA%2F640%3Fwx_fmt%3Djpegse24da3)]
三IP协议和TCP协议联合工作
在网络传输中通常同时使用IP协议和TCP协议进行工作的IP协议负责将数据包在网络中从一个计算机传输到另一个计算机中TCP协议负责在这个传输过程中建立可靠的连接和可靠的数据传输
3.1 访问网站时的联合工作 IP协议和TCP协议通常是一起使用的以实现在网络中的可靠数据传输。它们在不同层级上执行不同的任务共同构成了网络通信的基础。 DNS解析当我们键入网址计算机会向DNS服务器查询该域名的IP地址涉及到IP协议的工作来找到目标的IP地址TCP建立连接直到目标的IP地址计算机会使用TCP协议与目标网站建立可靠连接。涉及到IP地址和端口连接的过程确保你的计算机与目标网站可进行数据传输数据传输TCP建立连接后要与目标网站进行数据传输TCP协议负责将数据分割成数据段并为每个数据段添加确认号序列号达成数据的可靠传输IP传输TCP将数据段交给IP协议然后IP协议负责将数据段从你的计算机发送给目标的服务器经过多个中间路由和网络设备TCP数据重组目标服务器通过IP协议获得数据段通过TCP协议将数据段的按照序列号重组数据恢复正确顺序获得原始的数据流数据响应 目标服务器通过TCP协议将响应数据发送回您的计算机经过类似的过程。
四UDP协议是什么 UDPUser Datagram Protocol是一种在计算机网络中使用的传输层协议与TCP一样属于传输层的两个主要协议之一。不同于TCP的面向连接特性UDP是一种无连接的、简单的协议它主要用于支持实时性要求高、对数据可靠性要求较低的应用。 无连接性 UDP协议不需要在通信开始之前建立连接通信双方可以直接开始传输数据。这使得UDP的传输过程更加轻量和快速但也导致了数据传输过程中的不可靠性。不可靠性 UDP不提供数据的可靠传输这意味着发送的数据包可能会在传输过程中丢失、重复、乱序等。UDP不执行像TCP那样的序列号和确认号机制也不会进行自动重传。简单 UDP头部相对较短仅包含源端口、目的端口、长度和校验和等基本信息这使得UDP在处理速度上更快。实时性 由于UDP的无连接性和不可靠性它更适用于那些需要实时性、低延迟的应用如实时音视频传输、在线游戏等。广播和多播 UDP支持广播和多播使得一个主机可以向多个目标主机发送相同的数据。应用场景 由于UDP的特性它适用于那些对数据完整性和可靠性要求较低的应用例如音频和视频流传输、DNS查询、实时通信等。
4.1 UDP首部格式 4.2 TCP和UDP的区别
连接性 TCP是一种面向连接的协议它在通信的开始和结束时都需要建立和终止连接。数据传输前需要建立连接传输结束后需要释放连接。UDP是一种无连接的协议它不需要事先建立连接或释放连接。每个UDP数据包都是独立的它们之间没有直接的关系。 可靠性 TCP提供可靠的数据传输。它通过确认、重传、序列号等机制确保数据的可靠性和顺序性但这也导致了一些额外的开销。UDP不提供数据传输的可靠性保证。数据包在传输过程中可能丢失、重复或乱序因此应用程序需要自行处理这些情况。 数据包大小 TCP由于TCP有额外的头部信息用于管理连接、确认等它的头部开销比较大。因此对于较小的数据包TCP的开销可能会相对较高。UDPUDP的头部开销相对较小适用于传输较小的数据包。 流量控制和拥塞控制 TCP具有流量控制和拥塞控制机制以避免数据过载导致网络拥塞。这使得TCP更适合对网络质量要求较高的应用。UDP不具备流量控制和拥塞控制机制数据传输的速率受限于应用程序的设计和网络的状况。 适用场景 TCP适用于需要可靠传输、数据顺序和错误检测的应用如网页浏览、文件下载等。UDP适用于实时性要求较高、且能容忍少量数据丢失的应用如在线游戏、实时视频传输等。