传输层的作用:
传输层协议通过端口号识别主机中正在通信的应用程序 并将数据准确的传给对应的程序进程 实现端到端的通信 网络层的协议只提供点到点的链接 而传输层协议则提供端到端的服务 即程序进程之间的通信 网络层协议提供不可靠 无连接和尽力投递服务 。
传输层协议:
传输层位于OSI模型的第四层,主要负责为网络端点主机上的进程之间提供可靠、有效的报文传送服务。在TCP/IP网络体系结构中,传输层的核心协议包括TCP(传输控制协议)和UDP(用户数据报协议),它们为上层应用提供不同级别的通信可靠性。
TCP:
TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议。它的特点包括:
-
面向连接:在数据传输前,必须在两端建立连接,通过三次握手过程实现。
-
可靠传输:通过序号、确认应答、数据校验、重传机制等确保数据的正确传输。
-
流量控制:通过滑动窗口机制控制发送和接收的数据量,防止快速发送方导致慢速接收方缓冲区溢出。
-
拥塞控制:根据网络状况调整数据发送速率,避免网络拥塞。
-
全双工通信:允许通信双方同时发送和接收数据。
TCP协议的连接建立涉及三次握手过程,而连接释放则需要四次挥手。这些机制确保了连接的可靠性和数据的顺序性。
TCP首部格式图

TCP首部结构
TCP首部通常分为两部分:固定首部和可选字段。固定首部的长度为20字节,而可选字段的长度可变,最长可达40字节,因此TCP首部的最大长度为60字节。
固定首部字段
-
源端口和目的端口:各占2字节,用于标识发送和接收的应用程序。
-
序号:占4字节,用于标识从TCP发送端向TCP接收端发送的数据字节流的每一个字节。
-
确认号:占4字节,只有当ACK标志位为1时才有效,表示接收端期望收到发送端的下一个报文段的数据的第一个字节的序号。
-
数据偏移:占4位,表示TCP首部的长度,即数据从报文段的哪个位置开始。
-
保留:占6位,目前未使用,保留以备将来使用。
控制位
-
URG:紧急指针(urgent pointer)有效。
-
ACK:确认字段有效。
-
PSH:接收方应尽快将这个报文段交给应用层。
-
RST:重置连接。
-
SYN:同步序号用于建立连接。
-
FIN:发送方完成发送任务。
其他重要字段
-
窗口:占2字节,用于流量控制,表示还能接收多少字节的数据。
-
检验和:占2字节,用于错误检测。
-
紧急指针:占2字节,表示紧急数据的结束位置。
可选字段
-
选项:长度可变,最长可达40字节,用于支持更复杂的通信需求,如最大报文段长度(MSS)、窗口扩大因子、时间戳等。
TCP首部的作用
TCP首部中的各个字段共同协作,实现了TCP协议的多种功能:
-
序号和确认号:确保数据的顺序传输和可靠传输。
-
窗口大小:实现流量控制,防止发送方发送的数据超过接收方的处理能力。
-
控制位:管理TCP连接的建立、数据传输和连接释放。
-
检验和:确保数据在传输过程中的完整性和正确性。
-
紧急指针:处理紧急数据,如中断信号等。
-
TCP的三次握手
-

-
最开始的时候客户端和服务器都是处于CLOSED关闭状态。主动打开连接的为客户端,被动打开连接的是服务器。
TCP服务器进程先创建传输控制块TCB,时刻准备接受客户进程的连接请求,此时服务器就进入了 LISTEN 监听状态
第一次握手 TCP客户进程也是先创建传输控制块TCB,然后向服务器发出连接请求报文,这是报文首部中的同部位SYN=1,同时选择一个初始序列号 seq=x ,此时,TCP客户端进程进入了 SYN-SENT 同步已发送状态
第二次握手 TCP服务器收到请求报文后,如果同意连接,则会向客户端发出确认报文。确认报文中应该 ACK=1,SYN=1,确认号是ack=x+1,同时也要为自己初始化一个序列号 seq=y,此时,TCP服务器进程进入了 SYN-RCVD 同步收到状态
第三次握手 TCP客户端收到确认后,还要向服务器给出确认。确认报文的ACK=1,ack=y+1,自己的序列号seq=x+1,此时,TCP连接建立,客户端进入ESTABLISHED已建立连接状态 触发三次握手
-
TCP四次挥手

