[关闭]
@callofduty890 2024-11-05T05:39:58.000000Z 字数 4066 阅读 58

网络编程

超人视觉


1、TCP

01-TCP简介

传输控制协议(Transmission Control Protocol:TCP)是互联网协议套件TCP/IP中的核心协议之一,属于传输层的协议。它为应用层提供可靠,面向连接等待通讯服务。确保数据在网络中的完整传输。TCP有美国在20世纪70-80年代初开发,为不同类型的计算机网络提供统一的通讯方式。

TCP在网络通信中的作用

02-TCP的基本原理

面向连接的协议

TCP是一种面向连接的协议,这意味着在数据传输开始之前,通讯双方必须建立一个连接,确保双方都能准备好继续数据传输,

这个过程涉及到一一系列的握手操作,以确保双方的发送和接收能力,在这个过程中,使用三次握手建立连接,从而确保双方的序列号已经协商好,能够进行高效的通讯。

a-建立连接的步骤:

通过三次握手,双方确认彼此的发送和接收能力,并交换初始序列号,为可靠的数据传输奠定基础。

b-断开连接的步骤:

TCP连接的终止采用四次挥手 Four-Way-Hasdshake过程,确保双方都能正常关闭连接(不丢失数据的情况下)

通过四次挥手,确保双方都能够有序关闭连接,避免数据丢失和资源浪费。

第二次和第三次,被动关闭端需要发送ACK包和FIN包,为什么要分开发送呢?

03-可靠传输机制

为确保数据传输的可靠性,TCP引入以下机制

04-流量控制和拥塞控制

流量控制

流量控制应用防止发送方过快发送数据,导致接收方的缓冲区溢出,TCP通过滑动窗口机制来实现流量控制,接收方在每一次确认应答中告知发送方自己缓冲区的剩余空间,发送方根据收到该信息调整发送速率,确保不会发送超出接收方能处理的数据量。

拥塞控制

拥塞控制用于防止网络堵塞,确保数据在网络中高效传输,TCP采用多种算法监测和调整数据传输速率,以适应未来的当前负载状况,主要的拥塞控制算法包括:

05-TCP报文结构

TCP报文段(TCP Segement)是TCP协议在传输数据时使用的基本单位,每一个报文有头部和数据部分组成,头部包含了控制信息和元数据,用于管理数据传输的各种机制。

TCP报文头部的各个字段详解

字段名 大小位 描述
源端口 16 发送方的端口号,用于标识发送应用端的进程
目标端口 16 接收方的端口号,用于标识发送接收端的进程
序列号 32 表示该报文段中第一个字节的数据序列号,用于数据的有效传输和重传
确认号 32 当ACK标志位为1时,此字段有效,表示接收方期望收到下一个字节的需要,用于确认接收数据
数据偏移 4 指示TCP头部的长度,以32为为单位,最小值位5
保留 6 保留字段,当前未使用,应设置为0
标志位 6 包含控制标志,包括URG\ACK
窗口大小 16 表示接收方当前可用缓存区的大小,用于流量控制
校验和 16 用于错误检测,覆盖整个TCP报文段,包括头部和数据部分
紧急指针 16 当URG为1时,此字段有效,指示紧急数据的结束位置
选项 可变 可选字段,用于拓展TCP的功能,如调整报文的最大长度,窗口缩放
填充 可变 用来确保表头的长度为32字节的整数倍,而填充的空字节,通常设置为0MO

标志位详解

标志位 作用
URG 紧急指针有效,表示报文中有紧急数据
ACK 确认号有效,表示该报文对之前数据的确认
PSH 请求接收方尽快将该报文的数据推送到应用层无需等待缓存区满
PST 复位连接,通常用于错误情况下强制关闭连接
SYN 同步序列号,用于建立连接时初始化序列号
FIN 表示发送方已经完成数据发送,准备关闭连接

数据部分:

TCP报文段的数据部分承载了应用层的数据。数据的具体内容有上层协议(HTTP,FTP)决定,TCP负责将这些数据可靠的传输到目标端,数据部分的长度取决于TCP报文的总长度将去头部长度,最大可到达65535字节,实际传输受到MTU(最大传输单元)的限制

当应用层发送的数据超过网络承载的最大保温程度MSS,TCP会将数据拆分为多个报文段进行传输。接收端收到多个报文段后,根据序列号将数据组装为原始数据流。

06-七层模型

Open Systems Interconnection

每一层都为相邻层提供服务,并且依赖于下一层所提供的服务。这种分层的架构有助于网络设计、实现和故障排除。在实际应用中,许多协议可能会跨越多个层次。

2、UDP

用户数据包协议(User Datagram Protocol: UDP) 是无连接的,不可靠的传输层协议,它不建立连接,也不确保数据包的顺序和完整性。UDP适用于对实时性要求高而且可以容忍一定量的数据丢失的应用场景,视频直播,在线游戏

3、TCP与UDP的对比

特性 UDP TCP
连接方式 无连接(无需建立连接) 面向连接(需要建立连接)
可靠性 提供可靠的数据传输,保证数据顺序,完整到达 不保证数据的可靠传输,可能出现丢失、乱序
流量控制 支持流量控制,防止发送过快导致接收方溢出 不支持流量控制,发送速率不受限
堵塞控制 包含堵塞控制机制,能够适应网络变化 不包含堵塞控制机制,可能加剧网络堵塞
传输速率 由于可靠性机制的限制,相对较慢 由于缺乏可靠性机制的限制,相对较快
数据包结构 数据被分段,每一个段包含序列号和确认号等控制信息 数据被封装为数据报,头部简单,不包含序列号和确认号等控制信息
适用场景 需要高可靠性和数据顺序的应用,如网页浏览,文件传输,电子邮件 对实时性要求高而且可以容忍一定量的数据丢失的应用场景,视频直播,在线游戏。
头部大小 较大(20-60字节) 较小(8字节)

4、HTTP

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注