-
数据传输完毕后,双方都可释放连接。最开始的时候,客户端和服务器都是处于ESTABLISHED状态,然后客户端主动关闭,服务器被动关闭。
第一次挥手 客户端发出连接释放报文,并且停止发送数据。释放数据报文首部,FIN=1,其序列号为seq=u(等于前面已经传送过来的数据的最后一个字节的序号加1),此时,客户端进入FIN-WAIT-1(终止等待1)状态
第二次挥手 服务器端接收到连接释放报文后,发出确认报文,ACK=1,ack=u+1,并且带上自己的序列号seq=v,此时,服务端就进入了CLOSE-WAIT 关闭等待状态
第三次挥手 客户端接收到服务器端的确认请求后,客户端就会进入FIN-WAIT-2(终止等待2)状态,等待服务器发送连接释放报文,服务器将最后的数据发送完毕后,就向客户端发送连接释放报文,服务器就进入了LAST-ACK(最后确认)状态,等待客户端的确认。
第四次挥手 客户端收到服务器的连接释放报文后,必须发出确认,ACK=1,ack=w+1,而自己的序列号是seq=u+1,此时,客户端就进入了TIME-WAIT(时间等待)状态,但此时TCP连接还未终止,必须要经过2MSL后(最长报文寿命),当客户端撤销相应的TCB后,客户端才会进入CLOSED关闭状态,服务器端接收到确认报文后,会立即进入CLOSED关闭状态,到这里TCP连接就断开了,四次挥手完成
-
TCP流量控制和拥塞控制
-
TCP流量控制和拥塞控制是TCP协议中两个关键的机制,它们共同确保了网络通信的稳定性和可靠性。尽管它们的目标都是为了优化网络传输,但它们的作用和实现方式有所不同。
流量控制(Flow Control)
流量控制的主要目的是防止发送方发送数据过快,导致接收方来不及处理,从而避免数据丢失。这是通过滑动窗口机制实现的,接收方通过TCP首部中的窗口大小字段告知发送方其可接收的数据量。当接收方的缓冲区快满时,它会调整窗口大小,通知发送方减慢发送速度。如果缓冲区已满,窗口大小会被设置为0,此时发送方将停止发送数据,直到接收到新的窗口大小更新。
拥塞控制(Congestion Control)
拥塞控制则是针对整个网络的,目的是防止过多的数据注入网络而导致网络拥塞。发送方维护一个拥塞窗口(cwnd)来控制发送的数据量,这个窗口的大小会根据网络的拥塞程度动态变化。拥塞控制通过一系列算法来调整数据发送的速率,包括慢开始(Slow Start)、拥塞避免(Congestion Avoidance)、快重传(Fast Retransmit)和快恢复(Fast Recovery)。
慢开始和拥塞避免
在慢开始阶段,拥塞窗口cwnd的大小会指数增长,直到达到一个阈值(ssthresh)。之后,进入拥塞避免阶段,cwnd的增长转变为线性增长,以避免过早引起网络拥塞。
快重传和快恢复
当发送方连续收到三个重复的ACK时,它会执行快重传,重新发送丢失的数据包。同时,慢开始门限ssthresh会减半,拥塞窗口cwnd也会设置为ssthresh的值,然后进入快恢复阶段,此时拥塞窗口以线性方式增长
-
TCP常用的端口
-
端口 协议 说明 21 FTP FTP服务器所开放的控制端口
23 Telnet 用于远程登录 可以远程控制 管理目标计算机 25 SMTP SMTP服务器开放端口 用于发送电子邮件 53 DNS DNS服务器的开放端口 用户输入网站的名称后 由DNS负责将他解析为ip地址 80 HTTP 超文本传输协议 -
TCP命令
-
FTP+ip地址 链接FTP服务器
-
执行ls可以查看FTP服务器上的共享文件
UDP
UDP的主要特点包括:无连接 支持单播 不可靠 面向报文 无拥塞控制
UDP的首部格式
| 源端口号16 | 目标端口号16 |
| UDP长度16 |
效验和16 |
源端口号:标识数据发送端的过程 和tcp的端口号类似
目标端口号:标识数据接收端的进程 和tcp的端口号类型
ucp长度:指出udp的总长度 为首部加上数据
笑验和:完成对udp数据的差错检验 它的计算与tcp笑验和类似 这是udp提供唯一的可靠机制
| 端口 | 协议 | 说明 |
| 53 | DNS | 域名服务 |
| 69 | TFTP | 简单文件传送协议 |
| 123 | NTP | 网络时间协议 |
| 161 | SMNP | 简单网络管理协议 |
TCP和UDP的区别
| TCP | UDP | |
| 是否连接 | 面向连接 | 无连接 |
| 是否可靠 | 可靠传输 支持流量控制和拥塞控制 | 不可靠传输 不支持流量控制和拥塞控制 |
| 连接对象个数 | 仅支持一对一通信方式 | 支持一对一 一对多 多对多等通信方式 |
| 传输方式 | 面向字节流 | 面向报文 |
| 首部开销 | 首部最小20字节 最大60字节 | 首部开销小 仅8字节 |
| 适用场景 | 适用于对可靠性要求较高的应用 如传输文件等 | 适用于实时应用 如IP电话 视频会议 |

2723

被折叠的 条评论
为什么被折叠?



